2 * Rosy is a theme for LuCI. It is based on luci-theme-bootstrap
5 * Copyright 2018 Rosy Song <rosysong@rosinson.com>
6 * Copyright 2018 Yan Lan Shen <yanlan.shen@rosinson.com>
8 * Have a bug? Please create an issue here on GitHub!
9 * https://github.com/rosywrt/luci-theme-rosy/issues
11 * luci-theme-bootstrap:
12 * Copyright 2008 Steven Barth <steven@midlink.org>
13 * Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
14 * Copyright 2012 David Menting <david@nut-bolt.nl>
16 * Licensed to the public under the Apache License 2.0
20 * Font generate by Icomoon<icomoon.io>
23 font-family: "icomoon";
26 src: url
("fonts/font.eot");
27 src: url
("fonts/font.eot") format
("embedded-opentype"), url
("fonts/font.ttf") format
("truetype"),
28 url
("fonts/font.woff") format
("woff"), url
("fonts/font.svg") format
("svg");
31 /* Table correlation 表格 */
42 display: table-header-group
;
46 display: table-row-group
;
50 display: table-footer-group
;
58 word-break: break-all
;
59 word-wrap: break-word
;
61 vertical-align: middle
;
76 .tr.placeholder > .td {
82 text-align: center
!important
;
104 flex: 1 1 30px !important
;
108 flex: 2 2 60px !important
;
112 flex: 3 3 90px !important
;
116 flex: 4 4 120px !important
;
120 flex: 5 5 150px !important
;
124 flex: 6 6 180px !important
;
128 flex: 7 7 210px !important
;
132 flex: 8 8 240px !important
;
136 flex: 9 9 270px !important
;
140 flex: 10 10 300px !important
;
157 font-family: inherit
;
159 line-height: 1.1 !important
;
175 padding: .36rem .8rem;
177 border: thin solid
#ccc;
178 background-color: #fff;
179 background-image: none
;
188 font-size-adjust: .35;
191 border: thin solid
#999;
198 text-decoration: underline
;
225 [disabled
="disabled"] {
226 pointer-events: none
;
234 background-color: #f794b0 !important
;
238 background-color: #f0e68c !important
;
242 background-color: #f24c7c !important
;
246 background-color: #468ea4 !important
;
258 list-style-type: none
;
263 padding-bottom: 10px;
264 border-bottom: thin solid
#eee;
270 padding-bottom: 10px;
277 padding-bottom: 10px;
283 padding-bottom: 10px;
289 padding-bottom: 10px;
294 #cbi-network > .cbi-section-node
,
295 #cbi-wireless > .cbi-section-node
,
296 #cbi-wireless > #wifi_assoclist_table
,
297 [data-page^
="admin-system-admin"]:not
(.login
) .cbi-map:not
(#cbi-dropbear
),
298 [data-page
="admin-system-opkg"] #maincontent
> .container
{
299 font-family: inherit
;
307 background-color: #fff;
314 .cbi-map-descr + fieldset {
319 .cbi-section > legend {
320 display: none
!important
;
324 .cbi-section > .cbi-section {
331 .cbi-section
> h3:first-child
,
338 margin-bottom: .5rem;
347 font-family: "icomoon" !important
;
350 font-variant: normal
;
352 text-transform: none
;
353 -webkit-font-smoothing: antialiased
;
358 box-sizing: border-box
;
370 color: rgba
(0, 0, 0, .87);
372 border-bottom: 2px solid rgba
(0, 0, 0, .26);
375 background-color: transparent
;
376 background-image: none
;
378 vertical-align: bottom
;
386 select:not
([multiple
="multiple"]):focus
,
387 input:not
(.cbi-button
):focus
,
389 .cbi-dynlist > .item:focus {
393 select
[multiple
="multiple"] {
409 text-decoration: none
;
413 /* Main interface 主界面 */
421 pointer-events: none
;
422 background-color: #354057;
426 font-family: monospace
;
428 font-size-adjust: .35;
436 .loading > span > .loading-img {
437 font-family: "icomoon" !important
;
439 display: inline-block
;
441 animation: anim-rotate
2s infinite linear
;
442 vertical-align: middle
;
445 @keyframes anim-rotate
{
447 -webkit-transform: rotate
(0);
448 -ms-transform: rotate
(0);
449 transform: rotate
(0);
453 -webkit-transform: rotate
(360deg);
454 -ms-transform: rotate
(360deg);
455 transform: rotate
(360deg);
459 .Processes #maincontent > .container {
463 /* Main interface left 左主界面 */
471 background-color: #7f8ba5;
476 .main-left .nav-container {
481 background-color: #354057;
486 .main-left .nav-container .navbar-container {
492 height: calc
(100% - 92px);
495 .main-left .nav-container .brand {
497 text-decoration: none
;
501 padding: 36px 0 24px;
502 border-bottom: 1px solid
#fff;
510 .main-left .nav > li {
515 .main-left .nav > li a {
520 .main-left .nav > .slide {
524 .main-left .nav > .slide > ul {
528 .main-left .nav > .slide > .menu {
532 text-decoration: none
;
535 border-radius: 0 25px 25px 0;
538 .main-left .nav > .slide > .menu.active {
542 .main-left
.nav
> li:hover
,
543 .main-left
.nav
> .slide
> .menu:hover
,
544 .main-left .nav > .slide > .slide-menu > li:hover {
548 .main-left .nav > .slide:hover {
552 .main-left .nav > .slide > .slide-menu > li {
556 border-radius: 0 25px 25px 0;
559 .main-left .nav > .slide > .slide-menu > .active {
560 background-color: #f24c7c !important
;
562 border-radius: 0 25px 25px 0;
565 .main-left .nav > .slide > .slide-menu > li > a {
567 text-decoration: none
;
570 .main-left .nav > .slide > .slide-menu > .active > a {
574 .main-left .nav > .slide > .slide-menu > .active:hover {
578 /* Main interface right 右主界面 */
579 .main-right
.container
.alert
,
580 .main-right .container .alert-message {
584 .main-right .container .alert-message {
588 background-color: #fff !important
;
591 .main-right .container .alert-message h4 {
593 background: url
(./no-pwd
.png
) no-repeat left
1px / 28px;
594 padding: 7px 0 0 32px;
597 .main-right .container .alert-message .btn {
600 background-color: #468ea4;
608 border-collapse: collapse
;
615 border: 1px solid
#ddd;
619 table
> tbody
> tr
> td
,
620 table
> tbody
> tr
> th
,
621 table
> tfoot
> tr
> td
,
622 table
> tfoot
> tr
> th
,
623 table
> thead
> tr
> td
,
624 table
> thead
> tr
> th
,
625 .table
> .tbody
> .tr
> .td
,
626 .table
> .tbody
> .tr
> .th
,
627 .table
> .tfoot
> .tr
> .td
,
628 .table
> .tfoot
> .tr
> .th
,
629 .table
> .thead
> .tr
> .td
,
630 .table
> .thead
> .tr
> .th
,
631 .table
> .tr
> .td
.cbi-value-field
,
632 .table > .tr > .th.cbi-section-table-cell {
636 .container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td {
640 .cbi-section-table-cell {
642 align-self: flex-end
;
650 .cbi-section-table-row::before
,
651 #cbi-wireless > #wifi_assoclist_table
> .tr:nth-child
(2) {
652 border-top: thin solid
#ddd;
655 tr:first-child
> td
.tr:first-child
> .td
,
657 #cbi-network .tr:first-child
> .td
,
658 .table
[width
="100%"] > .tr:first-child
> .td
,
659 [data-page
="admin-network-diagnostics"] .tr
> .td
,
660 .tr
.table-titles
> .th
,
661 .tr.cbi-section-table-titles > .th {
662 border-top: 0 !important
;
665 .cbi-section-table-row {
667 text-align: center
!important
;
671 .cbi-section-table-row:last-child {
675 .cbi-section-table-row
> .cbi-value-field
.cbi-input-select
,
676 .cbi-section-table-row
> .cbi-value-field
.cbi-input-text
,
677 .cbi-section-table-row
> .cbi-value-field
.cbi-input-password
,
678 .cbi-section-table-row > .cbi-value-field .cbi-dropdown {
682 .cbi-section-table-row
> .cbi-value-field
[data-dynlist
] > input
,
683 .cbi-section-table-row > .cbi-value-field input.cbi-input-password {
684 width: calc
(100% - 1.5rem);
687 .cbi-section-table-row .td {
688 text-align: center
!important
;
691 div
> table
> tbody
> tr:nth-of-type
(2n),
692 div
> .table
> .tr:nth-of-type
(2n) {
693 background-color: #f9f9f9;
696 /* fix multiple table */
702 .cbi-value-field table
,
703 .cbi-value-field .table {
707 td
> table
> tbody
> tr
> td
,
708 .td > .table > .tbody > .tr > .td {
712 .cbi-value-field
> table
> tbody
> tr
> td
,
713 .cbi-value-field > .table > .tbody > .tr > .td {
722 display: inline-block
;
723 width: auto
!important
;
726 -webkit-user-select: none
;
727 -moz-user-select: none
;
728 -ms-user-select: none
;
730 transition: all
.2s ease-in-out
;
732 vertical-align: middle
;
734 text-decoration: none
;
735 color: rgba
(0, 0, 0, .87);
738 background-color: #f0f0f0;
739 background-image: none
;
740 -webkit-appearance: none
;
741 -ms-touch-action: manipulation
;
742 touch-action: manipulation
;
745 .cbi-button:not(select) {
746 -webkit-appearance: none
!important
;
749 form
[method
="post"] + form
[method
="post"],
750 .cbi-button + .cbi-button {
763 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save:hover
,
764 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save:focus
,
765 .cbi-page-actions .cbi-button-apply + .cbi-button-save:active {
766 text-decoration: none
;
771 .cbi-button:disabled {
773 pointer-events: none
;
779 .modal div
[class
="btn"],
785 .cbi-button
[name
="zero"],
786 .cbi-button
[name
="restart"],
787 .cbi-button[onclick="hide_empty(this)"] {
793 .cbi-page-actions
.cbi-button-save
,
794 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save
,
797 .cbi-button-positive
,
799 .cbi-button
[value
="Enable"],
800 .cbi-button
[value
="Scan"],
801 .cbi-button
[value^
="Back"],
802 .cbi-button-neutral[onclick="handleConfig(event)"] {
805 border: thin solid
#2e6da4;
806 background-color: transparent
;
810 .cbi-page-actions
.cbi-button-apply
,
811 .cbi-section-actions
.cbi-button-edit
,
816 .cbi-button
[value
="Submit"],
817 .cbi-button
[value$
="Apply"],
818 .cbi-button[onclick="addKey(event)"] {
821 border: 1px solid
#468ea4;
822 background-color: #468ea4;
827 .cbi-section-remove
> .cbi-button
,
830 .cbi-button-negative
,
831 .cbi-button
[value
="Stop"],
832 .cbi-button
[value
="Kill"],
833 .cbi-button
[onclick
="reboot(this)"],
834 .cbi-button-neutral[value="Restart"] {
838 background-color: transparent
;
839 border: 1px solid
#f24b7c;
843 .btn
[value
="Dismiss"],
844 .cbi-button
[value
="Terminate"],
845 .cbi-button
[value
="Reset"],
846 .cbi-button
[value
="Disabled"],
847 .cbi-button
[onclick^
="iface_reconnect"],
848 .cbi-button
[onclick
="handleReset(event)"],
849 .cbi-button-neutral[value="Disable"] {
852 border: 1px solid
#9a4569;
853 background-color: transparent
;
858 .cbi-button-download
,
859 .cbi-button
[name
="backup"],
860 .cbi-button
[value
="Upload"],
861 .cbi-button[value="Save mtdblock"] {
864 border: thin solid
#468ea4;
865 background-color: transparent
;
868 .cbi-page-actions .cbi-button-link:first-child {
873 text-decoration: none
;
876 .cbi-value-field .cbi-button-add {
880 .cbi-value-field .cbi-button-neutral {
884 /* tabs & menu 选项卡 & 菜单栏 */
887 background-color: #fff;
895 display: inline-block
;
902 text-decoration: none
;
908 background-color: #cccccc82;
915 transform: translateX
(-50%);
918 .tabs > li:hover::after {
919 transition: width
.35s;
920 width: calc
(100% + 4px);
923 .tabs > li.active::after {
924 width: calc
(100% + 4px);
925 background-color: #468ea473;
929 display: inline-block
;
933 .cbi-tabmenu > li > a {
934 padding: .5rem .8rem;
935 text-decoration: none
;
940 border: thin solid
#d4d4d4;
944 .cbi-tabmenu > li:hover {
945 background-color: #f1f1f1;
946 border-radius: 10px 10px 0 0;
949 .cbi-tabmenu > li[class~="cbi-tab"] {
950 background-color: #fff;
951 border-radius: 10px 10px 0 0;
955 background-color: #d4d4d4;
956 border-radius: 10px 10px 0 0;
960 .cbi-section
.cbi-section-remove:nth-of-type
(2n),
961 .container > .cbi-section .cbi-section-node:nth-of-type(2n) {
962 background-color: #f9f9f9;
966 border-radius: 0 0 10px 10px;
969 .cbi-tabmenu + div.controls {
971 padding: .5em 0 1em 0;
973 border: 1px solid
#d4d4d4;
979 .cbi-tabmenu + div.controls + .table {
980 border-radius: 0 0 25px 25px;
990 [data-tab-active
="true"] {
994 transition: opacity
.25s ease-in
;
997 .cbi-section
[id
] .cbi-section-remove:nth-of-type
(4n + 3),
998 .cbi-section[id] .cbi-section-node:nth-of-type(4n + 4) {
999 background-color: #f9f9f9;
1002 .cbi-section-node-tabbed {
1005 border: thin solid
#d4d4d4;
1009 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
1010 background-color: #f9f9f9;
1014 .cbi-value-description {
1016 display: table-cell
;
1019 .cbi-input-invalid {
1024 .cbi-section-error {
1026 line-height: 1.42857143;
1029 border: 1px solid
#f24b7c;
1031 background-color: #fce6e6;
1034 .cbi-section-error ul {
1038 .cbi-section-error ul li {
1043 .cbi-value-helpicon > img {
1047 .cbi-value-helpicon:before {
1051 .cbi-value-description {
1053 padding: .5rem 0 0 0;
1058 display: table-cell
;
1062 padding-right: 2rem;
1064 word-wrap: break-word
;
1068 display: inline-block
;
1070 padding: .3rem 1rem;
1077 .td[data-title]::before {
1081 content: attr
(data-title
) ":\20";
1083 white-space: nowrap
;
1086 .tr.placeholder .td[data-title]::before {
1090 .tr
[data-title
]::before
,
1091 .tr.cbi-section-table-titles.named::before {
1093 display: table-cell
;
1097 content: attr
(data-title
) "\20";
1099 vertical-align: middle
;
1100 white-space: normal
;
1101 word-wrap: break-word
;
1105 background-color: #f9f9f9;
1109 background-color: #eee;
1112 .cbi-rowstyle-2
.cbi-button-up
,
1113 .cbi-rowstyle-2 .cbi-button-down {
1114 background-color: #fff !important
;
1117 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
1118 width: auto
!important
;
1121 .td.cbi-section-actions {
1122 text-align: right
!important
;
1123 vertical-align: middle
;
1126 .td.cbi-section-actions > * {
1127 display: inline-flex
;
1130 .td
.cbi-section-actions
> * > *,
1131 .td.cbi-section-actions > * > form > * {
1135 .td.cbi-section-actions > * > form {
1136 display: inline-flex
;
1144 line-height: 1.42857143;
1150 flex-direction: column
;
1154 .cbi-dynlist > .item {
1157 margin: 0 2em 4px 0;
1160 pointer-events: none
;
1162 border-bottom: 2px solid rgba
(0, 0, 0, .26);
1165 .cbi-dynlist[name="sshkeys"] > .item {
1169 .cbi-dynlist > .item::after {
1173 display: inline-flex
;
1177 pointer-events: auto
;
1179 border: thin solid
#f24b7c;
1180 background-color: transparent
;
1183 .cbi-dynlist > .item > span {
1184 white-space: normal
;
1185 word-break: break-word
;
1191 display: inline-flex
;
1197 .cbi-dropdown > ul {
1202 margin: 0 !important
;
1207 .cbi-dropdown > ul.preview {
1211 .cbi-dropdown > .open {
1215 .cbi-dropdown
> .open
,
1216 .cbi-dropdown > .more {
1221 flex-direction: column
;
1224 justify-content: center
;
1227 background: #d4d4d4;
1232 .cbi-dropdown
> .more
,
1233 .cbi-dropdown > ul > li[placeholder] {
1237 text-shadow: 1px 1px 0 #fff;
1240 .cbi-dropdown > ul > li {
1243 align-items: center
;
1249 white-space: nowrap
;
1250 text-overflow: ellipsis
;
1253 .cbi-dropdown > ul > li .hide-open {
1257 .cbi-dropdown > ul > li .hide-close {
1261 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1262 border-left: thin solid
#ccc;
1265 .cbi-dropdown[empty] > ul {
1269 .cbi-dropdown > ul > li > form {
1273 pointer-events: none
;
1276 .cbi-dropdown > ul > li img {
1277 margin-right: .25em;
1278 vertical-align: middle
;
1281 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1286 .cbi-dropdown > ul > li input[type="text"] {
1290 .cbi-dropdown[open] {
1294 .cbi-dropdown[open] > ul.dropdown {
1301 max-height: 200px !important
;
1302 border: thin solid
#918e8c;
1303 background: #f6f6f6;
1306 .cbi-dropdown
> ul
> li
[display
],
1307 .cbi-dropdown
[open
] > ul
.preview
,
1308 .cbi-dropdown
[open
] > ul
.dropdown
> li
,
1309 .cbi-dropdown
[multiple
] > ul
> li
> label
,
1310 .cbi-dropdown
[multiple
][open
] > ul
.dropdown
> li
,
1311 .cbi-dropdown
[multiple
][more
] > .more
,
1312 .cbi-dropdown[multiple][empty] > .more {
1314 align-items: center
;
1318 .cbi-dropdown
[empty
] > ul
> li
,
1319 .cbi-dropdown
[optional
][open
] > ul
.dropdown
> li
[placeholder
],
1320 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1324 .cbi-dropdown[open] > ul.dropdown > li .hide-open {
1328 .cbi-dropdown[open] > ul.dropdown > li .hide-close {
1332 .cbi-dropdown[open] > ul.dropdown > li {
1333 border-bottom: thin solid
#ccc;
1336 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1337 background: #b0d0f0;
1340 .cbi-dropdown[open] > ul.dropdown > li.focus {
1341 background: linear-gradient
(90deg, #a3c2e8 0%, #84aad9 100%);
1344 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1349 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1353 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1357 .cbi-dropdown[disabled] {
1358 pointer-events: none
;
1362 .cbi-dropdown .zonebadge {
1366 .cbi-dropdown[open] .zonebadge {
1378 transition: opacity
.125s ease-in
;
1380 background: rgba
(0, 0, 0, .7);
1381 -webkit-overflow-scrolling: touch
;
1386 align-items: center
;
1395 border-radius: 20px !important
;
1400 line-height: normal
;
1407 font-size-adjust: .35;
1409 margin-bottom: .5em;
1411 white-space: pre-wrap
;
1414 background-color: #354057;
1426 list-style-type: square
;
1431 padding-left: .25rem;
1432 word-break: break-word
;
1437 font-weight: normal
;
1438 padding: .1rem .3rem;
1444 .modal .label.warning {
1445 background-color: #f0ad4e !important
;
1449 padding: .3rem .6rem;
1456 body
.modal-overlay-active
{
1461 #modal_overlay .alert-message
.warning
{
1462 background-color: #fff !important
;
1463 margin-bottom: 10px;
1466 body
.modal-overlay-active #modal_overlay
{
1474 padding-left: 32px !important
;
1484 background: url
(../resources/icons/loading.gif) no-repeat center
;
1485 background-size: 16px;
1495 text-align: left
!important
;
1500 text-align: right
!important
;
1505 text-align: center
!important
;
1509 align-self: flex-start
!important
;
1510 vertical-align: top
!important
;
1514 align-self: flex-end
!important
;
1515 vertical-align: bottom
!important
;
1527 .cbi-page-actions > form[method="post"] {
1528 display: inline-block
;
1532 .cbi-value input
[type
="password"],
1533 .cbi-value input[type="text"] {
1538 .cbi-value-field
.cbi-dropdown
,
1539 .cbi-value-field .cbi-input-select {
1543 .cbi-value-field .cbi-input-invalid {
1545 border-bottom-color: #f00;
1554 background: #a9cad4;
1556 border-radius: 20px;
1560 .cbi-progressbar > div {
1563 background: #468ea4;
1564 border-radius: 20px;
1567 .cbi-progressbar::after {
1568 font-family: monospace
;
1570 font-size-adjust: .38;
1571 line-height: normal
;
1577 content: attr
(title
);
1580 transform: translateY
(-50%);
1583 .th
[data-type
="button"],
1584 .td
[data-type
="button"],
1585 .th
[data-type
="fvalue"],
1586 .td[data-type="fvalue"] {
1592 display: inline-flex
;
1593 padding: .5rem .8rem;
1595 border-radius: 20px;
1601 background-color: #d4d4d4;
1602 border-radius: 20px;
1607 display: inline-block
;
1608 align-self: flex-start
;
1612 .ifacebadge > img + img {
1613 margin: 0 .2rem 0 0;
1616 .network-status-table {
1621 .network-status-table .ifacebox {
1624 border-radius: 20px;
1628 .network-status-table .ifacebox-body {
1630 flex-direction: column
;
1632 background: #f5f5f5;
1635 .network-status-table .ifacebox-body > span {
1641 .network-status-table .ifacebox-body > div {
1646 .network-status-table .ifacebox-body .ifacebadge {
1647 align-items: center
;
1650 margin: .5em .25em 0 .25em;
1652 background-color: #fff;
1653 border-radius: 20px;
1657 .cbi-input-textarea {
1658 font-family: monospace
;
1669 margin-bottom: 20px;
1674 border-radius: 20px;
1675 background-color: #fff;
1682 /* config changes */
1684 font-family: monospace
;
1687 .uci-change-list ins
,
1688 .uci-change-legend-label ins {
1691 text-decoration: none
;
1692 border: thin solid
#0f0;
1693 background-color: #cfc;
1696 .uci-change-list del
,
1697 .uci-change-legend-label del {
1701 text-decoration: none
;
1702 border: thin solid
#f00;
1703 background-color: #fcc;
1706 .uci-change-list var
,
1707 .uci-change-legend-label var {
1711 text-decoration: none
;
1712 border: thin solid
#ccc;
1713 background-color: #eee;
1716 .uci-change-list var ins
,
1717 .uci-change-list var del {
1724 .uci-change-legend {
1728 .uci-change-legend-label {
1733 .uci-change-legend-label
> ins
,
1734 .uci-change-legend-label
> del
,
1735 .uci-change-legend-label > var {
1743 .uci-change-legend-label var ins
,
1744 .uci-change-legend-label var del {
1749 .uci-change-list var
,
1750 .uci-change-list del
,
1751 .uci-change-list ins {
1759 border: 1px solid
#d4d4d4 !important
;
1760 border-radius: 20px;
1763 .lang_enTraffic #bwsvg
,
1764 .lang_enWireless #iwsvg {
1765 border: 1px solid
#d4d4d4 !important
;
1766 border-radius: 0 0 20px 20px;
1770 [data-page
="admin-status-realtime-bandwidth"] #bwsvg
{
1771 border-top: 0 !important
;
1776 display: inline-flex
;
1777 flex-direction: column
;
1779 background-color: #f9f9f9;
1780 border-radius: 10px;
1788 border-radius: 10px 10px 0 0;
1795 .ifacebox-head.active {
1796 background: #5bc0de;
1801 border-radius: 0 0 10px 10px;
1809 display: inline-block
;
1810 padding: .2rem .5rem;
1811 border-radius: 20px;
1814 .zonebadge .ifacebadge {
1815 margin: .1rem .2rem;
1816 padding: .2rem .3rem;
1817 border: thin solid
#6c6c6c;
1821 .zonebadge > input[type="text"] {
1824 padding: .16rem 1rem;
1828 .zonebadge > strong {
1829 display: inline-block
;
1833 .cbi-value-field
.cbi-input-checkbox
,
1834 .cbi-value-field .cbi-input-radio {
1838 .cbi-value-field > ul > li {
1842 .cbi-value-field > ul > li > label {
1846 .cbi-value-field > ul > li .ifacebadge {
1849 background-color: #eee;
1852 .cbi-section-table-row > .cbi-value-field .cbi-dropdown {
1856 .cbi-section-create {
1857 display: inline-flex
;
1858 align-items: center
;
1862 .cbi-section-create > * {
1866 .cbi-section-remove {
1871 td
.cbi-value-field var
,
1872 .td.cbi-value-field var {
1879 line-height: 1.42857143;
1880 white-space: normal
;
1886 display: inline-block
;
1888 padding: .2rem .3rem;
1892 padding: 1rem 1rem 0 1rem;
1893 border-top: thin solid
#ccc;
1896 .cbi-dropdown-container {
1900 .cbi-tooltip-container
,
1902 span
[data-tooltip
] .label
{
1903 cursor: help
!important
;
1911 transition: opacity
.25s ease-out
;
1913 pointer-events: none
;
1919 .cbi-tooltip-container:hover .cbi-tooltip {
1921 transition: opacity
.25s ease-in
;
1926 .zonebadge .cbi-tooltip {
1927 margin: -1.5rem 0 0 -.5rem;
1929 background: inherit
;
1934 background: repeating-linear-gradient
(
1936 rgba
(204, 204, 204, .5),
1937 rgba
(204, 204, 204, .5) 5px,
1938 rgba
(255, 255, 255, .5) 5px,
1939 rgba
(255, 255, 255, .5) 10px
1948 .zone-forwards > * {
1952 .zone-forwards > span {
1958 .zone-forwards
.zone-src
,
1959 .zone-forwards .zone-dest {
1961 flex-direction: column
;
1966 padding: .3rem .8rem;
1967 white-space: nowrap
;
1968 text-decoration: none
;
1969 color: #fff !important
;
1970 -moz-border-radius: 3px;
1971 border-radius: 20px;
1972 background-color: #bfbfbf;
1975 label
> input
[type
="checkbox"],
1976 label
> input
[type
="radio"] {
1981 vertical-align: bottom
;
1995 background-color: rgba
(0, 0, 0, .56);
1999 #diag-rc-output > pre
,
2000 #command-rc-output > pre
{
2002 font-size-adjust: .35;
2003 line-height: normal
;
2009 background-color: #101010;
2012 [data-page
="admin-network-diagnostics"] .table
{
2017 input
[name
="traceroute"],
2018 input
[name
="nslookup"] {
2022 /* fix Main Login 登录界面*/
2023 .login .main-right {
2024 background: url
(./loginBG.png) no-repeat center center
/ cover
;
2037 .login > .main .main-left {
2045 text-decoration: none
;
2048 .login > .main .cbi-value-title {
2052 .login > .main #maincontent {
2054 padding-bottom: 20px;
2055 display: inline-block
;
2056 background-color: transparent
;
2062 .login > .main .container {
2064 margin-top: 2rem !important
;
2068 .login .main-right .container .alert-message {
2071 background-color: #4a5368 !important
;
2072 border: 1px solid
#3e4a62;
2073 border-radius: 20px;
2076 .login .alert-message > h4 {
2077 padding: 7px 0 0 32px;
2079 background: url
(./no-pwd
.png
) no-repeat left
0 / 28px;
2080 display: inline-block
;
2083 .login .alert-message > p {
2088 .login .alert-message > * {
2092 .login .main-right .container .alert-message .btn {
2093 border: 1px solid
#fff;
2094 background-color: transparent
;
2096 border-radius: 20px;
2101 .login > .main form h2 {
2108 .login > .main form .cbi-map-descr {
2109 margin-bottom: 17px;
2113 .login > .main form > .cbi-page-actions {
2118 .login > .main form > .cbi-page-actions .cbi-button {
2120 width: 50% !important
;
2125 .login > .main form > .cbi-page-actions .cbi-button-apply {
2126 border-radius: 25px 0 0 25px;
2129 .login > .main form > .cbi-page-actions .cbi-button-reset {
2130 border-radius: 0 25px 25px 0;
2133 .login > .main .cbi-value {
2139 .login > .main .cbi-value > .cbi-value-field {
2144 .login > .main .cbi-value-last .cbi-value-field > div {
2147 display: inline-block
;
2148 background: url
(./op-eye
.png
) no-repeat center center
/ cover
;
2154 .login > .main .cbi-value-last .cbi-value-field.op-eye > div {
2155 background-image: url
(./cl-eye
.png
);
2158 .login > .main .cbi-value .cbi-input-text {
2163 border: 1px solid
#556270;
2164 border-radius: 20px;
2165 background: #fff no-repeat
11px center
/ 19px;
2168 .login > .main .cbi-value .cbi-input-text {
2169 background-image: url
(./user.png);
2172 .login > .main .cbi-value-last .cbi-input-text {
2173 background-image: url
(./pwd.png);
2176 .login .cbi-section {
2179 background-color: transparent
;
2182 .login
.cbi-page-actions
.cbi-button-apply
,
2183 .login .cbi-button-apply {
2184 border: 1px solid
#f24b7c;
2185 background-color: #f24b7c;
2188 .login .cbi-button[value="Reset"] {
2190 border: 1px solid
#9a4569;
2191 background-color: #9a4569;
2198 @media screen and
(min-height: 585px) {
2210 background-color: #ebf1f6;
2218 border: 1px solid
#ddd;
2219 background-color: #fff;
2220 border-radius: 20px;
2221 width: calc
(85% - 20px - 2rem);
2228 .logged-in header .container {
2232 .logged-in header .container .btn-con {
2237 .logged-in header .container .btn-con #xhr_poll_status {
2238 display: inline-block
;
2241 .logged-in header .container .btn-con .logout {
2242 background-color: #354057;
2245 .logged-in header .container .btn-con .logout a {
2247 text-decoration: none
;
2250 .logged-in
.logoImg
,
2251 .login-info .logoImg {
2255 .logged-in .main-right {
2261 .logged-in .main-right .container {
2262 margin: 5rem 1rem 1rem;
2265 /* rosy file server */
2266 .login-info.node-main-login{
2267 background-color: #ebf1f6;
2270 .login-info
.node-main-login header
.container
,
2271 .login-info.node-main-login .main {
2275 .login-info.node-main-login .main {
2279 .login-info.node-main-login header {
2283 .login-info.node-main-login header .container {
2284 margin: 1rem auto
0;
2286 background-color: #fff;
2287 border: 1px solid
#ddd;
2288 border-radius: 50px;
2292 .login-info.node-main-login .label.logout {
2293 background-color: #f24b7c;
2296 .login-info.node-main-login .label.logout a {
2298 text-decoration: none
;
2301 /* node main login */
2308 .login-info .main-left {
2312 .login-info .main-right {
2316 /* fix status overview */
2317 .node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2) {
2318 white-space: normal
;
2321 /* fix status processes */
2322 .node-status-processes > .main .table .tr .td:nth-child(3) {
2323 white-space: normal
;
2326 .node-admin-status form {
2327 margin: 2rem 2rem 0 0;
2330 /* fix system reboot */
2331 [data-page
="admin-system-reboot"] p
{
2335 /* fix network diagnostics */
2336 .lang_enDiagnostics
.tr
.td
,
2337 .lang_enLoad
.tr
.td
,
2338 .lang_enTraffic
.node-admin-status
.tr
.td
,
2339 .lang_enWireless
.tr
.td
,
2340 .lang_enConnections .tr .td {
2344 [data-page
="admin-system-reboot"] p
> span
{
2350 .lang_enInterfaces .ifacebox-body {
2352 border-style: solid
;
2356 #cbi-samba .cbi-value-last
.cbi-value-field
{
2360 #cbi-samba .cbi-value-last
.cbi-value-title
{
2362 padding-bottom: .6rem;
2366 .controls > * > .btn:not([aria-label$="page"]) {
2367 flex-grow: initial
!important
;
2371 .controls > #pager > .btn[aria-label$="page"] {
2375 .controls > * > label {
2376 margin-bottom: .2rem;
2379 [data-page
="admin-system-opkg"] div
.btn
{
2382 padding: .3rem .6rem;
2385 [data-page^
="admin-system-admin"]:not
(.login
) .cbi-map:not
(#cbi-dropbear
),
2386 [data-page
="admin-system-opkg"] #maincontent
> .container
{
2391 [data-page
="admin-system-opkg"] #maincontent
> .container
{
2393 margin-bottom: 1rem;
2398 white-space: normal
!important
;
2399 word-break: break-word
;
2402 .cbi-tabmenu + .cbi-section {
2404 border: 1px solid
#d4d4d4;
2408 /* wireless overview */
2409 #cbi-wireless > #wifi_assoclist_table
> .tr
{
2412 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
> .td
{
2416 border-top: thin solid
#ddd !important
;
2419 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
{
2420 border-radius: 20px 20px 0 0;
2423 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
,
2424 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
.td
{
2425 border-radius: 0 0 20px 20px;
2429 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
.th:first-child
{
2430 border-top-left-radius: 20px;
2433 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
.th:last-child
{
2434 border-top-right-radius: 20px;
2437 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
> .th
{
2438 border-bottom: thin solid
#ddd;
2441 #wifi_assoclist_table > .tr
> .td
[data-title
="RX Rate / TX Rate"] {
2447 font-family: inherit
;
2448 font-weight: normal
;
2454 border: 1px solid
#d4d4d4;
2456 background-color: #fff;
2460 #cbi-firewall-redirect table
*,
2461 #cbi-network-switch_vlan table
*,
2462 #cbi-firewall-zone table
* {
2466 #cbi-firewall-redirect table input
[type
="text"],
2467 #cbi-network-switch_vlan table input
[type
="text"],
2468 #cbi-firewall-zone table input
[type
="text"] {
2472 #cbi-firewall-redirect table select
,
2473 #cbi-network-switch_vlan table select
,
2474 #cbi-firewall-zone table select
{
2478 #cbi-network-switch_vlan .th
,
2479 #cbi-network-switch_vlan .td
{
2483 #cbi-firewall-zone .table
{
2487 #cbi-network-switch_vlan #vlan_table
{
2491 #cbi-firewall-zone .td
.cbi-section-actions
{
2495 /* applyreboot fix */
2496 #applyreboot-container {
2500 #applyreboot-section {
2505 /* openvpn bug fix */
2507 line-height: initial
!important
;
2510 /* custom commands */
2512 width: 24% !important
;
2513 padding: .5rem 1rem;
2514 border-bottom: thin solid
#ccc;
2519 line-height: normal
!important
;
2521 margin: 6px 0 !important
;
2522 white-space: nowrap
;
2523 text-overflow: ellipsis
;
2527 left: auto
!important
;
2539 text-overflow: ellipsis
;
2542 .commandbox p:first-of-type {
2546 .commandbox p:nth-of-type(2) {
2550 [data-page^
="admin-system-commands"] .panel-title
,
2551 [data-page^
="command-cfg"] .mobile-hide
,
2552 [data-page^
="command-cfg"] header
.container
> #logo
{
2560 @media screen and
(max-width: 1600px) {
2561 header
.container
> #logo
{
2562 margin: 0 2.5rem 0 .5rem;
2565 .cbi-dynlist > .item {
2572 padding: .3rem .6rem;
2576 padding: .2rem .6rem;
2581 padding-right: .6rem;
2589 .cbi-input-textarea {
2593 .node-admin-status > .main fieldset li > a {
2594 padding: .3rem .6rem;
2597 #cbi-firewall-zone > .table
{
2602 @media screen and
(max-width: 1400px) {
2604 width: calc
(100% - 230px - 2rem);
2606 .logged-in .main-right {
2607 width: calc
(100% - 230px);
2610 .cbi-dynlist > .item {
2614 .cbi-tabmenu
> li
> a
,
2616 padding: .2rem .5rem;
2621 padding-bottom: 1rem;
2625 font-size: .7rem !important
;
2626 width: 100% !important
;
2629 .table .cbi-input-text {
2633 .main
.main-left
> .nav
> li
,
2634 .main
.main-left
> .nav
> li a
,
2635 .main .main-left > .nav > .slide > .menu {
2639 .main .main-left > .nav > .slide > .slide-menu > li > a {
2643 [data-page
="admin-network-firewall-forwards"] .table:not
(.cbi-section-table
) {
2647 [data-page
="admin-network-firewall-forwards"] .table:not
(.cbi-section-table
),
2648 [data-page
="admin-network-firewall-rules"] .table:not
(.cbi-section-table
),
2649 [data-page
="admin-network-hosts"] .table
{
2650 overflow-y: visible
;
2654 width: 32% !important
;
2658 @media screen and
(max-width: 992px) {
2659 .login-info
.node-main-login header
.container
,
2660 .login-info.node-main-login .main {
2665 @media screen and
(max-width: 992px) {
2666 .login .main-right {
2667 background: #354057;
2670 .login > .main #maincontent {
2675 width: calc
(100% - 2rem);
2679 .logged-in header .container .btn-con {
2684 .logged-in .main-left {
2693 background-color: rgba
(0, 0, 0, .3);
2696 .logged-in .main-left .nav-container {
2705 .logged-in .main-left .nav-container .navbar-container {
2709 .logged-in .main-right {
2713 [data-page^
="command-cfg"] header
.container
> .brand
{
2715 margin-top: -1.75rem;
2718 .cbi-dynlist > .item {
2723 display: inline-block
;
2728 .login-info.node-main-login header .showSide {
2734 display: inline-block
;
2737 background: url
(./menu-logo
.png
) no-repeat center center
/ 100%;
2738 vertical-align: middle
;
2741 .login > .main .cbi-value-title {
2747 padding-right: 1rem;
2750 #diag-rc-output > pre
,
2751 #command-rc-output > pre
{
2765 flex-direction: row
;
2769 .Overview .table[width="100%"] > .tr {
2774 border-bottom: thin solid
#ddd;
2777 .tr
.placeholder
> .td
,
2778 #cbi-firewall .tr
> .td
,
2779 #iptables .tr:nth-child
(2) > .td
,
2780 #cbi-network .tr:nth-child
(2) > .td
,
2781 .cbi-section #wifi_assoclist_table .tr > .td {
2787 display: inline-block
;
2788 align-self: flex-start
;
2790 text-overflow: ellipsis
;
2791 word-wrap: break-word
;
2795 .td input[type="text"] {
2800 .td
[data-dynlist
] > input
,
2801 .td input.cbi-input-password {
2802 width: calc
(100% - 1.5rem);
2805 .td
[data-type
="button"],
2806 .td[data-type="fvalue"] {
2811 .th
.cbi-value-field
,
2812 .td
.cbi-value-field
,
2813 .th
.cbi-section-table-cell
,
2814 .td.cbi-section-table-cell {
2819 .cbi-section-table-row {
2821 flex-direction: row
;
2823 justify-content: space-between
;
2826 .td
.cbi-value-field
,
2827 .cbi-section-table-cell {
2828 display: inline-block
;
2834 .td.cbi-section-actions {
2835 vertical-align: bottom
;
2839 .tr
.cbi-section-table-titles
,
2840 .tr.cbi-section-table-descr {
2844 .tr
[data-title
]::before
,
2845 .tr.cbi-section-table-titles.named::before {
2849 border-bottom: thin solid rgba
(0, 0, 0, .26);
2850 background: #90c0e0;
2854 [data-page^
="admin-status-realtime"] .td
[id
] {
2858 .td[data-title]::before {
2862 .cbi-button + .cbi-button {
2866 .td
.cbi-section-actions
> * > *,
2867 .td.cbi-section-actions > * > form > * {
2872 font-family: inherit
;
2873 font-weight: normal
;
2875 line-height: normal
;
2876 position: static
!important
;
2882 background-color: #fff;
2885 .Firewall form input {
2886 width: 100% !important
;
2892 .Firewall .center::before {
2893 text-align: left
!important
;
2897 width: 100% !important
;
2900 /* The scroll bar of the navigation bar is compatible with each browser. */
2902 .logged-in .main-left .navbar-container::-webkit-scrollbar {
2904 background: transparent
;
2907 .logged-in .main-left .navbar-container::-webkit-scrollbar-button {
2911 .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
2912 background-color: #ffffff61;
2913 border-radius: 10px;
2916 .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
2917 background-color: #839dd67a;
2918 border-radius: 10px;
2921 .logged-in .main-left .navbar-container:hover::-webkit-scrollbar-thumb {
2922 background-color: #839dd67a;
2926 .logged-in .main-left .navbar-container {
2927 scrollbar-track-color: transparent
;
2928 scrollbar-face-color: #839dd67a;
2929 scrollbar-arrow-color: transparent
;
2930 scrollbar-3dlight-color: transparent
;
2931 scrollbar-highlight-color: transparent
;
2932 scrollbar-shadow-color: transparent
;
2933 scrollbar-darkshadow-color: transparent
;
2934 scrollbar-base-color: transparent
;
2937 .logged-in .main-left .navbar-container:hover {
2938 scrollbar-face-color: #839dd67a;
2941 .login-info
.node-main-login header
.container
,
2942 .login-info.node-main-login .main {
2947 @media screen and
(max-width: 768px) {
2948 .login-info.node-main-login header {
2952 .login-info
.node-main-login header
.container
,
2953 .login-info.node-main-login .main {
2958 @media screen and
(max-width: 600px) {
2963 .cbi-progressbar::after {
2974 .main-left .nav-container {
2978 .main .main-left > .nav > .slide > .menu {
2982 .main .main-left > .nav > .slide > .slide-menu > li > a {
2989 min-width: 0 !important
;
2991 margin-bottom: .5rem;
2996 .cbi-value-description {
3000 .cbi-value > .cbi-value-field {
3001 display: inline-block
;
3009 .cbi-tabmenu
> li
> a
,
3012 padding: .2rem .3rem;
3015 .cbi-page-actions > div > input {
3019 .cbi-page-actions > .cbi-button {
3023 .login > .main .cbi-value {
3027 .login > .main form > div:nth-last-child(1) {
3031 .login > .main .cbi-value-title {
3033 width: 100% !important
;
3036 .login > .main fieldset {
3041 .commandbox p:first-of-type {
3045 #diag-rc-output > pre
,
3046 #command-rc-output > pre
{
3069 padding-bottom: 1rem;
3072 .node-system-packages > .main .cbi-value.cbi-value-last > div {
3073 width: 100% !important
;
3076 .node-system-packages > .main .cbi-value .cbi-value-field input {
3085 .td.cbi-value-field {
3089 .td
.cbi-value-field
[data-type
="button"],
3090 .td.cbi-value-field[data-type="fvalue"] {
3095 .tr
[data-title
]::before
,
3096 .tr.cbi-section-table-titles.named::before {
3110 .hide-xs:not([data-title="MAC-Address"]) {
3119 @media screen and
(min-width: 1152px) {
3120 .cbi-value input
[type
="password"],
3121 .cbi-value input[type="text"] {
3125 .cbi-value-field .cbi-input-select {
3129 .cbi-value-field .cbi-dropdown {
3133 .cbi-section-node .tr {
3138 @media screen and
(min-width: 1366px) {
3139 .cbi-value input
[type
="password"],
3140 .cbi-value input[type="text"] {
3144 .cbi-value-field .cbi-input-select {
3148 .cbi-value-field .cbi-dropdown {
3153 @media screen and
(min-width: 1600px) {
3154 .cbi-value input
[type
="password"],
3155 .cbi-value input[type="text"] {
3159 .cbi-value-field .cbi-input-select {
3163 .cbi-value-field .cbi-dropdown {