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
;
1394 border-radius: 20px !important
;
1399 line-height: normal
;
1406 font-size-adjust: .35;
1408 margin-bottom: .5em;
1410 white-space: pre-wrap
;
1413 background-color: #354057;
1425 list-style-type: square
;
1430 padding-left: .25rem;
1431 word-break: break-word
;
1436 font-weight: normal
;
1437 padding: .1rem .3rem;
1443 .modal .label.warning {
1444 background-color: #f0ad4e !important
;
1448 padding: .3rem .6rem;
1455 body
.modal-overlay-active
{
1460 #modal_overlay .alert-message
.warning
{
1461 background-color: #fff !important
;
1462 margin-bottom: 10px;
1465 body
.modal-overlay-active #modal_overlay
{
1473 padding-left: 32px !important
;
1483 background: url
(../resources/icons/loading.gif) no-repeat center
;
1484 background-size: 16px;
1494 text-align: left
!important
;
1499 text-align: right
!important
;
1504 text-align: center
!important
;
1508 align-self: flex-start
!important
;
1509 vertical-align: top
!important
;
1513 align-self: flex-end
!important
;
1514 vertical-align: bottom
!important
;
1526 .cbi-page-actions > form[method="post"] {
1527 display: inline-block
;
1531 .cbi-value input
[type
="password"],
1532 .cbi-value input[type="text"] {
1537 .cbi-value-field
.cbi-dropdown
,
1538 .cbi-value-field .cbi-input-select {
1542 .cbi-value-field .cbi-input-invalid {
1544 border-bottom-color: #f00;
1553 background: #a9cad4;
1555 border-radius: 20px;
1559 .cbi-progressbar > div {
1562 background: #468ea4;
1563 border-radius: 20px;
1566 .cbi-progressbar::after {
1567 font-family: monospace
;
1569 font-size-adjust: .38;
1570 line-height: normal
;
1576 content: attr
(title
);
1579 transform: translateY
(-50%);
1582 .th
[data-type
="button"],
1583 .td
[data-type
="button"],
1584 .th
[data-type
="fvalue"],
1585 .td[data-type="fvalue"] {
1591 display: inline-flex
;
1592 padding: .5rem .8rem;
1594 border-radius: 20px;
1600 background-color: #d4d4d4;
1601 border-radius: 20px;
1606 display: inline-block
;
1607 align-self: flex-start
;
1611 .ifacebadge > img + img {
1612 margin: 0 .2rem 0 0;
1615 .network-status-table {
1620 .network-status-table .ifacebox {
1623 border-radius: 20px;
1627 .network-status-table .ifacebox-body {
1629 flex-direction: column
;
1631 background: #f5f5f5;
1634 .network-status-table .ifacebox-body > span {
1640 .network-status-table .ifacebox-body > div {
1645 .network-status-table .ifacebox-body .ifacebadge {
1646 align-items: center
;
1649 margin: .5em .25em 0 .25em;
1651 background-color: #fff;
1652 border-radius: 20px;
1656 .cbi-input-textarea {
1657 font-family: monospace
;
1668 margin-bottom: 20px;
1673 border-radius: 20px;
1674 background-color: #fff;
1681 /* config changes */
1683 font-family: monospace
;
1686 .uci-change-list ins
,
1687 .uci-change-legend-label ins {
1690 text-decoration: none
;
1691 border: thin solid
#0f0;
1692 background-color: #cfc;
1695 .uci-change-list del
,
1696 .uci-change-legend-label del {
1700 text-decoration: none
;
1701 border: thin solid
#f00;
1702 background-color: #fcc;
1705 .uci-change-list var
,
1706 .uci-change-legend-label var {
1710 text-decoration: none
;
1711 border: thin solid
#ccc;
1712 background-color: #eee;
1715 .uci-change-list var ins
,
1716 .uci-change-list var del {
1723 .uci-change-legend {
1727 .uci-change-legend-label {
1732 .uci-change-legend-label
> ins
,
1733 .uci-change-legend-label
> del
,
1734 .uci-change-legend-label > var {
1742 .uci-change-legend-label var ins
,
1743 .uci-change-legend-label var del {
1748 .uci-change-list var
,
1749 .uci-change-list del
,
1750 .uci-change-list ins {
1758 border: 1px solid
#d4d4d4 !important
;
1759 border-radius: 20px;
1762 .lang_enTraffic #bwsvg
,
1763 .lang_enWireless #iwsvg {
1764 border: 1px solid
#d4d4d4 !important
;
1765 border-radius: 0 0 20px 20px;
1769 [data-page
="admin-status-realtime-bandwidth"] #bwsvg
{
1770 border-top: 0 !important
;
1775 display: inline-flex
;
1776 flex-direction: column
;
1778 background-color: #f9f9f9;
1779 border-radius: 10px;
1787 border-radius: 10px 10px 0 0;
1794 .ifacebox-head.active {
1795 background: #5bc0de;
1800 border-radius: 0 0 10px 10px;
1808 display: inline-block
;
1809 padding: .2rem .5rem;
1810 border-radius: 20px;
1813 .zonebadge .ifacebadge {
1814 margin: .1rem .2rem;
1815 padding: .2rem .3rem;
1816 border: thin solid
#6c6c6c;
1820 .zonebadge > input[type="text"] {
1823 padding: .16rem 1rem;
1827 .zonebadge > strong {
1828 display: inline-block
;
1832 .cbi-value-field
.cbi-input-checkbox
,
1833 .cbi-value-field .cbi-input-radio {
1837 .cbi-value-field > ul > li {
1841 .cbi-value-field > ul > li > label {
1845 .cbi-value-field > ul > li .ifacebadge {
1848 background-color: #eee;
1851 .cbi-section-table-row > .cbi-value-field .cbi-dropdown {
1855 .cbi-section-create {
1856 display: inline-flex
;
1857 align-items: center
;
1861 .cbi-section-create > * {
1865 .cbi-section-remove {
1870 td
.cbi-value-field var
,
1871 .td.cbi-value-field var {
1878 line-height: 1.42857143;
1879 white-space: normal
;
1885 display: inline-block
;
1887 padding: .2rem .3rem;
1891 padding: 1rem 1rem 0 1rem;
1892 border-top: thin solid
#ccc;
1895 .cbi-dropdown-container {
1899 .cbi-tooltip-container
,
1901 span
[data-tooltip
] .label
{
1902 cursor: help
!important
;
1910 transition: opacity
.25s ease-out
;
1912 pointer-events: none
;
1918 .cbi-tooltip-container:hover .cbi-tooltip {
1920 transition: opacity
.25s ease-in
;
1925 .zonebadge .cbi-tooltip {
1926 margin: -1.5rem 0 0 -.5rem;
1928 background: inherit
;
1933 background: repeating-linear-gradient
(
1935 rgba
(204, 204, 204, .5),
1936 rgba
(204, 204, 204, .5) 5px,
1937 rgba
(255, 255, 255, .5) 5px,
1938 rgba
(255, 255, 255, .5) 10px
1947 .zone-forwards > * {
1951 .zone-forwards > span {
1957 .zone-forwards
.zone-src
,
1958 .zone-forwards .zone-dest {
1960 flex-direction: column
;
1965 padding: .3rem .8rem;
1966 white-space: nowrap
;
1967 text-decoration: none
;
1968 color: #fff !important
;
1969 -moz-border-radius: 3px;
1970 border-radius: 20px;
1971 background-color: #bfbfbf;
1974 label
> input
[type
="checkbox"],
1975 label
> input
[type
="radio"] {
1980 vertical-align: bottom
;
1994 background-color: rgba
(0, 0, 0, .56);
1998 #diag-rc-output > pre
,
1999 #command-rc-output > pre
{
2001 font-size-adjust: .35;
2002 line-height: normal
;
2008 background-color: #101010;
2011 [data-page
="admin-network-diagnostics"] .table
{
2016 input
[name
="traceroute"],
2017 input
[name
="nslookup"] {
2021 /* fix Main Login 登录界面*/
2022 .login .main-right {
2023 background: url
(./loginBG.png) no-repeat center center
/ cover
;
2036 .login > .main .main-left {
2044 text-decoration: none
;
2047 .login > .main .cbi-value-title {
2051 .login > .main #maincontent {
2053 padding-bottom: 20px;
2054 display: inline-block
;
2055 background-color: transparent
;
2061 .login > .main .container {
2063 margin-top: 2rem !important
;
2067 .login .main-right .container .alert-message {
2070 background-color: #4a5368 !important
;
2071 border: 1px solid
#3e4a62;
2072 border-radius: 20px;
2075 .login .alert-message > h4 {
2076 padding: 7px 0 0 32px;
2078 background: url
(./no-pwd
.png
) no-repeat left
0 / 28px;
2079 display: inline-block
;
2082 .login .alert-message > p {
2087 .login .alert-message > * {
2091 .login .main-right .container .alert-message .btn {
2092 border: 1px solid
#fff;
2093 background-color: transparent
;
2095 border-radius: 20px;
2100 .login > .main form h2 {
2107 .login > .main form .cbi-map-descr {
2108 margin-bottom: 17px;
2112 .login > .main form > .cbi-page-actions {
2117 .login > .main form > .cbi-page-actions .cbi-button {
2119 width: 50% !important
;
2124 .login > .main form > .cbi-page-actions .cbi-button-apply {
2125 border-radius: 25px 0 0 25px;
2128 .login > .main form > .cbi-page-actions .cbi-button-reset {
2129 border-radius: 0 25px 25px 0;
2132 .login > .main .cbi-value {
2138 .login > .main .cbi-value > .cbi-value-field {
2143 .login > .main .cbi-value-last .cbi-value-field > div {
2146 display: inline-block
;
2147 background: url
(./op-eye
.png
) no-repeat center center
/ cover
;
2153 .login > .main .cbi-value-last .cbi-value-field.op-eye > div {
2154 background-image: url
(./cl-eye
.png
);
2157 .login > .main .cbi-value .cbi-input-text {
2162 border: 1px solid
#556270;
2163 border-radius: 20px;
2164 background: #fff no-repeat
11px center
/ 19px;
2167 .login > .main .cbi-value .cbi-input-text {
2168 background-image: url
(./user.png);
2171 .login > .main .cbi-value-last .cbi-input-text {
2172 background-image: url
(./pwd.png);
2175 .login .cbi-section {
2178 background-color: transparent
;
2181 .login
.cbi-page-actions
.cbi-button-apply
,
2182 .login .cbi-button-apply {
2183 border: 1px solid
#f24b7c;
2184 background-color: #f24b7c;
2187 .login .cbi-button[value="Reset"] {
2189 border: 1px solid
#9a4569;
2190 background-color: #9a4569;
2197 @media screen and
(min-height: 585px) {
2209 background-color: #ebf1f6;
2217 border: 1px solid
#ddd;
2218 background-color: #fff;
2219 border-radius: 20px;
2220 width: calc
(85% - 20px - 2rem);
2227 .logged-in header .container {
2231 .logged-in header .container .btn-con {
2236 .logged-in header .container .btn-con #xhr_poll_status {
2237 display: inline-block
;
2240 .logged-in header .container .btn-con .logout {
2241 background-color: #354057;
2244 .logged-in header .container .btn-con .logout a {
2246 text-decoration: none
;
2249 .logged-in
.logoImg
,
2250 .login-info .logoImg {
2254 .logged-in .main-right {
2260 .logged-in .main-right .container {
2261 margin: 5rem 1rem 1rem;
2264 /* rosy file server */
2265 .login-info.node-main-login{
2266 background-color: #ebf1f6;
2269 .login-info
.node-main-login header
.container
,
2270 .login-info.node-main-login .main {
2274 .login-info.node-main-login .main {
2278 .login-info.node-main-login header {
2282 .login-info.node-main-login header .container {
2283 margin: 1rem auto
0;
2285 background-color: #fff;
2286 border: 1px solid
#ddd;
2287 border-radius: 50px;
2291 .login-info.node-main-login .label.logout {
2292 background-color: #f24b7c;
2295 .login-info.node-main-login .label.logout a {
2297 text-decoration: none
;
2300 /* node main login */
2307 .login-info .main-left {
2311 .login-info .main-right {
2315 /* fix status overview */
2316 .node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2) {
2317 white-space: normal
;
2320 /* fix status processes */
2321 .node-status-processes > .main .table .tr .td:nth-child(3) {
2322 white-space: normal
;
2325 .node-admin-status form {
2326 margin: 2rem 2rem 0 0;
2329 /* fix system reboot */
2330 [data-page
="admin-system-reboot"] p
{
2334 /* fix network diagnostics */
2335 .lang_enDiagnostics
.tr
.td
,
2336 .lang_enLoad
.tr
.td
,
2337 .lang_enTraffic
.node-admin-status
.tr
.td
,
2338 .lang_enWireless
.tr
.td
,
2339 .lang_enConnections .tr .td {
2343 [data-page
="admin-system-reboot"] p
> span
{
2349 .lang_enInterfaces .ifacebox-body {
2351 border-style: solid
;
2355 #cbi-samba .cbi-value-last
.cbi-value-field
{
2359 #cbi-samba .cbi-value-last
.cbi-value-title
{
2361 padding-bottom: .6rem;
2365 .controls > * > .btn:not([aria-label$="page"]) {
2366 flex-grow: initial
!important
;
2370 .controls > #pager > .btn[aria-label$="page"] {
2374 .controls > * > label {
2375 margin-bottom: .2rem;
2378 [data-page
="admin-system-opkg"] div
.btn
{
2381 padding: .3rem .6rem;
2384 [data-page^
="admin-system-admin"]:not
(.login
) .cbi-map:not
(#cbi-dropbear
),
2385 [data-page
="admin-system-opkg"] #maincontent
> .container
{
2390 [data-page
="admin-system-opkg"] #maincontent
> .container
{
2392 margin-bottom: 1rem;
2397 white-space: normal
!important
;
2398 word-break: break-word
;
2401 .cbi-tabmenu + .cbi-section {
2403 border: 1px solid
#d4d4d4;
2407 /* wireless overview */
2408 #cbi-wireless > #wifi_assoclist_table
> .tr
{
2411 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
> .td
{
2415 border-top: thin solid
#ddd !important
;
2418 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
{
2419 border-radius: 20px 20px 0 0;
2422 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
,
2423 #cbi-wireless > #wifi_assoclist_table
> .tr
.placeholder
.td
{
2424 border-radius: 0 0 20px 20px;
2428 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
.th:first-child
{
2429 border-top-left-radius: 20px;
2432 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
.th:last-child
{
2433 border-top-right-radius: 20px;
2436 #cbi-wireless > #wifi_assoclist_table
> .tr
.table-titles
> .th
{
2437 border-bottom: thin solid
#ddd;
2440 #wifi_assoclist_table > .tr
> .td
[data-title
="RX Rate / TX Rate"] {
2446 font-family: inherit
;
2447 font-weight: normal
;
2453 border: 1px solid
#d4d4d4;
2455 background-color: #fff;
2459 #cbi-firewall-redirect table
*,
2460 #cbi-network-switch_vlan table
*,
2461 #cbi-firewall-zone table
* {
2465 #cbi-firewall-redirect table input
[type
="text"],
2466 #cbi-network-switch_vlan table input
[type
="text"],
2467 #cbi-firewall-zone table input
[type
="text"] {
2471 #cbi-firewall-redirect table select
,
2472 #cbi-network-switch_vlan table select
,
2473 #cbi-firewall-zone table select
{
2477 #cbi-network-switch_vlan .th
,
2478 #cbi-network-switch_vlan .td
{
2482 #cbi-firewall-zone .table
{
2486 #cbi-network-switch_vlan #vlan_table
{
2490 #cbi-firewall-zone .td
.cbi-section-actions
{
2494 /* applyreboot fix */
2495 #applyreboot-container {
2499 #applyreboot-section {
2504 /* openvpn bug fix */
2506 line-height: initial
!important
;
2509 /* custom commands */
2511 width: 24% !important
;
2512 padding: .5rem 1rem;
2513 border-bottom: thin solid
#ccc;
2518 line-height: normal
!important
;
2520 margin: 6px 0 !important
;
2521 white-space: nowrap
;
2522 text-overflow: ellipsis
;
2526 left: auto
!important
;
2538 text-overflow: ellipsis
;
2541 .commandbox p:first-of-type {
2545 .commandbox p:nth-of-type(2) {
2549 [data-page^
="admin-system-commands"] .panel-title
,
2550 [data-page^
="command-cfg"] .mobile-hide
,
2551 [data-page^
="command-cfg"] header
.container
> #logo
{
2559 @media screen and
(max-width: 1600px) {
2560 header
.container
> #logo
{
2561 margin: 0 2.5rem 0 .5rem;
2564 .cbi-dynlist > .item {
2571 padding: .3rem .6rem;
2575 padding: .2rem .6rem;
2580 padding-right: .6rem;
2588 .cbi-input-textarea {
2592 .node-admin-status > .main fieldset li > a {
2593 padding: .3rem .6rem;
2596 #cbi-firewall-zone > .table
{
2601 @media screen and
(max-width: 1400px) {
2603 width: calc
(100% - 230px - 2rem);
2605 .logged-in .main-right {
2606 width: calc
(100% - 230px);
2609 .cbi-dynlist > .item {
2613 .cbi-tabmenu
> li
> a
,
2615 padding: .2rem .5rem;
2620 padding-bottom: 1rem;
2624 font-size: .7rem !important
;
2625 width: 100% !important
;
2628 .table .cbi-input-text {
2632 .main
.main-left
> .nav
> li
,
2633 .main
.main-left
> .nav
> li a
,
2634 .main .main-left > .nav > .slide > .menu {
2638 .main .main-left > .nav > .slide > .slide-menu > li > a {
2642 [data-page
="admin-network-firewall-forwards"] .table:not
(.cbi-section-table
) {
2646 [data-page
="admin-network-firewall-forwards"] .table:not
(.cbi-section-table
),
2647 [data-page
="admin-network-firewall-rules"] .table:not
(.cbi-section-table
),
2648 [data-page
="admin-network-hosts"] .table
{
2649 overflow-y: visible
;
2653 width: 32% !important
;
2657 @media screen and
(max-width: 992px) {
2658 .login-info
.node-main-login header
.container
,
2659 .login-info.node-main-login .main {
2664 @media screen and
(max-width: 992px) {
2665 .login .main-right {
2666 background: #354057;
2669 .login > .main #maincontent {
2674 width: calc
(100% - 2rem);
2678 .logged-in header .container .btn-con {
2683 .logged-in .main-left {
2692 background-color: rgba
(0, 0, 0, .3);
2695 .logged-in .main-left .nav-container {
2704 .logged-in .main-left .nav-container .navbar-container {
2708 .logged-in .main-right {
2712 [data-page^
="command-cfg"] header
.container
> .brand
{
2714 margin-top: -1.75rem;
2717 .cbi-dynlist > .item {
2722 display: inline-block
;
2727 .login-info.node-main-login header .showSide {
2733 display: inline-block
;
2736 background: url
(./menu-logo
.png
) no-repeat center center
/ 100%;
2737 vertical-align: middle
;
2740 .login > .main .cbi-value-title {
2746 padding-right: 1rem;
2749 #diag-rc-output > pre
,
2750 #command-rc-output > pre
{
2764 flex-direction: row
;
2768 .Overview .table[width="100%"] > .tr {
2773 border-bottom: thin solid
#ddd;
2776 .tr
.placeholder
> .td
,
2777 #cbi-firewall .tr
> .td
,
2778 #iptables .tr:nth-child
(2) > .td
,
2779 #cbi-network .tr:nth-child
(2) > .td
,
2780 .cbi-section #wifi_assoclist_table .tr > .td {
2786 display: inline-block
;
2787 align-self: flex-start
;
2789 text-overflow: ellipsis
;
2790 word-wrap: break-word
;
2794 .td input[type="text"] {
2799 .td
[data-dynlist
] > input
,
2800 .td input.cbi-input-password {
2801 width: calc
(100% - 1.5rem);
2804 .td
[data-type
="button"],
2805 .td[data-type="fvalue"] {
2810 .th
.cbi-value-field
,
2811 .td
.cbi-value-field
,
2812 .th
.cbi-section-table-cell
,
2813 .td.cbi-section-table-cell {
2818 .cbi-section-table-row {
2820 flex-direction: row
;
2822 justify-content: space-between
;
2825 .td
.cbi-value-field
,
2826 .cbi-section-table-cell {
2827 display: inline-block
;
2833 .td.cbi-section-actions {
2834 vertical-align: bottom
;
2838 .tr
.cbi-section-table-titles
,
2839 .tr.cbi-section-table-descr {
2843 .tr
[data-title
]::before
,
2844 .tr.cbi-section-table-titles.named::before {
2848 border-bottom: thin solid rgba
(0, 0, 0, .26);
2849 background: #90c0e0;
2853 [data-page^
="admin-status-realtime"] .td
[id
] {
2857 .td[data-title]::before {
2861 .cbi-button + .cbi-button {
2865 .td
.cbi-section-actions
> * > *,
2866 .td.cbi-section-actions > * > form > * {
2871 font-family: inherit
;
2872 font-weight: normal
;
2874 line-height: normal
;
2875 position: static
!important
;
2881 background-color: #fff;
2884 .Firewall form input {
2885 width: 100% !important
;
2891 .Firewall .center::before {
2892 text-align: left
!important
;
2896 width: 100% !important
;
2899 /* The scroll bar of the navigation bar is compatible with each browser. */
2901 .logged-in .main-left .navbar-container::-webkit-scrollbar {
2903 background: transparent
;
2906 .logged-in .main-left .navbar-container::-webkit-scrollbar-button {
2910 .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
2911 background-color: #ffffff61;
2912 border-radius: 10px;
2915 .logged-in .main-left .navbar-container::-webkit-scrollbar-thumb {
2916 background-color: #839dd67a;
2917 border-radius: 10px;
2920 .logged-in .main-left .navbar-container:hover::-webkit-scrollbar-thumb {
2921 background-color: #839dd67a;
2925 .logged-in .main-left .navbar-container {
2926 scrollbar-track-color: transparent
;
2927 scrollbar-face-color: #839dd67a;
2928 scrollbar-arrow-color: transparent
;
2929 scrollbar-3dlight-color: transparent
;
2930 scrollbar-highlight-color: transparent
;
2931 scrollbar-shadow-color: transparent
;
2932 scrollbar-darkshadow-color: transparent
;
2933 scrollbar-base-color: transparent
;
2936 .logged-in .main-left .navbar-container:hover {
2937 scrollbar-face-color: #839dd67a;
2940 .login-info
.node-main-login header
.container
,
2941 .login-info.node-main-login .main {
2946 @media screen and
(max-width: 768px) {
2947 .login-info.node-main-login header {
2951 .login-info
.node-main-login header
.container
,
2952 .login-info.node-main-login .main {
2957 @media screen and
(max-width: 600px) {
2962 .cbi-progressbar::after {
2973 .main-left .nav-container {
2977 .main .main-left > .nav > .slide > .menu {
2981 .main .main-left > .nav > .slide > .slide-menu > li > a {
2988 min-width: 0 !important
;
2990 margin-bottom: .5rem;
2995 .cbi-value-description {
2999 .cbi-value > .cbi-value-field {
3000 display: inline-block
;
3008 .cbi-tabmenu
> li
> a
,
3011 padding: .2rem .3rem;
3014 .cbi-page-actions > div > input {
3018 .cbi-page-actions > .cbi-button {
3022 .login > .main .cbi-value {
3026 .login > .main form > div:nth-last-child(1) {
3030 .login > .main .cbi-value-title {
3032 width: 100% !important
;
3035 .login > .main fieldset {
3040 .commandbox p:first-of-type {
3044 #diag-rc-output > pre
,
3045 #command-rc-output > pre
{
3068 padding-bottom: 1rem;
3071 .node-system-packages > .main .cbi-value.cbi-value-last > div {
3072 width: 100% !important
;
3075 .node-system-packages > .main .cbi-value .cbi-value-field input {
3084 .td.cbi-value-field {
3088 .td
.cbi-value-field
[data-type
="button"],
3089 .td.cbi-value-field[data-type="fvalue"] {
3094 .tr
[data-title
]::before
,
3095 .tr.cbi-section-table-titles.named::before {
3109 .hide-xs:not([data-title="MAC-Address"]) {
3118 @media screen and
(min-width: 1152px) {
3119 .cbi-value input
[type
="password"],
3120 .cbi-value input[type="text"] {
3124 .cbi-value-field .cbi-input-select {
3128 .cbi-value-field .cbi-dropdown {
3132 .cbi-section-node .tr {
3137 @media screen and
(min-width: 1366px) {
3138 .cbi-value input
[type
="password"],
3139 .cbi-value input[type="text"] {
3143 .cbi-value-field .cbi-input-select {
3147 .cbi-value-field .cbi-dropdown {
3152 @media screen and
(min-width: 1600px) {
3153 .cbi-value input
[type
="password"],
3154 .cbi-value input[type="text"] {
3158 .cbi-value-field .cbi-input-select {
3162 .cbi-value-field .cbi-dropdown {