/**************************************************************/ /* CSS From base.html */ /**************************************************************/ body:not(.sidebar-icon-only) .navbar-toggler .mdi-chevron-double-right { display: none; } body.sidebar-icon-only .navbar-toggler .mdi-chevron-double-left { display: none; } /**************************************************************/ /**************************************************************/ /* CSS as bootstrap extensions */ /**************************************************************/ .overflow-x-auto { overflow-x: auto; } .overflow-y-auto { overflow-y: auto; } .overflow-scroll { overflow: scroll; } .text-none { text-transform: none; } .vw-40 { width: 40vw !important; } .vh-40 { height: 40vh !important; } .mw-25 { max-width: 25% !important; } .mw-50 { max-width: 50% !important; } .mw-75 { max-width: 75% !important; } .mw-80 { max-width: 80% !important; } .mh-25 { max-height: 25% !important; } .mh-50 { max-height: 50% !important; } .mh-75 { max-height: 75% !important; } .mh-80 { max-height: 80% !important; } /**************************************************************/ /**************************************************************/ /* CSS for MainMenu in partials/_sidebar.html */ /**************************************************************/ @media screen and (max-width: 991px) { .sidebar-offcanvas { -webkit-transition: all 0.25s cubic-bezier(.22, .61, .36, 1); transition: all 0.25s cubic-bezier(.22, .61, .36, 1); box-shadow: 0px 8px 17px 2px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12), 0px 5px 5px -3px rgba(0, 0, 0, 0.2); } } li.nav-item.nav-category { margin-top: 10px; } /**************************************************************/ /**************************************************************/ /* CSS For ? */ /**************************************************************/ .select-css option { background-color: var(--deep-bg); color: var(--base-text) } .select-css option:checked { background-color: var(--deep-bg); color: var(--base-text) } nav.sidebar { position: fixed; } td { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ } td::-webkit-scrollbar { display: none; } @media (min-width: 992px) { nav.sidebar { position: fixed; max-height: auto; } .main-panel { margin-left: 270px; } .sidebar-icon-only .main-panel { margin-left: 70px; } } .sidebar>.nav>.nav-item:not(.nav-profile)>.nav-link:before { content: none; position: absolute; left: 30px; right: 50%; width: 10px; height: 10px; border-radius: 100%; border: 2px solid var(--white); display: block; } .toggle-handle { background-color: var(--white) !important; } .toggle-on { color: var(--dark) !important; } .toggle { height: 0px !important; } .sidebar>.nav>.nav-item:not(.nav-profile)>.nav-link:before { content: none; position: absolute; left: 30px; right: 50%; width: 10px; height: 10px; border-radius: 100%; border: 2px solid var(--white); display: block; } .sidebar>.nav .nav-item .nav-link, .collapsed { padding: 15px 30px; } .mc-log-time { color: var(--success); } .mc-log-info { color: var(--info); } .mc-log-warn { color: var(--warning); } .mc-log-error { color: var(--danger); } .mc-log-fatal { color: var(--red); } .mc-log-keyword { color: var(--primary); } .scrollable-element { scrollbar-color: var(--red) var(--yellow); } .term-nav-item { padding: 1%; } /* Fix body scrollbar color */ body { background-color: var(--dark) !important; /* Firefox */ } .actions_serverlist>a>i { cursor: pointer; } .actions_serveritem { cursor: pointer; } .corner { position: absolute; margin-top: 0; margin-left: 0; } .accordion .card { margin-bottom: 0px; } .bootbox-body { text-align: center; } /**************************************************************/ /**************************************************************/ /* CSS for Dashboard */ /**************************************************************/ #desc_id { -ms-overflow-style: none; /* for Internet Explorer, Edge */ scrollbar-width: none; /* for Firefox */ overflow-y: scroll; } #desc_id::-webkit-scrollbar { display: none; /* for Chrome, Safari, and Opera */ } .gray { color: var(--gray) !important; } .disk-usage { height: 20px; width: 100%; background-color: rgb(139, 139, 139) !important } .disk-usage>.progress-bar { color: black; height: 100%; } .server-desc { overflow-wrap: break-word !important; max-width: 85px !important; overflow: scroll; } .server-alert { color: var(--red) !important; } /**************************************************************/ /**************************************************************/ /* CSS for Forms Displays */ /**************************************************************/ div>.input-group>.custom-file-input { position: relative !important; -webkit-box-flex: 1 !important; -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; width: 1% !important; margin-bottom: 0 !important; border: 1px solid var(--outline); } div>.input-group>.form-control-file { position: relative !important; -webkit-box-flex: 1 !important; -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; width: 1% !important; margin-bottom: 0 !important; border: 1px solid var(--outline); } .custom-picker { border: 1px solid var(--outline); } div>.input-group>.form-control { position: relative !important; -webkit-box-flex: 1 !important; -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; width: 1% !important; margin-bottom: 0 !important; border: 1px solid var(--outline); } .input-group>.input-group-append>button.upload-button { height: calc(1.5em + 0.75rem + 2px); } .no-scroll { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ overflow: scroll; } .no-scroll::-webkit-scrollbar { display: none; } .custom-control-label::before, .custom-control-label::after { cursor: pointer; } .custom-control-input:checked~.custom-control-label::before { color: black !important; background-color: blueviolet !important; border-color: var(--outline) !important; } .custom-control-label::before { background-color: white !important; top: calc(-0.2rem); } .custom-switch .custom-control-label::after { top: calc(-0.175rem); } .custom-radio .custom-control-label::after { top: calc(-0.175rem); } a.btn-primary { color: var(--white); } button.btn-primary { color: var(--white); } /**************************************************************/ /**************************************************************/ /* CSS for Tables Displays */ /**************************************************************/ table.table { overflow: scroll; } div td>ul { margin: auto; } td p { margin: auto; } td.action { white-space: normal; } td.action .btn { margin-bottom: 0.2rem; } /**************************************************************/ /**************************************************************/ /* CSS for warnings Displays */ /**************************************************************/ div.warnings div.wssError { color: var(--white); } div.warnings div.wssError a { color: var(--outline); } div.warnings div.wssError a:hover { color: var(--white-smoke); } noscript.noscript-warning { padding: 20px; background-color: rgb(247, 151, 15); /* TODO change background color */ } /**************************************************************/ /**************************************************************/ /* CSS for Fonts Displays */ /**************************************************************/ @font-face { font-family: Sarabun; src: url("/static/assets/fonts/Sarabun/Sarabun-Regular.ttf"); font-style: normal; font-weight: 400; } *:lang(th-TH) :not(.ph, .ph-bold, .ph-fill, .ph-light, .ph-thin, .ph-duotone) { font-family: "Sarabun", "Atikinson Hyperlegible Next", sans-serif; } .ph, .ph-bold, .ph-fill, .ph-light, .ph-thin, .ph-duotone { font-size: 16px; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .ph-spin::before { display: inline-block; animation: spin 2s infinite linear; } /**************************************************************/ /**************************************************************/ /* CSS for Annoucements Displays */ /**************************************************************/ .annoucement-item>p { float: right; } .annoucement-title { color: var(--info); } .annoucement-item:hover>a .annoucement-title { color: var(--purple); } div.support_progress { height: 15px; width: 100%; } /**************************************************************/ /**************************************************************/ /* CSS for API Keys Displays */ /**************************************************************/ .api-key { white-space: pre-wrap; color: white; word-break: break-all; background: grey; border-radius: 5px; } /**************************************************************/ /**************************************************************/ /* CSS for Virtual Console Displays */ /**************************************************************/ .virt_console { width: 100%; font-size: .8em; padding: 5px 10px; border: 1px solid var(--outline); background-color: var(--card-banner-bg); height: 500px; overflow: scroll; } /**************************************************************/ /**************************************************************/ /* CSS for Lists Displays */ /**************************************************************/ ul>li.list-group-item { background-color: var(--card-banner-bg); } ul>li.list-group-item i { margin: 0; } /**************************************************************/ /**************************************************************/ /* CSS for Card Displays */ /**************************************************************/ .card .card-header.header-sm { padding: 1rem 1.81rem; height: auto; } /**************************************************************/ /**************************************************************/ /* CSS for ? */ /**************************************************************/ div.form-group.reset-secret { background: rgba(243, 21, 6, 0.3); outline: 1px solid red; padding: 10px; } .bg-dropdown { background-color: var(--dropdown-bg); } .hidden-input { margin-left: -40px; } .transparent-button { background-color: transparent; /* Makes the background transparent */ border: none; /* Removes the default button border */ cursor: pointer; /* Keeps the cursor as a hand pointer on hover */ padding: 0; /* Removes default padding if desired */ outline: none; /* Removes the outline when the button is clicked or focused */ } /**************************************************************/ /* Custom site logos: scale any uploaded image to fit its */ /* container while preserving aspect ratio. Stock SVG logos */ /* fit intrinsically; uploaded raster logos need these caps so */ /* a square/large image doesn't render at full natural size. */ /**************************************************************/ /* Wide "full" logo in the sidebar/navbar brand area. A fixed box + object-fit: contain sizes dimensionless stock SVGs (viewBox only, no width/height) AND letterboxes raster uploads of any aspect ratio without distortion or oversize. */ .navbar.default-layout .navbar-brand-wrapper .brand-logo img { width: 170px; height: 50px; object-fit: contain; } /* "Full" logo on the login screen / login preview. Responsive width, fixed-height box + object-fit: contain so dimensionless stock SVGs render and raster uploads of any aspect ratio fit without distortion. */ .auto-form-logo img { width: 100%; height: 130px; object-fit: contain; } /* Customize-tab image controls: a fixed-width thumbnail column so the Upload / Choose existing / Apply controls of the background, full-logo and square-logo sections all line up at the same left edge, regardless of each thumbnail's own dimensions. */ .brand-thumb { -webkit-box-flex: 0; -ms-flex: 0 0 160px; flex: 0 0 160px; width: 160px; margin-right: 1rem; text-align: center; } .brand-thumb img { max-width: 100%; object-fit: contain; border: 1px solid var(--card-banner-bg, #444); border-radius: 4px; } #bg_thumb { width: 160px; height: 90px; object-fit: cover; } /* Image thumbnails double as drag-and-drop targets. The copy cursor hints that a file can be dropped; .drag-over highlights the active target. */ #bg_thumb, #embed_thumb, .brand-thumb img { cursor: copy; } .drag-over { outline: 2px dashed var(--info, #17a2b8); outline-offset: 2px; opacity: 0.85; } /* Section divider under a heading. The base stylesheet's hr is black at 10% opacity, which is invisible on the dark panel background; use the theme's outline colour so it shows on every theme. */ .section-divider { border-top-color: var(--outline); } /* Compact single-line control row for the reusable image picker element: [ select ........... ] [ delete ] [ upload ] */ .image-picker-row { display: flex; align-items: center; gap: 0.5rem; } .image-picker-row .select-css { flex: 1 1 auto; min-width: 0; } .image-picker-row .btn-icon { flex: 0 0 auto; align-self: stretch; display: inline-flex; align-items: center; justify-content: center; padding: 0 0.75rem; line-height: 1; } .image-picker-row .btn-icon i { display: block; margin: 0; font-size: 1.15rem; line-height: 1; } #logo_full_thumb { width: 160px; height: 64px; } #logo_square_thumb { width: 96px; height: 96px; } /* Customize-tab two-column split. Stacks (full width) by default so the login preview sits below the fields; goes side-by-side only past 1590px, where the content area (minus the ~270px sidebar) is wide enough for two comfortable columns. Custom breakpoint — not a Bootstrap stop. */ @media (min-width: 1590px) { .customize-col { -webkit-box-flex: 0; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } } /**************************************************************/