diff --git a/.gitignore b/.gitignore
index c827e24bf..84fbc1448 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ Netburner.txt
/dist/*.map
/tests/*.map
/tests/*.bundle.*
+/tests/*.css
diff --git a/css/_mixins.scss b/css/_mixins.scss
new file mode 100644
index 000000000..ee30eaef3
--- /dev/null
+++ b/css/_mixins.scss
@@ -0,0 +1,61 @@
+@mixin animation($property) {
+ -webkit-animation: $property;
+ -moz-animation: $property;
+ -ms-animation: $property;
+ -o-animation: $property;
+ animation: $property;
+}
+
+@mixin borderRadius($property) {
+ -webkit-border-radius: $property;
+ -moz-border-radius: $property;
+ border-radius: $property;
+}
+
+@mixin boxShadow($value) {
+ -webkit-box-shadow: $value;
+ -moz-box-shadow: $value;
+ box-shadow: $value;
+}
+
+@mixin keyframes($animationName) {
+ @-webkit-keyframes #{$animationName} {
+ $browser: '-webkit-' !global;
+ @content;
+ }
+
+ @-moz-keyframes #{$animationName} {
+ $browser: '-moz-' !global;
+ @content;
+ }
+
+ @-ms-keyframes #{$animationName} {
+ $browser: '-ms-' !global;
+ @content;
+ }
+
+ @-o-keyframes #{$animationName} {
+ $browser: '-o-' !global;
+ @content;
+ }
+
+ @keyframes #{$animationName} {
+ $browser: '' !global;
+ @content;
+ }
+}
+
+@mixin transform($property) {
+ -webkit-transform: $property;
+ -moz-transform: $property;
+ -ms-transform: $property;
+ -o-transform: $property;
+ transform: $property;
+}
+
+@mixin userSelect($value) {
+ -webkit-user-select: $value;
+ -moz-user-select: $value;
+ -ms-user-select: $value;
+ user-select: $value;
+}
diff --git a/css/_reset.scss b/css/_reset.scss
new file mode 100644
index 000000000..84877ec88
--- /dev/null
+++ b/css/_reset.scss
@@ -0,0 +1,15 @@
+@import "theme";
+
+* {
+ font-size: $defaultFontSize;
+ font-family: $fontFamily;
+}
+
+*,
+*:before,
+*:after {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ vertical-align: top;
+}
diff --git a/css/_theme.scss b/css/_theme.scss
new file mode 100644
index 000000000..e9ffd2225
--- /dev/null
+++ b/css/_theme.scss
@@ -0,0 +1,2 @@
+$fontFamily: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman';
+$defaultFontSize: 16px;
diff --git a/css/bladeburner.css b/css/bladeburner.scss
similarity index 77%
rename from css/bladeburner.css
rename to css/bladeburner.scss
index 149a5d0cf..163bb6b63 100644
--- a/css/bladeburner.css
+++ b/css/bladeburner.scss
@@ -1,9 +1,13 @@
-#bladeburner-container p,
-#bladeburner-container pre,
-#bladeburner-container a,
-#bladeburner-container div,
-#bladeburner-container td {
- font-size: 13px;
+@import "theme";
+
+#bladeburner-container {
+ a,
+ div,
+ p,
+ pre,
+ td {
+ font-size: $defaultFontSize * 0.8125;
+ }
}
.bladeburner-action {
@@ -11,10 +15,10 @@
margin: 7px;
padding: 7px;
white-space: pre-wrap;
-}
-.bladeburner-action pre {
- white-space: pre-wrap;
+ pre {
+ white-space: pre-wrap;
+ }
}
/* Whatever action is currently active */
@@ -23,21 +27,25 @@
}
/* Action & Skills panel navigation button */
-.bladeburner-nav-button {
+%bladburner-nav-button {
border: 1px solid #fff;
- color: #fff;
- padding: 2px;
margin: 2px;
+ padding: 2px;
}
-.bladeburner-nav-button:hover {
- background-color: #3d4044;
+.bladeburner-nav-button {
+ @extend %bladburner-nav-button;
+
+ color: #fff;
+
+ &:hover {
+ background-color: #3d4044;
+ }
}
.bladeburner-nav-button-inactive {
- border: 1px solid #fff;
- padding: 2px;
- margin: 2px;
+ @extend %bladburner-nav-button;
+
text-decoration: none;
background-color: #555;
cursor: default;
@@ -76,7 +84,7 @@
margin: 0 !important;
border: 0;
background-color: var(--my-background-color);
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
outline: none;
color: var(--my-font-color);
flex: 1 1 auto;
diff --git a/css/companymanagement.css b/css/companymanagement.scss
similarity index 91%
rename from css/companymanagement.css
rename to css/companymanagement.scss
index 8276cf5cb..8bb991d8a 100644
--- a/css/companymanagement.css
+++ b/css/companymanagement.scss
@@ -1,7 +1,10 @@
+@import "mixins";
+@import "theme";
+
#cmpy-mgmt-container p,
#cmpy-mgmt-container a,
#cmpy-mgmt-container div {
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
}
/* Header tabs */
@@ -118,10 +121,14 @@
margin: 2px;
padding: 6px;
border-radius: 25px;
- font-size: "12px";
+ font-size: $defaultFontSize * 0.75;
color: var(--my-font-color);
}
.cmpy-mgmt-upgrade-div:hover {
background-color: #333;
}
+
+.cmpy-mgmt-advertising-info {
+ font-size: $defaultFontSize * 0.75;
+}
diff --git a/css/interactivetutorial.css b/css/interactivetutorial.scss
similarity index 60%
rename from css/interactivetutorial.css
rename to css/interactivetutorial.scss
index 095a626c8..15b8f3cc9 100644
--- a/css/interactivetutorial.css
+++ b/css/interactivetutorial.scss
@@ -1,3 +1,6 @@
+@import "mixins";
+@import "theme";
+
/* interactivetutorial.css */
#interactive-tutorial-wrapper {
position: relative;
@@ -15,10 +18,10 @@
overflow: auto; /* Enable scroll if needed */
background-color: #444; /* Fallback color */
color: #fff;
-}
-#interactive-tutorial-container > strong {
- background-color: #444;
+ > strong {
+ background-color: #444;
+ }
}
#interactive-tutorial-text {
@@ -31,16 +34,20 @@
#interactive-tutorial-exit,
#interactive-tutorial-next,
#interactive-tutorial-back {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
color: #aaa;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
background-color: #000;
+
+ &:hover,
+ &:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+ }
}
#interactive-tutorial-exit {
@@ -55,14 +62,3 @@
#interactive-tutorial-next {
float: right;
}
-
-#interactive-tutorial-exit:hover,
-#interactive-tutorial-exit:focus,
-#interactive-tutorial-next:hover,
-#interactive-tutorial-next:focus,
-#interactive-tutorial-back:hover,
-#interactive-tutorial-back:focus {
- color: #fff;
- text-decoration: none;
- cursor: pointer;
-}
diff --git a/css/loader.css b/css/loader.css
deleted file mode 100644
index 3c3681e6d..000000000
--- a/css/loader.css
+++ /dev/null
@@ -1,148 +0,0 @@
-@-webkit-keyframes LOADERSPINNER {
- 0% { -webkit-transform: translate(-50%, -50%) rotate(0deg); }
- 100% { -webkit-transform: translate(-50%, -50%) rotate(360deg); }
-}
-@-moz-keyframes LOADERSPINNER {
- 0% { -moz-transform: translate(-50%, -50%) rotate(0deg); }
- 100% { -moz-transform: translate(-50%, -50%) rotate(360deg); }
-}
-@-ms-keyframes LOADERSPINNER {
- 0% { -ms-transform: translate(-50%, -50%) rotate(0deg); }
- 100% { -ms-transform: translate(-50%, -50%) rotate(360deg); }
-}
-@-o-keyframes LOADERSPINNER {
- 0% { -o-transform: translate(-50%, -50%) rotate(0deg); }
- 100% { -o-transform: translate(-50%, -50%) rotate(360deg); }
-}
-@keyframes LOADERSPINNER {
- 0% { transform: translate(-50%, -50%) rotate(0deg); }
- 100% { transform: translate(-50%, -50%) rotate(360deg); }
-}
-
-@-webkit-keyframes LOADERLABEL {
- 0% { opacity: 1.0; -webkit-transform: translate(-50%, -50%) scale(1.0); }
- 5% { opacity: 0.5; -webkit-transform: translate(-50%, -50%) scale(0.5); }
- 95% { opacity: 0.5; -webkit-transform: translate(-50%, -50%) scale(0.5); }
- 100% { opacity: 1.0; -webkit-transform: translate(-50%, -50%) scale(1.0); }
-}
-@-moz-keyframes LOADERLABEL {
- 0% { opacity: 1.0; -moz-transform: translate(-50%, -50%) scale(1.0); }
- 5% { opacity: 0.5; -moz-transform: translate(-50%, -50%) scale(0.5); }
- 95% { opacity: 0.5; -moz-transform: translate(-50%, -50%) scale(0.5); }
- 100% { opacity: 1.0; -moz-transform: translate(-50%, -50%) scale(1.0); }
-}
-@-ms-keyframes LOADERLABEL {
- 0% { opacity: 1.0; -ms-transform: translate(-50%, -50%) scale(1.0); }
- 5% { opacity: 0.5; -ms-transform: translate(-50%, -50%) scale(0.5); }
- 95% { opacity: 0.5; -ms-transform: translate(-50%, -50%) scale(0.5); }
- 100% { opacity: 1.0; -ms-transform: translate(-50%, -50%) scale(1.0); }
-}
-@-o-keyframes LOADERLABEL {
- 0% { opacity: 1.0; -o-transform: translate(-50%, -50%) scale(1.0); }
- 5% { opacity: 0.5; -o-transform: translate(-50%, -50%) scale(0.5); }
- 95% { opacity: 0.5; -o-transform: translate(-50%, -50%) scale(0.5); }
- 100% { opacity: 1.0; -o-transform: translate(-50%, -50%) scale(1.0); }
-}
-@keyframes LOADERLABEL {
- 0% { opacity: 1.0; transform: translate(-50%, -50%) scale(1.0); }
- 5% { opacity: 0.5; transform: translate(-50%, -50%) scale(0.5); }
- 95% { opacity: 0.5; transform: translate(-50%, -50%) scale(0.5); }
- 100% { opacity: 1.0; transform: translate(-50%, -50%) scale(1.0); }
-}
-
-*, *:before, *:after {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- vertical-align: top;
-}
-.loaderoverlay {
- position: absolute;
- width: 100%;
- height: 100%;
- background: rgba(255, 255, 255, 1.0);
-}
-.loaderoverlay .loaderspinner,
-.loaderoverlay .loaderspinner:before,
-.loaderoverlay .loaderspinner:after {
- border: 20px solid rgba(0, 0, 0, 0);
- border-top: 20px solid #ccc;
- border-bottom: 20px solid #ccc;
- border-radius: 1000px;
- position: absolute;
- top: 50%;
- left: 50%;
-}
-.loaderoverlay .loaderspinner:before,
-.loaderoverlay .loaderspinner:after {
- content: "";
-}
-.loaderoverlay .loaderspinner {
- width: 200px;
- height: 200px;
- -webkit-animation: LOADERSPINNER 5s linear infinite;
- -moz-animation: LOADERSPINNER 5s linear infinite;
- -ms-animation: LOADERSPINNER 5s linear infinite;
- -o-animation: LOADERSPINNER 5s linear infinite;
- animation: LOADERSPINNER 5s linear infinite;
-}
-.loaderoverlay .loaderspinner:before {
- width: 160px;
- height: 160px;
- -webkit-animation: LOADERSPINNER 10s linear infinite;
- -moz-animation: LOADERSPINNER 10s linear infinite;
- -ms-animation: LOADERSPINNER 10s linear infinite;
- -o-animation: LOADERSPINNER 10s linear infinite;
- animation: LOADERSPINNER 10s linear infinite;
-}
-.loaderoverlay .loaderspinner:after {
- width: 120px;
- height: 120px;
- -webkit-animation: LOADERSPINNER 5s linear infinite;
- -moz-animation: LOADERSPINNER 5s linear infinite;
- -ms-animation: LOADERSPINNER 5s linear infinite;
- -o-animation: LOADERSPINNER 5s linear infinite;
- animation: LOADERSPINNER 5s linear infinite;
-}
-.loaderoverlay .loaderlabel {
- color: #6f3;
- text-transform: uppercase;
- font-family: sans-serif;
- font-size: 22px;
- font-weight: 700;
- letter-spacing: 2px;
- position: absolute;
- top: 50%;
- left: 50%;
- -webkit-animation: LOADERLABEL 5s linear infinite;
- -moz-animation: LOADERLABEL 5s linear infinite;
- -ms-animation: LOADERLABEL 5s linear infinite;
- -o-animation: LOADERLABEL 5s linear infinite;
- animation: LOADERLABEL 5s linear infinite;
-}
-button[type="button"] {
- padding: 0.5rem 1rem;
- position: absolute;
- z-index: 1;
- bottom: 10px;
- left: 50%;
- -webkit-transform: translateX(-50%);
- -moz-transform: translateX(-50%);
- -ms-transform: translateX(-50%);
- -o-transform: translateX(-50%);
- transform: translateX(-50%);
-}
-
-/* Customize */
-.loaderoverlay {
- background: #000;
-}
-.loaderoverlay .loaderspinner,
-.loaderoverlay .loaderspinner:before,
-.loaderoverlay .loaderspinner:after {
- border-top-color: #6f3 !important;
- border-bottom-color: #6f3 !important;
-}
-.loaderoverlay .loaderlabel {
- color: #6f3;
-}
diff --git a/css/loader.scss b/css/loader.scss
new file mode 100644
index 000000000..a36797b71
--- /dev/null
+++ b/css/loader.scss
@@ -0,0 +1,94 @@
+@import "mixins";
+@import "reset";
+@import "theme";
+
+@include keyframes(LOADERSPINNER) {
+ 0% {
+ #{$browser}transform: translate(-50%, -50%) rotate(0deg);
+ }
+ 100% {
+ #{$browser}transform: translate(-50%, -50%) rotate(360deg);
+ }
+}
+
+@include keyframes(LOADERLABEL) {
+ 0% {
+ opacity: 1.0;
+ #{$browser}transform: translate(-50%, -50%) scale(1.0);
+ }
+ 5% {
+ opacity: 0.5;
+ #{$browser}transform: translate(-50%, -50%) scale(0.5);
+ }
+ 95% {
+ opacity: 0.5;
+ #{$browser}transform: translate(-50%, -50%) scale(0.5);
+ }
+ 100% {
+ opacity: 1.0;
+ #{$browser}transform: translate(-50%, -50%) scale(1.0);
+ }
+}
+
+.loaderoverlay {
+ $spinnerBoxSize: 200px;
+ $themeColor: #6f3;
+
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: #000;
+ color: $themeColor;
+
+ %spinnerBox {
+ border: 20px solid rgba(0, 0, 0, 0);
+ border-top-color: $themeColor;
+ border-bottom-color: $themeColor;
+ border-radius: 1000px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ }
+
+ .loaderspinner:before,
+ .loaderspinner:after {
+ content: "";
+ }
+
+ .loaderspinner {
+ @extend %spinnerBox;
+ @include animation(LOADERSPINNER 5s linear infinite);
+
+ width: $spinnerBoxSize;
+ height: $spinnerBoxSize;
+ }
+
+ .loaderspinner:before {
+ @extend %spinnerBox;
+ @include animation(LOADERSPINNER 10s linear infinite);
+
+ width: $spinnerBoxSize * 0.8;
+ height: $spinnerBoxSize * 0.8;
+ }
+
+ .loaderspinner:after {
+ @extend %spinnerBox;
+ @include animation(LOADERSPINNER 5s linear infinite);
+
+ width: $spinnerBoxSize * 0.6;
+ height: $spinnerBoxSize * 0.6;
+ }
+
+ .loaderlabel {
+ @include animation(LOADERLABEL 5s linear infinite);
+
+ text-transform: uppercase;
+ font-family: sans-serif;
+ font-size: $defaultFontSize * 1.375;
+ font-weight: 700;
+ letter-spacing: 2px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ }
+}
diff --git a/css/menupages.css b/css/menupages.scss
similarity index 89%
rename from css/menupages.css
rename to css/menupages.scss
index 9960d4a90..46319be74 100644
--- a/css/menupages.css
+++ b/css/menupages.scss
@@ -1,3 +1,6 @@
+@import "mixins";
+@import "theme";
+
/* CSS for different main menu pages, such as character info, script editor, etc (but excluding
terminal which has its own page) */
@@ -32,7 +35,7 @@
border: 2px solid var(--my-highlight-color);
z-index: 1;
- font-family: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman';
+ font-family: $fontFamily;
}
.ace_line,
@@ -43,7 +46,7 @@
}
.ace_text-input {
- font-size: 16px;
+ font-size: $defaultFontSize;
background-color: transparent;
}
@@ -89,6 +92,9 @@
}
#script-editor-filename {
+ $boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ @include boxShadow($boxShadowArgs);
+
background-color: #555;
display: inline-block;
float: center;
@@ -99,15 +105,6 @@
padding: 2px;
border: 2px solid var(--my-highlight-color);
- -webkit-box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
- -moz-box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
- box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
}
#script-editor-status {
@@ -132,7 +129,7 @@
margin-top: 8px;
margin-bottom: 8px;
padding: 2px;
- font-size: 12px;
+ font-size: $defaultFontSize * 0.75;
}
/* Active scripts */
@@ -154,7 +151,7 @@
.active-scripts-server-header {
background-color: #444;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
color: #fff;
margin: 6px 6px 0 6px;
padding: 6px;
@@ -176,7 +173,7 @@
.active-scripts-server-header:after {
content: '\02795'; /* "plus" sign (+) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
@@ -184,7 +181,7 @@
.active-scripts-server-header.active:after {
content: "\2796"; /* "minus" sign (-) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
@@ -227,7 +224,7 @@
.active-scripts-script-header:after {
content: '\02795'; /* "plus" sign (+) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: var(--my-font-color);
float: right;
margin-left: 5px;
@@ -235,7 +232,7 @@
.active-scripts-script-header.active:after {
content: "\2796"; /* "minus" sign (-) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: var(--my-font-color);
float: right;
margin-left: 5px;
@@ -260,15 +257,12 @@
}
.active-scripts-button {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
color: #aaa;
- font-size: 16px;
+ font-size: $defaultFontSize;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
margin: 4px;
padding: 4px;
background-color: #000;
@@ -323,19 +317,13 @@
}
.hacknet-node {
+ $boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ @include boxShadow($boxShadowArgs);
+
margin: 6px;
padding: 6px;
width: 34vw;
border: 2px solid var(--my-highlight-color);
- -webkit-box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
- -moz-box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
- box-shadow:
- inset 0 0 8px rgba(0, 0, 0, 0.1),
- 0 0 16px rgba(0, 0, 0, 0.1);
}
.hacknet-node-container {
@@ -355,7 +343,7 @@
display: inline-block;
margin: 0 4px; /* Don't want the vertical margin/padding, just left & right */
padding: 0 4px;
- width: 48px; /* Four times font-size */
+ width: $defaultFontSize * 4;
}
.menu-page-text {
diff --git a/css/missions.css b/css/missions.scss
similarity index 53%
rename from css/missions.css
rename to css/missions.scss
index 6a958ac12..faf4a0c02 100644
--- a/css/missions.css
+++ b/css/missions.scss
@@ -1,3 +1,6 @@
+@import "mixins";
+@import "theme";
+
/* css for Missions */
/* Hacking missions */
@@ -15,10 +18,10 @@
width: 100%;
overflow-y: auto;
padding-right: 10px;
-}
-.hack-mission-grid::-webkit-scrollbar {
- display: none;
+ &::-webkit-scrollbar {
+ display: none;
+ }
}
.hack-mission-node {
@@ -27,17 +30,15 @@
align-self: center;
justify-self: center;
display: inline-block;
-}
-.hack-mission-node p {
- margin-top: 8px;
- color: #fff;
- font-size: 12px;
- text-align: center;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ p {
+ @include userSelect(none);
+
+ margin-top: 8px;
+ color: #fff;
+ font-size: $defaultFontSize * 0.75;
+ text-align: center;
+ }
}
.hack-mission-player-node {
@@ -56,11 +57,9 @@
}
.hack-mission-cpu-node {
+ @include borderRadius(50%);
width: 100%;
height: 100%;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
}
.hack-mission-firewall-node {
@@ -69,47 +68,37 @@
}
.hack-mission-database-node {
+ @include transform(skew(20deg));
+
width: 100%;
height: 90%;
- -webkit-transform: skew(20deg);
- -moz-transform: skew(20deg);
- -o-transform: skew(20deg);
-}
-.hack-mission-database-node p {
- -webkit-transform: skew(-20deg);
- -moz-transform: skew(-20deg);
- -o-transform: skew(-20deg);
- color: #fff;
- font-size: 12px;
- margin-top: 8px;
- text-align: center;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ p {
+ @include transform(skew(-20deg));
+ @include userSelect(none);
+
+ color: #fff;
+ font-size: $defaultFontSize * 0.75;
+ margin-top: 8px;
+ text-align: center;
+ }
}
.hack-mission-transfer-node {
+ @include transform(skew(-20deg));
+
width: 100%;
height: 90%;
- -webkit-transform: skew(-20deg);
- -moz-transform: skew(-20deg);
- -o-transform: skew(-20deg);
-}
-.hack-mission-transfer-node p {
- -webkit-transform: skew(20deg);
- -moz-transform: skew(20deg);
- -o-transform: skew(20deg);
- color: #fff;
- font-size: 12px;
- margin-top: 8px;
- text-align: center;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
+ p {
+ @include transform(skew(20deg));
+ @include userSelect(none);
+
+ color: #fff;
+ font-size: $defaultFontSize * 0.75;
+ margin-top: 8px;
+ text-align: center;
+ }
}
.hack-mission-spam-node,
diff --git a/css/popupboxes.css b/css/popupboxes.scss
similarity index 87%
rename from css/popupboxes.css
rename to css/popupboxes.scss
index 2b92cdd33..31ea500b6 100644
--- a/css/popupboxes.css
+++ b/css/popupboxes.scss
@@ -1,3 +1,6 @@
+@import "mixins";
+@import "theme";
+
/* Pop-up boxes */
.popup-box-container {
display: none; /* Hidden by default */
@@ -24,7 +27,7 @@
.popup-box-button-inactive {
color: #aaa;
float: right;
- font-size: 16px;
+ font-size: $defaultFontSize;
font-weight: bold;
padding: 2px;
margin: 6px;
@@ -74,16 +77,13 @@
}
.dialog-box-close-button {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
float: right;
color: #aaa;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
}
#log-box-close {
@@ -155,18 +155,15 @@
}
#game-options-close-button {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
color: #aaa;
float: right;
margin: 4px;
padding: 4px;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px #fff;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
}
#game-options-close-button:hover,
diff --git a/css/styles.css b/css/styles.scss
similarity index 91%
rename from css/styles.css
rename to css/styles.scss
index b8b320957..75b051143 100644
--- a/css/styles.css
+++ b/css/styles.scss
@@ -1,16 +1,14 @@
+@import "mixins";
+@import "theme";
+
+@import "reset";
+
:root{
--my-font-color: #6f3;
--my-background-color: #000;
--my-highlight-color: #fff;
}
-* {
- margin: 0;
- padding: 0;
- font-size: 16px;
- font-family: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman';
-}
-
body {
background-color: var(--my-background-color);
}
@@ -23,7 +21,7 @@ h2,
}
h1 {
- font-size: 22px;
+ font-size: $defaultFontSize * 1.375;
color: var(--my-font-color);
}
@@ -41,6 +39,16 @@ span {
padding: 4px;
}
+button[type="button"] {
+ @include transform(translateX(-50%));
+
+ padding: 0.5rem 1rem;
+ position: absolute;
+ z-index: 1;
+ bottom: 10px;
+ left: 50%;
+}
+
#entire-game-container {
background-color: transparent;
}
@@ -100,7 +108,7 @@ tr:focus {
/* Plus and minus signs */
.mainmenu-accordion-header:after {
content: '\02795';
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
@@ -127,7 +135,8 @@ tr:focus {
}
/* Make html links ("a" elements) nice looking buttons with this class */
-a:link, a:visited {
+a:link,
+a:visited {
color: #fff;
}
@@ -150,9 +159,7 @@ a:link, a:visited {
}
.a-link-button:active {
- -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
- -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
- box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ @include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
}
/* Make anchor tags ("a" elements) inactive (not clickable) */
@@ -212,7 +219,7 @@ a:link, a:visited {
position: relative;
}
#create-program-notification {
- font-size: 10px;
+ font-size: $defaultFontSize * 0.625;
position: absolute; /* Position the badge within the relatively positioned button */
top: 0;
@@ -308,9 +315,7 @@ a:link, a:visited {
}
.help-tip:active {
- -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
- -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
- box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ @include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
}
/* Flashing button (Red) */
@@ -408,7 +413,7 @@ a:link, a:visited {
}
#status-text {
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
color: #fff;
right: 0;
bottom: 0;
@@ -446,15 +451,12 @@ a:link, a:visited {
#character-overview-save-button,
#character-overview-options-button {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
color: #aaa;
- font-size: 14px;
+ font-size: $defaultFontSize * 0.875;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
height: 22px;
background-color: #000;
}
@@ -485,7 +487,7 @@ a:link, a:visited {
/* Accordion menus (Header with collapsible panel) */
.accordion-header {
background-color: #444;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
color: #fff;
margin: 6px 6px 0 6px;
padding: 6px;
@@ -507,7 +509,7 @@ a:link, a:visited {
.accordion-header:after {
content: '\02795'; /* "plus" sign (+) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
@@ -515,7 +517,7 @@ a:link, a:visited {
.accordion-header.active:after {
content: "\2796"; /* "minus" sign (-) */
- font-size: 13px;
+ font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
diff --git a/css/terminal.css b/css/terminal.scss
similarity index 92%
rename from css/terminal.css
rename to css/terminal.scss
index 54da4e75e..ac26b9b3d 100644
--- a/css/terminal.css
+++ b/css/terminal.scss
@@ -1,3 +1,5 @@
+@import "theme";
+
#terminal-container {
position: fixed;
margin-left: 10%;
@@ -12,7 +14,7 @@
padding-left: 10px;
height: auto;
width: 70%;
- font-size: 16px;
+ font-size: $defaultFontSize;
overflow: auto;
overflow-y: scroll;
background-color: var(--my-background-color);
@@ -31,7 +33,7 @@
margin: 0 !important;
border: 0;
background-color: var(--my-background-color);
- font-size: 16px;
+ font-size: $defaultFontSize;
outline: none;
color: var(--my-font-color);
}
diff --git a/css/workinprogress.css b/css/workinprogress.scss
similarity index 78%
rename from css/workinprogress.css
rename to css/workinprogress.scss
index ed922ee65..c48fd7541 100644
--- a/css/workinprogress.css
+++ b/css/workinprogress.scss
@@ -1,3 +1,6 @@
+@import "mixins";
+@import "theme";
+
/* Both Work in progress and BitNode stuff */
.generic-fullscreen-container {
color: var(--my-font-color);
@@ -16,19 +19,16 @@
}
#work-in-progress-cancel-button {
+ @include borderRadius(12px);
+ @include boxShadow(1px 1px 3px #000);
+
color: #aaa;
float: left;
- font-size: 20px;
+ font-size: $defaultFontSize * 1.25;
font-weight: bold;
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
margin: 10px;
padding: 5px;
- border-radius: 12px;
border: 3px solid #fff;
- -moz-box-shadow: 1px 1px 3px #000;
- -webkit-box-shadow: 1px 1px 3px #000;
- box-shadow: 1px 1px 3px #000;
}
#work-in-progress-cancel-button:hover,
diff --git a/dist/engine.css b/dist/engine.css
new file mode 100644
index 000000000..f969824d4
--- /dev/null
+++ b/dist/engine.css
@@ -0,0 +1,1857 @@
+:root {
+ --my-font-color: #6f3;
+ --my-background-color: #000;
+ --my-highlight-color: #fff; }
+
+* {
+ margin: 0;
+ padding: 0;
+ font-size: 16px;
+ font-family: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman'; }
+
+body {
+ background-color: var(--my-background-color); }
+
+p,
+pre,
+h2,
+.text {
+ color: var(--my-font-color); }
+
+h1 {
+ font-size: 22px;
+ color: var(--my-font-color); }
+
+ul {
+ padding: 2px;
+ list-style-type: none; }
+
+li {
+ list-style-type: none; }
+
+span {
+ margin: 4px;
+ padding: 4px; }
+
+#entire-game-container {
+ background-color: transparent; }
+
+/* Disable border highlight on elements */
+input:focus,
+textarea:focus,
+button:focus,
+td:focus,
+tr:focus {
+ outline: none; }
+
+/* Main navigation menu */
+.mainmenu {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ width: 10%;
+ position: fixed;
+ height: 100%;
+ overflow: auto;
+ border: 0;
+ border-bottom: 1px solid #000;
+ border-radius: 0;
+ background-color: #333; }
+
+/* Default buttons */
+.mainmenu > li a {
+ display: block;
+ color: #e6e6e6;
+ background-color: #555;
+ padding: 16px;
+ text-decoration: none; }
+
+/* Hovering makes them lighter */
+.mainmenu > li a:hover,
+.mainmenu > li a:hover:not(.active),
+.mainmenu > li a:focus {
+ background-color: #777;
+ color: #fff; }
+
+/* Panel headers can become active, and they are "lighter" than the rest */
+.mainmenu > li a.active {
+ background-color: #777;
+ color: #fff; }
+
+.mainmenu > li a.active:hover {
+ background-color: #aaa; }
+
+/* Plus and minus signs */
+.mainmenu-accordion-header:after {
+ content: '\2795';
+ font-size: 13px;
+ color: #fff;
+ float: right;
+ margin-left: 5px; }
+
+.mainmenu-accordion-header.opened:after {
+ content: "\2796"; }
+
+.mainmenu-accordion-header.opened {
+ background-color: #222; }
+
+/* Slide down transition */
+.mainmenu-accordion-panel {
+ max-height: 0;
+ opacity: 1;
+ transition: max-height 0.2s ease-out; }
+
+/* Borders */
+.mainmenu-accordion-header {
+ border: 2px solid #fff; }
+
+/* Make html links ("a" elements) nice looking buttons with this class */
+a:link, a:visited {
+ color: #fff; }
+
+.a-link-button {
+ text-decoration: none;
+ background-color: #555;
+ color: #fff;
+ padding: 5px;
+ margin: 5px;
+ border: 1px solid #333;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none; }
+
+.a-link-button:hover {
+ background-color: #666; }
+
+.a-link-button:active {
+ -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6); }
+
+/* Make anchor tags ("a" elements) inactive (not clickable) */
+.a-link-button-inactive {
+ text-decoration: none;
+ background-color: #333;
+ color: #fff;
+ padding: 5px;
+ margin: 5px;
+ border: 1px solid #333;
+ cursor: default; }
+
+.a-link-button-inactive:hover .tooltiptext,
+.a-link-button-inactive:hover .tooltiptexthigh,
+.a-link-button-inactive:hover .tooltiptextleft {
+ visibility: visible; }
+
+.a-link-button-inactive:active {
+ pointer-events: none; }
+
+/* Make anchor tags ("a" elements) for activated actions */
+.a-link-button-bought {
+ text-decoration: none;
+ background-color: #0a0;
+ color: #fff;
+ padding: 5px;
+ margin: 5px;
+ border: 1px solid #0a0;
+ cursor: default; }
+
+.a-link-button-bought:hover .tooltiptext,
+.a-link-button-bought:hover .tooltiptexthigh,
+.a-link-button-bought:hover .tooltiptextleft {
+ visibility: visible; }
+
+.a-link-button-bought:active {
+ pointer-events: none; }
+
+.dropdown {
+ color: #fff;
+ background-color: #000; }
+
+.text-input {
+ color: #fff;
+ background-color: #000; }
+
+/* Notification icon (for create program right now only) */
+#create-program-tab {
+ position: relative; }
+
+#create-program-notification {
+ font-size: 10px;
+ position: absolute;
+ /* Position the badge within the relatively positioned button */
+ top: 0;
+ right: 0; }
+
+.notification-on {
+ background-color: #fa3e3e;
+ color: #fff;
+ border-radius: 2px;
+ padding: 1px 3px; }
+
+.notification-off {
+ background-color: #333;
+ color: #333;
+ border-radius: 0;
+ padding: 0; }
+
+/* Tool tips (when hovering over an element */
+.tooltip {
+ position: relative;
+ display: inline-block; }
+
+.tooltip .tooltiptext {
+ visibility: hidden;
+ width: 300px;
+ background-color: var(--my-background-color);
+ border: 2px solid var(--my-highlight-color);
+ color: #fff;
+ text-align: center;
+ padding: 4px;
+ left: 101%;
+ position: absolute;
+ z-index: 99; }
+
+/* Same thing as a normal tooltip except its a bit higher */
+.tooltip .tooltiptexthigh {
+ visibility: hidden;
+ width: 300px;
+ background-color: var(--my-background-color);
+ border: 2px solid var(--my-highlight-color);
+ color: #fff;
+ text-align: center;
+ padding: 4px;
+ left: 101%;
+ bottom: -25%;
+ position: absolute;
+ z-index: 99; }
+
+/* Similar to a normal tooltip except its positioned on the left of the elemnt
+ rather than the right to avoid exceeding the elements normal width */
+.tooltip .tooltiptextleft {
+ visibility: hidden;
+ width: 300px;
+ background-color: var(--my-background-color);
+ border: 2px solid var(--my-highlight-color);
+ color: #fff;
+ text-align: center;
+ padding: 4px;
+ left: 40%;
+ bottom: -10%;
+ position: absolute;
+ z-index: 99; }
+
+.tooltip:hover .tooltiptext,
+.tooltip:hover .tooltiptexthigh,
+.tooltip:hover .tooltiptextleft {
+ visibility: visible; }
+
+/* help tip. Question mark that opens popup with info/details */
+.help-tip {
+ content: '?';
+ padding: 1px;
+ margin-left: 3px;
+ color: #fff;
+ border: 1px solid #fff;
+ border-radius: 5px;
+ display: inline-block; }
+
+.help-tip:hover {
+ background-color: #888; }
+
+.help-tip:active {
+ -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6);
+ box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.6); }
+
+/* Flashing button (Red) */
+@-webkit-keyframes glowing {
+ 0% {
+ background-color: #b20000;
+ -webkit-box-shadow: 0 0 3px #b20000; }
+ 50% {
+ background-color: #f00;
+ -webkit-box-shadow: 0 0 40px #f00; }
+ 100% {
+ background-color: #b20000;
+ -webkit-box-shadow: 0 0 3px #b20000; } }
+
+@-moz-keyframes glowing {
+ 0% {
+ background-color: #b20000;
+ -moz-box-shadow: 0 0 3px #b20000; }
+ 50% {
+ background-color: #f00;
+ -moz-box-shadow: 0 0 40px #f00; }
+ 100% {
+ background-color: #b20000;
+ -moz-box-shadow: 0 0 3px #b20000; } }
+
+@-o-keyframes glowing {
+ 0% {
+ background-color: #b20000;
+ box-shadow: 0 0 3px #b20000; }
+ 50% {
+ background-color: #f00;
+ box-shadow: 0 0 40px #f00; }
+ 100% {
+ background-color: #b20000;
+ box-shadow: 0 0 3px #b20000; } }
+
+@keyframes glowing {
+ 0% {
+ background-color: #b20000;
+ box-shadow: 0 0 3px #b20000; }
+ 50% {
+ background-color: #f00;
+ box-shadow: 0 0 40px #f00; }
+ 100% {
+ background-color: #b20000;
+ box-shadow: 0 0 3px #b20000; } }
+
+.flashing-button {
+ -webkit-animation: glowing 1500ms infinite;
+ -moz-animation: glowing 1500ms infinite;
+ -o-animation: glowing 1500ms infinite;
+ animation: glowing 1500ms infinite; }
+
+/* Blinking Cursor */
+/* ----- blinking cursor animation ----- */
+.typed-cursor {
+ opacity: 1;
+ -webkit-animation: blink 0.95s infinite;
+ -moz-animation: blink 0.95s infinite;
+ -ms-animation: blink 0.95s infinite;
+ -o-animation: blink 0.95s infinite;
+ animation: blink 0.95s infinite; }
+
+@-keyframes blink {
+ 0% {
+ opacity: 1; }
+ 50% {
+ opacity: 0; }
+ 100% {
+ opacity: 1; } }
+
+@-webkit-keyframes blink {
+ 0% {
+ opacity: 1; }
+ 50% {
+ opacity: 0; }
+ 100% {
+ opacity: 1; } }
+
+@-moz-keyframes blink {
+ 0% {
+ opacity: 1; }
+ 50% {
+ opacity: 0; }
+ 100% {
+ opacity: 1; } }
+
+@-ms-keyframes blink {
+ 0% {
+ opacity: 1; }
+ 50% {
+ opacity: 0; }
+ 100% {
+ opacity: 1; } }
+
+@-o-keyframes blink {
+ 0% {
+ opacity: 1; }
+ 50% {
+ opacity: 0; }
+ 100% {
+ opacity: 1; } }
+
+/* Status text */
+@-webkit-keyframes status-text {
+ from {
+ opacity: 1;
+ top: 0; }
+ to {
+ opacity: 0;
+ top: 0; } }
+
+.status-text {
+ display: inline;
+ position: fixed;
+ top: 0;
+ -webkit-animation: status-text 3s 1;
+ background-color: transparent;
+ height: 15%; }
+
+#status-text-container {
+ background-color: transparent; }
+
+#status-text {
+ font-size: 20px;
+ color: #fff;
+ right: 0;
+ bottom: 0;
+ padding: 4px;
+ margin-right: 14px;
+ background-color: transparent;
+ z-index: 2;
+ width: auto; }
+
+/* Character Overview */
+#character-overview-wrapper {
+ position: relative; }
+
+#character-overview-container {
+ display: none;
+ position: absolute;
+ /* Stay in place */
+ right: 0;
+ top: 0;
+ height: 205px;
+ /* Full height */
+ padding: 5px;
+ border: 2px solid var(--my-highlight-color);
+ width: 19%;
+ overflow: auto;
+ /* Enable scroll if needed */
+ background-color: #444;
+ /* Fallback color */
+ z-index: 1; }
+
+#character-overview-text {
+ padding: 4px;
+ margin: 8px;
+ color: #fff;
+ background-color: #444; }
+
+#character-overview-save-button,
+#character-overview-options-button {
+ color: #aaa;
+ font-size: 14px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000;
+ height: 22px;
+ background-color: #000; }
+
+#character-overview-save-button:hover,
+#character-overview-save-button:focus,
+#character-overview-options-button:hover,
+#character-overview-options-button:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+#character-overview-options-button {
+ display: inline; }
+
+/* Scan analyze links from AutoLink */
+.scan-analyze-link {
+ cursor: pointer;
+ color: #fff;
+ text-decoration: underline; }
+
+.scan-analyze-link:hover {
+ text-decoration: none; }
+
+/* Accordion menus (Header with collapsible panel) */
+.accordion-header {
+ background-color: #444;
+ font-size: 20px;
+ color: #fff;
+ margin: 6px 6px 0 6px;
+ padding: 6px;
+ cursor: pointer;
+ width: 80%;
+ text-align: left;
+ border: none;
+ outline: none; }
+
+.accordion-header.active,
+.accordion-header:hover {
+ background-color: #555; }
+
+.accordion-header.active:hover {
+ background-color: #666; }
+
+.accordion-header:after {
+ content: '\2795';
+ /* "plus" sign (+) */
+ font-size: 13px;
+ color: #fff;
+ float: right;
+ margin-left: 5px; }
+
+.accordion-header.active:after {
+ content: "\2796";
+ /* "minus" sign (-) */
+ font-size: 13px;
+ color: #fff;
+ float: right;
+ margin-left: 5px; }
+
+.accordion-panel {
+ margin: 0 6px 6px 6px;
+ padding: 0 6px 6px 6px;
+ width: 75%;
+ margin-left: 5%;
+ display: none;
+ background-color: #555;
+ overflow-y: auto;
+ overflow-x: none; }
+
+.accordion-panel div,
+.accordion-panel ul,
+.accordion-panel p,
+.accordion-panel ul > li {
+ background-color: #555; }
+
+#terminal-container {
+ position: fixed;
+ margin-left: 10%;
+ height: 100%;
+ width: 99%;
+ overflow: auto;
+ overflow-y: scroll; }
+
+#terminal {
+ padding-top: 10px;
+ padding-left: 10px;
+ height: auto;
+ width: 70%;
+ font-size: 16px;
+ overflow: auto;
+ overflow-y: scroll;
+ background-color: var(--my-background-color);
+ table-layout: fixed; }
+
+#terminal-input {
+ background-color: var(--my-background-color);
+ color: var(--my-font-color);
+ transition: height 1s; }
+
+.terminal-input {
+ display: inline-block;
+ padding: 0 !important;
+ margin: 0 !important;
+ border: 0;
+ background-color: var(--my-background-color);
+ font-size: 16px;
+ outline: none;
+ color: var(--my-font-color); }
+
+.terminal-line {
+ width: 70%;
+ word-wrap: break-word;
+ hyphens: auto;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto; }
+
+#terminal-input-td {
+ display: flex; }
+
+#terminal-input-header {
+ white-space: pre; }
+
+#terminal-input-text-box {
+ flex: 1 1 auto; }
+
+/* CSS for different main menu pages, such as character info, script editor, etc (but excluding
+ terminal which has its own page) */
+.generic-menupage-container {
+ height: 100%;
+ padding-left: 10px;
+ margin-left: 10%;
+ width: 99%;
+ overflow-y: scroll; }
+
+/* Character Info */
+#character-container {
+ padding-top: 10px;
+ position: fixed; }
+
+/* Script Editor */
+#script-editor-container {
+ background-color: transparent; }
+
+#javascript-editor {
+ margin: 10px;
+ height: 80%;
+ width: 100%;
+ margin-left: 6px;
+ padding-left: 6px;
+ padding-top: 6px;
+ padding-bottom: 6px;
+ border: 2px solid var(--my-highlight-color);
+ z-index: 1;
+ font-family: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman'; }
+
+.ace_line,
+.ace_line * {
+ background-color: transparent;
+ margin: 0;
+ padding: 0; }
+
+.ace_text-input {
+ font-size: 16px;
+ background-color: transparent; }
+
+/* This temp element is used for auto adjusting filename field */
+.tmp-element {
+ visibility: hidden;
+ white-space: pre; }
+
+#script-editor-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#script-editor-buttons-wrapper {
+ width: 100%;
+ padding-right: 0;
+ margin-right: 0; }
+
+#script-editor-wrapper {
+ height: 100%;
+ width: 70%;
+ background: transparent; }
+
+#script-editor-filename-wrapper {
+ background-color: #555;
+ margin-left: 6px;
+ margin-right: 0;
+ padding-left: 6px;
+ width: 100%;
+ border: 2px solid var(--my-highlight-color); }
+
+#script-editor-filename-tag {
+ display: inline-block;
+ padding-top: 10px;
+ padding-bottom: 0;
+ float: center;
+ background-color: #555;
+ color: #fff; }
+
+#script-editor-filename {
+ background-color: #555;
+ display: inline-block;
+ float: center;
+ resize: none;
+ color: #fff;
+ margin: 4px;
+ padding: 2px;
+ border: 2px solid var(--my-highlight-color);
+ -webkit-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1); }
+
+#script-editor-status {
+ float: left;
+ color: #fff; }
+
+#script-editor-options-panel {
+ position: absolute;
+ right: 9%;
+ bottom: 15%;
+ border: 2px solid #fff;
+ width: 19%;
+ background-color: #444;
+ padding: 2px;
+ overflow: auto;
+ z-index: 1;
+ color: #fff; }
+
+#script-editor-options-panel fieldset {
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding: 2px;
+ font-size: 12px; }
+
+/* Active scripts */
+.active-scripts-list {
+ list-style-type: none; }
+
+#active-scripts-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#active-scripts-text,
+#active-scripts-total-prod {
+ width: 70%;
+ margin: 6px;
+ padding: 4px; }
+
+.active-scripts-server-header {
+ background-color: #444;
+ font-size: 20px;
+ color: #fff;
+ margin: 6px 6px 0 6px;
+ padding: 6px;
+ cursor: pointer;
+ width: 60%;
+ text-align: left;
+ border: none;
+ outline: none; }
+
+.active-scripts-server-header.active,
+.active-scripts-server-header:hover {
+ background-color: #555; }
+
+.active-scripts-server-header.active:hover {
+ background-color: #666; }
+
+.active-scripts-server-header:after {
+ content: '\2795';
+ /* "plus" sign (+) */
+ font-size: 13px;
+ color: #fff;
+ float: right;
+ margin-left: 5px; }
+
+.active-scripts-server-header.active:after {
+ content: "\2796";
+ /* "minus" sign (-) */
+ font-size: 13px;
+ color: #fff;
+ float: right;
+ margin-left: 5px; }
+
+.active-scripts-server-panel {
+ margin: 0 6px 6px 6px;
+ padding: 0 6px 6px 6px;
+ width: 55%;
+ margin-left: 5%;
+ display: none; }
+
+.active-scripts-server-panel div,
+.active-scripts-server-panel ul,
+.active-scripts-server-panel ul > li {
+ background-color: #555; }
+
+.active-scripts-script-header {
+ background-color: #555;
+ color: var(--my-font-color);
+ padding: 4px;
+ padding-left: 10px;
+ cursor: pointer;
+ width: auto;
+ text-align: left;
+ border: none;
+ outline: none; }
+
+.active-scripts-script-header:hover,
+.active-scripts-script-header.active:hover {
+ background-color: #666; }
+
+.active-scripts-script-header.active {
+ background-color: #555; }
+
+.active-scripts-script-header:after {
+ content: '\2795';
+ /* "plus" sign (+) */
+ font-size: 13px;
+ color: var(--my-font-color);
+ float: right;
+ margin-left: 5px; }
+
+.active-scripts-script-header.active:after {
+ content: "\2796";
+ /* "minus" sign (-) */
+ font-size: 13px;
+ color: var(--my-font-color);
+ float: right;
+ margin-left: 5px; }
+
+.active-scripts-script-panel {
+ padding: 0 18px;
+ background-color: #555;
+ width: auto;
+ display: none;
+ margin-bottom: 6px; }
+
+.active-scripts-script-panel p,
+.active-scripts-script-panel h2,
+.active-scripts-script-panel ul,
+.active-scripts-script-panel li {
+ background-color: #555;
+ width: auto;
+ color: #fff;
+ margin-left: 5%; }
+
+.active-scripts-button {
+ color: #aaa;
+ font-size: 16px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000;
+ margin: 4px;
+ padding: 4px;
+ background-color: #000; }
+
+.active-scripts-button:hover,
+.active-scripts-button:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+/* Hacknet Nodes */
+#hacknet-nodes-container {
+ position: fixed;
+ padding: 10px; }
+
+#hacknet-nodes-text,
+#hacknet-nodes-container li {
+ margin: 10px;
+ padding: 10px; }
+
+#hacknet-nodes-container li {
+ float: left;
+ overflow: hidden;
+ white-space: nowrap; }
+
+#hacknet-nodes-list {
+ list-style: none;
+ width: 82vw; }
+
+#hacknet-nodes-money {
+ margin: 10px;
+ float: left; }
+
+#hacknet-nodes-money-multipliers-div {
+ display: inline-block;
+ width: 70vw; }
+
+#hacknet-nodes-multipliers {
+ float: right; }
+
+#hacknet-nodes-purchase-button {
+ display: inline-block; }
+
+.hacknet-node {
+ margin: 6px;
+ padding: 6px;
+ width: 34vw;
+ border: 2px solid var(--my-highlight-color);
+ -webkit-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1); }
+
+.hacknet-node-container {
+ display: inline-table; }
+
+.hacknet-node-container .row {
+ display: table-row;
+ height: 30px; }
+
+.hacknet-node-container .row p {
+ display: table-cell; }
+
+.hacknet-node-container .upgradable-info {
+ display: inline-block;
+ margin: 0 4px;
+ /* Don't want the vertical margin/padding, just left & right */
+ padding: 0 4px;
+ width: 48px;
+ /* Four times font-size */ }
+
+.menu-page-text {
+ width: 70vw; }
+
+/* World */
+#world-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#world-city-name,
+#world-city-desc {
+ padding: 4px;
+ margin: 4px; }
+
+/* Create program */
+#create-program-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#create-program-page-text,
+#create-program-list {
+ width: 70%; }
+
+/* Factions and Faction (Single Faction page) */
+#factions-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#faction-container {
+ position: fixed;
+ padding-top: 10px; }
+
+.faction-work-div {
+ width: 70%;
+ height: 100%; }
+
+.faction-work-div-wrapper {
+ overflow: hidden;
+ border: 2px solid #333;
+ padding: 6px;
+ margin: 6px;
+ width: 70%; }
+
+#faction-donate-amount-txt,
+#faction-donate-input {
+ padding: 6px;
+ margin: 6px;
+ display: inline-block;
+ color: var(--my-font-color);
+ background-color: #000; }
+
+#faction-donate-amount-txt {
+ width: 50%; }
+
+#faction-container p,
+#faction-container pre {
+ padding: 6px;
+ margin: 6px; }
+
+#faction-container pre {
+ width: 70%;
+ white-space: pre-wrap;
+ /* Since CSS 2.1 */
+ white-space: -moz-pre-wrap;
+ /* Mozilla, since 1999 */
+ white-space: -pre-wrap;
+ /* Opera 4-6 */
+ white-space: -o-pre-wrap;
+ /* Opera 7 */
+ word-wrap: break-word;
+ /* Internet Explorer 5.5+ */ }
+
+/* Faction Augmentations */
+#faction-augmentations-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#faction-augmentations-container p,
+#faction-augmentations-container a,
+#faction-augmentations-container ul,
+#faction-augmentations-container h1 {
+ margin: 8px;
+ padding: 4px; }
+
+/* World */
+#world-container li {
+ margin: 0 0 15px 0;
+ list-style-type: none; }
+
+/* Augmentations */
+#augmentations-container {
+ position: fixed;
+ padding-top: 10px; }
+
+.augmentations-list button,
+.augmentations-list div {
+ color: var(--my-font-color);
+ padding: 8px;
+ text-decoration: none; }
+
+/* Tutorial */
+#tutorial-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#tutorial-text {
+ width: 70%;
+ margin: 10px; }
+
+#tutorial-container a {
+ width: 50%; }
+
+/* Dev menu */
+#dev-menu-container {
+ position: fixed;
+ padding-top: 10px; }
+
+#dev-menu-text {
+ width: 70%;
+ margin: 10px; }
+
+#dev-menu-container a {
+ width: 50%; }
+
+/* Location */
+#location-container {
+ position: fixed;
+ padding: 6px;
+ overflow-x: hidden; }
+
+#location-container a {
+ display: inline-block;
+ width: 30%; }
+
+#location-slums-description {
+ width: 70%;
+ margin: 10px; }
+
+#location-return-to-world-button {
+ margin: 10px;
+ padding: 6px; }
+
+#location-container * {
+ margin: 10px 5px 10px 5px; }
+
+#location-job-reputation, #location-company-favor {
+ display: inline; }
+
+/* Infiltration */
+#infiltration-container {
+ position: fixed;
+ padding: 6px; }
+
+#infiltration-left-panel,
+#infiltration-right-panel {
+ display: inline-block;
+ border: 1px solid #fff;
+ width: 35%;
+ height: 75%;
+ top: 10px;
+ overflow-y: auto;
+ overflow-x: auto; }
+
+#infiltration-faction-select {
+ color: #fff; }
+
+#infiltration-left-panel p,
+#infiltration-right-panel p {
+ margin: 4px; }
+
+#infiltration-buttons .a-link-button {
+ display: inline;
+ width: 25%; }
+
+/* Stock market */
+#stock-market-container {
+ position: fixed;
+ padding: 6px; }
+
+#stock-market-container p {
+ padding: 10px;
+ margin: 10px;
+ width: 70%; }
+
+#stock-market-container a {
+ margin: 10px; }
+
+.stock-market-input {
+ display: inline-block;
+ padding: 4px;
+ margin: 2px;
+ background-color: #000;
+ border: 1px solid #fff;
+ color: var(--my-font-color); }
+
+.stock-market-position-text {
+ color: #fff;
+ display: inline-block; }
+
+.stock-market-order-list {
+ overflow-y: auto;
+ max-height: 100px; }
+
+.stock-market-order-cancel-btn {
+ background-color: #000;
+ border: 1px solid #fff;
+ color: var(--my-font-color);
+ margin: 2px;
+ padding: 0; }
+
+/* Gang */
+#gang-container {
+ position: fixed;
+ padding: 6px; }
+
+#gang-management-subpage > p {
+ padding: 4px; }
+
+.gang-member-info-div {
+ float: left;
+ background-color: #555; }
+
+/* Both Work in progress and BitNode stuff */
+.generic-fullscreen-container {
+ color: var(--my-font-color);
+ width: 99%;
+ height: 100%; }
+
+#work-in-progress-container {
+ position: fixed; }
+
+#work-in-progress-text {
+ color: var(--my-font-color);
+ width: 70%;
+ margin: 10px; }
+
+#work-in-progress-cancel-button {
+ color: #aaa;
+ float: left;
+ font-size: 20px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ margin: 10px;
+ padding: 5px;
+ border-radius: 12px;
+ border: 3px solid #fff;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000; }
+
+#work-in-progress-cancel-button:hover,
+#work-in-progress-cancel-button:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+#red-pill-container,
+#cinematic-text-container {
+ position: fixed; }
+
+.bitnode {
+ color: #00f; }
+
+.bitnode-destroyed {
+ color: #f00; }
+
+.bitnode:hover,
+.bitnode-destroyed:hover {
+ color: #fff; }
+
+/* Pop-up boxes */
+.popup-box-container {
+ display: none;
+ /* Hidden by default */
+ position: fixed;
+ /* Stay in place */
+ z-index: 10;
+ /* Sit on top */
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ background-color: rbga(var(--my-background-color), 0.4); }
+
+.popup-box-content {
+ background-color: var(--my-background-color);
+ margin: 15% auto;
+ padding: 12px;
+ border: 5px solid var(--my-highlight-color);
+ width: 70%;
+ color: var(--my-font-color); }
+
+.popup-box-button,
+.popup-box-button-inactive {
+ color: #aaa;
+ float: right;
+ font-size: 16px;
+ font-weight: bold;
+ padding: 2px;
+ margin: 6px;
+ border: 1px solid #fff;
+ background-color: #000; }
+
+.popup-box-button:hover,
+.popup-box-button:focus {
+ color: var(--my-font-color);
+ text-decoration: none;
+ cursor: pointer; }
+
+.popupbox-button-inactive {
+ pointer-events: none;
+ cursor: default; }
+
+#yes-no-text-input-box-input {
+ color: var(--my-font-color);
+ border: 1px solid #fff;
+ background-color: #000; }
+
+.dialog-box-container,
+#log-box-container {
+ display: block;
+ position: absolute;
+ z-index: 10;
+ width: 50%;
+ height: auto;
+ max-height: 40%;
+ top: 40%;
+ left: 50%;
+ margin: -10% 0 0 -25%;
+ overflow: auto;
+ background-color: var(--my-background-color);
+ border: 5px solid var(--my-highlight-color); }
+
+.dialog-box-content,
+#log-box-content {
+ z-index: 2;
+ background-color: var(--my-background-color);
+ padding: 10px; }
+
+.dialog-box-close-button {
+ float: right;
+ color: #aaa;
+ font-size: 20px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000; }
+
+#log-box-close {
+ position: fixed;
+ right: 27%; }
+
+#log-box-kill-script {
+ right: 11%;
+ position: relative; }
+
+#log-box-close, #log-box-kill-script {
+ float: right;
+ display: inline-block; }
+
+.dialog-box-close-button:hover,
+.dialog-box-close-button:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+/* Faction invitation box */
+#faction-invitation-box-container {
+ transition: opacity 400ms ease-in; }
+
+#faction-invitation-box-warning {
+ margin: 4px;
+ padding: 4px; }
+
+/* Infiltration-box */
+#infiltration-box-sell,
+#infiltration-box-faction {
+ display: block;
+ padding: 8px;
+ margin: 8px; }
+
+#infiltration-faction-select {
+ background-color: #000; }
+
+/* Generic Yes No Box */
+#yes-no-text-input-box-input {
+ color: #fff; }
+
+/* Game Options */
+#game-options-container {
+ transition: opacity 400ms ease-in; }
+
+#game-options-content {
+ background-color: var(--my-background-color);
+ margin: 15% auto;
+ padding: 10px;
+ border: 5px solid var(--my-highlight-color);
+ width: 60%;
+ color: var(--my-font-color); }
+
+#game-options-left-panel,
+#game-options-right-panel {
+ display: inline-block;
+ width: 49%; }
+
+#game-options-close-button {
+ color: #aaa;
+ float: right;
+ margin: 4px;
+ padding: 4px;
+ font-size: 20px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px #fff;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000; }
+
+#game-options-close-button:hover,
+#game-options-close-button:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+#game-options-left-panel fieldset {
+ padding: 2px;
+ margin: 2px; }
+
+#import-game-file-selector {
+ display: none; }
+
+/* interactivetutorial.css */
+#interactive-tutorial-wrapper {
+ position: relative; }
+
+#interactive-tutorial-container {
+ display: none;
+ position: absolute;
+ /* Stay in place */
+ right: 0;
+ top: 0;
+ height: 400px;
+ /* Full height */
+ padding: 10px;
+ border: 5px solid #fff;
+ width: 20%;
+ overflow: auto;
+ /* Enable scroll if needed */
+ background-color: #444;
+ /* Fallback color */
+ color: #fff; }
+
+#interactive-tutorial-container > strong {
+ background-color: #444; }
+
+#interactive-tutorial-text {
+ padding: 4px;
+ margin: 4px;
+ color: #fff;
+ background-color: #444; }
+
+#interactive-tutorial-exit,
+#interactive-tutorial-next,
+#interactive-tutorial-back {
+ color: #aaa;
+ font-size: 20px;
+ font-weight: bold;
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+ -moz-box-shadow: 1px 1px 3px #000;
+ -webkit-box-shadow: 1px 1px 3px #000;
+ box-shadow: 1px 1px 3px #000;
+ background-color: #000; }
+
+#interactive-tutorial-exit {
+ float: left; }
+
+#interactive-tutorial-back {
+ margin-right: 20%;
+ float: right; }
+
+#interactive-tutorial-next {
+ float: right; }
+
+#interactive-tutorial-exit:hover,
+#interactive-tutorial-exit:focus,
+#interactive-tutorial-next:hover,
+#interactive-tutorial-next:focus,
+#interactive-tutorial-back:hover,
+#interactive-tutorial-back:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer; }
+
+@-webkit-keyframes LOADERSPINNER {
+ 0% {
+ -webkit-transform: translate(-50%, -50%) rotate(0deg); }
+ 100% {
+ -webkit-transform: translate(-50%, -50%) rotate(360deg); } }
+
+@-moz-keyframes LOADERSPINNER {
+ 0% {
+ -moz-transform: translate(-50%, -50%) rotate(0deg); }
+ 100% {
+ -moz-transform: translate(-50%, -50%) rotate(360deg); } }
+
+@-ms-keyframes LOADERSPINNER {
+ 0% {
+ -ms-transform: translate(-50%, -50%) rotate(0deg); }
+ 100% {
+ -ms-transform: translate(-50%, -50%) rotate(360deg); } }
+
+@-o-keyframes LOADERSPINNER {
+ 0% {
+ -o-transform: translate(-50%, -50%) rotate(0deg); }
+ 100% {
+ -o-transform: translate(-50%, -50%) rotate(360deg); } }
+
+@keyframes LOADERSPINNER {
+ 0% {
+ transform: translate(-50%, -50%) rotate(0deg); }
+ 100% {
+ transform: translate(-50%, -50%) rotate(360deg); } }
+
+@-webkit-keyframes LOADERLABEL {
+ 0% {
+ opacity: 1.0;
+ -webkit-transform: translate(-50%, -50%) scale(1); }
+ 5% {
+ opacity: 0.5;
+ -webkit-transform: translate(-50%, -50%) scale(0.5); }
+ 95% {
+ opacity: 0.5;
+ -webkit-transform: translate(-50%, -50%) scale(0.5); }
+ 100% {
+ opacity: 1.0;
+ -webkit-transform: translate(-50%, -50%) scale(1); } }
+
+@-moz-keyframes LOADERLABEL {
+ 0% {
+ opacity: 1.0;
+ -moz-transform: translate(-50%, -50%) scale(1); }
+ 5% {
+ opacity: 0.5;
+ -moz-transform: translate(-50%, -50%) scale(0.5); }
+ 95% {
+ opacity: 0.5;
+ -moz-transform: translate(-50%, -50%) scale(0.5); }
+ 100% {
+ opacity: 1.0;
+ -moz-transform: translate(-50%, -50%) scale(1); } }
+
+@-ms-keyframes LOADERLABEL {
+ 0% {
+ opacity: 1.0;
+ -ms-transform: translate(-50%, -50%) scale(1); }
+ 5% {
+ opacity: 0.5;
+ -ms-transform: translate(-50%, -50%) scale(0.5); }
+ 95% {
+ opacity: 0.5;
+ -ms-transform: translate(-50%, -50%) scale(0.5); }
+ 100% {
+ opacity: 1.0;
+ -ms-transform: translate(-50%, -50%) scale(1); } }
+
+@-o-keyframes LOADERLABEL {
+ 0% {
+ opacity: 1.0;
+ -o-transform: translate(-50%, -50%) scale(1); }
+ 5% {
+ opacity: 0.5;
+ -o-transform: translate(-50%, -50%) scale(0.5); }
+ 95% {
+ opacity: 0.5;
+ -o-transform: translate(-50%, -50%) scale(0.5); }
+ 100% {
+ opacity: 1.0;
+ -o-transform: translate(-50%, -50%) scale(1); } }
+
+@keyframes LOADERLABEL {
+ 0% {
+ opacity: 1.0;
+ transform: translate(-50%, -50%) scale(1); }
+ 5% {
+ opacity: 0.5;
+ transform: translate(-50%, -50%) scale(0.5); }
+ 95% {
+ opacity: 0.5;
+ transform: translate(-50%, -50%) scale(0.5); }
+ 100% {
+ opacity: 1.0;
+ transform: translate(-50%, -50%) scale(1); } }
+
+*, *:before, *:after {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ vertical-align: top; }
+
+.loaderoverlay {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: white; }
+
+.loaderoverlay .loaderspinner,
+.loaderoverlay .loaderspinner:before,
+.loaderoverlay .loaderspinner:after {
+ border: 20px solid rgba(0, 0, 0, 0);
+ border-top: 20px solid #ccc;
+ border-bottom: 20px solid #ccc;
+ border-radius: 1000px;
+ position: absolute;
+ top: 50%;
+ left: 50%; }
+
+.loaderoverlay .loaderspinner:before,
+.loaderoverlay .loaderspinner:after {
+ content: ""; }
+
+.loaderoverlay .loaderspinner {
+ width: 200px;
+ height: 200px;
+ -webkit-animation: LOADERSPINNER 5s linear infinite;
+ -moz-animation: LOADERSPINNER 5s linear infinite;
+ -ms-animation: LOADERSPINNER 5s linear infinite;
+ -o-animation: LOADERSPINNER 5s linear infinite;
+ animation: LOADERSPINNER 5s linear infinite; }
+
+.loaderoverlay .loaderspinner:before {
+ width: 160px;
+ height: 160px;
+ -webkit-animation: LOADERSPINNER 10s linear infinite;
+ -moz-animation: LOADERSPINNER 10s linear infinite;
+ -ms-animation: LOADERSPINNER 10s linear infinite;
+ -o-animation: LOADERSPINNER 10s linear infinite;
+ animation: LOADERSPINNER 10s linear infinite; }
+
+.loaderoverlay .loaderspinner:after {
+ width: 120px;
+ height: 120px;
+ -webkit-animation: LOADERSPINNER 5s linear infinite;
+ -moz-animation: LOADERSPINNER 5s linear infinite;
+ -ms-animation: LOADERSPINNER 5s linear infinite;
+ -o-animation: LOADERSPINNER 5s linear infinite;
+ animation: LOADERSPINNER 5s linear infinite; }
+
+.loaderoverlay .loaderlabel {
+ color: #6f3;
+ text-transform: uppercase;
+ font-family: sans-serif;
+ font-size: 22px;
+ font-weight: 700;
+ letter-spacing: 2px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-animation: LOADERLABEL 5s linear infinite;
+ -moz-animation: LOADERLABEL 5s linear infinite;
+ -ms-animation: LOADERLABEL 5s linear infinite;
+ -o-animation: LOADERLABEL 5s linear infinite;
+ animation: LOADERLABEL 5s linear infinite; }
+
+button[type="button"] {
+ padding: 0.5rem 1rem;
+ position: absolute;
+ z-index: 1;
+ bottom: 10px;
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ -moz-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ -o-transform: translateX(-50%);
+ transform: translateX(-50%); }
+
+/* Customize */
+.loaderoverlay {
+ background: #000; }
+
+.loaderoverlay .loaderspinner,
+.loaderoverlay .loaderspinner:before,
+.loaderoverlay .loaderspinner:after {
+ border-top-color: #6f3 !important;
+ border-bottom-color: #6f3 !important; }
+
+.loaderoverlay .loaderlabel {
+ color: #6f3; }
+
+/* css for Missions */
+/* Hacking missions */
+#mission-container {
+ overflow: hidden; }
+
+.hack-mission-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
+ grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
+ grid-gap: 2.5%;
+ height: 90%;
+ position: absolute;
+ width: 100%;
+ overflow-y: auto;
+ padding-right: 10px; }
+
+.hack-mission-grid::-webkit-scrollbar {
+ display: none; }
+
+.hack-mission-node {
+ z-index: 5;
+ background-color: #808080;
+ align-self: center;
+ justify-self: center;
+ display: inline-block; }
+
+.hack-mission-node p {
+ margin-top: 8px;
+ color: #fff;
+ font-size: 12px;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.hack-mission-player-node {
+ color: #fff;
+ background-color: #00f; }
+
+.hack-mission-player-node-active {
+ border: 2px solid #fff;
+ background-color: #66f; }
+
+.hack-mission-enemy-node {
+ color: #fff;
+ background-color: #f00; }
+
+.hack-mission-cpu-node {
+ width: 100%;
+ height: 100%;
+ -moz-border-radius: 50%;
+ -webkit-border-radius: 50%;
+ border-radius: 50%; }
+
+.hack-mission-firewall-node {
+ width: 90%;
+ height: 100%; }
+
+.hack-mission-database-node {
+ width: 100%;
+ height: 90%;
+ -webkit-transform: skew(20deg);
+ -moz-transform: skew(20deg);
+ -o-transform: skew(20deg); }
+
+.hack-mission-database-node p {
+ -webkit-transform: skew(-20deg);
+ -moz-transform: skew(-20deg);
+ -o-transform: skew(-20deg);
+ color: #fff;
+ font-size: 12px;
+ margin-top: 8px;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.hack-mission-transfer-node {
+ width: 100%;
+ height: 90%;
+ -webkit-transform: skew(-20deg);
+ -moz-transform: skew(-20deg);
+ -o-transform: skew(-20deg); }
+
+.hack-mission-transfer-node p {
+ -webkit-transform: skew(20deg);
+ -moz-transform: skew(20deg);
+ -o-transform: skew(20deg);
+ color: #fff;
+ font-size: 12px;
+ margin-top: 8px;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.hack-mission-spam-node,
+.hack-mission-shield-node {
+ height: 100%;
+ width: 100%; }
+
+/* Non-map related DOM elements */
+/* Element at the top of the Hacking Mission page (intro page, start button, guide buttons, etc.) */
+.hack-mission-header-element {
+ margin: 6px; }
+
+.hack-mission-action-buttons-container {
+ border: 2px solid #fff; }
+
+#cmpy-mgmt-container p,
+#cmpy-mgmt-container a,
+#cmpy-mgmt-container div {
+ font-size: 13px; }
+
+/* Header tabs */
+.cmpy-mgmt-header-tab {
+ display: inline-block;
+ color: #fff;
+ background-color: #555;
+ border: 1px solid #fff;
+ padding: 4px; }
+
+.cmpy-mgmt-header-tab:hover {
+ background-color: #666; }
+
+.cmpy-mgmt-header-tab.current {
+ background-color: #777; }
+
+/* Switch between Cities */
+.cmpy-mgmt-city-tab {
+ display: inline-block;
+ color: #fff;
+ background-color: #555;
+ border: 1px solid #fff;
+ padding: 4px; }
+
+.cmpy-mgmt-city-tab:hover {
+ background-color: #666; }
+
+.cmpy-mgmt-city-tab.current {
+ background-color: #777; }
+
+/* Panels */
+#cmpy-mgmt-panel {
+ height: 90%; }
+
+.cmpy-mgmt-industry-left-panel,
+.cmpy-mgmt-industry-right-panel {
+ display: inline-block;
+ width: 45%;
+ height: 100%;
+ top: 10px;
+ overflow-y: auto;
+ overflow-x: auto; }
+
+.cmpy-mgmt-industry-overview-panel {
+ border: 1px solid #fff;
+ color: var(--my-font-color);
+ display: inline-block;
+ width: 100%; }
+
+.cmpy-mgmt-employee-panel {
+ border: 1px solid #fff;
+ display: block;
+ width: 100%; }
+
+.cmpy-mgmt-warehouse-panel {
+ border: 1px solid #fff;
+ display: inline-block;
+ width: 100%; }
+
+/* Hiring new employees */
+.cmpy-mgmt-find-employee-option {
+ border: 1px solid #fff;
+ margin: 6px; }
+
+.cmpy-mgmt-find-employee-option:hover {
+ background-color: #3d4044; }
+
+/* Warehouse */
+.cmpy-mgmt-warehouse-material-div {
+ padding: 2px;
+ border: 1px solid #fff; }
+
+.cmpy-mgmt-warehouse-product-div {
+ padding: 2px;
+ border: 1px solid #fff; }
+
+/* Exporting materials/products */
+.cmpy-mgmt-existing-export {
+ border: 1px solid #fff;
+ border-radius: 25px;
+ margin: 4px;
+ padding: 4px; }
+
+.cmpy-mgmt-existing-export:hover {
+ background-color: #333; }
+
+/* Upgrades */
+.cmpy-mgmt-upgrade-container {
+ border: 1px solid #fff;
+ width: 60%;
+ margin: 4px; }
+
+.cmpy-mgmt-upgrade-div {
+ display: inline-block;
+ border: 1px solid #fff;
+ margin: 2px;
+ padding: 6px;
+ border-radius: 25px;
+ font-size: "12px";
+ color: var(--my-font-color); }
+
+.cmpy-mgmt-upgrade-div:hover {
+ background-color: #333; }
+
+#bladeburner-container p,
+#bladeburner-container pre,
+#bladeburner-container a,
+#bladeburner-container div,
+#bladeburner-container td {
+ font-size: 13px; }
+
+.bladeburner-action {
+ border: 1px solid #fff;
+ margin: 7px;
+ padding: 7px;
+ white-space: pre-wrap; }
+
+.bladeburner-action pre {
+ white-space: pre-wrap; }
+
+/* Whatever action is currently active */
+.bladeburner-active-action {
+ border: 4px solid #fff; }
+
+/* Action & Skills panel navigation button */
+.bladeburner-nav-button {
+ border: 1px solid #fff;
+ color: #fff;
+ padding: 2px;
+ margin: 2px; }
+
+.bladeburner-nav-button:hover {
+ background-color: #3d4044; }
+
+.bladeburner-nav-button-inactive {
+ border: 1px solid #fff;
+ padding: 2px;
+ margin: 2px;
+ text-decoration: none;
+ background-color: #555;
+ cursor: default;
+ pointer-events: none; }
+
+/* Bladeburner Console */
+.bladeburner-console-div {
+ display: inline-block;
+ width: 40%;
+ border: 1px solid #fff;
+ overflow: auto;
+ height: 100%;
+ position: absolute; }
+
+.bladeburner-console-table {
+ height: auto;
+ overflow: auto;
+ table-layout: fixed;
+ width: 100%; }
+
+.bladeburner-console-input-row {
+ transition: height 1s;
+ width: 100%; }
+
+.bladeburner-console-input-cell {
+ display: flex; }
+
+.bladeburner-console-input {
+ display: inline-block;
+ padding: 0 !important;
+ margin: 0 !important;
+ border: 0;
+ background-color: var(--my-background-color);
+ font-size: 13px;
+ outline: none;
+ color: var(--my-font-color);
+ flex: 1 1 auto; }
+
+.bladeburner-console-line {
+ word-wrap: break-word;
+ hyphens: auto;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto; }
+
+
+/*# sourceMappingURL=engine.css.map*/
\ No newline at end of file
diff --git a/index.html b/index.html
index 6dcdc266d..343ee7fe4 100644
--- a/index.html
+++ b/index.html
@@ -14,16 +14,7 @@
-
-
-
-
-
-
-
-
-
-
+