From 1bb4822dca6113f73e3bc89e2acf15935e6f8e92 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 3 Dec 2014 15:17:05 +0100 Subject: Rework LuCI build system * Rename subdirectories to their repective OpenWrt package names * Make each LuCI module its own standalone package * Deploy a shared luci.mk which is used by each module Makefile Signed-off-by: Jo-Philipp Wich --- .../htdocs/luci-static/openwrt.org/cascade.css | 1034 ++++++++++++++++++++ .../htdocs/luci-static/openwrt.org/ie6.css | 77 ++ .../htdocs/luci-static/openwrt.org/ie7.css | 59 ++ .../htdocs/luci-static/openwrt.org/ie8.css | 12 + .../htdocs/luci-static/openwrt.org/tabbg.png | Bin 0 -> 152 bytes 5 files changed, 1182 insertions(+) create mode 100644 themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css create mode 100644 themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css create mode 100644 themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css create mode 100644 themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css create mode 100644 themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png (limited to 'themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org') diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css new file mode 100644 index 0000000000..4a6877fa98 --- /dev/null +++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css @@ -0,0 +1,1034 @@ +@charset "utf-8"; + +.lang_he { + direction: RTL; + unicode-bidi: embed; +} + +@media all { + +html { + min-height: 100%; + height: auto; + position:relative; +} + +body { + color: #ffffff; + background-color: #4a6b7c; + background-position: bottom center; + background-repeat: repeat-x; + font-family: Verdana, Arial, sans-serif; + font-size: 11pt; + line-height: 100%; + padding-bottom: 1.5em; +} + +* { + margin: 0; + padding: 0; +} + +a img { + border: none; + text-decoration: none; +} + +ul.tabmenu { + margin: 0; + clear: both; + display: block; + vertical-align: bottom; + font-size: 10pt; + padding: 5px 0 0 5px; +} + +div.tabmenu2 { + background-color: #AAAAAA; + background-image: url(tabbg.png); + background-repeat: repeat-x; + margin-top: -1px; + border: 1px solid #444444; + border-bottom: none; +} + +div.tabmenu3, +div.tabmenu4, +div.tabmenu5 { + background-color: #AAAAAA; + background-image: url(tabbg.png); + background-repeat: repeat-x; + border: none; +} + +ul.tabmenu li { + float: left; + display: block; + overflow: hidden; +} + +.lang_he ul.tabmenu li { + float: right; +} + +ul.tabmenu li a { + text-decoration: none; + color: #444444; + display: block; + padding: 3px 8px; + margin: 0 2px; + line-height: 1.3em; + border: 1px solid transparent; + border-bottom: none; + font-size: 85%; +} + +ul.tabmenu li.active a { + font-weight: bold; + color: #000000; + background: #f5f5f5; + border: 1px solid #AAAAAA; + border-bottom: none; +} + +ul.tabmenu li a:hover { + color: #444444; + border-color: #444444; +} + +ul.l1 li a { + background-color: #AAAAAA; + background-image: url(tabbg.png); + background-repeat: repeat-x; + border-color: #444444; +} + +ul.l1 li.tabmenu-item-logout a { + margin-left: 30px; +} + +.lang_he ul.l1 li.tabmenu-item-logout a { + margin-right: 30px; +} + +abbr, +acronym { + font-style: normal; + font-variant: normal; +} + +abbr[title], +acronym[title] { + border-bottom: 1px dotted; + cursor: help; +} + +a:link abbr[title], +a:visited abbr[title], +a:link acronym[title], +a:visited acronym[title] { + cursor: pointer; +} + +code { + font-family: monospace; + white-space: pre; +} + +#maincontent ul { + margin-left: 2em; +} + +.warning { + color: red; + background-color: white; + font-weight: bold; +} + +.clear { + clear: both; +} + +.skiplink, +.navigation, +.hidden { + position: absolute; + left: -1000px; + top: -1000px; + width: 0px; + height: 0px; + overflow: hidden; + display: inline; +} + +.error { + color: #ff0000; + background-color: white; +} + +div.hostinfo { + float: left; + margin: 0; + padding: 0; + width: auto; + font-size: 80%; + padding: 0.5em; +} + +.lang_he div.hostinfo { + float: right; +} + +#xhr_poll_status { + cursor: pointer; +} + +#xhr_poll_status #xhr_poll_status_off { + font-weight: bold; + color: #FF0000; +} + +#xhr_poll_status #xhr_poll_status_on { + font-weight: bold; + color: #00FF00; +} + +#menubar { + position: relative; + width: 100%; + background: #000000; + color: #ffffff; +} + +#menubar .warning { + color: red; + background-color: #557788; +} + +html #menubar a:link, +html #menubar a:visited { + position: relative; + display: block; + padding: 0.5em; + background: #000000; + color: #ffffff; + text-decoration: none; + font-size: 80%; + font-weight: normal; +} + + +html #menubar a:link:hover, +html #menubar a:visited:hover, +html #menubar a:link:active, +html #menubar a:visited:active, +#menubar a:link:focus, +#menubar a:visited:focus { + background: #000000; + color: #ffff00; + font-weight: bold; +} + +html #menubar a:link.active, +html #menubar a:visited.active, +html #menubar a:link.preactive, +html #menubar a:visited.preactive { + background: #000000; + color: #ffff00; + font-weight: bold; +} + +html #menubar a:link.warning, +html #menubar a:visited.warning { + background: #000000; + color: red; + font-weight: bold; +} + +#modemenu { + width: auto; + background: #000000; + color: #ffffff; + list-style: none; + margin-right: 1px; + margin-left: 2em; + float: right; +} + +#modemenu li { + float: right; + list-style: none; +} + +#savemenu { + float: right; +} + +.lang_he #savemenu { + float: left; +} + +.lang_de #submenu_admin_uci { + width: 12em; +} + +.lang_ru #submenu_admin_uci { + width: 11.5em; +} + +textarea#syslog { + width: 98%; + min-height: 500px; + border: 3px solid #cccccc; + padding: 5px; + font-family: monospace; +} + +#maincontainer { + clear: both; + width: 96%; + margin: 0 auto; + height:100%; +} + +#maincontent { + padding: 0.5em; + background: #f5f5f5; + color: #000000; + font-size: 80%; + border-width: 0 1px 1px 1px; + border-style: solid; + border-color: #444444; +} + +.lang_he #maincontent { + direction: rtl; +} + +#maincontent h2 { + font-size: 150%; + font-family: Trebuchet MS, Verdana, sans-serif; + font-weight: bold; + margin: 0.25em 0 0.7em 0; + border-bottom: 1px solid; + padding-top: 10px; + padding-bottom: 4px; +} + +#maincontent h3 { + margin: 0.5em 0 1.1em 0; + font-size: 125%; + font-weight: bold; + font-style: italic; + font-family: Trebuchet MS, Verdana, sans-serif; + color: #27408B; +} + +#maincontent p { + margin-bottom: 1em; +} + +.cbi-section { + margin-bottom: 0.5em; + padding: 0.5em 1em; + border: 1px dotted #555555; + background-color: #ffffff; + color: #000000; +} + +.cbi-section legend { + font-size: 110%; + font-weight: bold; + height: 1em; + padding: 0 0.25em; + background-color: transparent; + color: #555555; +} + +.cbi-section h2 { + margin: 0em 0 0.5em -0.5em !important; +} + +.cbi-section h3 { + text-decoration: none !important; + font-weight: bold !important; + color: #555555 !important; + margin: 0.25em !important; + font-size: 100% !important; +} + +.cbi-section-descr { + margin-bottom: 0.5em; + font-size: 95%; +} + +.cbi-title-ref { + color: inherit; + text-decoration: none; + padding-right: 18px; + background: url('../resources/cbi/link.gif') no-repeat scroll right center; + background-color: inherit; +} + +ul.cbi-apply { + font-size: 90%; +} + +input:-webkit-input-placeholder { + color: #AAAAAA; +} + +input:-moz-placeholder { + color: #AAAAAA; +} + +input:-ms-input-placeholder { + color: #AAAAAA; +} + +input[type=submit], +input[type=reset], +input[type=image], +input[type=button] { + cursor: pointer; +} + +select, +input, +textarea { + background: #eeeeee; + color: #000000; + border-width: 1px; + border-color: #000000; +} + +input[type=image] { + border: none; +} + +input:focus, +input:hover, +select:focus, +select:hover { + background-color: #ffffff; + color: #000000; +} + +select, +input[type=text], +input[type=password] { + width: 20em; +} + +td select, +td input[type=text], +td input[type=password] { + width: 99%; +} + +img.cbi-image-button { + cursor: pointer; + margin: 0 2px; + vertical-align: middle; +} + +input.cbi-button { + background-color: #EEEEEE; + background-repeat: no-repeat; + background-position: 1px center; + border: 1px solid #CCCCCC; + border-radius: 3px; +} + +input.cbi-button:hover { + border-color: #4A6B7C; + background-color: #FFFFFF; +} + +input.cbi-button[disabled] { + color: #CCCCCC; + border-color: #CCCCCC; + background-color: #EEEEEE; + cursor: default; +} + +input.cbi-input-user { + background-image: url('../resources/cbi/user.gif'); + background-repeat: no-repeat; + background-position: 1px center; + color: #000000; + text-indent: 17px; +} + +input.cbi-input-password { + background-image: url('../resources/cbi/key.gif'); + background-repeat: no-repeat; + background-position: 1px center; + color: #000000; + text-indent: 17px; +} + +input.cbi-input-find, +input.cbi-button-find { + background-image: url('../resources/cbi/find.gif'); + color: #000000; + padding-left: 17px; +} + +input.cbi-input-reload { + background-image: url('../resources/cbi/reload.gif'); + color: #000000; + padding-left: 17px; +} + +input.cbi-input-add, +input.cbi-button-add { + background-image: url('../resources/cbi/add.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-fieldadd, +input.cbi-button-fieldadd { + background-image: url(../resources/cbi/fieldadd.gif); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-reset, +input.cbi-button-reset { + background-image: url('../resources/cbi/reset.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-save, +input.cbi-button-save { + background-image: url('../resources/cbi/save.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-apply, +input.cbi-button-apply { + background-image: url('../resources/cbi/apply.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-link, +input.cbi-button-link { + background-image: url('../resources/cbi/link.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-download, +input.cbi-button-download { + background-image: url('../resources/cbi/download.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-remove, +div.cbi-section-remove input { + background-image: url('../resources/cbi/remove.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-button-up { + background-image: url('../resources/cbi/up.gif'); + padding-left: 11px; + padding-right: 1px; +} + +input.cbi-button-down { + background-image: url('../resources/cbi/down.gif'); + padding-left: 11px; + padding-right: 1px; +} + +input.cbi-button-edit { + background-image: url('../resources/cbi/edit.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-button-reload { + background-image: url('../resources/cbi/reload.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-button-reset { + background-image: url('../resources/cbi/reset.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-button-remove { + background-image: url('../resources/cbi/remove.gif'); + color: #000000; + padding-left: 17px; + padding-right: 1px; +} + +.cbi-input-invalid { + background-image: url('../resources/cbi/reset.gif'); + background-repeat: no-repeat; + background-position: right; + color: #FF0000 !important; + border-color: #FF0000; +} + +div.cbi-section-remove input { + border-bottom: none; +} + +textarea { + margin-left: -1px; + margin-bottom: 0.5em; +} + +form > div > input[type=submit], +form > div > input[type=reset] { + float: right; + margin-left: 0.5em; +} + +table td, +table th { + color: #000000; +} + +table.smalltext { + background: #f5f5f5; + color: #000000; + border-top: 1px solid #666666; + border-right: 1px solid #666666; + border-bottom: 1px solid #666666; + font-size: 90%; + width: 80%; + margin-left: auto; + margin-right: auto; + border-collapse: collapse; +} + +table.smalltext tr:hover td { + background-color: #bbddee; + color: #000000; +} + +table.smalltext tr th { + padding: 0 0.25em; + border-left: 1px solid #666666; + text-align: left; +} + +table.smalltext tr td { + padding: 0 0.25em; + border-top: 1px solid #666666; + border-left: 1px solid #666666; +} + +table.cbi-section-table .cbi-rowstyle-1 { + background-color: #eeeeff; + color: #000000; +} + +table.cbi-section-table .cbi-rowstyle-1:hover, +table.cbi-section-table .cbi-rowstyle-2:hover { + background-color: #b2c8d4; + color: #000000; +} + +table.cbi-section-table .cbi-section-table-cell { + padding: 3px; + white-space: nowrap; +} + +.cbi-section .cbi-rowstyle-1 h3 { + background-color: #eeeeff; + color: #555555; +} + +.cbi-rowstyle-2 { + color: #000000; +} + +div.cbi-value { + clear: left; + vertical-align: middle; + padding: 0.25em 0.6em; + border-bottom: 1px dotted #bbbbbb; +} + +div.cbi-value:hover { + background: #f8f8f8; + color: #000000; +} + +.cbi-value-title { + float: left; + width: 40%; + line-height: 1.8em; +} + +div.cbi-value-field { + width: 58%; + margin-left: 40%; + padding: 0.25em 0; +} + +div.cbi-value-description { + font-size: 90%; + display: inline; +} + +div.cbi-section-create { + clear: left; + white-space: nowrap; + vertical-align: top; +} + +div.cbi-section-create .cbi-button { + margin: 0.25em; +} + +input.cbi-section-create-name { + margin-right: -0.25em; +} + +div.cbi-map-descr { + margin-bottom: 1em; +} + +div.cbi-optionals { + padding: 0.25em; + border-bottom: 1px dotted #bbbbbb; +} + +div.cbi-section-remove { + float: right; +} + +.cbi-section-node { + clear: both; + border: 1px solid #BBBBBB; + border-radius: 3px; + padding-bottom: 0; + position: relative; +} + +.cbi-section-node-tabbed { + border-top-left-radius: 0; +} + +.cbi-section-node .cbi-value-last { + border-bottom: none; +} + +.cbi-section-node table div { + padding-bottom: 0; + border-bottom: none; +} + +.cbi-section-node div.cbi-section-table-row { + margin: 0.25em; +} + +table.cbi-section-table { + width: 100%; + font-size: 95%; +} + +table.cbi-section-table th, +table.cbi-section-table td { + text-align: center; +} + +tr.cbi-section-table-descr th { + font-weight: normal; + font-size: 90%; + vertical-align: top; +} + +td.cbi-section-table-optionals { + text-align: left !important; + padding-top: 1em; +} + +.cbi-value-helpicon img { + vertical-align: bottom; +} + +div.cbi-error { + font-size: 95%; + font-weight: bold; + color: #ff0000; + background-color: #ffffff; +} + +td.cbi-value-error { + border-color: red; +} + +.cbi-value-error input, +.cbi-value-error select { + color: red; + background-color: #ffcccc; +} + +.cbi-section-error { + color: red; + background-color: white; + font-size: 95%; + border: 1px dotted red; + margin: 3px; + padding: 3px; +} + +.cbi-value-field var { + color: #2222FF; +} + +ul.cbi-tabmenu { + padding: 3px 0; + margin-left: 0 !important; + list-style-type: none; + position: relative; + z-index: 10; + top: 4px; + line-height: 20px; +} + +ul.cbi-tabmenu li.cbi-tab, +ul.cbi-tabmenu li.cbi-tab-disabled { + display: inline; + margin: 0; +} + +ul.cbi-tabmenu li.cbi-tab a, +ul.cbi-tabmenu li.cbi-tab-disabled a { + text-decoration: none; + padding: 3px 7px; + margin-right: 3px; + border: 1px solid #BBBBBB; + border-bottom: none; + border-radius: 3px 3px 0 0; + background-color: #EEEEEE; + color: #BBBBBB; +} + +ul.cbi-tabmenu li.cbi-tab-highlighted a { + color: #000000; + background-color: #FFEEAA; +} + +ul.cbi-tabmenu li a:hover { + color: #000000; +} + +ul.cbi-tabmenu li.cbi-tab a { + padding-top: 4px; + color: #000000; + background-color: #FFFFFF; +} + +div.cbi-tab-descr { + background-image: url(/luci-static/resources/cbi/help.gif); + background-position: 0.25em 50%; + background-repeat: no-repeat; + border-bottom: 1px solid #CCCCCC; + margin: 0.25em 0.25em 2em; + padding: 0.5em 0.5em 0.5em 2em; +} + +.left { + text-align: left !important; +} + +.right { + text-align: right !important; +} + +.luci { + position: absolute; + bottom: 0; + left: 1em; + height: 1.5em; + font-size: 80%; +} + +.luci a:link, +.luci a:visited { + background-color: transparent; + color: #666666; + text-decoration: none; + font-size: 70%; +} + +.inline { + display: inline; +} + +.error500 { + white-space: normal; + border: 1px dotted #ff0000; + background-color: #ffffff; + color: #000000; + padding: 0.5em; +} + +.errorbox { + border: 1px solid #FF0000; + background-color: #FFCCCC; + padding: 5px; + margin-bottom: 5px; +} + +.errorbox a { + color: #000000 !important; +} + + +.ifacebox { + background-color: #FFFFFF; + border: 1px solid #CCCCCC; + margin: 0 10px; + text-align: center; + white-space: nowrap; +} + +.ifacebox .ifacebox-head { + border-bottom: 1px solid #CCCCCC; + padding: 2px; +} + +.ifacebox .ifacebox-body { + padding: 2px; +} + + +.ifacebadge { + background-color: #FFFFFF; + border: 1px solid #CCCCCC; + padding: 2px; + margin-left: 2px; + display: inline-block; +} + +.ifacebadge-active { + border-color: #000000; + font-weight: bold; +} + + +.zonebadge { + padding: 2px; + display: inline-block; + white-space: nowrap; + cursor: pointer; +} + +.zonebadge em, +.zonebadge strong { + margin: 3px; + display: inline-block; +} + +.zonebadge input { + width: 6em; + height: 1.5em; +} + +.zonebadge-empty { + border: 1px dashed #AAAAAA; + color: #AAAAAA; + font-style: italic; + font-size: smaller; +} + + +.uci-change-list { + font-family: monospace; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + text-decoration: none; + border: 1px solid #00FF00; + background-color: #CCFFCC; + display: block; + padding: 2px; +} + +.uci-change-list del, +.uci-change-legend-label del { + text-decoration: none; + border: 1px solid #FF0000; + background-color: #FFCCCC; + display: block; + font-style: normal; + padding: 2px; +} + +.uci-change-list var, +.uci-change-legend-label var { + text-decoration: none; + border: 1px solid #CCCCCC; + background-color: #EEEEEE; + display: block; + font-style: normal; + padding: 2px; +} + +.uci-change-list var ins, +.uci-change-list var del { + /*display: inline;*/ + border: none; + white-space: pre; + font-style: normal; + padding: 0px; +} + +.uci-change-legend { + padding: 5px; +} + +.uci-change-legend-label { + width: 150px; + float: left; + font-size: 80%; +} + +.uci-change-legend-label>ins, +.uci-change-legend-label>del, +.uci-change-legend-label>var { + float: left; + margin-right: 4px; + width: 10px; + height: 10px; + display: block; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: 6px; + border: none; +} + + +} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css new file mode 100644 index 0000000000..14db3f86e5 --- /dev/null +++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css @@ -0,0 +1,77 @@ +/* obligatory IE6 Voodoo Code */ + +* html body { + padding-left: 5% !important; +} + +* html div#header { + margin-left: 100% !important; +} + +* html div#menubar { + margin-left: -5% !important; + width: 105% !important; +} + +* html ul.dropdowns li ul { + width: 10em; +} + +* html ul.dropdowns li li { + clear: both; + float: left; +} + +* html ul.dropdowns li li { + width: 100%; +} + +* html ul.dropdowns li li a { + height: 10%; +} + +* html div#maincontent { + margin-left: 0% !important; + width: 100% !important; +} + +* html div.cbi-value-description { + width: auto !important; +} + +* html div.cbi-value-field { + margin-left: 0 !important; + width: 100% !important; +} + +* html .cbi-input-text, +* html .cbi-input-user, +* html .cbi-input-select, +* html .cbi-input-password { + width: 50% !important; +} + +* html .cbi-input-user, +* html .cbi-input-password { + text-indent: 0 !important; + padding-left: 1.5em !important; +} + +* html .cbi-section legend { + background-color: #ffffff; + color: #555555; +} + +* html table.cbi-section-table td .cbi-input-text, +* html table.cbi-section-table td .cbi-input-select { + width: 100% !important; +} + +* html div.cbi-page-actions { + text-align: right !important; +} + +* html div.cbi-value-field input, +* html div.cbi-value-field select { + font-size: 90% !important; +} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css new file mode 100644 index 0000000000..9e569b28bd --- /dev/null +++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css @@ -0,0 +1,59 @@ +#tabmenu { + line-height: 0; +} + +ul.tabmenu { + zoom: 1; +} + +ul.l1 { + position: relative; +} + + +table.cbi-section-table td .cbi-input-text, +table.cbi-section-table td .cbi-input-select { + width: 95% !important; +} + + +.cbi-input-user, +.cbi-input-password { + text-indent: 0 !important; + padding-left: 1.5em !important; + width: 18.5em !important; +} + + +fieldset.cbi-section { + position: relative; + margin-top: 1em; + padding-top: 0.75em; + border: 1px solid #CCCCCC; + zoom: 1; +} + +fieldset.cbi-section legend { + position: absolute; + top: -0.75em; + left: 0.5em; +} + + +ul.cbi-tabmenu { + margin-bottom: 0; +} + +ul.cbi-tabmenu li.cbi-tab a { + position: static; /* fixes misplaced tab after page load */ + border-bottom: 1px solid white; +} + + +div.cbi-value { + zoom: 1; /* fixes hanging float */ +} + +div.cbi-value-field { + margin-left: 0 !important; +} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css new file mode 100644 index 0000000000..890988c417 --- /dev/null +++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css @@ -0,0 +1,12 @@ +fieldset.cbi-section { + position: relative; + margin-top: 1em; + padding-top: 0.75em; + border: 1px solid #CCCCCC; +} + +fieldset.cbi-section legend { + position: absolute; + top: -0.75em; + left: 0.5em; +} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png new file mode 100644 index 0000000000..c84c437cda Binary files /dev/null and b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png differ -- cgit v1.2.3