12 background: #e5eef5 linear-gradient(#fff 0%, #e5eef5 100%) no-repeat;
13 font-family: Verdana, Arial, sans-serif;
16 padding-bottom: 1.5em;
26 box-sizing: border-box;
29 .table { display: table; width: 100%; position: relative; }
30 .tr { display: table-row; }
31 .thead { display: table-header-group; }
32 .tbody { display: table-row-group; }
33 .tfoot { display: table-footer-group; }
34 .td, .th { display: table-cell; }
35 .th { font-weight: bold; }
37 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
38 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
40 .col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; }
41 .col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; }
42 .col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; }
43 .col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; }
44 .col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; }
45 .col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; }
46 .col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; }
47 .col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; }
48 .col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; }
49 .col-10 { flex: 10 10 300px !important; -webkit-flex: 10 10 300px !important; }
55 .tr.placeholder > .td {
72 border-bottom: 1px dotted;
77 a:visited abbr[title],
78 a:link acronym[title],
79 a:visited acronym[title] {
84 font-family: monospace;
90 font-family: Trebuchet MS, Verdana, sans-serif;
92 margin: .25em 0 .5em 0;
93 border-bottom: 1px solid;
107 .cbi-section-node + h4 {
111 fieldset { border: none; }
113 fieldset > legend { float: left; }
114 fieldset > legend + * { clear: both; }
122 background-color: white;
124 text-decoration: blink;
149 background-color: white;
159 .alert-message, .cbi-tooltip.error {
164 .alert-message.notice, .cbi-tooltip.notice {
165 background: linear-gradient(#ccc 0%, #eee 100%);
169 .alert-message.warning, .cbi-tooltip.warning {
170 background: linear-gradient(#dda 0%, #dd8 100%);
178 .alert-message > h4 {
183 .ifacebadge, .ifacebox {
184 display: inline-flex;
185 align-content: center;
186 border: 1px solid #ccc;
197 .ifacebox-head.active {
201 .ifacebadge, .zonebadge {
206 align-self: flex-start;
212 display: inline-block;
217 border-color: #000000;
222 flex-direction: column;
239 .network-status-table {
244 .network-status-table .ifacebox {
250 .network-status-table .ifacebox-body {
252 flex-direction: column;
256 .network-status-table .ifacebox-body > span {
260 .network-status-table .ifacebox-body > div {
266 .network-status-table .ifacebox-body .ifacebadge {
268 margin: .5em .25em .25em .25em;
277 display: inline-block;
283 .zonebadge > strong {
292 .zonebadge .ifacebadge,
293 .cbi-dropdown .ifacebadge {
297 .zonebadge .ifacebadge img,
298 .zonebadge .ifacebadge em,
299 .cbi-dropdown .ifacebadge img,
300 .cbi-dropdown .ifacebadge em {
305 border: 1px dashed #AAAAAA;
315 background: #FFF url(header.jpg) repeat-x left bottom;
322 padding-bottom: 10px;
326 padding: 10px 10px 0px 10px;
347 font: bold 36px Helvetica, Verdana, Arial, sans-serif;
348 text-decoration: none;
359 padding: 10px 10px 0 0;
370 html>body ul.dropdowns {
403 ul.dropdowns ul li ul {
408 ul.dropdowns li.over ul ul,
409 ul.dropdowns li.focus ul ul,
410 ul.dropdowns li:hover ul ul,
411 ul.dropdowns li.over ul ul ul,
412 ul.dropdowns li.focus ul ul ul,
413 ul.dropdowns li:hover ul ul ul,
414 ul.dropdowns li.over ul ul ul ul,
415 ul.dropdowns li.focus ul ul ul ul,
416 ul.dropdowns li:hover ul ul ul ul {
420 ul.dropdowns li.over ul,
421 ul.dropdowns li.focus ul,
422 ul.dropdowns li:hover ul {
426 ul.dropdowns ul li.over ul,
427 ul.dropdowns ul li.focus ul,
428 ul.dropdowns ul li:hover ul,
429 ul.dropdowns ul ul li.over ul,
430 ul.dropdowns ul ul li.focus ul,
431 ul.dropdowns ul ul li:hover ul,
432 ul.dropdowns ul ul ul li.over ul,
433 ul.dropdowns ul ul ul li.focus ul,
434 ul.dropdowns ul ul ul li:hover ul {
442 #xhr_poll_status #xhr_poll_status_off {
447 #xhr_poll_status #xhr_poll_status_on {
457 border-bottom: 1px dotted #5A5A5A;
461 background-color: #FFF;
464 #menubar ul.dropdowns {
470 #menubar ul.dropdowns li ul {
473 border-width: 0 1px 1px 1px;
474 border-style: dotted;
475 border-color: #5a5a5a;
478 #menubar ul.dropdowns ul li ul {
482 html #menubar a:link,
483 html #menubar a:visited {
489 text-decoration: none;
494 html #menubar a:link:hover,
495 html #menubar a:visited:hover,
496 html #menubar a:link:active,
497 html #menubar a:visited:active,
498 #menubar a:link:focus,
499 #menubar a:visited:focus {
504 html #menubar a:link.active,
505 html #menubar a:visited.active,
506 html #menubar a:link.preactive,
507 html #menubar a:visited.preactive {
512 html #menubar a:link.warning,
513 html #menubar a:visited.warning {
517 text-decoration: blink;
520 #menubar ul.dropdowns li.over>a,
521 #menubar ul.dropdowns li.focus>a,
522 #menubar ul.dropdowns li:hover>a {
525 .lang_de #submenu_mini_system { min-width: 13.3em; }
526 * html .lang_de #submenu_mini_system { width: 13.3em; }
528 .lang_pt-br #submenu_mini_network { min-width: 14em; }
529 * html .lang_pt-br #submenu_mini_network { width: 14em; }
531 .lang_pt-br #submenu_mini_system { min-width: 11.5em; }
532 * html .lang_pt-br #submenu_mini_system { width: 11.5em; }
534 .lang_ru #submenu_mini_system { min-width: 18em; }
535 * html .lang_ru #submenu_mini_system { width: 18em; }
537 .lang_pt-br #submenu_admin_index { min-width: 11em; }
538 * html .lang_pt-br #submenu_admin_index { width: 11em; }
540 .lang_ru #submenu_admin_index { min-width: 15.5em; }
541 * html .lang_ru #submenu_admin_index { width: 15.5em; }
543 .lang_ru #submenu_admin_status { min-width: 10.5em; }
544 * html .lang_ru #submenu_admin_status { width: 10.5em; }
546 .lang_de #submenu_admin_system { min-width: 13.3em; }
547 * html .lang_de #submenu_admin_system { width: 13.3em; }
549 .lang_fr #submenu_admin_system { min-width: 14.5em; }
550 * html .lang_fr #submenu_admin_system { width: 14.5em; }
552 .lang_pt-br #submenu_admin_system { min-width: 11.5em; }
553 * html .lang_pt-br #submenu_admin_system { width: 11.5em; }
555 .lang_ru #submenu_admin_system { min-width: 18em; }
556 * html .lang_ru #submenu_admin_system { width: 18em; }
558 #submenu_admin_services_chillispot { min-width: 15.5em; }
559 * html #submenu_admin_services_chillispot { width: 15.5em; }
561 #submenu_admin_services_coovachilli { min-width: 15em; }
562 * html #submenu_admin_services_coovachilli { width: 15em; }
564 .lang_ru #submenu_admin_network_routes { min-width: 15.3em; }
565 * html .lang_ru #submenu_admin_network_routes { width: 15.3em; }
567 #submenu_admin_network_firewall { min-width: 14em; }
568 * html #submenu_admin_network_firewall { width: 14em; }
570 .lang_de #submenu_admin_network_firewall { min-width: 16.5em; }
571 * html .lang_de #submenu_admin_network_firewall { width: 16.5em; }
573 .lang_pt-br #submenu_admin_network_firewall { min-width: 15em; }
574 * html .lang_pt-br #submenu_admin_network_firewall { width: 15em; }
594 #applyreboot-section {
598 .lang_de #submenu_admin_uci {
602 .lang_ru #submenu_admin_uci {
609 border: 3px solid #ccc;
611 font-family: monospace;
629 margin-bottom: 1.5em;
634 margin-bottom: 0.5em;
640 text-decoration: none;
642 background: url('../resources/cbi/link.gif') no-repeat scroll right center;
643 background-color: inherit;
651 list-style-type: none;
653 margin: 0 0 .5em 0 !important;
655 border-bottom: 1px solid #bbb;
659 display: inline-flex;
660 margin: 0 5px -1px 0;
662 border: 1px solid #bbb;
664 border-radius: 3px 3px 0 0;
665 background: linear-gradient(#ddd 90%, #aaa 100%);
668 text-overflow: ellipsis;
669 word-wrap: break-word;
673 ul.cbi-tabmenu li a:hover {
674 text-decoration: none;
682 ul.cbi-tabmenu li.cbi-tab-highlighted {
687 ul.cbi-tabmenu li.cbi-tab {
692 ul.cbi-tabmenu + .cbi-section-node {
702 [data-tab-active="true"] {
706 transition: opacity .25s ease-in;
710 background-image: url(/luci-static/resources/cbi/help.gif);
711 background-position: 0.25em 50%;
712 background-repeat: no-repeat;
713 border-bottom: 1px solid #ccc;
714 margin: 0.25em 0.25em 2em;
715 padding: 0.5em 0.5em 0.5em 2em;
730 border: 1px solid #cccccc;
743 background-color: #fff;
749 input[type=password] {
761 input[type=checkbox],
762 [data-dynlist] > input + img,
763 input.cbi-input-password + img {
764 vertical-align: middle;
769 .td input[type=text] {
773 .td [data-dynlist] > input,
774 .td input.cbi-input-password {
775 width: calc(100% - 20px);
778 img.cbi-image-button {
781 vertical-align: middle;
787 border: 1px solid #aaa;
788 text-decoration: none;
790 display: inline-block;
792 -webkit-appearance: none;
800 .btn:hover, .cbi-button:hover {
801 box-shadow: 0 0 3px #59d;
805 .btn[disabled]:hover,
806 .cbi-button[disabled],
807 .cbi-button[disabled]:hover {
810 pointer-events: none;
813 .cbi-button-positive,
814 .cbi-button-fieldadd,
823 .cbi-button-download,
840 .cbi-button-negative,
841 .cbi-section-remove .cbi-button,
847 .cbi-button-action.important,
848 .cbi-page-actions .cbi-button-apply,
849 .cbi-section-actions .cbi-button-edit {
854 .cbi-button-positive.important,
855 .cbi-page-actions .cbi-button-save {
860 .cbi-page-actions .cbi-button-apply + .cbi-button-save {
866 background-image: url('../resources/cbi/reset.gif');
867 background-repeat: no-repeat;
868 background-position: right;
869 color: #FF0000 !important;
870 border-color: #FF0000;
874 background-image: url('../resources/cbi/reset.gif');
875 background-repeat: no-repeat;
876 background-position: right;
877 color: #FF0000 !important;
878 border-color: #FF0000;
881 div.cbi-section-remove input {
887 margin-bottom: 0.5em;
890 .table .td, .table .th {
898 border: 1px solid #666;
903 border-collapse: collapse;
906 .table.smalltext .tr:hover .td {
907 background-color: #bbddee;
911 .table.smalltext .tr .th {
913 border-left: 1px dotted #666;
917 .table.smalltext .tr .td {
919 border-top: 1px dotted #666;
920 border-left: 1px dotted #666;
923 .cbi-section-node .tr:not(.placeholder):nth-child(even) {
927 .table.cbi-section-table .cbi-section-table-cell {
932 .table .tr > .th:empty {
936 .table.cbi-section-table .tr > *,
937 .table.cbi-section-table .tr[data-title]::before {
938 border-top: 1px dotted #bbb;
942 .table.cbi-section-table .tr.table-titles > *,
943 .table.cbi-section-table .tr.cbi-section-table-titles > *,
944 .table.cbi-section-table .tr.cbi-section-table-desc > *,
945 .table.cbi-section-table .tr.table-titles::before,
946 .table.cbi-section-table .tr.cbi-section-table-titles::before,
947 .table.cbi-section-table .tr.cbi-section-table-desc::before {
951 .table.cbi-section-table .tr:hover::before,
952 .table.cbi-section-table .tr:hover > * {
956 .table.cbi-section-table .tr:nth-child(even):hover::before,
957 .table.cbi-section-table .tr:nth-child(even):hover > * {
964 vertical-align: middle;
965 padding-left: 0.25em;
966 border-bottom: 1px dotted #bbb;
969 div.cbi-value:hover {
986 .td.cbi-value-field {
992 .cbi-value-description {
993 background-image: url(/luci-static/resources/cbi/help.gif);
994 background-position: .25em .25em;
995 background-repeat: no-repeat;
997 padding: .25em .25em .25em 1.75em;
1000 .cbi-section-create {
1001 padding: 0 0 .25em 0;
1003 display: inline-flex;
1004 align-items: center;
1007 .cbi-section-create > * {
1012 .cbi-section-create > * > input {
1016 .cbi-section-remove > .cbi-button {
1017 margin-bottom: -1px;
1018 border-radius: 3px 3px 0 0;
1021 .cbi-section-node + .cbi-section-create {
1031 border-bottom: 1px dotted #bbb;
1040 border: 1px dotted #555;
1045 .cbi-section-node-tabbed {
1049 .cbi-section-node .cbi-optionals:last-child,
1050 .cbi-section-node .cbi-value:last-child {
1051 border-bottom: none;
1054 .table.cbi-section-table {
1057 border: 1px dotted #444;
1062 .cbi-section-node > .table.cbi-section-table {
1069 50% { opacity: .5; }
1070 100% { opacity: 1; }
1073 .tr.cbi-section-table-row.flash {
1074 animation: flash .35s;
1077 .tr.cbi-section-table-descr .th {
1078 font-weight: normal;
1080 vertical-align: top;
1083 .td.cbi-section-table-optionals {
1084 text-align: left !important;
1088 .th.cbi-section-actions,
1089 .td.cbi-section-actions {
1091 justify-content: flex-end;
1092 flex-direction: row;
1094 margin: auto 0 auto auto;
1097 .td.cbi-section-actions > form {
1101 .td.cbi-section-actions > *,
1102 .td.cbi-section-actions > form > * {
1109 justify-content: flex-end;
1111 padding: 0 .25em .25em .25em;
1114 .cbi-page-actions > form {
1118 .cbi-page-actions > * {
1123 .cbi-page-actions > form > * {
1128 .cbi-page-actions > .cbi-button-link,
1129 .cbi-page-actions > form[method="get"]:first-child {
1134 .th[data-type="button"], .td[data-type="button"],
1135 .th[data-type="fvalue"], .td[data-type="fvalue"] {
1140 #cbi-network-switch_vlan .th,
1141 #cbi-network-switch_vlan .td {
1145 #cbi-wireless-overview .td:first-child {
1149 .td[data-title]::before {
1150 content: attr(data-title) ":\20";
1155 white-space: nowrap;
1158 .tr.placeholder .td[data-title]::before {
1162 .tr[data-title]::before,
1163 .tr.cbi-section-table-titles.named::before {
1164 content: attr(data-title) "\20";
1167 display: inline-block;
1171 white-space: normal;
1172 word-wrap: break-word;
1175 .cbi-value-helpicon img {
1176 vertical-align: bottom;
1183 background-color: #fff;
1186 td.cbi-value-error {
1190 .cbi-value-error input,
1191 .cbi-value-error select {
1193 background-color: #fcc;
1196 .cbi-section-error {
1198 background-color: white;
1200 border: 1px dotted red;
1207 border: 1px solid #ccc;
1208 display: inline-flex;
1218 .cbi-dropdown:focus {
1219 outline: 2px solid #4b6e9b;
1222 .cbi-dropdown > ul {
1223 margin: 0 !important;
1232 .cbi-dropdown > ul.preview {
1236 .cbi-dropdown > .open {
1238 border: 2px outset #eee;
1242 .cbi-dropdown > .open,
1243 .cbi-dropdown > .more {
1247 flex-direction: column;
1248 justify-content: center;
1254 .cbi-dropdown > .more,
1255 .cbi-dropdown > ul > li[placeholder] {
1258 text-shadow: 1px 1px 0px #fff;
1262 .cbi-dropdown > ul > li {
1265 white-space: nowrap;
1267 text-overflow: ellipsis;
1270 align-items: center;
1275 .cbi-dropdown > ul > li .hide-open { display: initial; }
1276 .cbi-dropdown > ul > li .hide-close { display: none; }
1278 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1279 border-left: 1px solid #ccc;
1282 .cbi-dropdown[empty] > ul {
1286 .cbi-dropdown > ul > li > form {
1290 pointer-events: none;
1293 .cbi-dropdown > ul > li img {
1294 vertical-align: middle;
1295 margin-right: .25em;
1298 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1302 .cbi-dropdown > ul > li input[type="text"] {
1306 .cbi-dropdown[open] {
1310 .cbi-dropdown[open] > ul.dropdown {
1312 background: #f6f6f5;
1313 border: 1px solid #918e8c;
1314 box-shadow: 0 0 4px #918e8c;
1322 .cbi-dropdown > ul > li[display],
1323 .cbi-dropdown[open] > ul.preview,
1324 .cbi-dropdown[open] > ul.dropdown > li,
1325 .cbi-dropdown[multiple] > ul > li > label,
1326 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1327 .cbi-dropdown[multiple][more] > .more,
1328 .cbi-dropdown[multiple][empty] > .more {
1331 align-items: center;
1334 .cbi-dropdown[empty] > ul > li,
1335 .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
1336 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1340 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
1341 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: initial; }
1343 .cbi-dropdown[open] > ul.dropdown > li {
1344 border-bottom: 1px solid #ccc;
1347 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1348 background: #b0d0f0;
1351 .cbi-dropdown[open] > ul.dropdown > li.focus {
1352 background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
1355 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1357 border-bottom: none;
1360 .cbi-dropdown[disabled] {
1361 pointer-events: none;
1366 .cbi-tooltip-container {
1379 transition: opacity .25s ease-out;
1380 pointer-events: none;
1381 box-shadow: 0 0 2px #444;
1384 .cbi-tooltip-container:hover .cbi-tooltip {
1387 transition: opacity .25s ease-in;
1390 .zonebadge .cbi-tooltip {
1392 background: inherit;
1393 margin: -1.6em 0 0 -5px;
1402 .zone-forwards > * {
1407 .zone-forwards > span {
1412 .zone-forwards .zone-src,
1413 .zone-forwards .zone-dest {
1415 flex-direction: column;
1419 .left, .left::before {
1420 text-align: left !important;
1423 .right, .right::before {
1424 text-align: right !important;
1427 .center, .center::before {
1428 text-align: center !important;
1432 align-self: flex-end;
1436 align-self: flex-start;
1456 height: auto !important;
1458 margin: 0 auto -2em;
1465 text-decoration: none;
1474 white-space: normal;
1475 border: 1px dotted #f00;
1476 background-color: #fff;
1482 font-family: monospace;
1485 .uci-change-list ins,
1486 .uci-change-legend-label ins {
1487 text-decoration: none;
1488 border: 1px solid #00FF00;
1489 background-color: #CCFFCC;
1494 .uci-change-list del,
1495 .uci-change-legend-label del {
1496 text-decoration: none;
1497 border: 1px solid #FF0000;
1498 background-color: #FFCCCC;
1504 .uci-change-list var,
1505 .uci-change-legend-label var {
1506 text-decoration: none;
1507 border: 1px solid #CCCCCC;
1508 background-color: #EEEEEE;
1514 .uci-change-list var ins,
1515 .uci-change-list var del {
1516 /*display: inline;*/
1523 .uci-change-legend {
1527 .uci-change-legend-label {
1533 .uci-change-legend-label>ins,
1534 .uci-change-legend-label>del,
1535 .uci-change-legend-label>var {
1543 .uci-change-legend-label var ins,
1544 .uci-change-legend-label var del {
1551 @media screen and (max-width: 992px) {
1553 -webkit-text-size-adjust: 100%;
1562 flex-direction: column;
1568 flex-direction: row;
1570 align-items: flex-end;
1575 align-self: flex-start;
1577 text-overflow: ellipsis;
1578 word-wrap: break-word;
1579 display: inline-block;
1586 .td[data-type="button"],
1587 .td[data-type="fvalue"] {
1592 .td.cbi-value-field {
1593 align-self: flex-start;
1596 .td.cbi-value-field .cbi-button {
1600 .table.cbi-section-table {
1607 .cbi-section-table-titles,
1608 .cbi-section-table-descr {
1612 .table.cbi-section-table .tr > *,
1613 .table.cbi-section-table .tr[data-title]::before {
1617 .cbi-section-table-row {
1619 flex-direction: row;
1621 border: 1px dotted #444;
1626 .cbi-section-table-row:hover {
1627 border: 1px solid #4a6b7c;
1630 .table.cbi-section-table .tr:hover > *,
1631 .table.cbi-section-table .tr:nth-child(2n):hover > * {
1635 .cbi-section-table + .cbi-section-create {
1639 .tr[data-title]::before {
1645 .td[data-title]::before {
1649 .td.cbi-section-actions {
1651 margin: auto 0 0 auto;
1654 .td.cbi-section-actions > *,
1655 .td.cbi-section-actions > form > * {
1666 @media screen and (max-width: 480px) {
1671 input, textarea, select {
1672 font-size: 12pt !important;
1676 select, input[type="text"], input[type="password"] {
1681 [data-dynlist] > input,
1682 input.cbi-input-password {
1683 width: calc(100% - 20px);
1691 font-size: 9pt !important;
1700 margin: -.25em -.25em 1em -.25em;
1707 .td.cbi-value-field {
1711 .td.cbi-value-field[data-type="dvalue"] {
1715 .td.cbi-value-field[data-type="button"],
1716 .td.cbi-value-field[data-type="fvalue"] {
1739 .cbi-value-description {
1744 .cbi-section-create {
1756 .cbi-page-actions > .cbi-button-link {
1762 .cbi-page-actions > * {
1774 margin: 0 1px -1px 0;
1781 #cbi-network .td[id] > strong {
1785 #cbi-network-switch_vlan .td.cbi-section-actions {
1789 .network-status-table .ifacebox {