From f0730cd1c8882a465f068c17b7ba27c61df58024 Mon Sep 17 00:00:00 2001
From: z3d <z3d@mail.i2p>
Date: Mon, 9 Nov 2009 17:49:17 +0000
Subject: [PATCH] Introducing a new console theme, "midnight". Lightweight
 midnight blue theme, IE compatible.

---
 .../themes/console/midnight/console.css       | 817 ++++++++++++++++++
 .../themes/console/midnight/console_big.css   |  61 ++
 .../themes/console/midnight/default.css       | 239 +++++
 .../themes/console/midnight/i2ptunnel.css     | 180 ++++
 .../themes/console/midnight/ieshim.css        | 258 ++++++
 .../console/midnight/images/i2plogo.png       | Bin 0 -> 10216 bytes
 6 files changed, 1555 insertions(+)
 create mode 100644 installer/resources/themes/console/midnight/console.css
 create mode 100644 installer/resources/themes/console/midnight/console_big.css
 create mode 100644 installer/resources/themes/console/midnight/default.css
 create mode 100644 installer/resources/themes/console/midnight/i2ptunnel.css
 create mode 100644 installer/resources/themes/console/midnight/ieshim.css
 create mode 100644 installer/resources/themes/console/midnight/images/i2plogo.png

diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css
new file mode 100644
index 0000000000..38f83a7d71
--- /dev/null
+++ b/installer/resources/themes/console/midnight/console.css
@@ -0,0 +1,817 @@
+/* I2P Theme: Midnight */
+/* I2P Description: Minimalist Midnight Blue, based on Classic theme.*/
+/* Author: Dr|Z3d */
+
+
+body {
+     margin: 2px 0 0 2px;
+     padding: 0;
+     text-align: left;
+     background: #000;
+     color: #eef;
+     font: 9pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
+}
+
+.hide {
+     display: none;
+}
+
+img {
+     border: none;
+}
+
+pre {
+     overflow: auto;
+     font-size: 8pt !important;
+     width: 95%;
+     padding-top: 10px;
+}
+
+/* http proxy error sidepanel */
+
+div.logo {
+     float: left;
+     position-relative: top 15px ;
+     width: 200px;
+     margin: 0 0 0 20px;
+     padding: 10px 5px;
+     text-align: center;
+     border: 1px solid #99f;
+     background-color: #00000A;
+     -moz-box-shadow: inset 0px 0px 0px 2px #00000A;
+     -khtml-box-shadow: inset 0px 0px 0px 2px #00000A;
+}
+
+div.logo hr {
+     color: #99f;
+     background: #99f;
+     height: 1px;
+     border: 0px solid #99f;
+     margin: 8px -3px;
+}
+
+div.logo a:link, div.logo a:visited {
+     text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
+}
+
+div.logo a:active {
+     text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.5);
+     color: #f60;
+}
+
+div.logo a:hover {
+     text-shadow: 0px 0px 1px rgba(128, 0, 0, 0.5);
+     color: #f90;
+}
+
+/* http proxy error warning */
+
+div.warning {
+     margin: 20px 20px 10px 260px;
+     padding: 0px 20px 20px 75px;
+     background: #001;
+     border: 1px solid #99f;
+     text-align: left;
+     color: inherit;
+     background-image:url("../images/itoopie_sm.png");     
+     background-position: 12px center;
+     background-repeat:no-repeat;
+     -moz-box-shadow: inset 0px 0px 0px 1px #f60;
+     -khtml-box-shadow: inset 0px 0px 0px 1px #f60;
+}
+
+div.warning a:link {
+     color: #f60;
+     text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.3);
+}
+
+div.warning a:visited{
+     color: #f90;
+}
+
+div.warning a:hover{
+     color: #f90;
+  text-shadow: 0px 0px 1px rgba(255, 128, 0, 0.5);
+}
+
+div.warning a:active{
+     color: #900;
+}
+
+div.warning hr {
+     color: #fb7;
+     background: #fb7;
+     height: 1px;
+     border: 0px solid #fb7;
+     margin: 10px 0 5px 0;
+}
+
+div.warning h3 {
+     border-bottom: 1px solid #fb7;
+     padding-bottom: 10px;
+}
+
+/* console error messages */
+
+div.sorry {
+     padding: 20px;
+     background: #003;
+     margin: -2px 1px 0 200px;
+     border: 1px solid #99f;
+     text-align: justify;
+     -moz-box-shadow: inset 0px 0px 0px 1px #d00;
+     word-wrap: break-word;
+     font-weight: bold;
+     color: #eef;
+}
+
+div.sorry hr {
+     color: #eef;
+     background: #eef;
+     height: 1px;
+     border: 1px solid #99f;
+     margin: 10px 0;
+}
+
+div.toolbar {
+     margin: 0em 0em 2em 0em;
+     font-weight: bold;
+     display: none !important;
+}
+
+div.routersummaryouter {
+     float: left; 
+     width: 200px;
+     margin: 0 0 5px 0px;
+     padding: 0;
+     border: 0;
+     clear: left; /* fixes a bug in Opera */
+}
+
+div.routersummary { background: #00000A; width: 190px; color: inherit; margin: 0; 
+padding: 10px 1px 7px 1px; text-align: center !important; border: 1px solid 
+#99f; font-size: 9pt; word-wrap: break-word; font: 9pt/125%; -moz-box-shadow: 
+inset 0px 0px 0px 1px #00000A; }
+
+div.routersummary input[type=text] {
+     text-align: right !important;
+}
+
+div.routersummary hr {
+     color: #99f;
+     background: #99f;
+     height: 1px;
+     border-bottom: 0px solid #99f;
+     margin: 8px -1px 7px -1px;
+/*     -moz-box-shadow: inset 0px 1px 1px 1px #99f;*/
+}
+
+div.routersummary h3 {
+     border: 0px solid #f00;
+     font-size: 9.5pt;
+     letter-spacing: 0.05em;
+     margin: -6px 1px -6px 1px;
+     padding: 1px 0;
+     background: #002;
+     text-transform: uppercase;
+}
+
+div.routersummary h3 a {
+     text-decoration: none;
+     line-height: 105%;
+}
+
+div.routersummary h4 {
+     border: 0px solid #f00;
+     border-bottom: 0 !important;
+     font-size: 8.5pt;
+     letter-spacing: 0.05em;
+     margin: -6px 1px -5px 1px !important;
+     padding: 1px 3px;
+     background: #001;
+     text-transform: capitalize;
+     text-decoration: none !important;
+     color: #2b2;
+     line-height: 100% !important;
+}
+
+div.routersummary table {
+     border: 0;
+     text-align: center !important;
+     margin: -5px 0px -5px 2px;
+     width: 185px !important;
+     overflow: hidden;
+     font-size: 8pt;
+     padding: 0 -12px;
+     background-image: none !important;
+     background-color: transparent !important;
+}
+
+div.routersummary a {
+     line-height: 105%;
+}
+
+div.routersummary tr {
+     background-image: none !important;
+     background-color: transparent !important;
+     border: 0 !important;
+}
+
+div.tunnels table{
+     margin: -2px 0 -4px -4px !important;
+     text-align: right !important;
+}
+
+.tunnels tr {
+     padding: 4px 0 !important;
+}
+
+.tunnels td:first-child {
+     padding-right: 2px;
+}
+
+.tunnels td:last-child {
+     width: 16px;
+}     
+     
+div.routersummary form {
+     margin-top: -8px !important;
+     margin-bottom: -8px !important;     
+}
+
+div.refresh {
+     margin-top: 10px !important;
+     margin-bottom: 10px !important;
+     padding: 2px 0 !important;
+}
+
+div.routersummary p {
+     padding: 0;
+}     
+
+div.routersummary a {
+}
+
+div.routersummary a:link, div.routersummary a:visited {
+     text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
+}
+
+div.routersummary a:hover {
+     text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7);
+     color: #f60;
+}
+
+div.routersummary td {
+     padding: 0 1px;
+     background-image: none !important;
+     border: 0 !important;
+}
+
+div.main {
+     margin: 0px 5px 5px 200px;
+     padding: 15px 15px 10px 15px;
+     background: #00000A;
+     border: 1px solid #99f;
+     border-top: 0;
+     text-align: left;
+     color: #eef;
+     min-width: 570px;
+     -moz-box-shadow: inset 0px 0px 2px 0px #005;
+}
+
+div.main ul {
+     margin: -10px 0 -10px -10px;
+}
+
+div.main li {
+     padding: 0 0 5px 0;
+     list-style: square;
+     word-wrap: break-word;
+     margin-right: 20px;
+}
+
+div.main li:first-child {
+     padding-top: 15px;
+}
+
+div.main hr:last-child {
+     margin: 15px 0 10px 0;
+}
+
+div.main textarea {
+     width: 98% !important; 
+     margin: 2px 0 2px 5px;
+     min-height: 96px;
+     background: #001;
+     color: #eef;
+}
+
+div.main h2 {
+     margin-top: 20px;
+     margin-bottom: -5px;
+}
+
+div.welcome {
+     margin-top: 5px;
+}
+
+div.main h2:first-child, div.main h3:first-child {
+     margin-top: 0px; 
+     margin-bottom: -5px;
+}
+
+div.wideload h2 {
+     margin-bottom: 0px !important;
+}
+
+div.wideload h3:first-child {
+     margin-top: 0 !important;
+}
+
+div.wideload h3 {
+     margin-top: 15px !important;      
+     margin-bottom: 0px !important;
+}
+
+div.wideload p !important {
+     margin-top: 5px;
+}
+
+div.news {
+     margin: -1px 5px 0 200px;
+     padding: -10px 0px 8px 0px;
+     background: #001;
+     border: 1px solid #99f;
+     text-align: right;
+     color: #99f;
+     min-width: 600px;
+     padding-bottom: 8px;
+     padding-left: 10px;
+     padding-right: 10px;
+     -moz-box-shadow: inset 0px 0px 4px 2px #00000A;
+     font-size: 7pt;
+}
+
+/* convert the list entry to our title */
+
+div.news li {
+     text-align: justify;
+     list-style: none;
+     margin: 15px 15px -10px -20px;
+     padding: 0px 0 15px 0;
+     border-bottom: 1px dotted #99f;
+     border-top: 0px solid #99f;     
+     padding: 3px 5px 5px 0;
+     font-size: 10pt;
+     color: #eef;
+     text-transform: capitalize;
+}
+
+div.news p {
+     color: #eef;
+     font-size: 9pt;
+     margin-bottom: -10px;
+}
+/*
+div.news p:first-child {
+     padding-top: 15px !important;
+}
+
+ 
+div.news p:nth-child(2n) {
+     padding-top: 15px !important;
+}
+*/
+div.news p:last-child {
+     margin-bottom: 10px;
+}
+
+div.news a:link {
+     color: #aaf;
+     text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3);
+}
+
+div.news a:visited {
+     color: #99f !important;
+     text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3);
+}
+
+div.news hr {
+     color: #99f;
+     background: #99f;
+     height: 1px;
+     border: 0px solid #99f;
+     margin: 2px 0 2px 0;
+}
+
+div.confignav {
+     padding: 12px 0 15px 0;
+     background: #000018;
+     margin: -10px -16px 0 -16px;
+     border: 1px solid #99f;
+     -moz-box-shadow: inset 0px 0px 4px 2px #00000A;
+}
+
+div.configure {
+     margin: 1px -20px 0 -20px;
+     padding: 0px 20px 0px 20px;
+}
+
+div.configure hr {
+     margin: 15px 0;
+}
+
+div.configure table {
+     font-size: 9pt;
+     font-weight: bold;
+     border: 1px solid #99f;
+}
+
+div.configure tr, div.configure td {
+     padding: 10px 2px;
+}
+
+div.configure tr {
+     -moz-box-shadow: inset 0px 0px 1px 0px #000;
+}
+
+div.configure li:first-child, div.main li:first-child {
+     margin-top: -10px;
+}
+
+div.configure li:last-child {
+     margin-bottom: -5px;
+}
+
+div.configure h2:first-child {
+     margin-top: 15px;
+}
+
+.topshimten {
+     margin-top: 15px;
+     margin-bottom: 15px;
+} 
+
+div.messages {
+     padding: 0px 10px;
+     background: #001;
+     border: 1px solid #99f;
+     border-right: 0;
+     margin: -1px -15px 10px -16px;
+     text-align: center;
+     font-size: 9pt;
+     font-weight: bold;
+     color: #474;
+     -moz-box-shadow: inset 0px 0px 4px 2px #00000A;
+}
+
+div.messages li, div.messages ul {
+     padding: 10px 0 0 5px;
+     margin: -10px 0 0 0;
+}
+
+div.messages span.error {
+     color: #d00000;
+}
+
+div.messages span.notice {
+     font-style: italic;
+}
+
+h1 {
+     font-size: 18pt;
+     text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.4);
+     text-align: center;
+     border: 1px solid #99f;
+     padding: 13px 10px 12px 10px;
+     margin: 5px 5px 0 200px;
+     line-height: 93%;
+     text-transform: uppercase;
+     letter-spacing: 0.3em;
+     background: #001;
+     min-width: 600px;
+     -moz-box-shadow: inset 0px 0px 4px 2px #00000A;
+     line-height: 100%;
+     color: #fff;
+}
+
+h2 {
+     font-size: 14pt;
+     padding: 5px 10px 10px 10px;
+     border: 1px solid #99f;
+     border-top: 1px solid #99f;
+     letter-spacing: 0.04em;
+     background: #000008;
+}
+
+h3 {
+     font-size: 12pt;
+     padding: 0 10px 10px 10px;
+     border-bottom: 1px solid #99f;
+     border-top: 0px solid #99f;
+     letter-spacing: 0.04em;
+     margin-bottom: 10px;
+     font-weight: bold !important;
+     text-transform: capitalize;
+}
+
+h3 a {
+     font-weight: bold !important;
+}
+
+.proxyfooter{
+     font-size: 7pt;
+     display: none !important;
+}
+
+table {
+     border-collapse: collapse; 
+     border: 1px solid #99f;
+     margin: 0 0 5px 0;
+     cell-padding: 1px;
+     font-size: 7.5pt;
+     background: #000;
+     width: 100%;
+}
+
+table hr {
+     padding: 0px 0;
+     color: #000;
+     background: #000;
+     border: 0px solid #99f;
+     margin: 0px -5px;
+     height: 1px;
+}
+
+table tt {
+     font-size: 7.5pt;
+}
+
+th {
+     background-color: #000;
+     padding: 8px 2px;
+     text-align: center;
+     border-bottom: 1px solid #99f;
+}
+
+tt {
+     font-size: 8pt;
+}
+
+tt, pre {
+     font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
+}
+     
+td {
+     padding: 4px;
+}
+
+tr:nth-child(even) {
+     background-color: #001;
+}
+
+tr:nth-child(odd) {
+     background-color: #000009;
+}
+
+hr {
+     color: #99f;
+     background: #99f;
+     height: 1px;
+     border: 0px solid #99f;
+     margin: 3px 0;
+}
+
+.statusnotes {
+     font-style: italic;
+     font-size: 8pt;
+     color: #eef;
+     text-align: center;
+     margin: -7px 0 7px 0; 
+     background: #000;
+     border: 1px solid #99f;
+     border-top: 0;
+     padding: 4px 0 2px 0;
+}
+
+div.joblog {
+     margin: 10px 0;
+     line-height: 130% !important;
+     font-size: 90%;
+}
+
+div.joblog li {
+     word-wrap: break-word !important;
+     text-align: left !important;
+     line-height: 130% !important;
+     margin-right: 10px;
+}
+
+div.joblog li i {
+     color: #bbb;
+     text-transform: capitalize;
+     font-style: normal;
+     font-weight: bold;
+}
+
+div.joblog ul {
+     word-wrap: break-word !important;
+     text-align: justify;
+}
+
+div.joblog li:first-child {
+     margin-top: -10px;
+}
+
+div.joblog li:last-child {
+     margin-bottom: -10px;
+}
+
+div.joblog form:first-child {
+     margin-top: 10px;
+}
+
+div.joblog table {
+     margin-top: 15px;
+}
+
+div.joblog p {
+     line-height: 130%;
+}
+
+div.joblog h3 {
+     margin: 10px 0 20px 0;
+}
+
+div.joblog h3:first-child {
+     margin: 5px 0 15px 0;
+}
+
+div.joblog hr {
+     margin: 15px 0 15px;
+}
+
+div.joblog ol {
+     margin-bottom: 0px;
+}
+ 
+input {
+     margin: 3px 5px 3px 0;
+     vertical-align: middle;
+}
+
+input[type=text] {
+     margin: 3px 5px 3px 5px;
+     vertical-align: middle;
+}
+
+select {
+     margin: 3px 5px 3px 5px;
+     vertical-align: middle;
+}
+
+input[type=text], select {
+     background: #001;
+     color: #eef;
+     border: 1px solid #99f;
+}
+submit {
+     margin: 3px 5px 3px 5px;
+     padding 2px 0;
+     font: 8pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
+}
+
+p {
+     padding: 5px 20px 0px 20px;
+     text-align: justify;
+}
+
+.formaction {
+     text-align: right;
+     margin: -10px -5px;
+}
+
+.langbox {
+     margin: 15px -20px 0px 5px;
+     color: #eef;
+     font-size: 7pt;
+     width: 220px;
+     text-align: center;
+     float: right;
+     valign: middle;
+}
+
+.langbox img {
+     padding: 0 2px; /* Ignored by IE8 */
+}
+
+.links {
+     padding-bottom: -2px;
+     text-align: justify;
+     margin-top: 5px !important;
+}
+
+.links li {
+     list-style-image: url("../images/link_dark.png") !important;
+}
+
+a:link{
+     color: #bbf;
+     text-decoration: none;
+     font-weight: bold;
+     word-wrap: break-word;
+}
+
+a:visited{
+     color: #99f;
+     text-decoration: none;
+     font-weight: bold;
+}
+
+a:hover{
+     color: #f60;
+     text-decoration: underline;
+     font-weight: bold;
+}
+
+a:active{
+     color: #f93;
+     text-decoration: underline;
+     font-weight: bold;
+}
+
+pre {
+     font-size: 9pt;
+     margin: 0px 20px;
+}
+
+tt {
+     font-size: 9pt;
+     font-weight: bold;
+     color: darkgreen;
+}
+
+.tablefooter {
+     border: 1px solid #99f;
+}
+
+.tablefooter tr, .tablefooter td {
+     background: #000;
+     font-size: 8pt;
+     font-weight: bold;
+     line-height: 150%;
+     word-wrap: nowrap;
+     padding: 8px 1px;
+     border-top: 2px solid #99f;
+}
+
+.tidylist {
+     text-align: justify;
+     padding-right: 30px;
+     margin-right: 20px;
+}
+
+div.graphspanel {
+     padding: 5px 0px 20px 0px;
+     margin: -16px -16px -11px -16px;
+     background: #000012;
+     -moz-border-radius: 4px;
+     -khtml-border-radius: 4px;
+     border-radius: 4px;
+     border: 1px solid #99f;
+     -moz-box-shadow: inset 0px 0px 1px 0px #002;
+     text-align: center !important;   
+}
+
+div.graphspanel img {
+     border: 1px solid #77f;
+     padding: 2px;
+     margin: 6px;
+     background: #ccf;
+     -moz-box-shadow: inset 0px 0px 0px 0px #002;
+     opacity: 0.9;
+}
+
+div.graphspanel img:hover {
+     border: 1px solid #003;
+     padding: 2px;
+     margin: 6px;
+     text-align: center !important;
+     background: #eef;
+     -moz-box-shadow: inset 0px 0px 2px 1px #f60;
+     opacity: 1;
+}
+
+div.graphspanel hr {
+     margin: 10px 0;
+}
+
+div.graphspanel form:last-child {
+     text-align: left;
+     margin: 0 20px;
+}
+
+div.graphspanel h3 {
+     text-align: left;
+     margin: 10px 20px 10px 20px;
+}
\ No newline at end of file
diff --git a/installer/resources/themes/console/midnight/console_big.css b/installer/resources/themes/console/midnight/console_big.css
new file mode 100644
index 0000000000..34a3f5180e
--- /dev/null
+++ b/installer/resources/themes/console/midnight/console_big.css
@@ -0,0 +1,61 @@
+/* I2P Theme: I2P Classic & Midnight Theme Override */
+/* I2P Description: Larger fontsize override for sidepanel to accomodate foreign charactersets */
+/* Author: Dr|Z3d */
+
+
+/* sidepanel */
+
+div.routersummary {
+     font: 9.5pt/125%;
+}
+
+div.routersummary h3 {
+     font-size: 12.5pt;
+}
+
+div.routersummary h4 {
+     font-size: 11.5pt;
+     letter-spacing: 0;
+}
+
+div.routersummary table {
+     font-size: 9pt;
+     margin: -5px 0px -5px 1px;
+     width: 188px !important;
+}
+
+div.routersummary table a:link, div.routersummary table a:visited {
+     font-size: 10.5pt;
+}
+
+div.tunnels a{
+     font-size: 8pt !important;
+}
+
+/* global overrides */
+
+a, b, div.routersummary h3 a, div.routersummary h4 {
+    font-weight: normal !important;
+    font-size: 100%;
+}
+
+body {
+     font: 10pt Verdana, "Bitstream Vera Sans", Helvetica, Sans, sans-serif;
+}
+
+div.main, div.main p, div.news p {
+     line-height: 140%;
+}
+
+div.joblog li i {
+     font-weight: normaL;
+}
+
+b, div.joblog b {
+    color: #ee8;
+    font-size: 110%;
+}
+
+table code {
+     font-size: 120%;
+}
\ No newline at end of file
diff --git a/installer/resources/themes/console/midnight/default.css b/installer/resources/themes/console/midnight/default.css
new file mode 100644
index 0000000000..61c8dc03f9
--- /dev/null
+++ b/installer/resources/themes/console/midnight/default.css
@@ -0,0 +1,239 @@
+/* I2P Theme: Midnight - I2P Tunnel Manager */
+/* I2P Description: Minimalist Midnight Blue, based on Classic theme.*/
+/* Author: Dr|Z3d */
+
+body {
+     margin: 0px;
+     padding: 0px;
+     text-align: center;
+     font: 10pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
+     background: #000;
+     color: #eef;
+     -moz-box-sizing: border-box;
+     box-sizing: border-box;
+}
+
+div {
+     -moz-box-sizing: border-box;
+     box-sizing: border-box;
+}
+
+h4, label {
+     margin: 0px;
+     padding: 2px;
+     float: left;
+     width: 150px;
+     height: 24px;
+     font-weight: normal;
+     text-align: right;
+     font-size: 8.5pt;
+     -moz-box-sizing: border-box;
+     box-sizing: border-box;
+}
+
+h4 {
+     font-size: 10.5pt;
+     text-align: center !important;
+     font-weight: bold;
+     border: 1px solid #99f;
+     border-top: 2px solid #99f;
+     margin: -6px 0 5px -10px !important;
+     padding: 5px 10px 25px 10px;
+     background: #001;
+     text-shadow: 0px 0px 1px rgba(32, 32, 192, 0.3);
+     text-transform: uppercase;
+     white-space: nowrap;
+     width: 782px;
+     letter-spacing: 0.09em;
+}
+
+label {
+     font-style: italic;
+     margin: 0 3px 0 -3px;
+}
+
+a {
+     text-decoration: none;
+}
+
+form {
+     margin: 0px;
+}
+
+textarea, input, select, button, a {
+     -moz-box-sizing: border-box;
+     box-sizing: border-box;
+     font: 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
+     float: left;
+     margin: 2px 0 5px 0;
+     background: #001;
+     color: #eef;
+}
+
+button {
+     float: none;
+     height: 20px !important;
+}
+
+textarea {
+     border: 1px solid #99f;
+     background: #000;
+     color: #eef;
+}
+
+br {
+     clear: left;
+}
+
+div.statusNotRunning {
+     float: left;
+     width: 82px;
+     height: 24px;
+     color: #d00;
+}
+
+div.statusRunning {
+     float: left;
+     width: 82px;
+     height: 24px;
+     color: #0d0;
+}
+
+div.statusStarting {
+     float: left;
+     width: 82px;
+     height: 24px;
+     color: #393;
+}
+
+hr {
+     display: none;
+}
+
+.separator, .subdivider {
+     clear: both;
+     height: 1px;
+     margin: 5px -8px 5px -8px;
+     border-bottom: 1px solid #99f;
+}
+
+.subdivider {
+     border-bottom: 1px dotted #99f;
+     margin: 0 0 10px 0;
+}
+
+.freetext {
+     width: 150px;
+     height: 22px;
+     border: 1px solid #99f;
+}
+
+.control {
+     margin: 2px;
+     padding: 2px;
+     overflow: hidden;
+     height: 20px;
+     width: 60px;
+     font-weight: bold;
+     background: #ddd;
+     color: #001 !important;
+     border: 1px outset #ddddc0;
+     text-align: center;
+     vertical-align: middle;
+     white-space: nowrap;
+     text-decoration: none;
+}
+
+.control:hover {
+     background: #229;
+     color: #fff;
+     text-decoration: none;
+}
+
+.control:active {
+     border: 2px inset;
+}
+
+.panel {
+     width: 790px;
+     margin: 16px auto 16px auto;
+     padding: 5px 10px;
+     overflow: hidden;
+     text-align: left;
+     font-size: 8pt;
+     background: #001;
+     border: 4px solid #99f;
+     -moz-box-shadow: inset 0px 0px 0px 1px #99f;
+}
+
+.panel .footer {
+
+     padding: 4px;
+}
+
+.toolbox {
+     width: 100%;
+}
+
+.rowItem {
+     width: 750px;
+     float: left;
+     margin: 0px;
+}
+
+.comment {
+     font-style: italic;
+     white-space: nowrap;
+}
+
+.text {
+     height: 24px;
+     width: 150px;
+     padding: 2px 0 0 2px;
+     float: left;
+     margin: 0;
+     font-weight: bold;
+}
+
+.accessKey {
+     text-decoration: underline;
+}
+
+#globalOperationsPanel {
+     background: #001;
+     border: 4px solid #99f;
+     -moz-box-shadow: inset 0px 0px 0px 1px #900;
+     padding: 5px 5px 10px 5px;
+     text-align: right;
+}
+
+#globalOperationsPanel .control {
+     width: 100px !important;
+     margin-top: 3px; 
+     float: right;
+}
+
+a:link{
+     color: #bbf;
+     text-decoration: none;
+     font-weight: bold;
+     word-wrap: break-word;
+}
+
+a:visited{
+     color: #aaf;
+     text-decoration: none;
+     font-weight: bold;
+}
+
+a:hover{
+     color: #f60;
+     text-decoration: underline;
+     font-weight: bold;
+}
+
+a:active{
+     color: #f93;
+     text-decoration: underline;
+     font-weight: bold;
+}
\ No newline at end of file
diff --git a/installer/resources/themes/console/midnight/i2ptunnel.css b/installer/resources/themes/console/midnight/i2ptunnel.css
new file mode 100644
index 0000000000..2128c7e737
--- /dev/null
+++ b/installer/resources/themes/console/midnight/i2ptunnel.css
@@ -0,0 +1,180 @@
+/* I2P Tunnel Edit Page
+*/
+
+#tunnelEditPage input {
+    width : 458px;
+}
+
+#tunnelEditPage select {
+    width : 308px;
+}
+
+#tunnelEditPage option[selected] {
+    color: green;
+}
+
+#tunnelEditPage #targetField,
+#tunnelEditPage #accessField,
+#tunnelEditPage #optionsField {
+    height : 48px;
+    width : 150px;
+}
+#tunnelEditPage #tunnelOptionsField {
+    height : 96px;
+    width : 150px;
+}
+
+#tunnelEditPage #targetField label,
+#tunnelEditPage #accessField label,
+#tunnelEditPage #tunnelOptionsField label,
+#tunnelEditPage #optionsField label{
+    height : 48px;
+    width : 150px;
+}
+
+#tunnelEditPage #reachField,
+#tunnelEditPage #hostField,
+#tunnelEditPage #depthField,
+#tunnelEditPage #countField,
+#tunnelEditPage #optionsHostField {
+    width : 304px;
+    margin-right: 4px;
+}
+
+#tunnelEditPage #portField, 
+#tunnelEditPage #optionsPortField, 
+#tunnelEditPage #backupField,
+#tunnelEditPage #varianceField {
+    width : 150px;
+
+}
+
+#tunnelEditPage #reachField label,
+#tunnelEditPage #hostField label,
+#tunnelEditPage #portField label,
+#tunnelEditPage #optionsHostField label, 
+#tunnelEditPage #optionsPortField label, 
+#tunnelEditPage #depthField label,
+#tunnelEditPage #countField label,
+#tunnelEditPage #backupField label,
+#tunnelEditPage #varianceField label {
+    text-align : left;
+    
+}
+
+#tunnelEditPage #otherField label {
+    width : 300px;
+}
+
+#tunnelEditPage #reachableByOther,
+#tunnelEditPage #tunnelDepth, 
+#tunnelEditPage #tunnelQuantity,
+#tunnelEditPage #targetHost, 
+#tunnelEditPage #clientHost {
+    width : 306px;
+}
+
+#tunnelEditPage #port {
+    width : 80px;
+}
+
+#tunnelEditPage #targetPort,
+#tunnelEditPage #clientPort,
+#tunnelEditPage #tunnelBackupQuantity,
+#tunnelEditPage #tunnelVariance {
+    width : 150px;
+}  
+
+#tunnelEditPage #shared,
+#tunnelEditPage #connectDelay,
+#tunnelEditPage #startOnLoad {
+    width : 16px;
+}
+
+#tunnelEditPage label {
+    width : 150px;
+    font-weight : bold;
+    text-align : right;
+    float : left;
+}
+
+/* I2P Tunnel List Page
+*/
+
+#tunnelListPage .rowItem {
+    width : 150px;
+}
+
+#tunnelListPage select {
+    width : 150px;
+}
+
+#tunnelListPage textarea {
+    width : 100%;
+    height : 88px;
+    padding : 0 0 0 4px;
+    color: green;
+    margin-bottom: 7px;
+}
+
+#tunnelListPage .footer .control {
+    margin-left: 2px;
+}
+
+#tunnelListPage .footer label {
+    text-align : right;
+    height : 24px;
+    width : 360px;
+    float : left;
+
+}
+
+/* Use Leary and Langridge content replacement methods (LIR)
+** to embed accessibility information into the document.
+** Should allow the lists to be rendered nicely by
+** screen readers. (and lynx!)
+*/
+
+#tunnelListPage label {
+    height : 0;
+    width : 0;
+    overflow : hidden;
+}
+
+#tunnelListPage .nameHeaderField label,
+#tunnelListPage .portHeaderField label,
+#tunnelListPage .typeHeaderField label,
+#tunnelListPage .interfaceHeaderField label,
+#tunnelListPage .targetHeaderField label,
+#tunnelListPage .previewHeaderField label,
+#tunnelListPage .statusHeaderField label {
+    text-align : left;
+    width : 150px;
+    height : 24px;
+    float : left;
+}
+
+#tunnelListPage .targetField,
+#tunnelListPage .targetField .text,
+#tunnelListPage .targetHeaderField,
+#tunnelListPage .targetHeaderField label {
+    width : 300px;
+}
+
+#tunnelListPage .descriptionField,
+#tunnelListPage .destinationField {
+    width : 750px;
+}
+
+#tunnelListPage .descriptionField .text,
+#tunnelListPage .destinationField input {
+    width : 450px;
+}
+
+#tunnelListPage .descriptionField label,
+#tunnelListPage .destinationField label {
+    text-align : right;
+    width : 150px;
+    height : 24px;
+    float : left;
+}
diff --git a/installer/resources/themes/console/midnight/ieshim.css b/installer/resources/themes/console/midnight/ieshim.css
new file mode 100644
index 0000000000..4feeadb80c
--- /dev/null
+++ b/installer/resources/themes/console/midnight/ieshim.css
@@ -0,0 +1,258 @@
+/* I2P Theme: Midnight - IE Override */
+/* I2P Description: Minimalist Midnight Blue, based on Classic theme.*/
+/* Author: Dr|Z3d */
+
+/* Welcome to the wonderful world of kludgey IE fixes */
+/* Note not fully tested with Midnight theme */
+
+.wideload {
+     overflow: auto;
+     width: 100%;
+}
+
+.formaction {
+     text-align: left !important;
+     margin: -10px 0 10px 0;
+}
+
+div.configure {
+     text-align: center;
+}
+
+div.configure p, div.configure table  {
+     text-align: justify;
+}
+
+div.main ul {
+     margin-right: 20px;
+}
+
+div.configure textarea {
+     width: 450px !important;
+}
+
+div.configure input {
+     margin-left: 5px;
+}
+
+div.configure table {
+     width: 550px !important;
+     text-align: center;
+}
+
+h1 {
+     padding: 15px 10px 16px 10px !important;
+     margin: 0 0px 0 17	5px !important;
+     background-color: #000 !important; /* background page color to fix overflow issue */
+     color: #eef;
+}
+
+h2 {
+     padding-top: 0;
+     text-align: left !important;
+}
+
+h3 {
+     margin-top: 10px;
+     text-align: left !important
+}
+
+div.confignav {
+     padding: 15px 0 15px 0;
+     border-left: 0px;
+     margin-left: -15px;
+     border-top: 5px solid #000;
+     margin-bottom: 10px !important;
+}
+
+div.messages {
+     border-left: 0;
+     border-right: 0;     
+     margin: -10px -15px 0px -15px;
+}
+
+div.main, div.news {
+     margin: -5px 0px 10px 185px;
+     border: 5px solid #000;
+}
+
+div.main hr, div.news hr {
+     margin: 0;	
+}
+
+div.main {
+     border-top: 5px solid #000;
+}
+
+div.news {
+     border-left: 5px solid #000;
+     margin: -5px 0px 0 185px;
+     padding-bottom: 8px;
+}
+
+div.news hr {
+     color: #bbf;
+     background: #bbf;
+     height: 3px;
+     border: 0px;
+     margin: 0 -10px 0 -13px !important;
+}     
+
+div.routersummary {
+     color: #001;
+     padding-left: 0px;
+     border-left: 5px solid #bbf;
+     text-align: center !important;
+     overflow: hidden; /* prevents IE from borking the sidepanel */
+}
+
+div.routersummary submit {
+     padding: 0;
+     margin-bottom: 5px;
+}
+
+div.routersummary input[type=text] {
+     text-align: right !important;
+}
+
+div.routersummary hr {
+     color: #eef;
+     background: #eef;
+     height: 2px;
+     border-bottom: 1px solid #eef;
+     margin: 8px 1px 7px 1px;
+     -moz-box-shadow: inset 0px 1px 1px 1px #99f;
+}
+
+div.routersummary h3 {
+     border: 0px solid #f00;
+     text-align: center !important;
+     font-size: 9pt;
+     letter-spacing: 0.05em;
+     margin: -14px 0px -15px 1px;
+     padding: 5px 0px 5px 0px;
+     background: #c5d5fb;
+     text-transform: uppercase;
+}
+
+div.routersummary h4 {
+     border: 0px solid #f00;
+     border-bottom: 0 !important;
+     font-size: 8.5pt;
+     letter-spacing: 0.05em;
+     margin: -14px 0px -15px 1px !important;
+     padding: 2px 3px 3px 3px;
+     background: #c1d1f7;
+     text-transform: capitalize;
+     text-decoration: none !important;
+     color: #2b2;
+     text-align: center !important;
+}
+
+div.routersummary table {
+     border: 0;
+     text-align: center !important;
+     margin: -5px 5px;
+     width: 175px !important;
+     overflow: hidden;
+     font-size: 8pt;
+     padding: 0px -10px;
+     background-image: none !important;
+     background-color: transparent !important;
+     text-align: center !important;
+}
+
+div.routersummary tr {
+     background-image: none !important;
+     background-color: transparent !important;
+     border: 0 !important;
+}
+
+div.routersummary form {
+     margin-top: -25px !important;
+     margin-bottom: -25px !important;
+     text-align: center !important;
+}
+
+div.routersummary p {
+     padding: 0;
+}     
+
+/*
+div.routersummary img {
+     margin: 5px -10px -5px -10px;
+     overflow: hidden;
+}     
+*/
+
+div.routersummary a:link, div.routersummary a:visited {
+     text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
+}
+
+div.routersummary a:hover {
+     text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7);
+     color: #f60;
+}
+
+div.routersummary td {
+     padding: 2px 4px;
+     background-image: none !important;
+     border: 0 !important;
+}
+
+div.routersummary tr:nth-child(even) {
+     background-color: #f60;
+     background-image: none !important;
+}
+
+div.routersummarytr:nth-child(odd) {
+     background-color: #f00;
+     background-image: none !important;
+}
+
+div.news li {
+     padding-top: 0px	0px !important;
+     margin-bottom: -23px !important;
+}
+
+div.logo {
+}
+
+div.warning {
+     padding: 0px 20px 20px 80px;
+     margin-top: -20px;
+     margin-left: -10px !important;
+}
+
+.langbox {
+     margin: 22px -20px 0px 5px;
+}
+
+td {
+     text-align: left;
+}
+
+th {
+     text-align: left;
+     padding-left: 3px; 
+     padding-right: 1px;
+}
+
+div.configure hr{
+     margin: 10px 0 15px 0;
+}
+
+input {
+     padding: 0;
+}
+
+div.graphspanel img {
+     border: 1px solid #99f;
+     margin: 6px 0 !important;
+     background: #ddf;
+     -moz-box-shadow: inset 0px 0px 1px 1px #99f;
+}
+
+div.graphspanel hr {
+     margin: 20px 0;
+}
\ No newline at end of file
diff --git a/installer/resources/themes/console/midnight/images/i2plogo.png b/installer/resources/themes/console/midnight/images/i2plogo.png
new file mode 100644
index 0000000000000000000000000000000000000000..1567c881414257f2455f92ac224d20914ec133b7
GIT binary patch
literal 10216
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

literal 0
HcmV?d00001

-- 
GitLab