op-packages/luci-theme-spectra/htdocs/luci-static/spectra/css/cascade.css
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

6448 lines
132 KiB
CSS

/*!
Pure v2.0.3
Copyright 2013 Yahoo!
Licensed under the BSD License.
https://github.com/pure-css/pure/blob/master/LICENSE.md
*/
/*!
normalize.css v | MIT License | git.io/normalize
Copyright (c) Nicolas Gallagher and Jonathan Neal
*/
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
html {
line-height: 1.15;
-webkit-text-size-adjust: 100%
}
body {
margin: 0
}
main {
display: block
}
h1 {
font-size: 2em;
margin: .67em 0
}
hr {
-webkit-box-sizing: content-box;
box-sizing: content-box;
height: 0;
overflow: visible
}
pre {
font-family: monospace, monospace;
font-size: 1em
}
a {
background-color: transparent
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted
}
b,
strong {
font-weight: bolder
}
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em
}
small {
font-size: 80%
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
}
sub {
bottom: -0.25em
}
sup {
top: -0.5em
}
img {
border-style: none
}
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.15;
margin: 0
}
button,
input {
overflow: visible
}
button,
select {
text-transform: none
}
[type=button],
[type=reset],
[type=submit],
button {
-webkit-appearance: button
}
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner,
button::-moz-focus-inner {
border-style: none;
padding: 0
}
[type=button]:-moz-focusring,
[type=reset]:-moz-focusring,
[type=submit]:-moz-focusring,
button:-moz-focusring {
outline: 1px dotted ButtonText
}
fieldset {
padding: .35em .75em .625em
}
legend {
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal
}
progress {
vertical-align: baseline
}
textarea {
overflow: auto;
overflow-x: hidden;
}
[type=checkbox],
[type=radio] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0
}
[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
height: auto
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
[type=search]::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
details {
display: block
}
summary {
display: list-item
}
template {
display: none
}
[hidden] {
display: none
}
html {
font-family: sans-serif
}
.hidden,
[hidden] {
display: none !important
}
.pure-img {
max-width: 100%;
height: auto
}
.pure-g {
letter-spacing: -0.31em;
text-rendering: optimizespeed;
font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-ms-flex-line-pack: start;
align-content: flex-start
}
@media all and (-ms-high-contrast:none),
(-ms-high-contrast:active) {
table .pure-g {
display: block
}
}
.opera-only :-o-prefocus,
.pure-g {
word-spacing: -0.43em
}
.pure-u {
display: inline-block;
letter-spacing: normal;
word-spacing: normal;
vertical-align: top;
text-rendering: auto
}
.pure-g [class*=pure-u] {
font-family: sans-serif
}
.pure-u-1,
.pure-u-1-1,
.pure-u-1-12,
.pure-u-1-2,
.pure-u-1-24,
.pure-u-1-3,
.pure-u-1-4,
.pure-u-1-5,
.pure-u-1-6,
.pure-u-1-8,
.pure-u-10-24,
.pure-u-11-12,
.pure-u-11-24,
.pure-u-12-24,
.pure-u-13-24,
.pure-u-14-24,
.pure-u-15-24,
.pure-u-16-24,
.pure-u-17-24,
.pure-u-18-24,
.pure-u-19-24,
.pure-u-2-24,
.pure-u-2-3,
.pure-u-2-5,
.pure-u-20-24,
.pure-u-21-24,
.pure-u-22-24,
.pure-u-23-24,
.pure-u-24-24,
.pure-u-3-24,
.pure-u-3-4,
.pure-u-3-5,
.pure-u-3-8,
.pure-u-4-24,
.pure-u-4-5,
.pure-u-5-12,
.pure-u-5-24,
.pure-u-5-5,
.pure-u-5-6,
.pure-u-5-8,
.pure-u-6-24,
.pure-u-7-12,
.pure-u-7-24,
.pure-u-7-8,
.pure-u-8-24,
.pure-u-9-24 {
display: inline-block;
letter-spacing: normal;
word-spacing: normal;
vertical-align: top;
text-rendering: auto
}
.pure-u-1-24 {
width: 4.1667%
}
.pure-u-1-12,
.pure-u-2-24 {
width: 8.3333%
}
.pure-u-1-8,
.pure-u-3-24 {
width: 12.5%
}
.pure-u-1-6,
.pure-u-4-24 {
width: 16.6667%
}
.pure-u-1-5 {
width: 20%
}
.pure-u-5-24 {
width: 20.8333%
}
.pure-u-1-4,
.pure-u-6-24 {
width: 25%
}
.pure-u-7-24 {
width: 29.1667%
}
.pure-u-1-3,
.pure-u-8-24 {
width: 33.3333%
}
.pure-u-3-8,
.pure-u-9-24 {
width: 37.5%
}
.pure-u-2-5 {
width: 40%
}
.pure-u-10-24,
.pure-u-5-12 {
width: 41.6667%
}
.pure-u-11-24 {
width: 45.8333%
}
.pure-u-1-2,
.pure-u-12-24 {
width: 50%
}
.pure-u-13-24 {
width: 54.1667%
}
.pure-u-14-24,
.pure-u-7-12 {
width: 58.3333%
}
.pure-u-3-5 {
width: 60%
}
.pure-u-15-24,
.pure-u-5-8 {
width: 62.5%
}
.pure-u-16-24,
.pure-u-2-3 {
width: 66.6667%
}
.pure-u-17-24 {
width: 70.8333%
}
.pure-u-18-24,
.pure-u-3-4 {
width: 75%
}
.pure-u-19-24 {
width: 79.1667%
}
.pure-u-4-5 {
width: 80%
}
.pure-u-20-24,
.pure-u-5-6 {
width: 83.3333%
}
.pure-u-21-24,
.pure-u-7-8 {
width: 87.5%
}
.pure-u-11-12,
.pure-u-22-24 {
width: 91.6667%
}
.pure-u-23-24 {
width: 95.8333%
}
.pure-u-1,
.pure-u-1-1,
.pure-u-24-24,
.pure-u-5-5 {
width: 100%
}
.pure-button {
display: inline-block;
line-height: normal;
white-space: nowrap;
vertical-align: middle;
text-align: center;
cursor: pointer;
-webkit-user-drag: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
.pure-button::-moz-focus-inner {
padding: 0;
border: 0
}
.pure-button-group {
letter-spacing: -0.31em;
text-rendering: optimizespeed
}
.opera-only :-o-prefocus,
.pure-button-group {
word-spacing: -0.43em
}
.pure-button-group .pure-button {
letter-spacing: normal;
word-spacing: normal;
vertical-align: top;
text-rendering: auto
}
.pure-button {
font-family: inherit;
font-size: 100%;
padding: .5em 1em;
color: var(--text-primary);
border: none transparent;
background-color: var(--card-bg);
text-decoration: none;
border-radius: 2px;
}
.pure-button-hover,
.pure-button:focus,
.pure-button:hover {
background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(40%, rgba(0, 0, 0, 0.05)), to(rgba(0, 0, 0, 0.1)));
background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05) 40%, rgba(0, 0, 0, 0.1))
}
.pure-button:focus {
outline: 0
}
.pure-button-active,
.pure-button:active {
-webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset;
border-color: #000
}
.pure-button-disabled,
.pure-button-disabled:active,
.pure-button-disabled:focus,
.pure-button-disabled:hover,
.pure-button[disabled] {
border: none;
background-image: none;
opacity: .4;
cursor: not-allowed;
-webkit-box-shadow: none;
box-shadow: none;
pointer-events: none
}
.pure-button-hidden {
display: none
}
.pure-button-primary,
.pure-button-selected,
a.pure-button-primary,
a.pure-button-selected {
background-color: var(--btn-primary-bg);
color: var(--color-white);
}
.pure-button-group .pure-button {
margin: 0;
border-radius: 0;
border-right: 1px solid rgba(0, 0, 0, 0.2)
}
.pure-button-group .pure-button:first-child {
border-top-left-radius: 2px;
border-bottom-left-radius: 2px
}
.pure-button-group .pure-button:last-child {
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-right: none
}
.pure-form input[type=color],
.pure-form input[type=date],
.pure-form input[type=datetime-local],
.pure-form input[type=datetime],
.pure-form input[type=email],
.pure-form input[type=month],
.pure-form input[type=number],
.pure-form input[type=password],
.pure-form input[type=search],
.pure-form input[type=tel],
.pure-form input[type=text],
.pure-form input[type=time],
.pure-form input[type=url],
.pure-form input[type=week],
.pure-form select,
.pure-form textarea {
padding: .5em .6em;
display: inline-block;
border: 1px solid #ccc;
-webkit-box-shadow: inset 0 1px 3px #ddd;
box-shadow: inset 0 1px 3px #ddd;
border-radius: 4px;
vertical-align: middle;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
.pure-form input:not([type]) {
padding: .5em .6em;
display: inline-block;
border: 1px solid #ccc;
-webkit-box-shadow: inset 0 1px 3px #ddd;
box-shadow: inset 0 1px 3px #ddd;
border-radius: 4px;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
.pure-form input[type=color] {
padding: .2em .5em
}
.pure-form input[type=color]:focus,
.pure-form input[type=date]:focus,
.pure-form input[type=datetime-local]:focus,
.pure-form input[type=datetime]:focus,
.pure-form input[type=email]:focus,
.pure-form input[type=month]:focus,
.pure-form input[type=number]:focus,
.pure-form input[type=password]:focus,
.pure-form input[type=search]:focus,
.pure-form input[type=tel]:focus,
.pure-form input[type=text]:focus,
.pure-form input[type=time]:focus,
.pure-form input[type=url]:focus,
.pure-form input[type=week]:focus,
.pure-form select:focus,
.pure-form textarea:focus {
outline: 0;
border-color: #129fea
}
.pure-form input:not([type]):focus {
outline: 0;
border-color: #129fea
}
.pure-form input[type=checkbox]:focus,
.pure-form input[type=file]:focus,
.pure-form input[type=radio]:focus {
outline: thin solid #129fea;
outline: 1px auto #129fea
}
.pure-form .pure-checkbox,
.pure-form .pure-radio {
margin: .5em 0;
display: block
}
.pure-form input[type=color][disabled],
.pure-form input[type=date][disabled],
.pure-form input[type=datetime-local][disabled],
.pure-form input[type=datetime][disabled],
.pure-form input[type=email][disabled],
.pure-form input[type=month][disabled],
.pure-form input[type=number][disabled],
.pure-form input[type=password][disabled],
.pure-form input[type=search][disabled],
.pure-form input[type=tel][disabled],
.pure-form input[type=text][disabled],
.pure-form input[type=time][disabled],
.pure-form input[type=url][disabled],
.pure-form input[type=week][disabled],
.pure-form select[disabled],
.pure-form textarea[disabled] {
cursor: not-allowed;
background-color: var(--bg-container);
color: var(--text-secondary);
}
.pure-form input:not([type])[disabled] {
cursor: not-allowed;
background-color: var(--bg-container);
color: var(--text-secondary);
}
.pure-form input[readonly],
.pure-form select[readonly],
.pure-form textarea[readonly] {
background-color: var(--card-bg);
color: var(--text-primary);
border-color: var(--border-color);
}
.pure-form input:focus:invalid,
.pure-form select:focus:invalid,
.pure-form textarea:focus:invalid {
color: var(--danger-text);
border-color: var(--btn-danger-bg);
}
.pure-form input[type=checkbox]:focus:invalid:focus,
.pure-form input[type=file]:focus:invalid:focus,
.pure-form input[type=radio]:focus:invalid:focus {
outline-color: var(--btn-danger-bg);
}
.pure-form select {
height: 2.25em;
border: var(--border-strong);
background-color: var(--color-white)
}
.pure-form select[multiple] {
height: auto
}
.pure-form label {
margin: .5em 0 .2em
}
.pure-form fieldset {
margin: 0;
padding: .35em 0 .75em;
border: 0
}
.pure-form legend {
display: block;
width: 100%;
padding: .3em 0;
margin-bottom: .3em;
color: #333;
border-bottom: 1px solid #e5e5e5
}
.pure-form-stacked input[type=color],
.pure-form-stacked input[type=date],
.pure-form-stacked input[type=datetime-local],
.pure-form-stacked input[type=datetime],
.pure-form-stacked input[type=email],
.pure-form-stacked input[type=file],
.pure-form-stacked input[type=month],
.pure-form-stacked input[type=number],
.pure-form-stacked input[type=password],
.pure-form-stacked input[type=search],
.pure-form-stacked input[type=tel],
.pure-form-stacked input[type=text],
.pure-form-stacked input[type=time],
.pure-form-stacked input[type=url],
.pure-form-stacked input[type=week],
.pure-form-stacked label,
.pure-form-stacked select,
.pure-form-stacked textarea {
display: block;
margin: .25em 0
}
.pure-form-stacked input:not([type]) {
display: block;
margin: .25em 0
}
.pure-form-aligned input,
.pure-form-aligned select,
.pure-form-aligned textarea,
.pure-form-message-inline {
display: inline-block;
vertical-align: middle
}
.pure-form-aligned textarea {
vertical-align: top
}
.pure-form-aligned .pure-control-group {
margin-bottom: .5em
}
.pure-form-aligned .pure-control-group label {
text-align: right;
display: inline-block;
vertical-align: middle;
width: 10em;
margin: 0 1em 0 0
}
.pure-form-aligned .pure-controls {
margin: 1.5em 0 0 11em
}
.pure-form .pure-input-rounded,
.pure-form input.pure-input-rounded {
border-radius: 2em;
padding: .5em 1em
}
.pure-form .pure-group fieldset {
margin-bottom: 10px
}
.pure-form .pure-group input,
.pure-form .pure-group textarea {
display: block;
padding: 10px;
margin: 0 0 -1px;
border-radius: 0;
position: relative;
top: -1px
}
.pure-form .pure-group input:focus,
.pure-form .pure-group textarea:focus {
z-index: 3
}
.pure-form .pure-group input:first-child,
.pure-form .pure-group textarea:first-child {
top: 1px;
border-radius: 4px 4px 0 0;
margin: 0
}
.pure-form .pure-group input:first-child:last-child,
.pure-form .pure-group textarea:first-child:last-child {
top: 1px;
border-radius: 4px;
margin: 0
}
.pure-form .pure-group input:last-child,
.pure-form .pure-group textarea:last-child {
top: -2px;
border-radius: 0 0 4px 4px;
margin: 0
}
.pure-form .pure-group button {
margin: .35em 0
}
.pure-form .pure-input-1 {
width: 100%
}
.pure-form .pure-input-3-4 {
width: 75%
}
.pure-form .pure-input-2-3 {
width: 66%
}
.pure-form .pure-input-1-2 {
width: 50%
}
.pure-form .pure-input-1-3 {
width: 33%
}
.pure-form .pure-input-1-4 {
width: 25%
}
.pure-form-message-inline {
display: inline-block;
padding-left: .3em;
color: var(--text-secondary);
vertical-align: middle;
font-size: .875em;
}
.pure-form-message {
display: block;
color: var(--text-secondary);
font-size: .875em;
}
@media only screen and (max-width:480px) {
.pure-form button[type=submit] {
margin: .7em 0 0
}
.pure-form input:not([type]),
.pure-form input[type=color],
.pure-form input[type=date],
.pure-form input[type=datetime-local],
.pure-form input[type=datetime],
.pure-form input[type=email],
.pure-form input[type=month],
.pure-form input[type=number],
.pure-form input[type=password],
.pure-form input[type=search],
.pure-form input[type=tel],
.pure-form input[type=text],
.pure-form input[type=time],
.pure-form input[type=url],
.pure-form input[type=week],
.pure-form label {
margin-bottom: .3em;
display: block
}
.pure-group input:not([type]),
.pure-group input[type=color],
.pure-group input[type=date],
.pure-group input[type=datetime-local],
.pure-group input[type=datetime],
.pure-group input[type=email],
.pure-group input[type=month],
.pure-group input[type=number],
.pure-group input[type=password],
.pure-group input[type=search],
.pure-group input[type=tel],
.pure-group input[type=text],
.pure-group input[type=time],
.pure-group input[type=url],
.pure-group input[type=week] {
margin-bottom: 0
}
.pure-form-aligned .pure-control-group label {
margin-bottom: .3em;
text-align: left;
display: block;
width: 100%
}
.pure-form-aligned .pure-controls {
margin: 1.5em 0 0 0
}
.pure-form-message,
.pure-form-message-inline {
display: block;
font-size: .75em;
padding: .2em 0 .8em
}
}
.pure-menu {
-webkit-box-sizing: border-box;
box-sizing: border-box
}
.pure-menu-fixed {
position: fixed;
left: 0;
top: 0;
z-index: 3
}
.pure-menu-item,
.pure-menu-list {
position: relative
}
.pure-menu-list {
list-style: none;
margin: 0;
padding: 0
}
.pure-menu-item {
padding: 0;
margin: 0;
height: 100%
}
.pure-menu-heading,
.pure-menu-link {
display: block;
text-decoration: none;
white-space: nowrap
}
.pure-menu-horizontal {
width: 100%;
white-space: nowrap
}
.pure-menu-horizontal .pure-menu-list {
display: inline-block
}
.pure-menu-horizontal .pure-menu-heading,
.pure-menu-horizontal .pure-menu-item,
.pure-menu-horizontal .pure-menu-separator {
display: inline-block;
vertical-align: middle
}
.pure-menu-item .pure-menu-item {
display: block
}
.pure-menu-children {
display: none;
position: absolute;
left: 100%;
top: 0;
margin: 0;
padding: 0;
z-index: 3
}
.pure-menu-horizontal .pure-menu-children {
left: 0;
top: auto;
width: inherit
}
.pure-menu-active>.pure-menu-children,
.pure-menu-allow-hover:hover>.pure-menu-children {
display: block;
position: absolute
}
.pure-menu-has-children>.pure-menu-link:after {
padding-left: .5em;
content: "\25B8";
font-size: small
}
.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after {
content: "\25BE"
}
.pure-menu-scrollable {
overflow-y: scroll;
overflow-x: hidden
}
.pure-menu-scrollable .pure-menu-list {
display: block
}
.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {
display: inline-block
}
.pure-menu-horizontal.pure-menu-scrollable {
white-space: nowrap;
overflow-y: hidden;
overflow-x: auto;
padding: .5em 0
}
.pure-menu-horizontal .pure-menu-children .pure-menu-separator,
.pure-menu-separator {
background-color: #ccc;
height: 1px;
margin: .3em 0
}
.pure-menu-horizontal .pure-menu-separator {
width: 1px;
height: 1.3em;
margin: 0 .3em
}
.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
display: block;
width: auto
}
.pure-menu-heading {
text-transform: uppercase;
color: var(--text-primary);
}
.pure-menu-link {
color: var(--text-primary);
}
.pure-menu-children {
background-color: var(--bg-container)
}
.pure-menu-disabled,
.pure-menu-heading,
.pure-menu-link {
padding: .5em 1em
}
.pure-menu-disabled {
opacity: .5
}
.pure-menu-disabled .pure-menu-link:hover {
background-color: transparent
}
.pure-menu-active>.pure-menu-link,
.pure-menu-link:focus,
.pure-menu-link:hover {
background-color: #eee
}
.pure-menu-selected>.pure-menu-link,
.pure-menu-selected>.pure-menu-link:visited {
color: var(--text-secondary);
}
.pure-table {
border-collapse: collapse;
border-spacing: 0;
empty-cells: show;
border: var(--border-strong);
}
.pure-table caption {
color: var(--color-black);
font: italic 85%/1 arial, sans-serif;
padding: 1em 0;
text-align: center
}
.pure-table td,
.pure-table th {
border-left: 1px solid var(--border-color);
border-width: 0 0 0 1px;
font-size: inherit;
margin: 0;
overflow: visible;
padding: .5em 1em
}
.pure-table thead {
background-color: var(--header-bg);
color: var(--color-black);
text-align: left;
vertical-align: bottom
}
.pure-table td {
background-color: transparent
}
.pure-table-odd td {
background-color: var(--card-bg);
}
.pure-table-bordered td {
border-bottom: 1px solid var(--border-color);
}
.pure-table-bordered tbody>tr:last-child>td {
border-bottom-width: 0
}
.pure-table-horizontal td,
.pure-table-horizontal th {
border-width: 0 0 1px 0;
border-bottom: 1px solid var(--border-color);
}
.pure-table-horizontal tbody>tr:last-child>td {
border-bottom-width: 0
}
@font-face {
font-family: 'NotoColorEmojiFlags';
src: url('/luci-static/spectra/fonts/NotoColorEmoji-flagsonly-CWWDk9km.ttf') format('truetype');
}
@font-face {
font-display: swap;
font-family: 'Fredoka One';
font-style: normal;
font-weight: 400;
src: url('/luci-static/spectra/fonts/fredoka-v16-latin-regular.woff2') format('woff2');
}
@font-face {
font-display: swap;
font-family: 'DM Serif Display';
font-style: normal;
font-weight: 400;
src: url('/luci-static/spectra/fonts/dm-serif-display-v15-latin-regular.woff2') format('woff2');
}
@font-face {
font-display: swap;
font-family: 'Noto Serif SC';
font-style: normal;
font-weight: 400;
src: url('/luci-static/spectra/fonts/noto-serif-sc-v31-latin-regular.woff2') format('woff2');
}
@font-face {
font-display: swap;
font-family: 'Comic Neue';
font-style: normal;
font-weight: 400;
src: url('/luci-static/spectra/fonts/comic-neue-v8-latin-regular.woff2') format('woff2');
}
@font-face {
font-display: swap;
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: url('/luci-static/spectra/fonts/noto-sans-v39-regular.woff2') format('woff2');
}
@font-face {
font-family: 'Cinzel Decorative';
font-style: normal;
font-weight: 700;
src: url('/luci-static/spectra/fonts/cinzel-decorative-v17-latin-700.woff2') format('woff2');
}
.font-default {
font-family: "Microsoft YaHei", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif !important;
}
.font-fredoka {
font-family: 'Fredoka One', cursive !important;
}
.font-dmserif {
font-family: 'DM Serif Display', serif !important;
}
.font-notoserif {
font-family: 'Noto Serif SC', serif !important;
}
.font-comicneue {
font-family: 'Comic Neue', cursive !important;
}
.font-notosans {
font-family: 'Noto Sans', sans-serif !important;
}
.font-cinzeldecorative {
font-family: 'Cinzel Decorative', cursive !important;
}
@font-face {
font-family: 'bootstrap-icons';
src: url('../fonts/bootstrap-icons.woff2') format('woff2');
font-weight: normal;
font-style: normal;
font-display: block;
}
@font-face {
font-family: "easeicon";
src: url('../fonts/iconfont.woff2') format('woff2');
font-weight: normal;
font-style: normal;
font-display: block;
}
#view>.spinning {
display: none !important;
visibility: hidden !important;
}
html,
body {
margin: 0px;
padding: 0px;
height: 100%;
font-size: 16px;
font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";
}
html {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%
}
body {
font-size: .875rem;
-webkit-tap-highlight-color: transparent
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::selection {
background-color: var(--accent-secondary);
color: var(--color-white);
}
a:link,
a:visited,
a:active {
color: var(--accent-color);
text-decoration: none
}
a:hover {
text-decoration: underline
}
li {
list-style-type: none
}
.table {
position: relative;
display: table
}
.tr {
display: table-row
}
.thead {
display: table-header-group
}
.tbody {
display: table-row-group
}
.tfoot {
display: table-footer-group
}
.td,
.th {
line-height: normal;
display: table-cell;
padding: .5em;
text-align: center;
vertical-align: middle
}
.th {
font-weight: bold;
white-space: nowrap
}
.tr.placeholder {
height: 4em
}
.tr.placeholder>.td {
line-height: 3;
position: absolute;
right: 0;
bottom: 0;
left: 0;
padding: .4rem 0 !important;
text-align: center !important;
background: inherit
}
.td[width="33%"] {
padding: 1.1em 1.5rem
}
.table[width="33%"],
.th[width="33%"],
.td[width="33%"] {
width: 33%
}
.table[width="100%"],
.th[width="100%"],
.td[width="100%"] {
width: 100%
}
.col-1 {
flex: 1 1 30px !important
}
.col-2 {
flex: 2 2 60px !important
}
.col-3 {
flex: 3 3 90px !important
}
.col-4 {
flex: 4 4 120px !important
}
.col-5 {
flex: 5 5 150px !important
}
.col-6 {
flex: 6 6 180px !important
}
.col-7 {
flex: 7 7 210px !important
}
.col-8 {
flex: 8 8 240px !important
}
.col-9 {
flex: 9 9 270px !important
}
.col-10 {
flex: 10 10 300px !important
}
.h1,
.h2,
.h3,
.h4,
.h5,
.h6,
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: inherit;
font-weight: normal;
line-height: 1.1 !important;
color: inherit
}
select {
padding: .36rem .8rem;
color: var(--text-primary) !important;
border: var(--border-strong);
background-color: var(--card-bg) !important;
background-image: none;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
}
.float-list,
.btn,
button,
select,
input,
.cbi-dropdown {
line-height: 1.5rem;
padding: .5rem .75rem;
margin: .25rem .1rem;
color: var(--text-primary);
background-color: var(--card-bg);
border: var(--border-strong);
border-radius: .25rem;
outline: 0;
background-image: none;
box-shadow: none;
transition: box-shadow .15s ease
}
select,
.cbi-dropdown {
width: inherit;
cursor: default
}
select:not([multiple="multiple"]):focus,
input:not(.cbi-button):focus,
.cbi-dropdown:focus {
border-color: #5e72e4;
box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1)
}
.cbi-dropdown,
select[multiple="multiple"] {
height: auto
}
pre {
overflow: auto
}
code {
font-size: 1rem;
font-size-adjust: .35;
padding: 1px 3px;
color: #101010;
border-radius: 2px;
background: #ddd
}
abbr {
cursor: help;
text-decoration: underline;
color: #5e72e4;
}
hr {
margin: 1rem 0;
opacity: .1;
border-color: #eee
}
.login-page {
height: 100%
}
header,
.main {
width: 100%
}
footer {
font-size: .8rem;
overflow: hidden;
padding: 1rem;
text-align: right;
white-space: nowrap;
color: #aaa
}
footer>a {
text-decoration: none;
color: #aaa
}
small {
font-size: 90%;
line-height: 1.42857143;
white-space: normal
}
.main {
position: relative;
top: 0;
bottom: 0;
overflow-y: auto;
height: 100%
}
.main-left {
top: 0;
float: left;
width: 15%;
width: calc(0% + 15rem);
height: 100%;
border: 1px solid var(--bg-container);
box-shadow: 1px 0 3px -2px color-mix(in oklch, var(--bg-container), black 30%);
overflow-x: auto;
position: fixed;
z-index: 100;
scrollbar-width: none;
-ms-overflow-style: none;
}
.main-left::-webkit-scrollbar {
display: none;
}
.main-left .sidenav-header {
padding: 1.2rem 0.5rem 1rem 0.5rem !important;
text-align: center;
}
.main-left .nav {
margin-top: 0 !important;
}
.main-left .sidenav-header .brand {
font-size: 1.8rem;
color: #5e72e4;
font-family: "Fredoka One";
text-decoration: none;
text-align: center;
cursor: default;
vertical-align: text-bottom
}
.main-left::-webkit-scrollbar {
width: 5px;
height: 1px
}
.main-left::-webkit-scrollbar-thumb {
background-color: var(--accent-color)
}
.main-left::-webkit-scrollbar-track {
background-color: var(--color-white)
}
.main-left #search {
margin: 0 auto;
padding: 0 .5rem;
width: 90%;
border-radius: 1lh
}
.main-right {
float: right;
width: 85%;
width: calc(100% - 15rem);
height: 100%;
transition: all .2s
}
.main-right>#maincontent {
position: relative;
z-index: 0
}
.pull-right {
float: right
}
.pull-left {
float: left
}
.nowrap:not(.td) {
white-space: nowrap
}
[disabled="disabled"] {
pointer-events: none
}
header {
color: var(--color-white);
padding: 0;
position: relative
}
header.bg-primary {
background-color: #5e72e4 !important;
}
header::after {
content: "";
position: absolute;
top: 0 !important;
height: 4.5em;
z-index: 1;
left: 15rem;
right: 0;
background: var(--bg-container);
border: 1px solid var(--bg-container);
box-shadow: 0 1px 3px -2px color-mix(in oklch, var(--bg-container), black 30%);
}
header .fill {
padding: .8rem 0;
border-bottom: 0 solid rgba(255, 255, 255, 0.08) !important;
display: flex
}
header .fill .container {
height: 2rem;
padding: 0 1.25rem;
display: flex;
align-items: center;
width: 100%
}
header .fill .container .flex1 {
flex: 1
}
header .fill .container .flex1 .showSide {
display: none;
color: var(--color-white);
font-size: 1.4rem
}
header .fill .container .flex1 .showSide:hover {
text-decoration: none
}
header .fill .container .flex1 .brand {
font-size: 1.5rem;
color: var(--color-white);
font-family: "Fredoka One";
text-decoration: none;
padding-left: 1rem;
cursor: default;
vertical-align: text-bottom;
display: none
}
header .fill .container .pull-right {
float: right;
margin-top: 0rem;
display: flex
}
header .fill .status span {
display: inline-block;
font-size: .8rem;
font-weight: bold;
padding: .3rem .8rem;
white-space: nowrap;
text-decoration: none;
text-transform: uppercase;
text-shadow: none;
border-radius: 4px;
cursor: pointer;
transition: all .3s;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12);
margin: 0 .25rem
}
header .fill .status span:last-child {
margin-right: 0
}
header .fill .status span[data-indicator="poll-status"] {
color: #32325d;
background-color: var(--color-white)
}
header .fill .status span[data-style="active"] {
background-color: var(--green)
}
header .fill .status span[data-style="inactive"] {
color: var(--color-white) !important;
background-color: #32325d
}
#xhr_poll_status {
display: flex;
margin-left: .5rem
}
#xhr_poll_status * {
color: var(--color-white)
}
div[style="width:100%;height:300px;border:1px solid #000;background:var(--color-white)"] {
border: 0 !important
}
.danger {
background-color: #ff7d60 !important
}
.warning {
background-color: #f0e68c !important
}
.success {
background-color: #5cb85c !important
}
.notice {
background-color: #11cdef !important;
color: var(--color-white)
}
.error {
color: #f00
}
.alert,
.alert-message {
font-weight: bold;
margin-bottom: 1.25rem;
padding: 1rem 1.25rem;
border: 0;
border-radius: var(--radius-small) !important;
background-color: var(--accent-color) !important;
color: var(--color-white) !important;
border: 1px solid rgba(0,0,0,0.1);
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12);
text-shadow: 1px 1px rgba(0, 0, 0, 0.1);
}
.alert.error,
.alert-message.error {
background-color: #ffd600
}
.alert h4,
.alert-message h4 {
padding: .25rem 0;
border-radius: 4px;
background-color: #ffd600
}
.alert .btn,
.alert-message .btn {
height: auto
}
.alert-message>h4 {
font-size: 110%;
font-weight: bold
}
.alert-message>* {
margin: .5rem 0
}
.alert-message .btn {
padding: .3rem .6rem
}
.container .alert,
.container .alert-message {
margin-top: 0rem
}
.main .main-left {
transition: all .2s
}
.main .main-left .nav {
margin-top: .5rem
}
.main .main-left .nav>li>a:first-child {
display: block;
margin: .1rem .5rem .1rem .5rem;
padding: .675rem 0 .675rem 2.5rem;
border-radius: .375rem;
text-decoration: none;
cursor: default;
font-size: 1rem;
transition: all .2s;
position: relative
}
.main .main-left .nav>li>a:first-child.active {
color: var(--color-white);
background: var(--accent-color);
}
.main .main-left .nav>li>a:first-child.active::before {
color: var(--color-white) !important
}
.main .main-left .nav>li>a:first-child.active::after {
transform: rotate(90deg);
color: var(--color-white) !important
}
.main .main-left .nav>li>a:first-child:hover {
cursor: pointer;
color: var(--color-white);
background: oklch(var(--l) var(--c) var(--base-hue-1));
}
.main .main-left .nav>li>a:first-child:hover::before {
color: var(--color-white) !important
}
.main .main-left .nav>li>a:first-child::before {
font-family: 'spectra' !important;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
position: absolute;
left: .8rem;
padding-top: 3px;
transition: all .3s;
content: "\e915";
color: var(--accent-color)
}
.main .main-left .nav li {
padding: .5rem 1rem;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
padding: 0
}
.main .main-left .nav li a {
display: block;
color: var(--text-primary)
}
.main .main-left .nav li.slide {
padding: 0
}
.main .main-left .nav li.slide ul {
display: none;
overflow: hidden
}
.main .main-left .nav li.slide:hover {
background: none
}
.main .main-left .nav li.slide .slide-menu {
margin: 0 .5rem 0 2.5rem;
padding: 0 .5rem
}
.main .main-left .nav li.slide .slide-menu.active {
display: block
}
.main .main-left .nav li.slide .slide-menu li {
position: relative;
border-radius: .375rem;
margin: 0;
background: none;
list-style: none
}
.main .main-left .nav li.slide .slide-menu li a {
text-decoration: none;
padding: .5rem 0
}
.main .main-left .nav li.slide .slide-menu li::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 0;
height: 2px;
background-color: var(--accent-color);
transition: all .2s
}
.main .main-left .nav li.slide .slide-menu li:hover {
background: none
}
.main .main-left .nav li.slide .slide-menu li:hover::after {
width: 100%
}
.main .main-left .nav li.slide .slide-menu .active {
background: none;
color: var(--text-primary)
}
.main .main-left .nav li.slide .slide-menu .active a {
color: var(--accent-color)
}
.main .main-left .nav li.slide .slide-menu .active::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg,
oklch(var(--l) var(--c) var(--base-hue-1)),
oklch(var(--l) var(--c) var(--base-hue-2)),
oklch(var(--l) var(--c) var(--base-hue-3)),
oklch(var(--l) var(--c) var(--base-hue-4)),
oklch(var(--l) var(--c) var(--base-hue-5)),
oklch(var(--l) var(--c) var(--base-hue-6)),
oklch(var(--l) var(--c) var(--base-hue-7)),
oklch(var(--l) var(--c) var(--base-hue-1)));
background-size: 400% auto;
transform: translateZ(0);
will-change: transform, background-position, box-shadow;
animation: rainbow-energy 6s linear infinite, pulse 1.5s ease-in-out infinite;
transition: var(--transition);
}
@keyframes rainbow-energy {
from {
background-position: 200% center;
}
to {
background-position: -200% center;
}
}
@keyframes pulse {
0%,
100% {
opacity: 0.7;
}
50% {
opacity: 1;
}
}
.main .main-left .nav li.slide .slide-menu .active:hover {
background: none
}
.main .main-left .nav li.slide .slide-menu .active:hover::after {
width: 100%
}
.main .main-left .nav li .menu::after {
position: absolute;
right: .5rem;
top: .8rem;
font-family: 'bootstrap-icons' !important;
content: '\f285';
color: var(--text-primary);
transition: all .3s;
}
.main .main-left .nav li .menu.active::after {
transform: rotate(90deg);
}
.main .main-left .nav li .menu[data-title=Status]:before {
font-family: 'bootstrap-icons' !important;
content: "\F62E";
color: oklch(var(--l) var(--c) var(--base-hue-1));
}
.main .main-left .nav li .menu[data-title=System]:before {
font-family: 'bootstrap-icons' !important;
content: "\F7D5";
color: oklch(var(--l) var(--c) var(--base-hue-2));
}
.main .main-left .nav li .menu[data-title=Services]:before {
font-family: 'bootstrap-icons' !important;
content: "\f3e5";
color: oklch(var(--l) var(--c) var(--base-hue-3));
}
.main .main-left .nav li .menu[data-title=NAS]:before {
font-family: 'bootstrap-icons' !important;
content: "\F412";
color: oklch(var(--l) var(--c) var(--base-hue-4));
}
.main .main-left .nav li .menu[data-title=VPN]:before {
font-family: 'bootstrap-icons' !important;
content: "\f52f";
color: oklch(var(--l) var(--c) var(--base-hue-5));
}
.main .main-left .nav li .menu[data-title=Network]:before {
font-family: 'bootstrap-icons' !important;
content: "\f3ee";
color: oklch(var(--l) var(--c) var(--base-hue-6));
}
.main .main-left .nav li .menu[data-title=Bandwidth_Monitor]:before {
font-family: 'bootstrap-icons' !important;
content: "\f3c1";
color: var(--btn-success-bg);
}
.main .main-left .nav li .menu[data-title=Spectra]:before {
font-family: 'bootstrap-icons' !important;
content: "\F666";
color: oklch(var(--l) var(--c) var(--base-hue-7));
}
.main>.main-left>.nav>li.slide>.menu[data-title=Docker]:before {
font-family: 'easeicon' !important;
content: "\e659" !important;
color: #0c93f3;
font-size: 18px;
}
.main>.main-left>.nav>li.slide>.menu[data-title=iStore]:before,
.main>.main-left>.nav>li>a[data-title=iStore]:before {
font-family: 'easeicon' !important;
content: "\e60f" !important;
color: oklch(var(--l) var(--c) var(--base-hue-4));
font-size: 18px;
}
.main>.main-left>.nav>li.slide>.menu[data-title="QuickStart"]:before,
.main>.main-left>.nav>li>a[data-title="QuickStart"]:before,
.main>.main-left>.nav>li>a[data-title="Home"]:before {
font-family: 'easeicon' !important;
content: "\e664" !important;
color: #11cdef !important;
font-size: 18px;
}
.main>.main-left>.nav>li.slide>.menu[data-title=NetworkGuide]:before,
.main>.main-left>.nav>li>a[data-title=NetworkGuide]:before {
font-family: 'easeicon' !important;
content: "\ecc7" !important;
color: #fb6340;
font-size: 18px;
}
.main .main-left .nav li .menu[data-title=Statistics]:before {
font-family: 'bootstrap-icons' !important;
content: "\f183";
color: var(--accent-color);
}
.main .main-left .nav li .menu[data-title=Control]:before {
font-family: 'bootstrap-icons' !important;
content: "\f5b3";
color: var(--btn-primary-bg);
}
.main .main-left .nav li .menu[data-title=Asterisk]:before {
font-family: 'bootstrap-icons' !important;
content: "\f5c1";
color: var(--btn-danger-bg);
}
.main .main-left .nav li a[data-title=Logout]:before {
font-family: 'bootstrap-icons' !important;
content: "\f1c3";
color: oklch(var(--l) var(--c) var(--base-hue-7));
}
.lg {
margin: 0;
padding: 0 !important
}
.logout {
display: block;
margin: .8rem .5rem .1rem .5rem;
padding: .675rem 0 .675rem 2.5rem;
border-radius: .375rem;
text-decoration: none;
font-size: 1rem;
transition: all .2s;
position: relative
}
body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before {
transition: transform .1s ease-in-out
}
body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before {
transition: transform .2s ease-in-out
}
.main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before {
display: none
}
#maincontent>.container {
margin: 0 1.25rem 1rem 1.25rem
}
ul {
line-height: normal
}
li {
list-style-type: none
}
h1 {
font-size: 2rem;
padding-bottom: 10px;
border-bottom: thin solid #eee
}
h2 {
margin: 0 0 0.5rem 0;
font-size: 1.35rem;
letter-spacing: .1rem;
padding: 0.5rem 1.25rem;
color: var(--accent-color);
margin-top: 10px;
}
h3 {
font-size: 0.9rem;
line-height: 1;
display: block;
margin: 0;
margin-bottom: 0;
padding: 0.3rem 0.5rem;
color: var(--text-color);
text-shadow: none !important;
}
h4 {
margin: 0;
padding: .75rem 1.25rem;
font-size: 1rem;
font-weight: 600;
border-radius: var(--radius-small);
color: var(--accent-color) !important;
background: var(--bg-container);
}
h4 em {
padding: 0 .5rem
}
h5 {
font-size: 1rem;
margin: 2rem 0 0 0;
padding-bottom: 10px
}
.cbi-section,
.cbi-section-error,
#iptables,
.Firewall form,
#cbi-network>.cbi-section-node,
#cbi-wireless>.cbi-section-node,
#cbi-wireless>#wifi_assoclist_table,
[data-tab-title],
[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
[data-page="admin-system-opkg"] #maincontent>.container {
font-family: inherit;
font-weight: normal;
font-style: normal;
line-height: normal;
min-width: inherit;
margin: 1.25rem 0;
padding: 0rem;
border: 0;
border-radius: .375rem;
background-color: var(--bg-container);
}
.cbi-modal .cbi-section,
.cbi-section .cbi-section {
padding: 0;
box-shadow: none
}
.cbi-modal .cbi-tabmenu {
margin-left: 0
}
.cbi-map-descr {
font-size: small;
line-height: 1.5;
padding: 0 1.25rem 1rem 1.25rem;
}
.cbi-section-descr:not(:empty) {
font-size: small;
line-height: 1.5;
padding: 1rem 1.25rem 0 1.25rem
}
.cbi-map-descr+fieldset {
margin-top: 1rem
}
.cbi-map-descr>abbr {
cursor: help;
text-decoration: underline
}
.cbi-section>legend {
display: none !important
}
fieldset>fieldset,
.cbi-section>.cbi-section {
margin: 0;
padding: 0;
border: 0;
box-shadow: none
}
.cbi-section>h3:first-child,
.panel-title {
font-size: 1.1rem;
line-height: 1;
display: block;
width: 100%;
margin: 0;
margin-bottom: 0;
padding: .8755rem 1.25rem;
color: var(--accent-color)
}
.cbi-section>h3:first-child,
.cbi-section>h4:first-child,
.cbi-section>p:first-child,
[data-tab-title]>h3:first-child,
[data-tab-title]>h4:first-child,
[data-tab-title]>p:first-child {
padding: 1rem 1.25rem
}
.cbi-section p {
padding: 1rem
}
.cbi-tblsection {
overflow-x: scroll
}
table {
border-spacing: 0;
border-collapse: collapse
}
table,
.table {
overflow-y: hidden;
width: 100%;
font-size: 90%
}
.cbi-tblsection table.cbi-section-table {
overflow-y: visible
}
.table .table-titles th {
background-color: var(--card-bg);
}
table>tbody>tr>td,
table>tbody>tr>th,
table>tfoot>tr>td,
table>tfoot>tr>th,
table>thead>tr>td,
table>thead>tr>th,
.table>.tbody>.tr>.td,
.table>.tbody>.tr>.th,
.table>.tfoot>.tr>.td,
.table>.tfoot>.tr>.th,
.table>.thead>.tr>.td,
.table>.thead>.tr>.th,
.table>.tr>.td.cbi-value-field,
.table>.tr>.th.cbi-section-table-cell {
padding: .5rem
}
.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td {
padding: .6rem
}
.cbi-section-table-cell {
line-height: 1.1;
align-self: flex-end;
flex: 1 1 auto
}
tr>td,
tr>th,
.tr>.td,
.tr>.th,
.cbi-section-table-row::before,
#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) {
padding: 1.1em 1.25rem
}
#cbi-wireless .td,
#cbi-network .tr:first-child>.td,
.table[width="100%"]>.tr:first-child>.td,
[data-page="admin-network-diagnostics"] .tr>.td,
.tr.table-titles>.th,
.tr.cbi-section-table-titles>.th {
border-top: 0 !important;
background-color: var(--bg-container) !important;
color: var(--text-primary) !important;
padding: 1.1em 1.25rem;
line-height: 1.3rem
}
.table[width="100%"]>.tr:first-child>.td {
margin: auto 0
}
.cbi-section-table-row {
margin-bottom: 1rem;
text-align: center !important;
background-color: var(--card-bg) !important;
}
.cbi-section-table-row:last-child {
margin-bottom: 0
}
.cbi-section-table-row>.cbi-value-field .cbi-dropdown,
.cbi-section-table-row>.cbi-value-field .cbi-input-select,
.cbi-section-table-row>.cbi-value-field .cbi-input-text,
.cbi-section-table-row>.cbi-value-field .cbi-input-password {
width: 100%
}
.cbi-section-table-row>.cbi-value-field .cbi-input-text,
.cbi-section-table-row>.cbi-value-field .cbi-input-password {
min-width: unset !important;
width: fit-content !important;
}
.cbi-section-table-row>.cbi-value-field [data-dynlist]>input,
.cbi-section-table-row>.cbi-value-field input.cbi-input-password {
width: calc(100% - 1.5rem)
}
.cbi-section-table-row .td {
text-align: center !important
}
.cbi-section-table-row .control-group {
flex-wrap: nowrap
}
.control-group {
display: inline-flex;
width: 100%;
flex-wrap: wrap;
gap: 2px
}
.control-group>* {
vertical-align: middle
}
div>table>tbody>tr:nth-of-type(2n),
div>.table>.tr:nth-of-type(2n) {
background-color: var(--bg-container);
}
table table,
.table .table,
.cbi-value-field table,
.cbi-value-field .table,
td>table>tbody>tr>td,
.td>.table>.tbody>.tr>.td,
.cbi-value-field>table>tbody>tr>td,
.cbi-value-field>.table>.tbody>.tr>.td {
border: 0
}
.tabs,
.cbi-tabmenu {
margin: 0 0 1.5rem 0;
padding: 0.6rem;
border-radius: var(--radius);
white-space: nowrap;
overflow-x: auto;
scrollbar-width: none;
-ms-overflow-style: none;
display: flex;
flex-wrap: nowrap;
gap: 0.4rem;
}
.tabs::-webkit-scrollbar,
.cbi-tabmenu::-webkit-scrollbar {
display: none;
}
.tabs {
margin-bottom: 1.8rem;
padding: 0.7rem;
gap: 0.5rem;
}
.tabs li,
.cbi-tabmenu li {
font-size: 0.95rem;
padding: 0.6rem 1.2rem;
border-radius: 0;
transition: all var(--transition-speed) ease;
border: none;
box-shadow: none;
position: relative;
overflow: hidden;
line-height: 1.2;
flex-shrink: 0;
min-width: min-content;
display: flex;
align-items: center;
justify-content: center;
background: transparent;
}
.cbi-tabmenu li {
font-size: 0.9rem;
padding: 0.5rem 1rem;
}
.tabs li::before,
.cbi-tabmenu li::before {
display: none;
}
.tabs li a,
.cbi-tabmenu li a {
text-decoration: none;
color: var(---text-primary);
font-weight: 500;
position: relative;
z-index: 2;
text-shadow: var(--text-shadow);
transition: all var(--transition-speed) ease;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
white-space: nowrap;
pointer-events: none;
}
.tabs li a::after,
.cbi-tabmenu li a::after {
content: '';
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
z-index: 1;
background: transparent;
cursor: pointer;
pointer-events: auto;
}
.tabs li:hover::after,
.cbi-tabmenu li:hover::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg,
oklch(var(--l) var(--c) var(--base-hue-1)),
oklch(var(--l) var(--c) var(--base-hue-2)),
oklch(var(--l) var(--c) var(--base-hue-3)),
oklch(var(--l) var(--c) var(--base-hue-4)),
oklch(var(--l) var(--c) var(--base-hue-5)),
oklch(var(--l) var(--c) var(--base-hue-6)),
oklch(var(--l) var(--c) var(--base-hue-7)),
oklch(var(--l) var(--c) var(--base-hue-1)));
background-size: 400% auto;
transform: translateZ(0);
will-change: transform, background-position, box-shadow;
animation: rainbow-energy 6s linear infinite, pulse 1.5s ease-in-out infinite;
transition: var(--transition);
}
.tabs li[class~="active"]::after,
.tabs li.cbi-tab-active::after,
.cbi-tabmenu li[class~="cbi-tab"]::after,
.cbi-tabmenu li.cbi-tab-active::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg,
oklch(var(--l) var(--c) var(--base-hue-1)),
oklch(var(--l) var(--c) var(--base-hue-2)),
oklch(var(--l) var(--c) var(--base-hue-3)),
oklch(var(--l) var(--c) var(--base-hue-4)),
oklch(var(--l) var(--c) var(--base-hue-5)),
oklch(var(--l) var(--c) var(--base-hue-6)),
oklch(var(--l) var(--c) var(--base-hue-7)),
oklch(var(--l) var(--c) var(--base-hue-1)));
background-size: 400% auto;
transform: translateZ(0);
will-change: transform, background-position, box-shadow;
animation: rainbow-energy 6s linear infinite, pulse 1.5s ease-in-out infinite;
transition: var(--transition);
}
.tabs li[class~="active"] a,
.tabs li.cbi-tab-active a,
.cbi-tabmenu li[class~="cbi-tab"] a,
.cbi-tabmenu li.cbi-tab-active a {
color: var(--accent-color);
font-weight: 700;
}
.cbi-tab-descr {
padding: .5rem 1.5rem
}
.cbi-section-node {
padding: 1rem 0
}
.cbi-section-node>* {
padding-left: 2rem;
}
.cbi-section .cbi-section-remove:nth-of-type(2n),
.container>.cbi-section .cbi-section-node:nth-of-type(2n) {
background-color: var(--bg-container);
}
[data-tab-title] {
overflow: hidden;
height: 0;
opacity: 0;
margin: 0;
padding: 0rem 0rem !important
}
[data-tab-title] p {
margin-left: 1rem;
margin-bottom: 1rem
}
[data-tab-active="true"] {
overflow: visible;
height: auto;
opacity: 1;
transition: opacity .25s ease-in;
margin: inherit !important
}
.cbi-section-node-tabbed {
margin-top: 0;
padding: 0;
border-radius: .375rem
}
.cbi-value-field {
display: table-cell
}
.cbi-value-description {
color: var(--accent-color);
margin: .125em 0 0 1.25em;
padding: .25rem .5rem;
position: relative;
line-height: 1.3;
}
.cbi-value-description:not(:empty)::before {
position: absolute;
left: -1em;
content: "\F431";
font-family: 'bootstrap-icons' !important;
display: inline-block;
width: 1em;
height: 1em;
margin-right: .25em;
cursor: help;
}
@media (max-width: 768px) {
.cbi-value-description:not(:empty)::before {
left: -1.25em;
}
}
.cbi-value-description abbr {
color: var(--text-primary);
}
.cbi-value-title {
display: table-cell;
float: left;
width: 23rem;
padding-top: .25rem;
padding-right: 2rem;
text-align: right;
word-wrap: break-word
}
.cbi-value {
display: inline-block;
width: 100%;
padding: .35rem 1rem .2rem 1rem;
line-height: 2.4rem
}
.cbi-value ul {
line-height: 1.25
}
.cbi-value-field .cbi-dropdown,
.cbi-value-field .cbi-input-select,
.cbi-value input[type="text"],
.cbi-value input[type="password"] {
min-width: 18rem
}
.cbi-value input[type="password"] {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
margin-right: 0
}
.cbi-value input[type="password"]+.cbi-button-neutral {
height: 42px;
border-bottom-left-radius: 0;
border-top-left-radius: 0;
margin-left: 0;
border: 0
}
#cbi-firewall-zone .cbi-input-select,
#cbi-network-switch_vlan .cbi-input-select {
min-width: 11rem
}
#cbi-network-switch_vlan .cbi-input-text {
max-width: 3rem
}
.cbi-input-invalid {
color: var(--danger-text);
border-bottom-color: var(--danger-text);
}
.cbi-section-error {
font-weight: bold;
line-height: 1.42857143;
margin: 18px;
padding: 6px;
border: var(--border-strong);
border-radius: 3px;
background-color: color-mix(in oklch, var(--danger-text), white 80%);
}
.cbi-section-error ul {
margin: 0 0 0 20px
}
.cbi-section-error ul li {
font-weight: bold;
color: var(--danger-text);
}
.td[data-title]::before {
font-weight: bold;
display: none;
padding: .25rem 0;
content: attr(data-title) ":\20";
text-align: left;
white-space: nowrap
}
.tr[data-title]::before,
.tr.cbi-section-table-titles.named::before {
font-weight: bold;
display: table-cell;
align-self: center;
flex: 1 1 5%;
padding: .25rem;
content: attr(data-title) "\20";
text-align: center;
vertical-align: middle;
white-space: normal;
word-wrap: break-word
}
.tr.cbi-section-table-titles.named::before {
background-color: var(--header-bg);
}
.cbi-rowstyle-1 {
background-color: var(--bg-container);
}
.cbi-rowstyle-2 {
background-color: var(--card-bg);
}
.cbi-rowstyle-2 .cbi-button-up,
.cbi-rowstyle-2 .cbi-button-down,
body:not(.Interfaces) .cbi-rowstyle-2:first-child {
background-color: var(--color-orange) !important
}
.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
width: auto !important
}
.td.cbi-section-actions {
text-align: right !important;
vertical-align: middle
}
.td.cbi-section-actions>* {
display: inline-flex
}
.td.cbi-section-actions>*>*,
.td.cbi-section-actions>*>form>* {
margin: 0 5px;
display: flex;
align-items: center
}
.td.cbi-section-actions>*>form {
display: inline-flex;
margin: 0
}
.cbi-checkbox {
margin: 0 .25rem
}
.cbi-dynlist {
line-height: 1.3;
flex-direction: column;
min-height: 30px;
cursor: text
}
.cbi-dynlist>.item {
position: relative;
max-width: 25rem;
pointer-events: none;
color: var(--text-primary);
opacity: 1 !important;
outline: 0;
}
.cbi-dynlist>.item.drag-over,
.cbi-dynlist>.add-item:has(.drag-over) {
border-top: 1px solid var(--color-red);
margin-top: -1px
}
.cbi-dynlist[name="sshkeys"]>.item {
max-width: none
}
.cbi-dynlist>.item::after {
font-family: "bootstrap-icons" !important;
position: absolute;
width: 2.2rem !important;
height: calc(100% - .5rem - 0.5px);
right: 0;
bottom: 0;
content: "\F5DE";
pointer-events: auto;
background-color: var(--color-red);
font-weight: normal;
font-size: 1.2rem;
display: flex;
align-items: center;
justify-content: center;
line-height: 1.5rem;
padding: 0;
margin: .25rem .1rem .25rem 0;
color: var(--color-white);
border: var(--border-strong);
border-radius: .25rem;
outline: 0;
background-image: none;
box-shadow: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0
}
.cbi-dynlist>.item:hover::after {
transform: scale(1.1);
background-color: color-mix(in oklch, var(--color-red), black 15%);
border-color: color-mix(in oklch, #f5365c, black 20%);
}
.cbi-dynlist>.item>span {
white-space: normal;
word-break: break-word;
line-height: 1.5rem;
padding: .5rem .5rem;
margin: .25rem .1rem;
color: var(--text-secondary);
border: var(--border-strong);
border-radius: .25rem;
outline: 0;
background-image: none;
box-shadow: none;
display: block;
transition: box-shadow .15s ease;
box-sizing: border-box;
min-width: 15rem;
user-select: text
}
.cbi-dynlist>.add-item {
display: inline-flex;
flex-wrap: nowrap;
align-items: center;
gap: 0;
width: 100%;
min-width: 18.2rem
}
.cbi-dynlist>.add-item input {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-right: 0;
border-right: none
}
.cbi-dynlist>.add-item .cbi-button-add {
height: 2.5rem;
line-height: 2.5rem;
font-weight: normal;
font-size: 1.2rem;
display: flex;
align-items: center;
line-height: 1.5rem;
padding: 0 .76rem !important;
margin: .25rem .1rem .25rem 0;
color: var(--color-white);
border-radius: .25rem;
outline: 0;
background-image: none;
box-shadow: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0
}
.cbi-dynlist>.add-item:not([ondrop])>input {
border-radius: 12px 0 0 12px;
overflow: hidden;
width: 15rem;
min-width: 15rem;
white-space: nowrap;
text-overflow: ellipsis
}
.cbi-dynlist>.add-item[ondrop]>input {
min-width: 13rem
}
.cbi-dynlist,
.cbi-dropdown {
position: relative;
display: inline-flex
}
.cbi-dropdown {
padding: .2rem .2rem
}
.cbi-dropdown[placeholder*="select"] {
max-width: 25rem;
height: auto;
margin-top: -3px
}
.cbi-dropdown>ul {
display: flex;
overflow-x: hidden;
overflow-y: auto;
width: 100%;
margin: 0 !important;
padding: 0;
list-style: none;
outline: 0
}
.cbi-dropdown>ul.preview {
display: none
}
.cbi-button-apply>ul.preview {
display: none
}
.cbi-button-apply>ul.preview li {
color: var(--color-white)
}
.cbi-button-apply>ul:first-child li {
color: var(--color-white)
}
.cbi-dropdown>.open {
flex-basis: 15px
}
.cbi-dropdown>.open,
.cbi-dropdown>.more {
font-family: 'bootstrap-icons';
color: transparent;
font-size: 1rem;
font-weight: 900;
line-height: 2;
display: flex;
flex-direction: column;
flex-grow: 0;
flex-shrink: 0;
justify-content: center;
padding: 0 .25em;
cursor: default;
text-align: center;
outline: 0
}
.cbi-dropdown>.more,
.cbi-dropdown>ul>li[placeholder] {
font-weight: bold;
display: none;
color: var(--text-primary);
}
.cbi-dropdown>ul>li {
display: none;
overflow: hidden;
align-items: center;
align-self: center;
flex-grow: 1;
flex-shrink: 1;
min-height: 20px;
padding: .25em;
white-space: nowrap;
text-overflow: ellipsis color: var(--text-primary) !important;
}
.cbi-dropdown>ul>li .hide-open {
display: initial
}
.cbi-dropdown>ul>li .hide-close {
display: none
}
.cbi-dropdown>ul>li[display]:not([display="0"]) {
border-left: var(--border-strong)
}
.cbi-dropdown[empty]>ul {
max-width: 1px
}
.cbi-dropdown>ul>li>form {
display: none;
margin: 0;
padding: 0;
pointer-events: none
}
.cbi-dropdown>ul>li img {
margin-right: .25em;
vertical-align: middle
}
.cbi-dropdown>ul>li>form>input[type="checkbox"] {
height: auto;
margin: 0
}
.cbi-dropdown>ul>li input[type="text"] {
color: var(--text-primary) !important;
background-color: var(--bg-container) !important;
height: 2rem;
min-width: 16rem;
padding: 0 0.5rem;
}
.cbi-input-select {
font-family: "NotoColorEmojiFlags" !important;
padding: 0.5rem 2rem 0.5rem 0.75rem !important;
line-height: 1.5;
height: 2.5rem;
border: var(--border-strong);
border-radius: 0.25rem;
outline: 0;
font-size: 14px;
box-shadow: none;
box-sizing: border-box;
display: inline-block;
vertical-align: middle;
white-space: nowrap;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23000' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.75rem center;
background-size: 12px 12px;
color: var(--text-primary) !important;
}
[data-theme="dark"] .cbi-input-select {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E") !important;
}
.cbi-input-select:focus {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23000' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
}
[data-theme="dark"] .cbi-input-select:focus {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E") !important;
}
.cbi-dropdown[open]>ul.dropdown {
position: absolute;
z-index: 9999;
display: block;
width: auto !important;
min-width: 100% !important;
box-sizing: border-box !important;
max-height: 200px;
left: 0 !important;
border: var(--border-strong);
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(-bg-container), black 30%) !important;
border-bottom-left-radius: .35rem;
border-bottom-right-radius: .35rem;
color: var(--text-primary);
}
.cbi-dropdown[open]>ul.dropdown li {
background-color: var(--card-bg);
color: var(--text-primary);
}
.cbi-dropdown[open]>ul.dropdown li:hover {
background-color: var(--accent-color);
color: var(--color-white);
}
.cbi-dropdown[open]>ul.dropdown>li[selected] {
background: var(--color-blue);
color: var(--color-white);
}
.cbi-dropdown>.open::before {
content: "\f282";
font-family: 'bootstrap-icons';
font-style: normal;
font-weight: 500;
color: var(--text-primary);
font-size: 0.8em;
position: absolute;
right: 0.75rem;
top: 50%;
transform: translateY(-50%);
}
.cbi-dropdown[open]>.open::before {
content: "\f285";
font-weight: 500;
color: var(--text-primary);
font-size: 0.8em;
right: 0.75rem !important;
}
.cbi-dropdown.btn.cbi-button.cbi-button-apply>.open::before,
.cbi-dropdown.btn.cbi-button.cbi-button-apply[open]>.open::before {
color: var(--color-white) !important;
}
.cbi-dropdown[open]>ul.dropdown::-webkit-scrollbar {
width: 8px;
background: var(--card-bg);
}
.cbi-dropdown[open]>ul.dropdown::-webkit-scrollbar-thumb {
background-color: var(--accent-color);
border-radius: 4px;
border: var(--border-strong);
}
.cbi-dropdown[open]>ul.dropdown::-webkit-scrollbar-track {
background: var(--card-bg);
border-radius: 4px;
}
.cbi-dropdown[open]>ul.dropdown {
scrollbar-width: thin;
scrollbar-color: var(--accent-color) var(--card-bg);
}
.cbi-dropdown>ul>li[display],
.cbi-dropdown[open]>ul.preview,
.cbi-dropdown[open]>ul.dropdown>li,
.cbi-dropdown[multiple]>ul>li>label,
.cbi-dropdown[multiple][open]>ul.dropdown>li,
.cbi-dropdown[multiple][more]>.more,
.cbi-dropdown[multiple][empty]>.more {
display: flex;
align-items: center;
flex-grow: 1
}
.cbi-dropdown[empty]>ul>li,
.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder],
.cbi-dropdown[multiple][open]>ul.dropdown>li>form {
display: block
}
.cbi-dropdown[open]>ul.dropdown>li .hide-open {
display: none
}
.cbi-dropdown[open]>ul.dropdown>li .hide-close {
display: initial
}
.cbi-dropdown[open]>ul.dropdown>li {
border-bottom: var(--border-strong);
padding: .5rem .8rem
}
.cbi-dropdown[open]>ul.dropdown>li label {
margin-left: .5rem
}
.cbi-dropdown[open] > ul.dropdown > li.focus {
background: var(--btn-primary-bg) !important;
color: var(--color-white) !important;
outline: none;
}
.cbi-dropdown[open]>ul.dropdown>li:last-child {
margin-bottom: 0;
border-bottom: 0
}
.cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child {
width: 100%
}
.cbi-dropdown[disabled] {
pointer-events: none;
opacity: .6
}
.cbi-dropdown .zonebadge {
width: 100%
}
.cbi-dropdown[open] .zonebadge {
width: auto
}
.cbi-progressbar {
position: relative;
min-width: 11rem;
height: 1.5rem;
margin: 0 0;
border: var(--border-strong);
color: var(--text-primary);
border-radius: 8px;
overflow: hidden
}
.cbi-progressbar>div {
width: 0;
height: 100%;
transition: width .25s ease-in;
background: var(--accent-color)
}
.cbi-progressbar::after {
font-family: monospace;
font-size: 1em;
font-weight: bold;
font-size-adjust: .38;
line-height: 1.5rem;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
content: attr(title);
text-align: center;
white-space: pre;
text-overflow: ellipsis
}
#modal_overlay {
position: fixed;
z-index: 900;
top: 0;
right: 10000px;
bottom: 0;
left: -10000px;
overflow-y: scroll;
transition: opacity .125s ease-in;
opacity: 0;
background: rgba(0, 0, 0, 0.2);
-webkit-overflow-scrolling: touch
}
.modal {
display: flex;
align-items: center;
flex-wrap: wrap;
width: 90%;
min-width: 270px;
max-width: 1000px !important;
min-height: 32px;
margin: 5em auto;
padding: 1em;
border-radius: 3px !important;
background: var(--card-bg);
box-shadow: var(--shadow-inset);
}
[data-theme="dark"] .modal {
border: var(--glass-border) !important;
box-shadow: var(--border-glow) !important;
}
.modal>* {
line-height: normal;
flex-basis: 100%;
margin-bottom: .5em;
max-width: 100%
}
.modal>pre,
.modal>textarea {
font-size: 1rem;
font-size-adjust: .35;
overflow: auto;
margin-bottom: .5em;
padding: 8.5px;
cursor: auto;
white-space: pre-wrap;
color: #eee;
outline: 0;
background-color: #101010;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
.modal>h4 {
border-radius: var(--radius-small);
margin: .5em 0
}
.modal ul {
margin-left: 2.2em
}
.modal li {
list-style-type: square;
color: var(--text-primary);
}
.modal .cbi-dropdown.cbi-button > ul > li,
.modal .cbi-dropdown.cbi-button > ul.preview > li {
color: var(--color-white);
}
.modal .cbi-dropdown.cbi-button[open] > ul.dropdown > li {
color: var(--color-black);
}
.modal p {
word-break: break-word
}
div label input[type="radio"] {
vertical-align: middle;
margin-bottom: 15px;
}
.cbi-value-field label {
margin-right: 20px;
}
.modal .label {
font-size: .6rem;
font-weight: normal;
padding: .2rem .3rem;
cursor: default;
border-radius: 0.15rem;
line-height: 1;
display: inline-block;
}
.modal .label.warning {
background-color: #f0ad4e !important
}
.modal .btn {
padding: .45rem .8rem
}
.modal .cbi-dropdown.cbi-button {
padding: .2rem .2rem
}
.modal.cbi-modal {
max-width: 90%;
max-height: none
}
body.modal-overlay-active {
overflow: hidden;
height: 100vh
}
body.modal-overlay-active #modal_overlay {
right: 0;
left: 0;
opacity: 1
}
.spinning {
position: relative;
padding-left: 32px !important
}
.spinning::before {
position: absolute;
top: 0;
bottom: 0;
left: .2em;
width: 32px;
content: "";
background: currentColor;
mask: url(/luci-static/resources/icons/loading.svg) center / 16px no-repeat;
-webkit-mask: url(/luci-static/resources/icons/loading.svg) center / 16px no-repeat
}
.hidden {
display: none
}
.left,
.left::before {
text-align: left !important
}
.button-row,
.right,
.right::before {
text-align: right !important
}
.center,
.center::before {
text-align: center !important
}
.top {
align-self: flex-start !important;
vertical-align: top !important
}
.bottom {
align-self: flex-end !important;
vertical-align: bottom !important
}
.inline {
display: inline
}
.cbi-page-actions {
padding-top: 1rem;
text-align: right;
justify-content: flex-end
}
.cbi-page-actions>form[method="post"] {
display: inline-block
}
.th[data-type="button"],
.td[data-type="button"],
.th[data-type="fvalue"],
.td[data-type="fvalue"] {
flex: 1 1 2em;
text-align: center
}
.ifacebadge {
display: inline-flex;
gap: .2rem;
padding: .5rem .8rem;
border: var(--border-strong);
background: color-mix(in oklch, var(--card-bg), transparent 20%) !important;
color: var(--text-primary) !important;
border-radius: var(--radius-small);
}
.ifacebadge:hover {
transform: translateY(-1px);
}
td>.ifacebadge,
.td>.ifacebadge {
font-size: .8rem;
background-color: var(--card-bg);
}
.ifacebadge>em,
.ifacebadge>img {
display: inline-block;
align-self: flex-start;
height: 16px
}
.ifacebadge>img+img {
margin: 0 .2rem 0 0
}
.network-status-table {
display: flex;
flex-wrap: wrap
}
.network-status-table .ifacebox {
flex-grow: 1;
border-radius: 4px;
overflow: hidden;
margin: 0 1.25rem 1rem 1.25rem
}
.network-status-table .ifacebox-body {
display: flex;
flex-direction: column;
height: 100%;
gap: .5em
}
.network-status-table .ifacebox-body>span {
flex: 10 10 auto
}
.network-status-table .ifacebox-body>div {
display: flex;
flex-wrap: wrap;
gap: .5rem;
height: 100%
}
.network-status-table .ifacebox-body .ifacebadge {
align-items: center;
flex: 1 1 auto;
min-width: 220px;
padding: .5em;
background-color: var(--color-white)
}
.network-status-table .ifacebox-body .ifacebadge>span {
height: 100%;
align-self: flex-start;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.cbi-input-textarea {
font-family: monospace;
width: 100%;
font-size: .875rem;
min-height: 14rem;
padding: .8rem;
color: var(--text-primary);
background-color: var(--card-bg);
}
#syslog {
font-size: small;
line-height: 1.25;
overflow-y: hidden;
width: 100%;
min-height: 15rem;
padding: 1rem;
resize: none;
color: #242424;
border: 0;
border-radius: .375rem;
background-color: var(--color-white);
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
#syslog:focus {
outline: 0
}
#cbi-ddns #syslog {
overflow: auto
}
.uci-change-list {
font-family: monospace;
overflow: scroll;
width: 100%;
display: flex;
flex-direction: column;
flex-wrap: wrap
}
.uci-change-list ins,
.uci-change-legend-label ins {
display: block;
padding: 2px;
text-decoration: none;
border: thin solid var(--color-green);
background-color: color-mix(in oklch, var(--color-green), var(--color-white) 75%);
}
.uci-change-list del,
.uci-change-legend-label del {
font-style: normal;
display: block;
padding: 2px;
text-decoration: none;
border: thin solid var(--color-red);
background-color: color-mix(in oklch, var(--color-red), var(--color-white) 75%);
}
.uci-change-list var,
.uci-change-legend-label var {
font-style: normal;
display: block;
padding: 2px;
text-decoration: none;
border: thin solid var(--border-color);
background-color: var(--card-bg);
}
.uci-change-list var ins,
.uci-change-list var del {
font-style: normal;
padding: 0;
white-space: pre;
border: 0
}
.uci-change-legend {
padding: 5px
}
.uci-change-legend-label {
float: left;
width: 150px
}
.uci-change-legend-label>ins,
.uci-change-legend-label>del,
.uci-change-legend-label>var {
display: block;
float: left;
width: 10px;
height: 10px;
margin-right: 4px
}
.uci-change-legend-label var ins,
.uci-change-legend-label var del {
line-height: .4;
border: 0
}
.uci-change-list var,
.uci-change-list del,
.uci-change-list ins {
padding: .5rem
}
#iwsvg,
#iwsvg2,
#bwsvg {
border: thin solid var(--border-color) !important;
}
#iwsvg,
[data-page="admin-status-realtime-bandwidth"] #bwsvg {
border-top: 0 !important
}
.ifacebox {
line-height: 1.25;
display: inline-flex;
overflow: hidden;
flex-direction: column;
border-radius: 8px;
min-width: 100px;
background-color: var(--card-bg);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2)
}
.ifacebox-head {
padding: .25em;
background: var(--card-bg);
}
.ifacebox-head.active {
background: var(--accent-color);
}
.ifacebox-head.active * {
color: var(--color-white) !important;
}
.ifacebox-body {
padding: .875rem 1rem;
line-height: 1.6em
}
.cbi-image-button {
margin-left: .5rem
}
.zonebadge {
display: inline-block;
padding: .2rem .5rem;
border-radius: 4px
}
.zonebadge .ifacebadge {
margin: .1rem .2rem;
padding: .2rem .3rem;
border: thin solid var(--text-secondary);
}
.zonebadge>input[type="text"] {
min-width: 10rem;
margin-top: .3rem;
padding: .16rem 1rem
}
.zonebadge>em,
.zonebadge>strong {
display: inline-block;
margin: 0 .2rem
}
.cbi-value-field .cbi-input-checkbox,
.cbi-value-field .cbi-input-radio {
margin-top: .1rem
}
.cbi-value-field>ul>li {
display: flex
}
.cbi-value-field>ul>li>label {
margin-top: .5rem
}
.cbi-value-field > ul > li .ifacebadge {
margin-top: -0.5rem;
margin-left: .4rem;
background-color: var(--card-bg);
}
.cbi-section-table-row>.cbi-value-field .cbi-dropdown {
min-width: 3rem
}
.cbi-section-create {
display: inline-flex;
align-items: center;
margin: .25rem 1.25rem !important;
}
.cbi-section-create>* {
margin: .5rem 0
}
.cbi-section-remove {
padding: .5rem
}
div.cbi-value var,
td.cbi-value-field var,
.td.cbi-value-field var {
font-style: italic;
color: var(--color-blue);
}
.cbi-optionals {
padding: 1rem 1rem 0 1rem;
border-top: thin solid #ccc
}
.cbi-dropdown-container {
position: relative
}
.cbi-tooltip-container,
span[data-tooltip],
span[data-tooltip] .label {
cursor: help !important
}
.cbi-tooltip {
position: absolute;
z-index: 1000;
left: -1000px;
padding: 2px 5px;
transition: opacity .25s ease-out;
white-space: pre;
pointer-events: none;
opacity: 0;
border-radius: 3px;
background: var(--bg-container) !important;
color: var(--text-primary) !important;
margin-top: 8px;
}
.cbi-tooltip-container:hover .cbi-tooltip {
left: auto;
transition: opacity .25s ease-in;
opacity: 1
}
.zonebadge .cbi-tooltip {
margin: -1.5rem 0 0 -0.5rem;
padding: .25rem;
background: inherit
}
.zonebadge-empty {
color: #404040;
background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px)
}
.zone-forwards {
display: flex;
min-width: 10rem
}
.zone-forwards>* {
flex: 1 1 45%
}
.zone-forwards>span {
flex-basis: 10%;
padding: 0 .25rem;
text-align: center
}
.zone-forwards .zone-src,
.zone-forwards .zone-dest {
display: flex;
flex-direction: column
}
.label {
font-size: .8rem;
font-weight: bold;
padding: .3rem .8rem;
white-space: nowrap;
text-decoration: none;
text-transform: uppercase;
color: var(--color-white) !important;
border-radius: 3px;
background-color: var(--color-gray);
text-shadow: none
}
label>input[type="checkbox"],
label>input[type="radio"] {
position: relative;
top: .4rem;
right: .2rem;
margin: 0;
vertical-align: bottom
}
label[data-index][data-depends] {
padding-right: 2em
}
.showSide {
display: none
}
.darkMask {
position: fixed;
z-index: 99;
display: none;
width: 100%;
height: 100%;
content: "";
top: 0;
background-color: rgba(0, 0, 0, 0.56);
transition: all .2s
}
.darkMask.active {
display: block
}
#diag-rc-output>pre,
#command-rc-output>pre,
[data-page="admin-services-wol"] .notice code {
font-size: 1.2rem;
font-size-adjust: .35;
line-height: normal;
display: block;
overflow-y: hidden;
width: 100%;
padding: 8.5px;
white-space: pre;
color: #eee;
background-color: #101010;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
[data-page="admin-network-diagnostics"] .table {
box-shadow: none
}
input[name="ping"],
input[name="traceroute"],
input[name="nslookup"] {
width: 80%
}
.node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2),
.node-status-processes>.main .table .tr .td:nth-child(3) {
white-space: normal
}
[data-page="admin-system-reboot"] p {
padding-left: 1.5rem
}
[data-page="admin-system-reboot"] .cbi-button {
background: #fb6340 !important
}
[data-page="admin-system-reboot"] p>span {
position: relative;
top: .1rem;
left: 1rem
}
[data-page="admin-vpn-passwall"] h4 {
background: transparent
}
#cbi-samba [data-tab="template"] .cbi-value-field {
display: block
}
#cbi-samba [data-tab="template"] .cbi-value-title {
width: auto;
padding-bottom: .6rem
}
[data-page="admin-system-admin"] .cbi-map h2,
[data-page="admin-system-admin-password"] .cbi-map h2,
[data-page="admin-system-admin"] .cbi-map .cbi-map-descr,
[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr {
margin-left: 0;
color: var(--text-primary);
}
[data-page="admin-system-opkg"] h2 {
margin-left: 0;
color: #32325d;
}
.controls {
margin: .5em 1rem 1em 1rem !important
}
.controls>*>.btn:not([aria-label$="page"]) {
flex-grow: initial !important;
margin-top: .25rem
}
.controls>#pager>.btn[aria-label$="page"] {
font-size: 1.4rem;
font-weight: bold
}
.controls>*>label {
margin-bottom: .2rem
}
[data-page="admin-system-opkg"] div.btn {
line-height: 3;
display: inline;
padding: .3rem .6rem
}
[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
[data-page="admin-system-opkg"] #maincontent>.container {
margin-top: 2rem;
padding-top: .1rem
}
[data-page="admin-system-opkg"] #maincontent>.container {
margin: 0 1.25rem 1rem 1.25rem;
margin-bottom: 1rem
}
.td.version,
.td.size {
white-space: normal !important;
word-break: break-word
}
.cbi-tabmenu+.cbi-section {
margin-top: 0
}
[data-page="admin-system-crontab"] #view p {
margin-bottom: 1rem
}
[data-page="admin-system-flash"] .cbi-value {
padding: 0
}
[data-page="admin-system-flash"] .cbi-section .cbi-section {
margin-top: 0
}
[data-page="admin-system-flash"] .cbi-map-tabbed {
border-radius: .375rem
}
[data-page="admin-system-flash"] legend {
display: block !important;
font-size: 1.2rem;
width: 100%;
padding: 1rem 0 1rem 1.5rem;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
line-height: 1.5;
margin-bottom: 0rem;
letter-spacing: .1rem;
color: #32325d;
font-weight: bold
}
[data-page="admin-system-flash"] .cbi-section-descr {
font-weight: 600;
padding: 1rem 0 1rem 1.5rem;
color: var(--accent-tertiary);
}
[data-page="admin-system-flash"] .modal label>input[type="checkbox"] {
top: -0.35rem
}
[data-page="admin-system-flash"] .modal .btn {
white-space: normal !important
}
#cbi-wireless>#wifi_assoclist_table>.tr {
box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd
}
#cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td {
right: 33px;
bottom: 33px;
left: 33px;
border-top: thin solid #ddd !important
}
#cbi-wireless>#wifi_assoclist_table>.tr.table-titles {
box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd
}
#cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th {
border-bottom: thin solid #ddd;
box-shadow: 0 -1px 0 0 #ddd
}
#wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"] {
width: 23rem
}
[data-page="admin-network-dhcp"] .cbi-value {
padding: 0
}
[data-page="admin-network-dhcp"] [data-tab-active="true"] {
padding: 1rem 0 !important
}
#iptables {
margin: 0
}
.Firewall form {
margin: 2rem 2rem 0 0;
padding: 0;
box-shadow: none
}
#cbi-firewall-redirect table *,
#cbi-network-switch_vlan table *,
#cbi-firewall-zone table * {
font-size: small
}
#cbi-firewall-redirect table input[type="text"],
#cbi-network-switch_vlan table input[type="text"],
#cbi-firewall-zone table input[type="text"] {
width: 5rem
}
#cbi-firewall-redirect table select,
#cbi-network-switch_vlan table select,
#cbi-firewall-zone table select {
min-width: 3.5rem
}
#cbi-network-switch_vlan .th,
#cbi-network-switch_vlan .td {
flex-basis: 12%
}
#cbi-firewall-zone .table,
#cbi-network-switch_vlan .table {
display: block
}
#cbi-firewall-zone .td,
#cbi-network-switch_vlan .td {
width: 100%
}
[data-page="admin-network-firewall-custom"] #view p,
[data-page="admin-status-routes"] #view p {
padding: 0 1.5rem;
margin-bottom: 1rem
}
[data-page="admin-network-firewall-custom"] #view p textarea,
[data-page="admin-status-routes"] #view p textarea {
padding: 1rem;
border-radius: .375rem
}
#applyreboot-container {
margin: 2rem
}
#applyreboot-section {
line-height: 300%;
margin: 2rem
}
.OpenVPN a {
line-height: initial !important
}
.commandbox {
width: 24% !important;
margin: 10px 0 0 10px !important;
padding: .5rem 1rem;
border-bottom: thin solid #ccc;
background: #eee;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05)
}
.commandbox h3 {
line-height: normal !important;
overflow: hidden;
margin: 6px 0 !important;
white-space: nowrap;
text-overflow: ellipsis
}
.commandbox div {
left: auto !important
}
.commandbox code {
position: absolute;
overflow: hidden;
max-width: 60%;
margin-left: 4px;
padding: 2px 3px;
white-space: nowrap;
text-overflow: ellipsis
}
.commandbox code:hover {
overflow-y: auto;
max-height: 50px;
white-space: normal
}
.commandbox p:first-of-type {
margin-top: -6px
}
.commandbox p:nth-of-type(2) {
margin-top: 2px
}
[data-page^="admin-system-commands"] .panel-title,
[data-page^="command-cfg"] .mobile-hide,
[data-page^="command-cfg"] .showSide {
display: none
}
#command-rc-output .alert-message {
line-height: 1.42857143;
position: absolute;
top: 40px;
right: 32px;
max-width: 40%;
margin: 0;
animation: anim-fade-in 1.5s forwards;
word-break: break-word;
opacity: 0
}
@keyframes anim-fade-in {
100% {
opacity: 1
}
}
input[type="checkbox"] {
appearance: none !important;
-webkit-appearance: none !important;
border: var(--border-strong);
width: 18px !important;
height: 18px !important;
padding: 0;
cursor: pointer;
transition: all .2s;
margin: 0 8px 0 0;
vertical-align: middle;
position: relative;
transform: translateX(-2px);
}
input[type="checkbox"]:checked {
border: var(--border-strong);
background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important;
background-color: var(--accent-color);
background-size: 70%;
background-repeat: no-repeat;
background-position: center;
}
[data-theme="dark"] input[type="checkbox"] {
border: 1px solid color-mix(in oklch, var(--glow-primary), transparent 50%);
background-color: color-mix(in oklch, var(--bg-body), transparent 20%);
box-shadow: 0 0 6px color-mix(in oklch, var(--glow-primary), transparent 70%);
transition: all 0.3s ease;
}
[data-theme="dark"] input[type="checkbox"]:checked {
background-color: var(--glow-primary);
border-color: var(--glow-primary);
box-shadow:
0 0 8px var(--glow-primary),
inset 0 0 4px white;
}
.fb-container .cbi-button {
height: auto !important
}
#cbi-usb_printer-printer em {
display: block;
padding: 1rem;
text-align: center
}
pre.command-output {
padding: 1.5rem
}
[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"] {
padding: 1.5rem !important
}
[data-page="admin-nlbw-backup"] form {
padding-left: 1.5rem
}
[data-page="admin-status-iptables"] .right {
margin-bottom: 0 !important
}
#menu_search {
margin: 0 auto;
padding: 0 .5rem;
width: 90%;
border-radius: 1lh
}
#search_result {
position: absolute;
top: 100%;
width: 100%;
margin: 0;
padding-bottom: 1ex;
z-index: 1;
display: flex;
flex-direction: column;
align-items: center;
background-color: var(--color-white);
}
#search_result .float-list {
overflow-x: hidden;
overflow-y: scroll;
padding-left: 0;
padding-right: 0
}
#search_result .float-list a,
#search_result .float-list span {
display: block;
width: 100%;
padding-left: 1em;
padding-right: 1em;
user-select: none;
color: #5f6368;
overflow-x: hidden;
text-overflow: ellipsis;
white-space: nowrap;
direction: rtl
}
@media all and (-ms-high-contrast:none) {
.main>.main-left>.nav>.slide>.menu::before {
top: 30.25%
}
.main>.main-left>.nav>li:last-child::before {
top: 20%
}
.showSide::before {
top: -12px
}
}
@media screen and (max-width:1600px) {
header>.fill>.container>#logo {
margin: 0 2.5rem 0 .5rem
}
.main-left {
width: calc(0% + 13rem)
}
.main-right {
width: calc(100% - 13rem)
}
header::after {
left: 13rem;
}
.btn:not(button),
.cbi-button {
font-size: .8rem
}
.label {
padding: .2rem .6rem
}
.cbi-value-title {
width: 15rem;
padding-right: .6rem
}
.cbi-value-field .cbi-dropdown,
.cbi-value-field .cbi-input-select,
.cbi-value input[type="text"],
.cbi-value input[type="password"] {
min-width: 18rem
}
#cbi-firewall-zone .cbi-input-select {
min-width: 9rem
}
.cbi-input-textarea {
font-size: small
}
.node-admin-status>.main fieldset li>a {
padding: .3rem .6rem
}
}
@media screen and (max-width:1366px) {
header>.fill>.container {
cursor: default
}
.main-left {
width: calc(0% + 13rem)
}
.main-right {
width: calc(100% - 13rem)
}
header::after {
left: 13rem;
}
.panel-title {
font-size: 1.1rem;
padding-bottom: 1rem
}
table {
font-size: .7rem !important;
width: 100% !important
}
.table .cbi-input-text {
width: 100%
}
.cbi-value-field .cbi-dropdown,
.cbi-value-field .cbi-input-select,
.cbi-value input[type="text"],
.cbi-value input[type="password"] {
min-width: 16rem !important;
}
#cbi-firewall-zone .cbi-input-select {
min-width: 4rem
}
.main>.main-left>.nav>li,
.main>.main-left>.nav>li>a,
.main .main-left .nav>li>a:first-child,
.main>.main-left>.nav>.slide>.menu,
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="Log_out"] {
font-size: .9rem
}
.main>.main-left>.nav>.slide>.slide-menu>li>a {
font-size: .7rem
}
#modal_overlay {
top: 0rem
}
[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) {
display: block
}
[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),
[data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),
[data-page="admin-network-hosts"] .table,
[data-page="admin-network-routes"] .table {
overflow-y: visible
}
.commandbox {
width: 32% !important
}
.btn:not(button),
.cbi-button {
font-size: .8rem
}
}
@media screen and (max-width:1152px) {
header>.fill>.container>#logo {
display: none
}
header>.fill>.container>.brand {
position: relative
}
html,
.main {
overflow-y: visible
}
.main>.loading>span {
top: 25%
}
.main-left {
width: calc(0% + 13rem)
}
.main-right {
width: calc(100% - 13rem)
}
header::after {
left: 13rem;
}
body:not(.logged-in) .showSide {
visibility: hidden;
width: 0;
margin: 0
}
.node-main-login>.main .cbi-value-title {
text-align: left
}
.cbi-value-title {
width: 12rem;
padding-right: 1rem
}
.cbi-value-field .cbi-dropdown,
.cbi-value-field .cbi-input-select,
.cbi-value input[type="text"] {
width: 16rem !important;
min-width: 16rem !important;
}
.cbi-value input[name^="pw"],
.cbi-value input[data-update="change"]:nth-child(2) {
width: 13rem !important;
min-width: 13rem
}
#diag-rc-output>pre,
#command-rc-output>pre,
[data-page="admin-services-wol"] .notice code {
font-size: 1rem
}
.table,
.table>tbody {
display: block
}
.Interfaces .table {
overflow-x: hidden
}
#packages.table {
display: grid
}
.tr {
display: flex;
flex-direction: row;
flex-wrap: wrap
}
.Overview .table[width="100%"]>.tr {
flex-wrap: nowrap
}
.tr.placeholder {
border-bottom: thin solid #ddd
}
.tr.placeholder>.td,
#cbi-firewall .tr>.td,
#cbi-network .tr:nth-child(2)>.td,
.cbi-section #wifi_assoclist_table .tr>.td {
border-top: 0
}
.th,
.td {
display: inline-block;
align-self: flex-start;
flex: 2 2 10%;
text-overflow: ellipsis;
word-wrap: break-word
}
.td select,
.td input[type="text"] {
width: 100%;
word-wrap: normal
}
.td [data-dynlist]>input,
.td input.cbi-input-password {
width: calc(100% - 1.5rem)
}
.td[data-type="button"],
.td[data-type="fvalue"] {
flex: 1 1 12.5%;
text-align: left
}
.th.cbi-value-field,
.td.cbi-value-field,
.th.cbi-section-table-cell,
.td.cbi-section-table-cell {
flex-basis: auto;
padding-top: 1rem
}
.cbi-section-table-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
.td.cbi-value-field,
.cbi-section-table-cell {
display: inline-block;
flex: 10 10 auto;
flex-basis: 50%;
text-align: center
}
.td.cbi-section-actions {
vertical-align: bottom
}
.tr.table-titles,
.tr.cbi-section-table-titles,
.tr.cbi-section-table-descr {
display: none
}
.tr[data-title]::before,
.tr.cbi-section-table-titles.named::before {
font-size: .9rem;
display: block;
flex: 1 1 100%;
border-bottom: thin solid rgba(0, 0, 0, 0.26);
background: var(--card-bg)
}
.td[data-title],
[data-page^="admin-status-realtime"] .td[id] {
text-align: left
}
.td[data-title]::before {
display: block
}
.cbi-button+.cbi-button {
margin-left: 0
}
.td.cbi-section-actions>*>*,
.td.cbi-section-actions>*>form>* {
margin: 2.1px 3px
}
.Firewall form {
position: static !important;
margin: 0 0 2rem 0;
padding: 2rem;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
.Firewall form input {
width: 100% !important;
margin: 0;
margin-top: 1rem
}
.Firewall .center,
.Firewall .center::before {
text-align: left !important
}
.commandbox {
width: 100% !important;
margin-left: 0 !important
}
.btn:not(button),
.cbi-button {
font-size: .8rem
}
}
@media screen and (max-width:768px) {
body {
font-size: .8rem
}
.cbi-progressbar::after {
font-size: .6rem
}
.main-left {
position: fixed;
z-index: 100;
width: 0
}
header::after {
left: 0rem;
}
.main-left.active {
width: 13rem
}
.main-right {
width: 100%
}
.main-right.active {
overflow-y: hidden
}
.darkMask.active {
display: block
}
.showSide {
padding: .1rem;
position: relative;
z-index: 99;
display: inline-block !important
}
.showSide::before {
content: "\F5C5";
font-family: 'bootstrap-icons' !important;
font-style: normal !important;
font-weight: normal !important;
font-variant: normal !important;
text-transform: none !important;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: var(--accent-color);
font-size: 1.7rem;
position: relative;
left: -8px;
display: inline-block;
}
header>.fill>.container>.flex1>.brand {
display: inline-block
}
.main>.main-left>.nav>.slide>.slide-menu>li>a {
font-size: .8rem
}
}
@media screen and (max-width:600px) {
.mobile-hide {
display: none
}
#maincontent>.container {
margin: 0 1rem 1rem 1rem
}
.cbi-value-title {
text-align: left
}
[data-page="admin-system-flash"] legend {
padding: 1rem 0 1rem 1rem
}
[data-page="admin-system-flash"] .cbi-section-descr {
padding: 1rem 0 1rem 1rem
}
[data-page="admin-system-flash"] .cbi-value {
padding: 0 1rem
}
[data-page="admin-network-dhcp"] [data-tab-active="true"] {
padding: 1rem 1rem !important
}
.cbi-dynlist p {
padding: .5rem 1rem
}
body {
overflow-x: hidden
}
.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field {
width: 16rem !important;
}
.node-main-login footer {
display: none
}
.tabs::-webkit-scrollbar,
.cbi-tabmenu::-webkit-scrollbar {
width: 0px;
height: 0px
}
.cbi-value-field,
.cbi-value-description {
display: block !important;
padding-left: 0 !important;
padding-right: 0 !important
}
[data-page="admin-system-admin-password"] .cbi-value-field {
display: table-cell !important
}
.modal.cbi-modal {
max-width: 100%;
max-height: none
}
.modal {
display: flex;
align-items: center;
flex-wrap: wrap;
width: 100%;
min-width: 270px;
max-width: 600px;
min-height: 32px;
margin: 5em auto;
padding: 1em;
border-radius: 3px !important;
background: var(--color-white);
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12)
}
.cbi-dropdown[open]>ul.dropdown {
left: .2rem !important;
right: 0 !important;
margin-bottom: 1rem
}
.login-page .login-container footer {
display: none
}
}
@media screen and (min-width:600px) {
::-webkit-scrollbar {
width: 10px;
height: 10px
}
::-webkit-scrollbar,
::-webkit-scrollbar-corner {
background: transparent
}
::-webkit-scrollbar-thumb {
background: #9e9e9e
}
::-webkit-scrollbar-thumb:hover {
background: #757575
}
::-webkit-scrollbar-thumb:active {
background: #424242
}
}
@media screen and (max-width:480px) {
.mobile-hide {
display: none
}
.login-page .login-container {
margin-left: 0rem !important;
width: 100%
}
.login-page .login-container .login-form .form-login .input-group::before {
color: #525461
}
.login-page .login-container .login-form .form-login .input-group input {
color: #525461;
border-bottom: white 1px solid;
border-radius: 0
}
}
.cbi-tab-disabled[data-errors]::after {
content: attr(data-errors);
background-color: #f5365c;
color: var(--color-white);
height: 1em;
min-width: 1em;
border-radius: 1em;
text-align: center;
display: inline-flex;
flex-direction: column;
justify-content: center;
font-size: .8em;
padding: 2px;
position: absolute;
top: 0;
right: 0
}
@media screen and (max-width: 600px) {
.cbi-section-table-row .cbi-value-field[data-name="remarks"] div {
display: block !important;
white-space: normal !important;
word-break: break-word !important;
}
}
@media (max-width: 768px) {
#logo {
margin: 0 auto !important;
}
.sidenav-header {
display: flex !important;
justify-content: center !important;
align-items: center !important;
}
}
@media (max-width: 768px) {
.cbi-map-descr {
width: 100% !important;
box-sizing: border-box;
padding: 2px 6px;
border-radius: 8px;
margin: 1px 0;
}
.cbi-map-descr h3 {
font-size: 14px !important;
line-height: 1.2;
text-align: center;
word-break: break-all;
margin: 0;
}
}
.radio-button {
background-color: transparent !important;
gap: 2px !important;
max-width: 600px !important;
}
li[name="tab-header"]:hover {
transform: none !important;
transition: none !important;
}
fieldset.diag-style {
background-color: var(--bg-container) !important;
border: 1px solid #ccc !important;
}
.oc .config-editor-footer,
.oc .config-editor-footer * {
font-size: 17px !important;
font-weight: bold !important;
}
#overwrite-upload-cancel,
#overwrite-edit-cancel,
#config-upload-cancel {
color: var(--color-white) !important;
background-color: var(--color-gray) !important;
}
.config-upload-model .upload-btn {
background-color: #007bff !important;
}
.item-label_value .progress {
background-color: #f8fafc !important;
border-radius: 10px !important;
}
.actioner-container_footer .close {
background-color: #e53e3e !important;
color: var(--color-white) !important;
}
input:focus,
select:focus {
box-shadow: 0 0 6px 0 color-mix(in oklch, var(--accent-color), white 60%);
border-color: var(--accent-color);
}
button:hover {
transform: translateY(-1px);
box-shadow: 0 4px 8px -2px color-mix(in oklch, var(--bg-container), black 35%);
}
.modal,
.modal-dialog,
.modal-content {
border-radius: 12px !important;
border: 1px solid var(--bg-container) !important;
box-shadow: 0 4px 12px -4px color-mix(in oklch, var(--bg-container), black 35%) !important;
transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.modal.show .modal-dialog {
transform: scale(1.02);
transition: transform 0.2s ease-in-out;
}
.container .table-wrapper .table-header {
background: var(--bg-container) !important;
border-bottom: 1px solid color-mix(in oklch, var(--bg-container), black 20%) !important;
border-radius: 12px !important;
padding-left: 10px !important;
}
.cbi-section,
.cbi-section-error,
#iptables,
.Firewall form,
#cbi-network>.cbi-section-node,
#cbi-wireless>.cbi-section-node {
border-radius: 12px;
border: 1px solid var(--bg-container);
box-shadow: 0 1px 3px -2px color-mix(in oklch, var(--bg-container), black 30%);
}
.reusable-card,
.feature-card,
.item_container .item {
background-color: var(--bg-container) !important;
border: var(--border-strong) !important;
box-shadow: 0 1.5px 4.5px -2px color-mix(in oklch, var(--bg-container), black 30%) !important;
}
.card-container .feature-card {
border: var(--border-strong) !important;
}
.tab .item,
.info .item1 {
border: var(--border-strong) !important;
background-color: var(--card-bg) !important;
transition: transform 0.3s ease;
}
.tab .item:hover,
.info .item1:hover {
transform: translateY(-5px);
}
.tooltip-text .docker_dir_tip {
color: var(--color-white) !important;
}
.app-container_docker .docker-item {
padding: 0.5rem 1rem;
box-sizing: border-box;
}
.network-container .left-box .item_container .item {
border: var(--border-strong) !important;
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(--bg-container), black 30%) !important;
transition: transform 0.3s ease;
}
.network-container .left-box .item_container .item:nth-child(1):hover {
transform: translateY(-2px);
box-shadow: 0 1px 3px -2px color-mix(in oklch, var(--bg-container), black 40%) !important;
}
.network-container .left-box .item_container .item:nth-child(2):hover,
.network-container .left-box .item_container .item:nth-child(3):hover,
.network-container .left-box .item_container .item:nth-child(4):hover,
.network-container .left-box .item_container .item:nth-child(5):hover,
.network-container .left-box .item_container .item:nth-child(6):hover,
.network-container .left-box .item_container .item:nth-child(7):hover {
transform: translateY(-5px);
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(--bg-container), black 40%) !important;
}
.tooltip-text .docker_dir_tip {
color: var(--color-white) !important;
}
.app-container_docker .docker-item {
padding: 0.5rem 1rem;
box-sizing: border-box;
}
ul.app-container_linkease li.linkease-item {
padding: 0.5rem 1rem;
box-sizing: border-box;
}
ul.app-container_linkease li.linkease-item .linkease-item_name span {
padding-left: 0.5rem;
}
ul.app-container_linkease li.linkease-item .linkease-item_value span {
padding-left: 0.5rem;
}
ul.app-container_linkease>div a {
display: block;
margin: 0.5rem 1rem;
color: var(--accent-color);
text-decoration: none;
}
ul.app-container_aria2 li.aria2-item {
padding: 0.5rem 1rem;
box-sizing: border-box;
}
ul.app-container_aria2 li.aria2-item .aria2-item_name span {
padding-left: 0.5rem;
}
ul.app-container_aria2 li.aria2-item .aria2-item_value span {
padding-left: 0.5rem;
}
ul.app-container_aria2>div.use-url_app a {
display: block;
margin: 0.5rem 1rem;
color: var(--accent-color);
text-decoration: none;
}
.reusable-card .card-body,
.reusable-card,
.network-container .left-box,
.network-container .right-box,
{
border: var(--border-strong) !important;
background-color: var(--bg-container) !important;
}
.card-container,
.card-container *,
.reusable-card,
.reusable-card *,
.feature-card,
.feature-card *,
.network-container,
.network-container *,
.item_container .item,
.item_container .item * {
color: var(--text-primary) !important;
}
.badge,
.offline,
.status-icon,
.status_time,
.content .name .speed,
.path {
background-color: var(--card-bg) !important;
color: var(--text-primary) !important;
border: var(--border-strong) !important;
border-radius: 6px !important;
transition: background-color 0.3s ease, transform 0.2s ease;
}
.badge:hover {
background-color: color-mix(in srgb, var(--accent-color, #4a90e2) 85%, white);
transform: scale(1.05);
}
.info_content .status_box .status_time,
.content .name .speed,
{
background-color: var(--card-bg) !important;
color: var(--text-primary) !important;
}
.icon_box {
background-color: var(--card-bg) !important;
border: var(--border-strong) !important;
border-radius: 6px !important;
}
.progress-fill {
background: #2ecc71 !important;
}
.disk-item:hover .disk-item_value .value-data+div span {
color: white !important;
}
.page-container div a {
color: var(--accent-color) !important;
text-decoration: none;
font-weight: 500 !important;
font-size: 1.1rem !important;
display: inline-block;
}
.bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: 999;
}
.actioner-dns,
.action,
.actioner-container {
border-radius: 14px !important;
background: var(--bg-container) !important;
}
div#page {
border-radius: 14px !important;
}
div.btns {
display: flex !important;
justify-content: center !important;
gap: 10px !important;
}
.info .item1.bgcolor1 span[style*="font-weight: bold"],
.info .item1.bgcolor1 span[style*="margin-top: 2px"] {
color: var(--accent-color) !important;
}
.info .item1.bgcolor2 span[style*="font-weight: bold"],
.info .item1.bgcolor2 span[style*="margin-top: 2px"] {
color: var(--color-green) !important;
}
.network_container .title_box span {
color: rgb(0, 128, 0) !important;
font-size: 1.2rem !important;
}
.network_container .network_tag .tag_item span {
color: rgb(21, 150, 253) !important;
font-size: 1.1rem !important;
}
.network_container .speed .speed_item span {
color: rgb(50, 50, 50) !important;
font-size: 1.1rem !important;
}
.network_container .speed .speed_item div {
color: rgb(21, 150, 253) !important;
font-size: 1.1rem !important;
}
.network_container .speed .speed_item:nth-child(2) div {
color: rgb(0, 166, 62) !important;
font-size: 1.1rem !important;
}
.info .item {
display: flex;
justify-content: center;
align-items: center;
}
.info .item div {
text-align: center;
}
.info .item span {
text-align: center;
}
.btn_settings {
border: var(--border-strong) !important;
transition: transform 0.2s ease, background-color 0.2s ease;
}
.btn_settings:hover {
transform: scale(1.05);
}
.grid-item {
flex-basis: calc(50% - 12px);
display: flex;
flex-direction: column;
}
.grid-item .reusable-card {
width: 100%;
display: flex;
flex-direction: column;
flex-grow: 1;
}
.grid-item .card-body {
flex-grow: 1;
display: flex;
flex-direction: column;
}
.grid-item .content {
flex-grow: 1;
}
.grid-item:first-child .reusable-card {
height: auto;
min-height: 0;
}
.grid-container {
display: flex;
flex-wrap: wrap;
align-items: stretch;
}
.dropdown-menu {
background-color: var(--bg-container) !important;
border-radius: var(--radius, 8px) !important;
color: var(--text-primary) !important;
}
.dropdown-menu div:hover,
.dropdown-menu div:hover a {
cursor: pointer;
background-color: var(--accent-color) !important;
color: var(--color-white) !important;
}
ul.tabs {
margin: 0 0 -9px 0 !important;
}
ul.cbi-tabmenu {
margin: 10px 0 0 10px !important;
}
.table.cbi-section-table .cbi-section-table-row:nth-of-type(odd) {
background-color: var(--bg-container) !important;
}
#maincontent::-webkit-scrollbar,
.main-right::-webkit-scrollbar {
display: none;
}
.myip-content-grid {
background: var(--bg-container) !important;
}
.myip-ip-section,
.myip-check-section {
background: var(--bg-container) !important;
color: var(--text-color) !important;
}
.oc .oc-switch-slider,
.oc .plugin-toggle-slider {
background: color-mix(in oklch, var(--card-bg), transparent 70%) !important;
border: var(--border-strong) !important;
}
.oc .oc-switch-slider:before,
.oc .plugin-toggle-slider:before {
background: var(--accent-color) !important;
border: var(--border-strong) !important;
}
.oc .advanced-options-container,
.myip-ip-item,
.myip-check-item {
background: color-mix(in oklch, var(--bg-container), transparent 70%) !important;
color: var(--text-color) !important;
border: var(--border-strong) !important;
}
[data-theme="dark"] .oc .myip-section-title {
color: var(--color-white) !important;
}
.oc .myip-section-title {
border-bottom: none !important;
padding-bottom: 0 !important;
}
.oc .ip-title::after,
.oc .ip-state_title::after {
content: none !important;
}
.oc .stat-label::before,
.oc .stat-label::after {
content: none !important;
}
.oc .mode-tab,
.oc #config-mode-tabs .mode-tab,
.overwrite-info,
.oc .ip-geo,
.oc .ip-result,
.oc .ip-title, .oc .ip-state_title,
.oc .subscription-info-text,
.oc .upload-icon,
.oc .file-info-item,
.oc .cbi-button-option,
.oc #logo_btn .logo-text, .oc #edit_overwrite .btn-text,
.oc .version-display .version-text,
#config-upload-submit,
#overwrite-upload-submit {
color: var(--text-color) !important;
}
.oc .mode-tab.active,
.oc #config-mode-tabs .mode-tab.active,
.oc input[type="radio"]:checked + .cbi-button-option {
color: var(--color-white) !important;
}
.oc .config-editor-title .config-file-name {
color: var(--primary-color) !important;
}
.oc .config-file-name,
.oc .stat-label,
.oc .card-title,
#config-editor-status-text,
#config-editor-help {
color: var(--text-color) !important;
}
.oc .config-file-name {
font-weight: 500 !important;
}
.oc #logo_btn, .oc #edit_overwrite {
border: var(--border-strong) !important;
}
.oc .subscription-info-container,
.oc .cbi-button-option {
border: var(--border-strong) !important;
}
.oc .cbi-button-option {
border-radius: 6px !important;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.oc .cbi-button-option:hover {
transform: translateY(-2px);
}
.oc .sub-card {
transition: box-shadow 0.2s ease;
}
.oc .sub-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.10);
}
.oc .sub-card:active {
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.oc .announcement-card,
.oc .developer-container,
.oc .myip-content-grid,
.oc .cbi-button-group {
border: none !important;
}
.oc .mode-tabs,
.oc .value-indicator{
background: var(--bg-container) !important;
border: var(--border-strong) !important;
}
.oc .main-card,
.oc .announcement-card {
background: var(--bg-container) !important;
border: none !important;
box-shadow: none !important;
border-radius: none !important;
}
.oc .main-cards-container {
background: var(--bg-container) !important;
}
.config-select option {
background: color-mix(in oklch, var(--bg-container), transparent 70%) !important;
color: var(--text-color) !important;
}
.oc .subscription-progress-bar {
background: var(--btn-success-bg) !important;
}
.oc .config-editor-title,
.oc .config-upload-title {
color: var(--accent-color) !important;
}
.oc .config-upload-footer,
.oc .config-upload-header,
.oc .config-editor-header,
.oc .config-editor-footer {
background: var(--header-bg) !important;
color: var(--text-color) !important;
border: none !important;
}
.oc .config-editor-model,
.oc .config-upload-content {
background: color-mix(in oklch, var(--bg-container), transparent 10%) !important;
border: none !important;
}
#_mode {
height: 30px !important;
min-height: 30px !important;
line-height: 30px !important;
}
.sub-card.overwrite-item.active {
box-shadow: none !important;
}
.oc .config-upload-model,
.oc .config-editor-content {
border: none !important;
}
.oc .form-input, .oc .form-select {
background: var(--card-bg) !important;
border: var(--border-strong) !important;
color: var(--text-color) !important;
}
.upload-text,
.oc .form-group label {
color: var(--text-color) !important;
}
.upload-primary,
.upload-secondary {
color: var(--text-color) !important;
}
.oc .upload-zone,
.oc .form-textarea,
.oc .sub-card {
background: var(--bg-container) !important;
border: var(--border-strong) !important;
color: var(--text-color) !important;
}
.oc #config-mode-tabs .mode-tabs,
.subscription-info-container,
.config-file-content {
background-color: transparent !important;
}
.icon-btn,
.action-btn,
.copy-btn,
#edit_overwrite,
#restart_core,
#go_wiki,
#go_tutorials,
#go_star,
#theme-toggle,
#go_telegram,
#go_sponsor,
#logo_btn {
background: color-mix(in oklch, var(--bg-container), transparent 10%) !important;
color: var(--text-color) !important;
border: var(--border-strong) !important;
}
.oc .filename-extension,
.oc .form-help,
.oc .filename-input-container label,
.oc .config-upload-status,
#overwrite-subscribe-filename {
color: var(--text-color) !important;
}
.myip-icon-btn {
cursor: pointer;
}
#mode-icon rect:first-of-type {
fill: var(--color-blue);
}
#mode-icon path,
#mode-icon rect:not(:first-of-type) {
stroke: var(--text-color);
fill: var(--text-color);
}
[data-theme="dark"] #_daip b,
[data-theme="dark"] #_mix_proxy b,
[data-theme="dark"] #_mode b,
[data-theme="dark"] .stat-value {
color: var(--success-color) !important;
}
.subscription-info-main {
background: var(--bg-container) !important;
border-radius: 8px;
}
.cbi-button-group {
background: var(--bg-container) !important;
}
.oc .config-select {
background: var(--bg-container) !important;
border: var(--border-strong) !important;
color: var(--text-color) !important;
}
#_clash,
#_oclog,
#_daip,
#_mix_proxy,
#_mode,
#plugin-version-display,
#core-version-display {
border: var(--border-strong) !important;
background-color: var(--bg-container) !important;
}
.close-btn {
box-sizing: border-box !important;
flex-shrink: 0 !important;
left: 10px !important;
position: relative !important;
width: 36px !important;
height: 36px !important;
border: none !important;
background: #ff4757 !important;
border-radius: 50% !important;
cursor: pointer !important;
transition: all 0.3s ease !important;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2) !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
padding: 0 !important;
}
.close-btn::before,
.close-btn::after {
content: '' !important;
position: absolute !important;
width: 18px !important;
height: 2px !important;
background: white !important;
border-radius: 1px !important;
}
.close-btn::before {
transform: rotate(45deg) !important;
}
.close-btn::after {
transform: rotate(-45deg) !important;
}
.close-btn:hover {
background: #ff2e43 !important;
transform: rotate(90deg) scale(1.1) !important;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3) !important;
}
.close-btn:active {
transform: scale(0.95) !important;
}
a.food[data-title="Log_out"]::before {
content: none !important;
}
a.food[data-title="Log_out"]::before {
content: none !important;
}
a.food[data-title="Log_out"] {
position: relative;
padding-left: 40px !important;
}
a.food[data-title="Log_out"]::after {
content: "\F77C";
font-family: "bootstrap-icons" !important;
position: absolute;
left: 14px;
top: 50%;
transform: translateY(-50%);
font-size: 16px;
line-height: 1;
color: red;
transition: color 0.3s ease;
}
a.food[data-title="Log_out"]:hover::after {
transform: translateY(-50%) scale(1.1);
}
#tool_label {
background-color: oklch(var(--l) var(--c) var(--base-hue-1)) !important;
padding: 0px 10px !important;
border-radius: 5px !important;
margin: 1px 0 !important;
border-bottom: none !important;
}
#tool_label .tool_label_span {
display: inline-flex !important;
align-items: center !important;
color: var(--color-white) !important;
line-height: 1.2 !important;
gap: 5px !important;
}
#tool_label .tool_label_select {
padding: 3px 5px !important;
border-radius: 5px !important;
border: none !important;
height: fit-content !important;
}
#tool_label .btn.cbi-button.cbi-button-apply {
background-color: oklch(var(--l) var(--c) var(--base-hue-6)) !important;
color: var(--color-white) !important;
padding: 3px 10px !important;
border-radius: 5px !important;
border: none !important;
cursor: pointer !important;
height: fit-content !important;
}
html,
body,
.main,
#maincontent {
overflow: auto !important;
scrollbar-width: none;
-ms-overflow-style: none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar,
.main::-webkit-scrollbar,
#maincontent::-webkit-scrollbar {
display: none;
}
.pure-g {
text-rendering: optimizespeed !important;
display: flex !important;
flex-flow: row wrap !important;
align-content: flex-start !important;
padding: 0 !important;
gap: 1rem !important;
}
#_passwall_status_fieldset .block.pure-g,
#_passwall2_status_fieldset .block.pure-g {
background-color: var(--bg-container) !important;
}
#_passwall_status_fieldset,
#_passwall2_status_fieldset {
background: none !important;
border: none !important;
box-shadow: none !important;
}
.block {
margin: 0rem !important;
padding: 0.35rem 0.6rem !important;
border-radius: 12px !important;
border: var(--border-strong);
box-shadow: 0 1px 3px -2px color-mix(in oklch, var(--bg-container), black 30%) !important;
transition: transform 0.3s ease, box-shadow 0.3s ease !important;
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
}
.block:hover {
transform: translateY(-2px) !important;
background-color: var(--bg-body) !important;
}
.pure-u-1-4 {
width: calc((100% - (3 * 1rem)) / 4) !important;
}
.block>.pure-u-2-3 {
order: 1 !important;
flex: 1.4 !important;
padding-left: 6px !important;
margin-right: 0rem !important;
overflow: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
}
.pure-u-2-3 h4 {
width: 100% !important;
border-radius: 8px !important;
border: var(--border-strong);
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(-bg-container), black 30%) !important;
padding: 7px 12px !important;
background: var(--card-bg) !important;
}
.block>.pure-u-1-3 {
order: 2 !important;
flex: 0 0 auto !important;
text-align: right !important;
margin-left: 1rem !important;
}
.block h4 {
font-size: 0.9rem !important;
font-weight: 600 !important;
line-height: 1.6 !important;
margin: 0 !important;
text-shadow: none !important;
}
.pure-u-1-4 .img-con img {
width: 46px !important;
height: 46px !important;
object-fit: contain !important;
border: none !important;
outline: none !important;
box-shadow: none !important;
background: transparent !important;
-webkit-tap-highlight-color: transparent !important;
filter: none !important;
}
div.pure-u-1-4:has(#status_node) .img-con img,.pure-u-1-4:has(#status_tcp_node) .img-con img {content: url('/luci-static/ipip/img/client.svg') !important;}
div.pure-u-1-4:has(#status_github) .img-con img { content: url('/luci-static/ipip/img/github.svg') !important; }
div.pure-u-1-4:has(#status_google) .img-con img { content: url('/luci-static/ipip/img/google.svg') !important; }
div.pure-u-1-4:has(#status_udp_node) .img-con img { content: url('/luci-static/ipip/img/udp.svg') !important; }
div.pure-u-1-4:has(#status_haproxy) .img-con img { content: url('/luci-static/ipip/img/haproxy.svg') !important; }
div.pure-u-1-4:has(#status_instagram) .img-con img { content: url('/luci-static/ipip/img/instagram.svg') !important; }
div.pure-u-1-4:has(#status_dns) .img-con img { content: url('/luci-static/ipip/img/dns.svg') !important; }
div.pure-u-1-4.check:has(#status_baidu) .img-con img { content: url('/luci-static/ipip/img/baidu.svg') !important; }
#status_youtube,
#status_haproxy,
#status_dns,
#status_udp_node,
#status_node,
#status_github,
#status_google,
#status_aliyun,
#status_tcp_node {
font-family: 'Fredoka One', cursive !important;
color: inherit !important;
color: var(--text-primary) !important;
}
@media screen and (max-width: 992px) {
.pure-u-1-4 {
width: calc((100% - (1 * 1rem)) / 2) !important;
}
.img-con {
margin: 0 !important;
padding-right: 8px !important;
}
.block > .pure-u-2-3 h4 {
font-size: 0.7rem !important;
padding-right: 8px !important;
}
#_passwall_status_fieldset .block > .pure-u-2-3 h4 {
line-height: 1.4 !important;
}
.block > .pure-u-2-3 h4 span {
font-size: 0.7rem !important;
line-height: 1.3 !important;
}
div.pure-u-1-4:has(h4#status_dns),
div.pure-u-1-4:has(h4#status_instagram) {
display: none !important;
}
div.pure-u-1-4:has(#status_node) .img-con img,
div.pure-u-1-4:has(#status_tcp_node) .img-con img,
div.pure-u-1-4:has(h4#status_udp_node) div.img-con img,
div.pure-u-1-4:has(h4#status_google) div.img-con img,
div.pure-u-1-4:has(h4#status_haproxy) div.img-con img,
div.pure-u-1-4:has(h4#status_github) div.img-con img,
div.pure-u-1-4.check:has(h4#status_baidu) div.img-con img {
width: 36px !important;
height: 36px !important;
}
.block {
padding-left: 12px !important;
padding-right: 12px !important;
margin: 0.25rem 0.5rem !important;
}
.block > .pure-u-1-3 {
margin-left: 0.5rem !important;
padding-right: 4px !important;
}
}
@media screen and (max-width: 1200px) {
.status .pure-u-1-4 {
width: calc((100% - 1rem) / 2) !important;
}
.block {
padding-left: 10px !important;
padding-right: 10px !important;
}
.img-con {
padding-right: 6px !important;
}
}
@media screen and (max-width: 576px) {
.pure-u-1-4 {
width: calc((100% - 0.5rem) / 2) !important;
}
.block {
padding-left: 8px !important;
padding-right: 8px !important;
margin: 0.2rem 0.3rem !important;
}
.img-con {
padding-right: 6px !important;
}
.block > .pure-u-1-3 {
margin-left: 0.3rem !important;
padding-right: 2px !important;
}
.pure-u-1-4 .img-con img {
width: 32px !important;
height: 32px !important;
}
}
#_log_fieldset {
border: 1px solid var(--bg-container);
border-radius: 12px;
padding: 12px 16px;
color: #333;
}
#_log_fieldset .btn {
display: block;
width: max-content !important;
background-color: transparent;
border: 1px solid var(--bg-container);
border-radius: 5px;
cursor: pointer;
padding: 6px 14px;
transition: background-color 0.3s ease;
}
#log_textarea pre {
background: var(--card-bg) !important;
border: var(--border-strong) !important;
color: var(--text-primary) !important;
border-radius: 6px;
}
#log_textarea {
font-size: 13px;
line-height: 1.4;
padding: 10px;
border: var(--border-strong) !important;
border-radius: 5px !important;
color: var(--text-primary) !important;
box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.05);
resize: vertical;
box-sizing: border-box;
margin-top: 10px !important;
}
#log_textarea:focus {
outline: none;
border-color: #66afe9 !important;
box-shadow: 0 0 6px rgba(102, 175, 233, 0.6);
}
[data-page="admin-system-opkg"] h2 {
color: var(--accent-color) !important;
}
[data-page="admin-system-startup"] textarea {
color: #ccc;
background-color: transparent;
}
[data-page="admin-system-startup"] textarea:focus-visible {
border: 1px solid var(--dark-primary);
}
[data-page="admin-network-firewall-custom"] #view p textarea,
[data-page="admin-status-routes"] #view p textarea,
[data-page="admin-system-crontab"] #view p textarea {
color: var(--text-primary);
font-size: 14px !important;
border-radius: 6px;
padding: 8px;
margin-top: 10px;
margin-left: 10px;
background: var(--bg-container) !important;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
#cbid\.diskman\.1\._rescan {
margin-left: 20px !important;
}
.log-side-block {
position: fixed;
top: 50%;
right: 10px;
transform: translateY(-50%);
display: flex;
flex-direction: column;
gap: 8px;
background: rgba(0, 0, 0, 0.6);
padding: 10px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
z-index: 9999;
}
.log-side-block .cbi-button {
background-color: #1976d2;
border: none;
color: white;
font-weight: 600;
font-size: 14px;
padding: 8px 12px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s ease, box-shadow 0.3s ease;
box-shadow: 0 2px 5px rgba(25, 118, 210, 0.5);
}
.log-side-block .cbi-button:hover {
background-color: #1565c0;
box-shadow: 0 4px 8px rgba(21, 101, 192, 0.7);
}
.log-side-block .cbi-button:active {
background-color: #0d47a1;
box-shadow: none;
}
.log-side-block .cbi-button[style*="visibility:hidden"] {
display: none !important;
}
@media (max-width: 768px) {
.dropdown {
position: absolute !important;
bottom: 100% !important;
top: auto !important;
max-height: 50vh !important;
overflow-y: auto !important;
}
}
@media (max-width: 768px) {
.cbi-button-up,
.cbi-button-down {
display: none !important;
}
}
.btn,
.cbi-button,
.cbi-button-apply,
.cbi-button-save,
.cbi-button-reset,
.cbi-button-add {
font-family: inherit !important;
font-weight: 700 !important;
}
div#moreEntriesBar>button.cbi-button.btn {
background-color: #3182ce !important;
color: white !important;
margin: 1em 15px !important;
min-width: unset !important;
width: fit-content !important;
}
span.control-group>button.btn.cbi-button {
padding: 0.3rem 0.75rem !important;
line-height: 1.3rem !important;
height: 38px !important;
vertical-align: middle !important;
margin-top: 5px !important;
}
td.cbi-section-actions button.cbi-button-action:nth-child(3) {
background-color: #FFA500 !important;
}
td.cbi-section-actions button.cbi-button-action:nth-child(4) {
background-color: #38a169 !important;
}
td.cbi-section-actions button.cbi-button-action:nth-child(5) {
background-color: #e53e3e !important;
}
td.cbi-section-actions>div>button.cbi-button-neutral.down:nth-child(2) {
background-color: #e53e3e !important;
border-color: #e53e3e !important;
color: white !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
}
.nav-container .btn_styles:nth-child(1) {
background-color: #3182ce !important;
border-color: #3182ce !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
.nav-container .btn_styles:nth-child(1):hover {
transform: scale(1.05);
background-color: #2c5aa0 !important;
}
.nav-container .btn_styles:nth-child(2) {
background-color: #38a169 !important;
border-color: #38a169 !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
.nav-container .btn_styles:nth-child(2):hover {
transform: scale(1.05);
background-color: #2f855a !important;
}
.nav-container .btn_styles:nth-child(3) {
background-color: #d69e2e !important;
border-color: #d69e2e !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
.nav-container .btn_styles:nth-child(3):hover {
transform: scale(1.05);
background-color: #b7791f !important;
}
.nav-container .btn_styles:nth-child(4) {
background-color: #805ad5 !important;
border-color: #805ad5 !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
.nav-container .btn_styles:nth-child(4):hover {
transform: scale(1.05);
background-color: #6b46c1 !important;
}
.nav-container .btn_styles:nth-child(5) {
background-color: #e53e3e !important;
border-color: #e53e3e !important;
background-image: none !important;
box-shadow: none !important;
opacity: 1 !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
.nav-container .btn_styles:nth-child(5):hover {
transform: scale(1.05);
background-color: #c53030 !important;
}
.nav-container .btn_styles {
color: white !important;
}
.nas-container_card,
.app-container_status-container,
.app-container {
background-color: var(--card-bg) !important;
border: var(--border-strong) !important;
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(-bg-container), black 30%) !important;
color: var(--text-primary) !important;
border-radius: 10px !important;
transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.nas-container_card:hover,
.app-container_status-container:hover {
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(--bg-container), black 40%);
}
.app-container:hover {
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(--bg-container), black 40%);
transform: none !important;
}
[data-theme="dark"] .app-container_status-container,
[data-theme="dark"] .app-container {
box-shadow: var(--border-glow) !important;
animation: var(--breathing-animation) !important;
}
[data-theme="dark"] [class*="nas-container"],
[data-theme="dark"] [class*="app-container"] {
background-color: var(--bg-container) !important;
}
div.app-container_body ul.app-container_nas-menu button {
background-color: oklch(var(--l) var(--c) var(--base-hue-7)) !important;
color: white !important;
border-radius: 0 !important;
border: none !important;
padding: 8px 16px !important;
cursor: pointer !important;
}
div.app-container_body ul.app-container_nas-menu button:first-child {
border-top-left-radius: 10px !important;
border-bottom-left-radius: 10px !important;
}
div.app-container_body ul.app-container_nas-menu button:last-child {
border-top-right-radius: 10px !important;
border-bottom-right-radius: 10px !important;
}
div.app-container_body ul.app-container_nas-menu button.on {
background-color: oklch(var(--l) var(--c) var(--base-hue-1)) !important;
}
div.app-container_body ul.app-container_nas-menu button:hover {
background-color: oklch(var(--l) var(--c) var(--base-hue-5)) !important;
}
div.app-container_configure {
background-color: #3182ce !important;
color: white !important;
transition: all 0.3s ease !important;
transform: scale(1);
}
div.app-container_configure:hover {
transform: scale(1.05);
background-color: #2c5aa0 !important;
}
[data-theme="dark"] div.app-container_configure {
background-color: oklch(50% 0.18 var(--base-hue)) !important;
color: var(--text-primary) !important;
box-shadow: 0 0 15px oklch(70% 0.2 var(--base-hue) / 0.4) !important;
}
[data-theme="dark"] div.app-container_configure:hover {
transform: scale(1.05);
background-color: oklch(45% 0.18 var(--base-hue)) !important;
box-shadow: 0 0 25px oklch(75% 0.25 var(--base-hue) / 0.6) !important;
}
#status-bar {
background-color: var(--card-bg) !important;
}
#core_status {
border: var(--border-strong) !important;
}
.title,
.desc {
color: var(--text-primary) !important;
}
#page .network-message li {
color: var(--text-primary) !important;
}
#page h3.desc,
#page h2.title,
#page code {
background-color: var(--bg-container) !important;
color: var(--text-primary) !important;
}
li[data-value="-"][unselectable] {
background-color: var(--card-bg) !important;
}
@media (max-width: 992px) {
html, body {
overflow-x: hidden;
position: relative;
width: 100%;
}
.page-container, .card-container, .network-container, .other-container, .grid-container {
max-width: 100%;
overflow-x: hidden;
}
.echart, .feature-card, .reusable-card {
max-width: 100%;
}
.echart > div {
max-width: 100%;
overflow-x: hidden;
}
}
.info_content .ip_item .ip_tag,
.content .speed {
background-color: var(--card-bg) !important;
border: var(--border-strong) !important;
box-shadow: 0 2px 6px -2px color-mix(in oklch, var(-bg-container), black 30%) !important;
color: var(--text-primary) !important;
}
.cbi-section {
display: grid;
align-items: center;
grid-template-columns: 1fr;
min-height: 50px;
}
.cbi-section > * {
margin: 0;
grid-column: 1;
}
#config_file_select.config-select {
background-color: color-mix(in oklch, var(--bg-container), transparent 20%) !important;
border: var(--border-strong) !important;
color: var(--text-color) !important;
}
#config_file_select.config-select:focus,
#config_file_select.config-select:active {
background-color: color-mix(in oklch, var(--bg-container), transparent 20%) !important;
}
.oc .main-cards-container {
gap: 0px !important;
}
.oc .myip-content-grid {
gap: 8px !important;
border-radius: 0 !important;
}
.oc .version-display-container,
.oc .card-title {
margin-top: 5px;
}
.oc {
background-color: var(--bg-container) !important;
}
.cbi-dropdown.btn {
height: 2.5rem;
min-height: 2.2rem;
line-height: 2.5rem;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
}
.cbi-input-text,
input[type="text"],
input[type="password"],
input[type="email"] {
border-radius: 14px;
min-height: 2.5rem;
line-height: normal;
padding: 0.5rem 0.75rem;
box-sizing: border-box;
}
div[style*="border-bottom"] {
border-bottom: 0 !important;
}
.container .table-wrapper .table-row,
.container .table-wrapper .add-row {
border-bottom: 1px solid var(--bg-container) !important;
}
.container .table-wrapper .table-row:hover,
.container .table-wrapper .add-row:hover {
background-color: color-mix(in oklch, var(--bg-container), transparent 20%) !important;
}
.table-cell.action-col svg.icon {
fill: var(--accent-tertiary) !important;
}
.actioner-dns .actioner-dns_footer,
.actioner-dns .actioner-dns_header {
background: var(--header-bg);
border-bottom: 0 !important;
border-top: 0 !important;
}
#cbi-passwall2-global_app .cbi-value-description::before {
display: none !important;
}
#cbi-passwall2-global_app .cbi-value-description > span:first-child {
display: inline-block;
width: 150px;
min-width: 150px;
margin-left: -1.3rem;
}
@media (max-width: 786px) {
.geoview-search input.cbi-input-text {
width: 12rem !important;
min-width: 12rem !important;
}
}
div.app-description.cbi-value-description {
padding-left: 0 !important;
margin-left: -1px !important;
}