/* * fruithost | OpenSource Hosting * * @author Adrian Preuß * @version 1.0.0 * @license MIT */ /* Animations & Effects */ @keyframes blink { 50% { visibility: hidden; } } /* Globals */ * { outline: none !important; } body { font-size: .875rem; max-height: 100vh; } .h-100-head { height: calc(100% - 50px); } .navbar { background: var(--bs-dark); } .sidebar { z-index: 1000; min-width: 320px; } @media (max-width: 575px) { .sidebar { display: none; } .sidebar.show { display: block; position: fixed; top: 49px; bottom: 0px; max-height: calc(100% - 49px); } } /* Loading / Fetching */ [data-fetching="true"] { display: flex; justify-content: center !important; } [data-fetching="true"] [role="status"] { display: block; width: 5rem; height: 5rem; margin: 50px 0; } [data-fetching="false"] [role="status"] { display: none; } [data-fetching="true"] .loaded-content { display: none; } [data-fetching="false"] .loaded-content { display: block; } .sidebar .nav-link { font-weight: 500; color: var(--bs-dark-text-emphasis); display: flex; flex-direction: row; padding: .2rem 2rem; white-space: nowrap; align-items: center; } .sidebar .nav-link .bi { margin-right: 4px; color: #999; font-size: 20px; vertical-align: text-bottom; } .sidebar .nav-link.active { color: var(--bs-primary); } .sidebar .nav-link:hover .bi, .sidebar .nav-link.active .bi { color: inherit; } .sidebar .nav-link:hover .bi { color: var(--bs-primary); } .sidebar-heading { font-size: .75rem; text-transform: uppercase; cursor: pointer; } /* Topbar */ .navbar-brand { padding-top: .75rem; padding-bottom: .75rem; font-size: 1rem; background-color: rgba(0, 0, 0, .25); box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); } @media (min-width: 575px) { .navbar-brand { min-width: 320px !important; } } .navbar-nav { margin-right: 15px; } .nav-account .dropdown-menu { position: absolute; right: 0; left: inherit; } .nav-account .picture { margin-right: 5px; } /* Breadcrumb */ .breadcrumb { font-size: 24px; margin: 0; } .breadcrumb a { color: inherit; text-decoration: none; } .breadcrumb li.active a { color: var(--bs-primary); } /* Welcome */ .welcome .bi { font-size: 24px; vertical-align: sub; } .welcome a { text-decoration: none; vertical-align: baseline; } .card-body .nav-pills .nav-item { margin: 0 5px; border-radius: var(--bs-nav-pills-border-radius); background: var(--bs-card-cap-bg); } .card-body .nav-pills .nav-item:hover { background: var(--bs-card-border-color); } .card-body .nav-pills .nav-item .nav-link { color: inherit; } .card-body .nav-pills .nav-item .nav-link:hover { color: var(--bs-nav-link-color); } /* Jumbotron */ .jumbotron .bi { font-size: 100px; } .jumbotron .bi.small { font-size: 22px; } .jumbotron .btn-lg { padding: 15px 50px; } /* Nav Badges */ .nav-link .badge { padding: 10px 7px; line-height: 0; margin: -5px 0 -1px 5px; position: relative; } main.frame { padding: 0px !important; margin: 0px !important; } main iframe { width: 100%; border: none; display: block; height: 100%; top: 0; left: 0; right: 0; height: calc(100vh - 48px); overflow-x: hidden; overflow-y: auto; } /* Module Icons */ img.module-icon { max-width: 20px; filter: invert(1) contrast(0); } img.module-icon path { fill: red; } /* Forms */ .form-group { margin-bottom: 1rem !important; } /* Logfile Viewer */ .filetree { list-style: none; display: block; padding: 0; margin: 0; } .filetree li.folder { display: block; } .filetree li.folder a { display: flex; text-decoration: none; color: #999999; } .filetree li.folder a i.bi { margin: 0 5px 0 0; color: #ff9b00; text-shadow: 1px 1px 0 #000000; } .filetree li.folder ul.files { list-style: none; padding: 0; margin: 0; } .filetree li.folder ul.files li.file { display: flex; margin: -6px 0 -3px 0; } .filetree li.folder ul.files li.file:before { content: "├"; display: block; position: relative; font-size: 18px; margin: 0 5px 0 5px; } .filetree li.folder ul.files li.file:last-child:before { content: "└"; } .filetree li.folder ul.files li.file a { display: flex; text-decoration: none; color: #444444; padding: 4px 0 0 0; } .filetree li.folder ul.files li.file a:hover { color: var(--primary); cursor: pointer; } .filetree li.folder ul.files li.file a i.bi { margin: 0 5px 0 0; color: #DDDDDD; font-size: 18px; text-shadow: 1px 1px 0 #444444; } .logfile-container { overflow: auto; width: auto; height: auto; } .logfile { font-size: 12px; padding: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .logfile::before { display: inline-block; content: attr(data-number); color: #555555; background: #DDDDDD; border-right: 1px solid #555555; margin: -2px 10px -2px -5px; padding: 2px 5px; min-width: 45px; text-align: right; } .logfile:hover { background: var(--light) !important; color: var(--dark) !important; } .logfile:hover::before { color: var(--dark); background: var(--light); border-right: 1px solid var(--dark); } .logfile.log-info { color: var(--info); background: #f2fafb; } .logfile.log-warning { color: var(--warning); background: #fbf7eb; } .logfile.log-danger { color: var(--danger); background: #ffdadd; } .logfile.log-success { color: var(--success); background: #e1ffe9; } article.editor { display: flex; flex-direction: column; } article.editor div.content div.line { display: flex; flex-direction: row; } article.editor div.content div.line div.number { flex: 0; text-align: right; background: var(--bs-tertiary-bg); color: var(--bs-emphasis-color); padding: 5px; } article.editor div.content div.line div.data { flex: 1; background: var(--bs-light-emphasis); padding: 5px; } [data-percentage] { position: relative; } [data-percentage]:after { content: attr(data-percentage); display: block; color: var(--light); position: absolute; text-align: center; font-size: 10px; top: 0; left: 0; bottom: 0; right: 0; } .module-actions { visibility: hidden; } tr:hover .module-actions { visibility: visible; } .module-badge { opacity: 0.5; height: 16px; width: 16px; margin-top: 3px; } tr:hover .module-badge { opacity: 1; } /* Logfile Viewer */ .contentbar { position: fixed; top: 0; bottom: 0; right: 0; z-index: 100; padding: 48px 0 0; width: 280px; box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1); overflow: auto; } .left .contentbar { right: unset; left: calc(280px + 39px); } ul.tree { list-style-type: none; margin: 0; padding: 0; } ul.tree ul { list-style-type: none; padding: 0; margin: 0 0 0 20px; flex-direction: column; } ul.tree li.directory { color: green; } ul.tree li.directory.empty { color: red; } ul.tree li.file { color: var(--bs-text-primary); } .caret { cursor: pointer; background: var(--bs-dark-bg-subtle); display: flex; border-radius: 5px; margin: 1px 5px; } .caret i { flex: 1; padding: 10px 10px 10px 0; font-style: normal; color: var(--bs-dark-text-emphasis); text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .caret::before { font-family: 'bootstrap-icons'; color: black; display: inline-block; margin-right: 6px; font-size: 24px; flex: 0; padding: 0px 0px 0px 8px; } .directory .caret::before { content: "\F3D9"; color: #f3c36b; } .directory.empty .caret::before { content: "\F6B6"; color: #800000; } .directory .caret-down::before { content: "\F3D8"; color: #007bff; } .file .caret::before { content: "\F38B"; color: var(--bs-dark-text-emphasis); } .file .caret-down::before { content: "?"; } .nested { display: none; } li.directory::before, li.empty::before { content: "\F132"; position: absolute; font-family: 'bootstrap-icons'; font-size: 20px; color: #d8d8d8; margin: 5px 0 0 -16px; } ul.tree > li:first-child::before { content: ""; } li.empty::before { color: rgb(128, 0, 0, 0.5); } .active { display: flex; } .contentbar-content { margin: 0 280px 0 0; max-width: 100vw; overflow: hidden; } .contentbar-content.left { margin: 0 0 0 280px; } .page-header.left { margin: 0 0 0 280px; } /* Tabs */ [aria-orientation="vertical"] { border-bottom: 0; } [aria-orientation="vertical"] .nav-item { border: none; } [aria-orientation="vertical"] .nav-link { width: 100%; text-align: left; border: 1px solid transparent; border-radius: 4px 0 0 4px; background: transparent; color: var(--bs-emphasis-color); } [aria-orientation="vertical"] .nav-link:hover { border-color: transparent var(--bs-primary) transparent transparent; background: var(--bs-primary); color: var(--bs-emphasis-color); width: calc(100% + 12px); } [aria-orientation="vertical"] .nav-link.active, [aria-orientation="vertical"] .nav-link.active:hover { width: calc(100% + 13px); background: var(--bs-body-bg); font-weight: bold; border-color: var(--bs-border-color) var(--bs-body-bg) var(--bs-border-color) var(--bs-border-color); } .check-group .form-check { position: relative; flex: 1 1 auto; width: 1%; min-width: 0; }