18 background-color: #4a6b7c;
19 background-position: bottom center;
20 background-repeat: repeat-x;
21 font-family: Arial, Verdana, sans-serif;
23 padding-bottom: 1.5em;
29 box-sizing: border-box;
32 .table { display: table; width: 100%; position: relative; border-collapse: collapse; }
33 .tr { display: table-row; }
34 .thead { display: table-header-group; }
35 .tbody { display: table-row-group; }
36 .tfoot { display: table-footer-group; }
37 .td, .th { display: table-cell; vertical-align: middle; }
38 .th { font-weight: bold; }
40 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
41 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
43 .col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; }
44 .col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; }
45 .col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; }
46 .col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; }
47 .col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; }
48 .col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; }
49 .col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; }
50 .col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; }
51 .col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; }
52 .col-10 { flex: 10 10 300px !important; -webkit-flex: 10 10 300px !important; }
58 .tr.placeholder > .td {
73 text-decoration: none;
87 border: 1px solid #444;
88 border-width: 0 0 1px 1px;
104 #mainmenu ul li > a {
108 text-decoration: none;
111 #mainmenu ul li.selected > a {
114 border: 1px dotted #444;
118 #mainmenu ul li.selected:first-child > a {
122 #mainmenu ul li li > a {
127 #mainmenu ul li > ul {
131 transition: max-height .15s;
134 #mainmenu ul:not(.active) li.selected > ul,
135 #mainmenu ul li.active > ul {
138 transition: max-height .25s;
141 #mainmenu ul li.mainmenu-item-logout {
147 margin: -.5em -.5em .5em -.5em;
155 background: repeating-linear-gradient(#f5f5f5, #bbb 2.4em, #f5f5f5 2.4em, #bbb);
163 #tabmenu ul li.cbi-tab {
170 font-variant: normal;
175 border-bottom: 1px dotted;
180 a:visited abbr[title],
181 a:link acronym[title],
182 a:visited acronym[title] {
187 font-family: monospace;
194 border: 1px solid #444;
195 border-width: 0 0 1px 0;
208 background: rgba(0, 0, 0, 0.7);
211 -webkit-overflow-scrolling: touch;
212 transition: opacity .125s ease-in;
219 margin: 5em auto !important;
227 border: 1px solid #000;
228 padding: .5em .5em .25em .5em !important;
242 white-space: pre-wrap;
246 body.modal-overlay-active {
250 body.modal-overlay-active #modal_overlay {
259 background-color: white;
281 background-color: white;
288 border: 1px solid #a22;
296 text-transform: uppercase;
298 background-color: #aaa;
302 .alert-message, .cbi-tooltip.error, .label.error {
308 .alert-message.notice, .cbi-tooltip.notice, .label.notice {
314 .alert-message.warning, .cbi-tooltip.warning, .label.warning {
328 .lang_he div.hostinfo {
336 #xhr_poll_status #xhr_poll_status_off {
341 #xhr_poll_status #xhr_poll_status_on {
355 background-color: #557788;
358 html #menubar a:link,
359 html #menubar a:visited {
365 text-decoration: none;
369 html #menubar a:link:hover,
370 html #menubar a:visited:hover,
371 html #menubar a:link:active,
372 html #menubar a:visited:active,
373 #menubar a:link:focus,
374 #menubar a:visited:focus {
380 html #menubar a:link.active,
381 html #menubar a:visited.active,
382 html #menubar a:link.preactive,
383 html #menubar a:visited.preactive {
389 html #menubar a:link.warning,
390 html #menubar a:visited.warning {
419 .lang_de #submenu_admin_uci {
423 .lang_ru #submenu_admin_uci {
430 border: 3px solid #cccccc;
432 font-family: monospace;
446 border-width: 0 1px 1px 1px;
448 border-color: #444444;
451 #applyreboot-section {
456 .lang_he #maincontent {
460 h2, h3, h4, h5, legend {
462 font-family: Trebuchet MS, Verdana, sans-serif;
464 margin: .25em 0 .5em 0;
465 border-bottom: 1px solid;
483 fieldset { border: none; }
484 fieldset > legend { float: left; }
485 fieldset > legend + * { clear: both; }
496 .cbi-section > legend {
501 margin-bottom: 0.5em;
505 .cbi-section-descr:empty {
513 .cbi-title-ref::after {
521 input:-webkit-input-placeholder {
525 input:-moz-placeholder {
529 input:-ms-input-placeholder {
546 border-color: #000000;
554 input:not(.btn):not(.cbi-button):hover,
557 background-color: #ffffff;
562 input[type=password] {
568 input[type=password],
572 font-family: inherit;
581 input[type=checkbox],
582 [data-dynlist] > input + img,
583 input.cbi-input-password + img {
584 vertical-align: middle;
587 label > input[type="checkbox"],
588 label > input[type="radio"] {
589 vertical-align: bottom;
595 .td input[type=text],
596 .cbi-dynlist > .add-item > .cbi-dropdown {
600 .td input.cbi-input-password {
601 width: calc(100% - 20px);
604 img.cbi-image-button {
607 vertical-align: middle;
610 .btn, .cbi-button, .item::after {
613 border: 1px solid #aaa;
614 text-decoration: none;
616 display: inline-block;
618 -webkit-appearance: none;
625 box-sizing: border-box;
629 .btn:hover, .cbi-button:hover, .item:hover::after {
630 box-shadow: 0 0 3px #37c;
634 .btn[disabled]:hover,
635 .cbi-button[disabled],
636 .cbi-button[disabled]:hover {
639 pointer-events: none;
642 .cbi-button-positive,
643 .cbi-button-fieldadd,
652 .cbi-button-download,
669 .cbi-button-negative,
670 .cbi-section-remove .cbi-button,
676 .cbi-button-action.important,
677 .cbi-page-actions .cbi-button-apply,
678 .cbi-section-actions .cbi-button-edit {
683 .cbi-button-positive.important,
684 .cbi-page-actions .cbi-button-save {
689 .cbi-button-negative.important {
694 .cbi-page-actions .cbi-button-apply + .cbi-button-save {
699 .cbi-input-invalid:not([open]) {
700 color: #FF0000 !important;
701 border-color: #FF0000;
708 .table .td, .table .th {
716 border-top: 1px solid #666666;
717 border-right: 1px solid #666666;
718 border-bottom: 1px solid #666666;
723 border-collapse: collapse;
726 .table.smalltext .tr:hover .td {
727 background-color: #bbddee;
731 .table.smalltext .tr .th {
733 border-left: 1px solid #666666;
737 .table.smalltext .tr .td {
739 border-top: 1px solid #666666;
740 border-left: 1px solid #666666;
744 background-color: #eeeeff;
754 vertical-align: middle;
755 padding: 0.25em 0.6em;
756 border-bottom: 1px dotted #bbbbbb;
776 .td.cbi-value-field {
780 vertical-align: middle;
783 .cbi-value-description {
784 background-image: url(/luci-static/resources/cbi/help.gif);
785 background-position: .25em .25em;
786 background-repeat: no-repeat;
788 padding: .25em .25em .25em 1.75em;
791 .cbi-section-create {
792 padding: 0 0 .25em 0;
794 display: inline-flex;
798 .cbi-section-create > * {
803 .cbi-section-create > * > input {
807 .cbi-section-remove > .cbi-button {
809 border-radius: 3px 3px 0 0;
812 .cbi-section-node + .cbi-section-create {
822 border-bottom: 1px dotted #bbbbbb;
829 border: 1px dotted #555;
834 .cbi-section-node-tabbed {
839 .cbi-section-node .cbi-value:last-child,
840 .cbi-section-node .cbi-optionals:last-child {
844 .table.cbi-section-table {
847 border: 1px dotted #444;
852 .cbi-section-node > .table.cbi-section-table {
857 .tr.cbi-section-table-descr .th {
863 .td.cbi-section-table-optionals {
864 text-align: left !important;
868 .th.cbi-section-actions,
869 .td.cbi-section-actions {
871 vertical-align: middle;
874 .th.cbi-section-actions > *,
875 .td.cbi-section-actions > * {
877 justify-content: flex-end;
880 margin: auto -1px auto auto;
883 .td.cbi-section-actions > * > *,
884 .td.cbi-section-actions > * > form > * {
889 .td.cbi-section-actions > * > form {
896 justify-content: flex-end;
900 .cbi-page-actions > form {
904 .cbi-page-actions > * {
909 .cbi-page-actions > form > * {
914 .cbi-page-actions > .cbi-button-save,
915 .cbi-page-actions > .cbi-button-apply,
916 .cbi-page-actions > form[method="post"] {
921 .cbi-page-actions > .cbi-button-save,
922 .cbi-page-actions > .cbi-button-apply,
923 .cbi-page-actions > form[method="post"] {
927 .cbi-page-actions > .cbi-button-apply + .cbi-button-save,
928 .cbi-page-actions > .cbi-button-save + form[method="post"],
929 .cbi-page-actions > form[method="post"] + form[method="post"] {
933 .th[data-type="button"], .td[data-type="button"],
934 .th[data-type="fvalue"], .td[data-type="fvalue"] {
939 #cbi-network-switch_vlan .th,
940 #cbi-network-switch_vlan .td {
944 .td[data-title]::before {
945 content: attr(data-title) ":\20";
953 .td[data-description]::after {
954 content: attr(data-description);
958 background: url(/luci-static/resources/cbi/help.gif) left top no-repeat;
959 padding: .125em 0 .125em 18px;
963 .tr.placeholder .td[data-title]::before,
964 .tr.placeholder .td[data-description]::after {
968 .tr[data-title]::before,
969 .tr.cbi-section-table-titles.named::before {
970 content: attr(data-title) "\20";
978 word-wrap: break-word;
979 vertical-align: middle;
982 .cbi-value-helpicon img {
983 vertical-align: bottom;
986 .td.cbi-value-error {
990 .cbi-value-error input,
991 .cbi-value-error select {
993 background-color: #ffcccc;
998 background-color: white;
1000 border: 1px dotted red;
1005 .cbi-value-field var {
1010 list-style-type: none;
1012 margin: 0 0 .5em 0 !important;
1014 border-bottom: 1px solid #bbb;
1018 display: inline-flex;
1019 margin: 0 5px -1px 0;
1021 border: 1px solid #bbb;
1022 border-bottom: none;
1023 border-radius: 3px 3px 0 0;
1024 background: linear-gradient(#ddd 90%, #aaa 100%);
1027 text-overflow: ellipsis;
1028 word-wrap: break-word;
1031 ul.cbi-tabmenu li a,
1032 ul.cbi-tabmenu li a:hover {
1033 text-decoration: none;
1042 ul.cbi-tabmenu li.cbi-tab {
1044 background: #f5f5f5;
1047 ul.cbi-tabmenu li.cbi-tab-disabled[data-errors]::after {
1048 content: attr(data-errors);
1049 background: #c43c35;
1055 margin: 4px 5px 4px 0;
1061 .cbi-section ul.cbi-tabmenu li.cbi-tab {
1066 background-image: url(/luci-static/resources/cbi/help.gif);
1067 background-position: .25em 50%;
1068 background-repeat: no-repeat;
1069 border-bottom: 1px solid #ccc;
1070 margin: 0 .25em .25em .25em;
1071 padding: .5em .5em .5em 2em;
1080 [data-tab-active="true"] {
1084 transition: opacity .25s ease-in;
1089 border: 1px inset #000;
1090 display: inline-flex;
1100 .cbi-dropdown:hover {
1104 .cbi-dropdown:focus,
1105 .cbi-dynlist > .item:focus {
1106 outline: 2px solid #4b6e9b;
1109 .cbi-dropdown > ul {
1110 margin: 0 !important;
1119 .cbi-dropdown > ul.preview {
1123 .cbi-dropdown > .open {
1124 border: 2px outset #eee;
1128 .cbi-dropdown > .open,
1129 .cbi-dropdown > .more {
1133 flex-direction: column;
1134 justify-content: center;
1139 .cbi-dropdown > .more,
1140 .cbi-dropdown > ul > li[placeholder] {
1143 text-shadow: 1px 1px 0px #fff;
1148 .cbi-dropdown > ul > li {
1151 white-space: nowrap;
1153 text-overflow: ellipsis;
1156 align-items: center;
1161 .cbi-dropdown > ul > li .hide-open { display: initial; }
1162 .cbi-dropdown > ul > li .hide-close { display: none; }
1164 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1165 border-left: 1px solid #ccc;
1168 .cbi-dropdown[empty] > ul {
1172 .cbi-dropdown > ul > li > form {
1176 pointer-events: none;
1179 .cbi-dropdown > ul > li img {
1180 vertical-align: middle;
1181 margin-right: .25em;
1184 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1188 .cbi-dropdown[open] {
1192 .cbi-dropdown[open] > ul.dropdown {
1194 background: #f6f6f5;
1195 border: 1px solid #918e8c;
1196 box-shadow: 0 0 4px #918e8c;
1202 transition: max-height .125s ease-in;
1205 .cbi-dropdown > ul > li[display],
1206 .cbi-dropdown[open] > ul.preview,
1207 .cbi-dropdown[open] > ul.dropdown > li,
1208 .cbi-dropdown[multiple] > ul > li > label,
1209 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1210 .cbi-dropdown[multiple][more] > .more,
1211 .cbi-dropdown[multiple][empty] > .more {
1214 align-items: center;
1217 .cbi-dropdown[empty] > ul > li,
1218 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1222 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
1223 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: initial; }
1225 .cbi-dropdown[open] > ul.dropdown > li {
1226 border-bottom: 1px solid #ccc;
1229 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1230 background: #b0d0f0;
1233 .cbi-dropdown[open] > ul.dropdown > li.focus {
1234 background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
1237 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1239 border-bottom: none;
1242 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1246 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1250 .cbi-dropdown[disabled] {
1251 pointer-events: none;
1261 display: inline-flex;
1262 flex-direction: column;
1265 .cbi-dynlist > .item {
1268 padding: 2px 2em 2px 4px;
1269 border: 1px outset #000;
1272 pointer-events: none;
1274 text-overflow: ellipsis;
1275 white-space: nowrap;
1278 .cbi-dynlist > .item::after {
1281 display: inline-flex;
1282 align-items: center;
1287 border: 1px outset #000;
1289 border-radius: 0 3px 3px 0;
1292 pointer-events: auto;
1296 .cbi-dynlist > .add-item {
1300 .cbi-dynlist > .add-item > input {
1304 input[type="text"] + .cbi-button,
1305 input[type="password"] + .cbi-button,
1306 select + .cbi-button {
1307 border-radius: 0 3px 3px 0;
1308 border: 1px outset #000;
1311 vertical-align: top;
1312 display: inline-block;
1318 .cbi-tooltip-container {
1331 transition: opacity .25s ease-out;
1332 pointer-events: none;
1333 box-shadow: 0 0 2px #444;
1337 .cbi-tooltip-container:hover .cbi-tooltip {
1340 transition: opacity .25s ease-in;
1341 white-space: normal;
1346 border: 1px solid #bbb;
1355 .cbi-progressbar > div {
1356 background: #90c0e0;
1358 transition: width .25s ease-in;
1362 .cbi-progressbar::after {
1369 text-shadow: 0 0 2px #fff;
1370 content: attr(title);
1373 text-overflow: ellipsis;
1377 .zonebadge .cbi-tooltip {
1379 background: inherit;
1380 margin: -1.6em 0 0 -5px;
1389 .zone-forwards > * {
1394 .zone-forwards > span {
1399 .zone-forwards .zone-src,
1400 .zone-forwards .zone-dest {
1402 flex-direction: column;
1406 .left, .left::before, .left::after { text-align: left !important; }
1407 .right, .right::before, .right::after { text-align: right !important; }
1408 .center, .center::before, .center::after { text-align: center !important; }
1410 .top, .top::before, .top::after { vertical-align: top !important; }
1411 .middle, .middle::before, .middle::after { vertical-align: middle !important; }
1412 .bottom, .bottom::before, .bottom::after { vertical-align: bottom !important; }
1414 .td.top { align-self: flex-start; vertical-align: top; }
1415 .td.middle { align-self: center; vertical-align: middle; }
1416 .td.bottom { align-self: flex-end; vertical-align: bottom; }
1429 background-color: transparent;
1431 text-decoration: none;
1440 white-space: normal;
1441 border: 1px dotted #ff0000;
1442 background-color: #ffffff;
1448 .ifacebadge, .ifacebox {
1449 display: inline-flex;
1450 align-content: center;
1451 border: 1px solid #ccc;
1461 .ifacebox-head.active {
1462 background: #90c0e0;
1465 .ifacebadge, .zonebadge {
1466 align-items: center;
1476 display: inline-block;
1480 .ifacebadge-active {
1481 border-color: #000000;
1486 flex-direction: column;
1500 vertical-align: top;
1503 .network-status-table {
1506 margin: -.25em -.25em .25em -.25em;
1509 .network-status-table .ifacebox {
1515 .network-status-table .ifacebox-body {
1517 flex-direction: column;
1522 .network-status-table .ifacebox-body > span {
1526 .network-status-table .ifacebox-body > div {
1532 .network-status-table .ifacebox-body .ifacebadge {
1534 -webkit-flex: 1 1 auto;
1537 white-space: nowrap;
1540 .network-status-table .ifacebox-body .ifacebadge {
1544 #dsl_status_table .ifacebox-body span > strong {
1545 display: inline-block;
1552 display: inline-block;
1553 white-space: nowrap;
1558 .zonebadge > strong {
1567 .zonebadge .ifacebadge,
1568 .cbi-dropdown .ifacebadge {
1572 .zonebadge .ifacebadge img,
1573 .zonebadge .ifacebadge em,
1574 .cbi-dropdown .ifacebadge img,
1575 .cbi-dropdown .ifacebadge em {
1580 border: 1px dashed #AAAAAA;
1588 font-family: monospace;
1592 .uci-change-list del,
1593 .uci-change-list ins,
1594 .uci-change-list var,
1595 .uci-change-legend-label del,
1596 .uci-change-legend-label ins,
1597 .uci-change-legend-label var {
1598 text-decoration: none;
1600 border: 1px solid #ccc;
1608 .uci-change-list ins,
1609 .uci-change-legend-label ins {
1614 .uci-change-list del,
1615 .uci-change-legend-label del {
1620 .uci-change-list var,
1621 .uci-change-legend-label var {
1626 .uci-change-list var ins,
1627 .uci-change-list var del {
1628 display: inline-block;
1634 .uci-change-legend {
1638 .uci-change-legend-label {
1644 .uci-change-legend-label>ins,
1645 .uci-change-legend-label>del,
1646 .uci-change-legend-label>var {
1655 .uci-change-legend-label var ins,
1656 .uci-change-legend-label var del {
1668 50% { opacity: .5; }
1669 100% { opacity: 1; }
1673 animation: flash .35s;
1678 padding-left: 32px !important;
1688 background: url(../resources/icons/loading.gif) no-repeat center;
1689 background-size: 16px;
1694 @media screen and (max-width: 992px) {
1696 -webkit-text-size-adjust: 100%;
1700 flex-direction: column;
1715 box-shadow: 0 0 2px #444;
1717 border-top: 1px solid #444;
1721 #mainmenu ul > li.selected > a {
1727 #mainmenu ul > li.selected:not(.active) > ul {
1732 #mainmenu ul > li > a {
1735 border: 1px solid #444;
1736 border-width: 0 0 1px 1px;
1741 flex-direction: row;
1748 #mainmenu ul.l1 > li {
1749 display: inline-flex;
1755 #mainmenu ul.l1 ul.l2 {
1761 box-shadow: 0 0 2px #444;
1766 #mainmenu ul.l1 ul.l2.align-left {
1771 #mainmenu ul.l2 > li {
1775 #mainmenu ul.l2 > li > a {
1779 #mainmenu ul li.mainmenu-item-logout {
1784 #mainmenu ul li.mainmenu-item-logout::before {
1787 border: 1px solid #444;
1788 border-width: 0 0 1px 1px;
1793 flex-direction: column;
1799 flex-direction: row;
1801 align-items: flex-end;
1806 align-self: flex-start;
1808 text-overflow: ellipsis;
1809 word-wrap: break-word;
1810 display: inline-block;
1813 .td.cbi-dropdown-open {
1821 .td[data-type="button"],
1822 .td[data-type="fvalue"] {
1827 .td.cbi-value-field {
1828 align-self: flex-start;
1831 .td.cbi-value-field .cbi-button {
1835 .table.cbi-section-table {
1842 .cbi-section-table-titles,
1843 .cbi-section-table-descr {
1847 .cbi-section-table-row {
1849 flex-direction: row;
1851 border: 1px dotted #444;
1856 .cbi-section-table-row:hover {
1857 border: 1px solid #4a6b7c;
1860 .cbi-section-table + .cbi-section-create {
1864 .tr[data-title]::before {
1870 .td[data-title]::before,
1871 .td[data-description]::after {
1875 .td[data-title] ~ .td.cbi-section-actions {
1876 align-self: flex-start;
1879 .td[data-title] ~ .td.cbi-section-actions::before {
1889 #dsl_status_table .ifacebox-body > span > strong {
1894 @media screen and (max-width: 480px) {
1899 input, textarea, select, .cbi-button, .cbi-dropdown {
1900 font-size: 16px !important;
1904 select, input[type="text"], input[type="password"] {
1910 input[type="text"] + .cbi-button,
1911 input[type="password"] + .cbi-button,
1912 select + .cbi-button {
1919 input.cbi-input-password,
1920 [data-dynlist] > .add-item > input {
1921 width: calc(100% - 25px);
1935 .cbi-dropdown > .more,
1936 .cbi-dropdown > ul > li,
1937 .cbi-dropdown > ul > li[placeholder] {
1942 font-size: 16px !important;
1946 text-overflow: ellipsis;
1954 margin: -.25em -.25em 1em -.25em;
1961 .td.cbi-value-field {
1965 .td.cbi-value-field[data-type="dvalue"] {
1969 .td.cbi-value-field[data-type="button"],
1970 .td.cbi-value-field[data-type="fvalue"] {
1985 .cbi-value-description {
1990 .cbi-section-create {
1999 .cbi-page-actions > .cbi-button-link {
2004 .cbi-page-actions > * {
2017 #cbi-network .td[id] > strong {
2021 #cbi-network-switch_vlan .td.cbi-section-actions {
2025 #dsl_status_table .ifacebox-body > span > strong {
2031 #cbi-firewall-rule .td[data-type="fvalue"],
2032 #cbi-firewall-redirect .td[data-type="fvalue"] {