diff --git a/config/routes.php b/config/routes.php
index 4001177..4051b7d 100644
--- a/config/routes.php
+++ b/config/routes.php
@@ -13,6 +13,9 @@ $framework_routes = [
'/novaconium/dashboard' => [
'get' => 'NOVACONIUM/dashboard'
],
+ '/novaconium/settings' => [
+ 'get' => 'NOVACONIUM/settings'
+ ],
'/novaconium/pages' => [
'get' => 'NOVACONIUM/pages'
],
diff --git a/controllers/auth/login.php b/controllers/auth/login.php
index 8ed6c9e..2b2c873 100644
--- a/controllers/auth/login.php
+++ b/controllers/auth/login.php
@@ -1,9 +1,11 @@
'Novaconium Login Page',
+ 'pageclass' => 'novaconium'
+]);
// Don't come here if logged in
if ($session->get('username')) {
$redirect->url('/novaconium/dashboard');
makeitso();
}
-view('@novacore/login');
+view('@novacore/auth/login');
diff --git a/controllers/dashboard.php b/controllers/dashboard.php
index 8c667b2..d707b82 100644
--- a/controllers/dashboard.php
+++ b/controllers/dashboard.php
@@ -1,7 +1,8 @@
'Novaconium Dashboard Page',
- 'pageclass' => 'novaconium'
+ 'pageclass' => 'novaconium',
+ 'pageid' => 'controlPanel'
]);
if ( empty($session->get('username'))) {
diff --git a/controllers/editpage.php b/controllers/editpage.php
index 85b0ce2..490b250 100644
--- a/controllers/editpage.php
+++ b/controllers/editpage.php
@@ -3,6 +3,7 @@
$data = array_merge($data, [
'title' => 'Novaconium Edit Page',
'pageclass' => 'novaconium',
+ 'pageid' => 'controlPanel',
'editor' => 'ace'
]);
diff --git a/controllers/messages.php b/controllers/messages.php
index b2c9e7d..ef6c259 100644
--- a/controllers/messages.php
+++ b/controllers/messages.php
@@ -2,7 +2,8 @@
$data = array_merge($data, [
'title' => 'Novaconium Messages',
- 'pageclass' => 'novaconium'
+ 'pageclass' => 'novaconium',
+ 'pageid' => 'controlPanel'
]);
if ( empty($session->get('username'))) {
diff --git a/controllers/pages.php b/controllers/pages.php
index 0462fe7..618426b 100644
--- a/controllers/pages.php
+++ b/controllers/pages.php
@@ -2,7 +2,8 @@
$data = array_merge($data, [
'title' => 'Novaconium Pages',
- 'pageclass' => 'novaconium'
+ 'pageclass' => 'novaconium',
+ 'pageid' => 'controlPanel'
]);
if ( empty($session->get('username'))) {
diff --git a/controllers/settings.php b/controllers/settings.php
new file mode 100644
index 0000000..5550dda
--- /dev/null
+++ b/controllers/settings.php
@@ -0,0 +1,15 @@
+ 'Novaconium Settings',
+ 'pageclass' => 'novaconium',
+ 'pageid' => 'controlPanel'
+]);
+
+if ( empty($session->get('username'))) {
+ $redirect->url('/novaconium/login');
+ $messages->error('You are not loggedin');
+ makeitso();
+}
+
+view('@novacore/settings', $data);
\ No newline at end of file
diff --git a/docs/Sass.md b/docs/Sass.md
index 91a685d..21a82de 100644
--- a/docs/Sass.md
+++ b/docs/Sass.md
@@ -20,4 +20,14 @@ Compressed:
# Build Novaconium (compressed)
docker run --rm -v "$(pwd):/usr/src/app" -w /usr/src/app sass-container --style=compressed sass/novaconium.sass skeleton/novaconium/public/css/novaconium.css
+```
+
+Dev:
+```bash
+docker run --rm \
+ -v "$(pwd)/sass:/usr/src/sass" \
+ -v "/home/nick/tmp/novaproject/novaconium/public/css:/usr/src/css" \
+ -w /usr/src \
+ sass-container \
+ sass sass/novaconium.sass css/novaconium.css --no-source-map --style=compressed
```
\ No newline at end of file
diff --git a/sass/controlPanel/_footer.sass b/sass/controlPanel/_footer.sass
new file mode 100644
index 0000000..90c7c7c
--- /dev/null
+++ b/sass/controlPanel/_footer.sass
@@ -0,0 +1,4 @@
+body#controlPanel
+
+ footer
+ padding: 1rem
\ No newline at end of file
diff --git a/sass/controlPanel/_header.sass b/sass/controlPanel/_header.sass
new file mode 100644
index 0000000..625ec32
--- /dev/null
+++ b/sass/controlPanel/_header.sass
@@ -0,0 +1,8 @@
+body#controlPanel
+
+ header
+ padding: 0
+
+ h1#biglogo
+ padding: 10px 0 0 0
+ margin: 0
diff --git a/sass/controlPanel/_main.sass b/sass/controlPanel/_main.sass
new file mode 100644
index 0000000..5236d7d
--- /dev/null
+++ b/sass/controlPanel/_main.sass
@@ -0,0 +1,11 @@
+body#controlPanel
+
+ div#panel
+
+ main#content
+ flex: 1
+ padding: 20px 40px
+ min-width: 0
+ background-color: #0b0b0bd6
+ border-left: 2px solid #104910
+
diff --git a/sass/controlPanel/_menu.sass b/sass/controlPanel/_menu.sass
new file mode 100644
index 0000000..a43a2b9
--- /dev/null
+++ b/sass/controlPanel/_menu.sass
@@ -0,0 +1,22 @@
+@use '../abstracts' as *
+
+body#controlPanel
+ div#panel
+ div#cp-menu
+ background-color: #000
+ width: 360px
+ padding: 0
+ white-space: nowrap
+
+ ul#cp-nav
+ list-style: none
+ margin: 0
+ padding: 20px 0 0 0
+
+ li a
+ display: block
+ border-bottom: 1px solid $border-light
+ padding: 4px 10px
+
+ &:hover
+ background-color: #222
\ No newline at end of file
diff --git a/sass/controlPanel/_panel.sass b/sass/controlPanel/_panel.sass
new file mode 100644
index 0000000..54e116c
--- /dev/null
+++ b/sass/controlPanel/_panel.sass
@@ -0,0 +1,5 @@
+body#controlPanel
+
+ div#panel
+ display: flex
+ flex-direction: row
diff --git a/sass/controlPanel/index.sass b/sass/controlPanel/index.sass
new file mode 100644
index 0000000..1b0b725
--- /dev/null
+++ b/sass/controlPanel/index.sass
@@ -0,0 +1,10 @@
+@forward 'header';
+@forward 'panel';
+@forward 'menu';
+@forward 'main';
+@forward 'footer';
+
+body#controlPanel
+ h1
+ font-family: "VT323", "Courier New", "SF Mono", "Fira Code", Consolas, monospace
+ font-size: 48px
diff --git a/sass/framework/_tabs.sass b/sass/framework/_tabs.sass
index 6c2bd83..7af4198 100644
--- a/sass/framework/_tabs.sass
+++ b/sass/framework/_tabs.sass
@@ -3,7 +3,7 @@
@use '../abstracts' as *
@use 'sass:color' // For color.adjust()—non-deprecated color tweaks
-body.novaconium
+body#controlPanel
// Simplified tab styling: Square borders, no rounds
.tab-container
margin: space('lg') auto
diff --git a/sass/framework/_tags.sass b/sass/framework/_tags.sass
index 3c3b329..6d458e7 100644
--- a/sass/framework/_tags.sass
+++ b/sass/framework/_tags.sass
@@ -74,7 +74,7 @@ body.novaconium
display: inline-flex
align-items: center
background: color.adjust($accent-light, $alpha: -0.2)
- color: $accent-light
+ color: #fff
padding: space('xs') space('sm')
border-radius: 4px
font-size: 12px
diff --git a/sass/novaconium.sass b/sass/novaconium.sass
index a3f1e47..9798289 100644
--- a/sass/novaconium.sass
+++ b/sass/novaconium.sass
@@ -2,3 +2,4 @@
@use 'abstracts' as *
@use 'base' as *
@use 'framework' as *
+@use 'controlPanel' as *
\ No newline at end of file
diff --git a/skeleton/novaconium/public/css/novaconium.css b/skeleton/novaconium/public/css/novaconium.css
index 2cba0d6..0f7ffda 100644
--- a/skeleton/novaconium/public/css/novaconium.css
+++ b/skeleton/novaconium/public/css/novaconium.css
@@ -1 +1 @@
-:root{--bg-dark: hsl(0, 0%, 2%);--bg-darker: hsl(210, 7%, 5%);--text-light: hsl(0, 0%, 100%);--text-lighter: hsl(120, 52%, 15%);--text-muted: hsl(120, 40%, 45%);--accent-light: hsl(120, 100%, 35%);--accent-success: hsl(120, 80%, 45%);--accent-warning: hsl(60, 100%, 35%);--accent-error: hsl(0, 100%, 45%);--border-light: hsla(120, 60%, 70%, 0.2);--font-stack: Courier New, SF Mono, monospace}*{box-sizing:border-box}html{font-size:16px;line-height:1.5;scroll-behavior:smooth;background-color:hsl(0,0%,2%);color:#fff}body{margin:0;padding:0;font-family:"Courier New","SF Mono",monospace;background-color:hsl(0,0%,2%);color:#fff;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0 0 .5em;font-weight:600;line-height:1.2;color:rgb(0,178.5,0)}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}p{margin:0 0 1em}small{font-size:.875rem}strong,b{font-weight:700}em,i{font-style:italic}a{color:rgb(0,178.5,0);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .2s ease}a:hover,a:focus{border-bottom-color:rgb(0,178.5,0);outline:none}ul,ol{margin:0 0 1em;padding-left:1.5em}li{margin-bottom:.25em}blockquote{margin:1em 0;padding:.5em 1em;border-left:4px solid rgb(0,178.5,0);background-color:hsla(0,0%,2%,.5);color:#fff}code,kbd,samp{font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:.875em;background-color:hsla(0,0%,100%,.1);padding:.125em .25em;border-radius:3px}pre{margin:1em 0;padding:1em;overflow:auto;background-color:hsla(0,0%,100%,.1);border-radius:4px}pre code{background:none;padding:0}table{width:100%;border-collapse:collapse;margin:1em 0}th,td{padding:.75em;text-align:left;border-bottom:1px solid hsla(0,0%,100%,.2)}th{font-weight:600}input,select,textarea,button{font-family:inherit;font-size:inherit;background-color:hsla(0,0%,100%,.1);color:#fff;border:1px solid hsla(0,0%,100%,.3);border-radius:4px;padding:.5em}input:focus,select:focus,textarea:focus,button:focus{outline:none;border-color:rgb(0,178.5,0);box-shadow:0 0 0 2px rgba(0,178.5,0,.2)}button{cursor:pointer;transition:background-color .2s ease}button:disabled{opacity:.5;cursor:not-allowed}img{max-width:100%;height:auto;border-radius:4px}figure{margin:1em 0}hr{border:none;height:1px;background-color:hsla(0,0%,100%,.2);margin:2em 0}*:focus-visible{outline:2px solid rgb(0,178.5,0);outline-offset:2px}@media print{body{background:#fff !important;color:#000 !important}}::selection{background:rgba(0,178.5,0,.3);color:#fff}*::-moz-selection{background:rgba(0,178.5,0,.3);color:#fff}body.novaconium{background-color:#000;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%231f2c17' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E")}body.novaconium #page .container{display:flex;padding:0;justify-content:center;align-items:flex-start;padding-top:1.5rem}body.novaconium article{width:1140px;flex-shrink:0;padding:3rem;margin:0;background-color:hsl(0,0%,2%);border:1px solid hsl(210,7%,5%)}body.novaconium ul#leftnav{width:320px;flex-shrink:0;list-style:none;padding:0;margin:0 2.5rem 0 0;background-color:hsl(0,0%,2%);border:1px solid hsl(210,7%,5%)}body.novaconium #leftnav li{border-bottom:1px solid hsla(120,60%,70%,.2)}body.novaconium #leftnav li:last-child{border-bottom:none}body.novaconium #leftnav a{display:block;padding:.5rem 1rem;text-decoration:none;color:#fff}body.novaconium #leftnav a:hover,body.novaconium #leftnav a:focus{background-color:rgba(0,178.5,0,.1);color:rgb(0,178.5,0);border-radius:4px}@media(max-width: 1280px){body.novaconium #page .container{flex-direction:column;align-items:center}body.novaconium article,body.novaconium #leftnav{width:100%;max-width:900px;margin:1rem 0}body.novaconium #leftnav{margin-right:0}}body.novaconium code{font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:.875rem;background-color:hsl(210,7%,5%);color:#fff;padding:.25rem .5rem;border-radius:4px;border:1px solid hsla(120,60%,70%,.2);box-shadow:0 0 2px rgba(0,178.5,0,.1)}body.novaconium .small{font-size:.625rem}body.novaconium div.error,body.novaconium div.notice,body.novaconium div#debug{margin:2.5rem auto;width:900px;padding:1.5rem;border-radius:6px;border:1px solid}body.novaconium div.error{background-color:rgba(229.5,0,0,.1);color:rgb(229.5,0,0);border-color:rgb(229.5,0,0)}body.novaconium div.notice{background-color:hsla(120,80%,45%,.1);color:hsl(120,80%,45%);border-color:hsl(120,80%,45%)}body.novaconium div#debug{background-color:hsl(210,7%,5%);color:hsl(120,40%,45%);border-color:hsla(120,60%,70%,.2);margin-top:4rem;margin-bottom:4rem}body.novaconium .pages-table{width:100%;border:1px solid hsla(120,60%,70%,.2)}body.novaconium .pages-table th,body.novaconium .pages-table td{border:1px solid hsla(120,60%,70%,.2);text-align:left}body.novaconium .pages-table th{background-color:rgba(0,178.5,0,.05);color:hsl(120,52%,15%);font-weight:600}body.novaconium #edit-page-form-novaconium .form-group{margin-bottom:1rem}body.novaconium #edit-page-form-novaconium .form-group.fullwidth textarea{width:100%;resize:vertical}body.novaconium #edit-page-form-novaconium .checkbox-group{margin-top:1.5rem}body.novaconium #edit-page-form-novaconium input[type=text],body.novaconium #edit-page-form-novaconium input[type=number],body.novaconium #edit-page-form-novaconium textarea,body.novaconium #edit-page-form-novaconium select{background-color:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);color:#fff;padding:.5rem;border-radius:4px;font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace}body.novaconium #edit-page-form-novaconium input[type=text]:focus,body.novaconium #edit-page-form-novaconium input[type=number]:focus,body.novaconium #edit-page-form-novaconium textarea:focus,body.novaconium #edit-page-form-novaconium select:focus{border-color:rgb(0,178.5,0);box-shadow:0 0 0 .25rem rgba(0,178.5,0,.3);outline:none}body.novaconium #edit-page-form-novaconium input[type=checkbox]{accent-color:rgb(0,178.5,0)}body.novaconium #edit-page-form-novaconium button[type=submit]{background-color:rgb(0,178.5,0);color:hsl(0,0%,2%);border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace}body.novaconium #edit-page-form-novaconium button[type=submit]:hover,body.novaconium #edit-page-form-novaconium button[type=submit]:focus{background-color:#090;box-shadow:0 0 4px rgba(0,178.5,0,.5)}body.novaconium #edit-page-form-novaconium p{color:hsl(120,40%,45%)}body.novaconium #edit-page-form-novaconium a{color:rgb(0,178.5,0)}body.novaconium #edit-page-form-novaconium a:hover{color:hsl(120,52%,15%);text-decoration:underline}body.novaconium #login{padding:0}body.novaconium #login input[type=text],body.novaconium #login input[type=password],body.novaconium #login button[type=submit]{width:100%;max-width:300px;padding:1rem;margin-bottom:1rem;box-sizing:border-box;font-size:1rem;border:1px solid hsla(120,60%,70%,.2);border-radius:4px;background:hsl(0,0%,2%);color:#fff}body.novaconium #login input[type=text]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:1rem center;background-size:20px;padding-left:3rem}body.novaconium #login input[type=password]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:1rem center;background-size:20px;padding-left:3rem}body.novaconium #login button[type=submit]{background:rgb(0,178.5,0);border-color:rgb(0,178.5,0);cursor:pointer;transition:background .2s}body.novaconium #login button[type=submit]:hover{background:rgb(0,178.5,0);text-shadow:0 0 5px rgba(0,178.5,0,.5)}body.novaconium #login button[type=submit]::after{content:" →";margin-left:.5rem}body.novaconium #biglogo{position:relative;display:inline-block;padding:20px 0;border-radius:0;overflow:hidden}body.novaconium #biglogo::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(rgba(0, 255, 0, 0.02) 1px, transparent 1px),linear-gradient(90deg, rgba(0, 255, 0, 0.02) 1px, transparent 1px);background-size:20px 20px;opacity:.1;pointer-events:none}body.novaconium #biglogo::after{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg, transparent, #00ff00, transparent);opacity:.05;animation:scan 3s linear infinite}body.novaconium #biglogo .main{display:block;font-family:"Orbitron",sans-serif;font-size:4.5rem;font-weight:900;color:#fff;letter-spacing:.1em;line-height:.85;text-transform:uppercase;text-shadow:4px 4px 0 #222,5px 5px 0 #111,-1px -1px 0 lime,1px 1px 20px rgba(0,255,0,.3);filter:drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.8))}body.novaconium #biglogo .sub{display:block;font-family:"Orbitron",sans-serif;font-size:2.5rem;font-weight:700;color:#fff;letter-spacing:.15em;margin-top:.5rem;text-shadow:2px 2px 0 #222,-1px -1px 0 lime,1px 1px 10px rgba(0,255,0,.2);filter:drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.6))}body.novaconium #biglogo:hover .main{animation:glitch .3s infinite}@keyframes scan{0%{top:-1px}100%{top:100%}}@keyframes glitch{0%,100%{transform:translate(0)}20%{transform:translate(-2px, 2px)}40%{transform:translate(-2px, -2px)}60%{transform:translate(2px, 2px)}80%{transform:translate(2px, -2px)}}body.novaconium .tab-container{margin:1.5rem auto;background:hsl(0,0%,2%)}body.novaconium .tab-nav{display:flex;background-color:hsl(210,7%,5%);border-bottom:1px solid hsla(120,60%,70%,.2)}body.novaconium .tab-button{padding:.5rem 1rem;background:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);border-bottom:none;cursor:pointer;font-size:14px;min-width:120px;text-align:center;color:#fff;font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace}body.novaconium .tab-button:hover{background-color:hsl(210,7%,10%)}body.novaconium .tab-button+.tab-button{border-left:none}body.novaconium .tab-button.active{background-color:hsl(0,0%,2%);border-bottom:2px solid rgb(0,178.5,0);color:rgb(0,178.5,0);font-weight:bold}body.novaconium .tab-content{display:none;padding:1.5rem;background-color:hsl(0,0%,2%);color:#fff;border:none}body.novaconium .tab-content.active{display:block}#edit-page-title{margin-top:2rem}#edit-page-title #title{width:100%;font-size:1.9rem;padding:20px}#edit-page-title>div{font-size:.8rem;margin:8px 0 0 20px}body.novaconium .tooltip{position:relative;display:inline-block;cursor:help;font-size:16px;color:rgb(0,178.5,0);margin-left:.25rem;top:2px}body.novaconium .tooltip .tooltiptext{visibility:hidden;width:200px;background-color:hsl(210,7%,5%);color:#fff;text-align:left;border-radius:0;padding:.5rem;position:fixed;z-index:1000;opacity:0;transition:opacity .3s;font-size:14px;box-shadow:0 2px 5px rgba(0,0,0,.2);pointer-events:none}body.novaconium .tooltip .tooltiptext::after{content:"";position:absolute;top:-5px;left:10px;border-width:5px;border-style:solid;border-color:hsl(210,7%,5%) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}body.novaconium .tooltip:hover .tooltiptext{visibility:visible;opacity:1}body.novaconium .tooltip-desc{position:absolute;left:-9999px}.editor-container{width:100%;min-height:400px}.ace-editor{height:400px;border:1px solid rgb(0,178.5,0);font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace}.ace-editor .ace_gutter{background:hsl(210,7%,5%) !important;color:hsl(120,40%,45%) !important;border-right:1px solid rgb(0,178.5,0) !important}.ace-editor .ace_scroller{background:hsl(0,0%,2%) !important}.ace-editor .ace_text-layer .ace_print-margin{background:rgba(0,0,0,0) !important}.ace-editor .ace_marker-layer .ace_selection{background:rgba(0,178.5,0,.7) !important}body.novaconium .tags-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);border-top:none;border-radius:0 0 4px 4px;list-style:none;margin:0;padding:0;z-index:10;opacity:0;visibility:hidden;transition:opacity .2s}body.novaconium .tags-dropdown[aria-expanded=true]{opacity:1;visibility:visible}body.novaconium .tags-dropdown li{padding:.25rem .5rem;cursor:pointer;color:#fff;font-size:14px;border-bottom:1px solid rgba(0,0,0,0)}body.novaconium .tags-dropdown li:hover,body.novaconium .tags-dropdown li.selected{background:rgba(0,178.5,0,.9);color:rgb(0,178.5,0)}body.novaconium .tags-dropdown li:last-child{border-bottom:none}body.novaconium .tags-input{position:relative}body.novaconium .tags-input{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;border:1px solid hsla(120,60%,70%,.2);padding:.25rem;background:hsl(210,7%,5%);min-height:40px;grid-column:2}body.novaconium .tags-input input{border:none;background:rgba(0,0,0,0);color:#fff;font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:14px;flex:1;min-width:100px;outline:none}body.novaconium .tags-input input::placeholder{color:hsl(120,40%,45%)}body.novaconium .tag-chip{display:inline-flex;align-items:center;background:rgba(0,178.5,0,.8);color:rgb(0,178.5,0);padding:.25rem .5rem;border-radius:4px;font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.novaconium .tag-chip .tag-remove{background:none;border:none;color:inherit;font-size:16px;margin-left:.25rem;cursor:pointer;padding:0;line-height:1}body.novaconium .tag-chip .tag-remove:hover{opacity:.7}body.novaconium .tags-input input[list]::-webkit-calendar-picker-indicator{display:none}/*# sourceMappingURL=novaconium.css.map */
+:root{--bg-dark: hsl(0, 0%, 2%);--bg-darker: hsl(210, 7%, 5%);--text-light: hsl(0, 0%, 100%);--text-lighter: hsl(120, 52%, 15%);--text-muted: hsl(120, 40%, 45%);--accent-light: hsl(120, 100%, 35%);--accent-success: hsl(120, 80%, 45%);--accent-warning: hsl(60, 100%, 35%);--accent-error: hsl(0, 100%, 45%);--border-light: hsla(120, 60%, 70%, 0.2);--font-stack: Courier New, SF Mono, monospace}*{box-sizing:border-box}html{font-size:16px;line-height:1.5;scroll-behavior:smooth;background-color:hsl(0,0%,2%);color:#fff}body{margin:0;padding:0;font-family:"Courier New","SF Mono",monospace;background-color:hsl(0,0%,2%);color:#fff;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0 0 .5em;font-weight:600;line-height:1.2;color:rgb(0,178.5,0)}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}p{margin:0 0 1em}small{font-size:.875rem}strong,b{font-weight:700}em,i{font-style:italic}a{color:rgb(0,178.5,0);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .2s ease}a:hover,a:focus{border-bottom-color:rgb(0,178.5,0);outline:none}ul,ol{margin:0 0 1em;padding-left:1.5em}li{margin-bottom:.25em}blockquote{margin:1em 0;padding:.5em 1em;border-left:4px solid rgb(0,178.5,0);background-color:hsla(0,0%,2%,.5);color:#fff}code,kbd,samp{font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:.875em;background-color:hsla(0,0%,100%,.1);padding:.125em .25em;border-radius:3px}pre{margin:1em 0;padding:1em;overflow:auto;background-color:hsla(0,0%,100%,.1);border-radius:4px}pre code{background:none;padding:0}table{width:100%;border-collapse:collapse;margin:1em 0}th,td{padding:.75em;text-align:left;border-bottom:1px solid hsla(0,0%,100%,.2)}th{font-weight:600}input,select,textarea,button{font-family:inherit;font-size:inherit;background-color:hsla(0,0%,100%,.1);color:#fff;border:1px solid hsla(0,0%,100%,.3);border-radius:4px;padding:.5em}input:focus,select:focus,textarea:focus,button:focus{outline:none;border-color:rgb(0,178.5,0);box-shadow:0 0 0 2px rgba(0,178.5,0,.2)}button{cursor:pointer;transition:background-color .2s ease}button:disabled{opacity:.5;cursor:not-allowed}img{max-width:100%;height:auto;border-radius:4px}figure{margin:1em 0}hr{border:none;height:1px;background-color:hsla(0,0%,100%,.2);margin:2em 0}*:focus-visible{outline:2px solid rgb(0,178.5,0);outline-offset:2px}@media print{body{background:#fff !important;color:#000 !important}}::selection{background:rgba(0,178.5,0,.3);color:#fff}*::-moz-selection{background:rgba(0,178.5,0,.3);color:#fff}body.novaconium{background-color:#000;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%231f2c17' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E")}body.novaconium #page .container{display:flex;padding:0;justify-content:center;align-items:flex-start;padding-top:1.5rem}body.novaconium article{width:1140px;flex-shrink:0;padding:3rem;margin:0;background-color:hsl(0,0%,2%);border:1px solid hsl(210,7%,5%)}body.novaconium ul#leftnav{width:320px;flex-shrink:0;list-style:none;padding:0;margin:0 2.5rem 0 0;background-color:hsl(0,0%,2%);border:1px solid hsl(210,7%,5%)}body.novaconium #leftnav li{border-bottom:1px solid hsla(120,60%,70%,.2)}body.novaconium #leftnav li:last-child{border-bottom:none}body.novaconium #leftnav a{display:block;padding:.5rem 1rem;text-decoration:none;color:#fff}body.novaconium #leftnav a:hover,body.novaconium #leftnav a:focus{background-color:rgba(0,178.5,0,.1);color:rgb(0,178.5,0);border-radius:4px}@media(max-width: 1280px){body.novaconium #page .container{flex-direction:column;align-items:center}body.novaconium article,body.novaconium #leftnav{width:100%;max-width:900px;margin:1rem 0}body.novaconium #leftnav{margin-right:0}}body.novaconium code{font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:.875rem;background-color:hsl(210,7%,5%);color:#fff;padding:.25rem .5rem;border-radius:4px;border:1px solid hsla(120,60%,70%,.2);box-shadow:0 0 2px rgba(0,178.5,0,.1)}body.novaconium .small{font-size:.625rem}body.novaconium div.error,body.novaconium div.notice,body.novaconium div#debug{margin:2.5rem auto;width:900px;padding:1.5rem;border-radius:6px;border:1px solid}body.novaconium div.error{background-color:rgba(229.5,0,0,.1);color:rgb(229.5,0,0);border-color:rgb(229.5,0,0)}body.novaconium div.notice{background-color:hsla(120,80%,45%,.1);color:hsl(120,80%,45%);border-color:hsl(120,80%,45%)}body.novaconium div#debug{background-color:hsl(210,7%,5%);color:hsl(120,40%,45%);border-color:hsla(120,60%,70%,.2);margin-top:4rem;margin-bottom:4rem}body.novaconium .pages-table{width:100%;border:1px solid hsla(120,60%,70%,.2)}body.novaconium .pages-table th,body.novaconium .pages-table td{border:1px solid hsla(120,60%,70%,.2);text-align:left}body.novaconium .pages-table th{background-color:rgba(0,178.5,0,.05);color:hsl(120,52%,15%);font-weight:600}body.novaconium #edit-page-form-novaconium .form-group{margin-bottom:1rem}body.novaconium #edit-page-form-novaconium .form-group.fullwidth textarea{width:100%;resize:vertical}body.novaconium #edit-page-form-novaconium .checkbox-group{margin-top:1.5rem}body.novaconium #edit-page-form-novaconium input[type=text],body.novaconium #edit-page-form-novaconium input[type=number],body.novaconium #edit-page-form-novaconium textarea,body.novaconium #edit-page-form-novaconium select{background-color:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);color:#fff;padding:.5rem;border-radius:4px;font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace}body.novaconium #edit-page-form-novaconium input[type=text]:focus,body.novaconium #edit-page-form-novaconium input[type=number]:focus,body.novaconium #edit-page-form-novaconium textarea:focus,body.novaconium #edit-page-form-novaconium select:focus{border-color:rgb(0,178.5,0);box-shadow:0 0 0 .25rem rgba(0,178.5,0,.3);outline:none}body.novaconium #edit-page-form-novaconium input[type=checkbox]{accent-color:rgb(0,178.5,0)}body.novaconium #edit-page-form-novaconium button[type=submit]{background-color:rgb(0,178.5,0);color:hsl(0,0%,2%);border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace}body.novaconium #edit-page-form-novaconium button[type=submit]:hover,body.novaconium #edit-page-form-novaconium button[type=submit]:focus{background-color:#090;box-shadow:0 0 4px rgba(0,178.5,0,.5)}body.novaconium #edit-page-form-novaconium p{color:hsl(120,40%,45%)}body.novaconium #edit-page-form-novaconium a{color:rgb(0,178.5,0)}body.novaconium #edit-page-form-novaconium a:hover{color:hsl(120,52%,15%);text-decoration:underline}body.novaconium #login{padding:0}body.novaconium #login input[type=text],body.novaconium #login input[type=password],body.novaconium #login button[type=submit]{width:100%;max-width:300px;padding:1rem;margin-bottom:1rem;box-sizing:border-box;font-size:1rem;border:1px solid hsla(120,60%,70%,.2);border-radius:4px;background:hsl(0,0%,2%);color:#fff}body.novaconium #login input[type=text]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:1rem center;background-size:20px;padding-left:3rem}body.novaconium #login input[type=password]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:1rem center;background-size:20px;padding-left:3rem}body.novaconium #login button[type=submit]{background:rgb(0,178.5,0);border-color:rgb(0,178.5,0);cursor:pointer;transition:background .2s}body.novaconium #login button[type=submit]:hover{background:rgb(0,178.5,0);text-shadow:0 0 5px rgba(0,178.5,0,.5)}body.novaconium #login button[type=submit]::after{content:" →";margin-left:.5rem}body.novaconium #biglogo{position:relative;display:inline-block;padding:20px 0;border-radius:0;overflow:hidden}body.novaconium #biglogo::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(rgba(0, 255, 0, 0.02) 1px, transparent 1px),linear-gradient(90deg, rgba(0, 255, 0, 0.02) 1px, transparent 1px);background-size:20px 20px;opacity:.1;pointer-events:none}body.novaconium #biglogo::after{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg, transparent, #00ff00, transparent);opacity:.05;animation:scan 3s linear infinite}body.novaconium #biglogo .main{display:block;font-family:"Orbitron",sans-serif;font-size:4.5rem;font-weight:900;color:#fff;letter-spacing:.1em;line-height:.85;text-transform:uppercase;text-shadow:4px 4px 0 #222,5px 5px 0 #111,-1px -1px 0 lime,1px 1px 20px rgba(0,255,0,.3);filter:drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.8))}body.novaconium #biglogo .sub{display:block;font-family:"Orbitron",sans-serif;font-size:2.5rem;font-weight:700;color:#fff;letter-spacing:.15em;margin-top:.5rem;text-shadow:2px 2px 0 #222,-1px -1px 0 lime,1px 1px 10px rgba(0,255,0,.2);filter:drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.6))}body.novaconium #biglogo:hover .main{animation:glitch .3s infinite}@keyframes scan{0%{top:-1px}100%{top:100%}}@keyframes glitch{0%,100%{transform:translate(0)}20%{transform:translate(-2px, 2px)}40%{transform:translate(-2px, -2px)}60%{transform:translate(2px, 2px)}80%{transform:translate(2px, -2px)}}body#controlPanel .tab-container{margin:1.5rem auto;background:hsl(0,0%,2%)}body#controlPanel .tab-nav{display:flex;background-color:hsl(210,7%,5%);border-bottom:1px solid hsla(120,60%,70%,.2)}body#controlPanel .tab-button{padding:.5rem 1rem;background:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);border-bottom:none;cursor:pointer;font-size:14px;min-width:120px;text-align:center;color:#fff;font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace}body#controlPanel .tab-button:hover{background-color:hsl(210,7%,10%)}body#controlPanel .tab-button+.tab-button{border-left:none}body#controlPanel .tab-button.active{background-color:hsl(0,0%,2%);border-bottom:2px solid rgb(0,178.5,0);color:rgb(0,178.5,0);font-weight:bold}body#controlPanel .tab-content{display:none;padding:1.5rem;background-color:hsl(0,0%,2%);color:#fff;border:none}body#controlPanel .tab-content.active{display:block}#edit-page-title{margin-top:2rem}#edit-page-title #title{width:100%;font-size:1.9rem;padding:20px}#edit-page-title>div{font-size:.8rem;margin:8px 0 0 20px}body.novaconium .tooltip{position:relative;display:inline-block;cursor:help;font-size:16px;color:rgb(0,178.5,0);margin-left:.25rem;top:2px}body.novaconium .tooltip .tooltiptext{visibility:hidden;width:200px;background-color:hsl(210,7%,5%);color:#fff;text-align:left;border-radius:0;padding:.5rem;position:fixed;z-index:1000;opacity:0;transition:opacity .3s;font-size:14px;box-shadow:0 2px 5px rgba(0,0,0,.2);pointer-events:none}body.novaconium .tooltip .tooltiptext::after{content:"";position:absolute;top:-5px;left:10px;border-width:5px;border-style:solid;border-color:hsl(210,7%,5%) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}body.novaconium .tooltip:hover .tooltiptext{visibility:visible;opacity:1}body.novaconium .tooltip-desc{position:absolute;left:-9999px}.editor-container{width:100%;min-height:400px}.ace-editor{height:400px;border:1px solid rgb(0,178.5,0);font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace}.ace-editor .ace_gutter{background:hsl(210,7%,5%) !important;color:hsl(120,40%,45%) !important;border-right:1px solid rgb(0,178.5,0) !important}.ace-editor .ace_scroller{background:hsl(0,0%,2%) !important}.ace-editor .ace_text-layer .ace_print-margin{background:rgba(0,0,0,0) !important}.ace-editor .ace_marker-layer .ace_selection{background:rgba(0,178.5,0,.7) !important}body.novaconium .tags-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:hsl(210,7%,5%);border:1px solid hsla(120,60%,70%,.2);border-top:none;border-radius:0 0 4px 4px;list-style:none;margin:0;padding:0;z-index:10;opacity:0;visibility:hidden;transition:opacity .2s}body.novaconium .tags-dropdown[aria-expanded=true]{opacity:1;visibility:visible}body.novaconium .tags-dropdown li{padding:.25rem .5rem;cursor:pointer;color:#fff;font-size:14px;border-bottom:1px solid rgba(0,0,0,0)}body.novaconium .tags-dropdown li:hover,body.novaconium .tags-dropdown li.selected{background:rgba(0,178.5,0,.9);color:rgb(0,178.5,0)}body.novaconium .tags-dropdown li:last-child{border-bottom:none}body.novaconium .tags-input{position:relative}body.novaconium .tags-input{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;border:1px solid hsla(120,60%,70%,.2);padding:.25rem;background:hsl(210,7%,5%);min-height:40px;grid-column:2}body.novaconium .tags-input input{border:none;background:rgba(0,0,0,0);color:#fff;font-family:"Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:14px;flex:1;min-width:100px;outline:none}body.novaconium .tags-input input::placeholder{color:hsl(120,40%,45%)}body.novaconium .tag-chip{display:inline-flex;align-items:center;background:rgba(0,178.5,0,.8);color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.novaconium .tag-chip .tag-remove{background:none;border:none;color:inherit;font-size:16px;margin-left:.25rem;cursor:pointer;padding:0;line-height:1}body.novaconium .tag-chip .tag-remove:hover{opacity:.7}body.novaconium .tags-input input[list]::-webkit-calendar-picker-indicator{display:none}body#controlPanel header{padding:0}body#controlPanel h1#biglogo{padding:10px 0 0 0;margin:0}body#controlPanel div#panel{display:flex;flex-direction:row}body#controlPanel div#panel div#cp-menu{background-color:#000;width:360px;padding:0;white-space:nowrap}body#controlPanel div#panel div#cp-menu ul#cp-nav{list-style:none;margin:0;padding:20px 0 0 0}body#controlPanel div#panel div#cp-menu ul#cp-nav li a{display:block;border-bottom:1px solid hsla(120,60%,70%,.2);padding:4px 10px}body#controlPanel div#panel div#cp-menu ul#cp-nav li a:hover{background-color:#222}body#controlPanel div#panel main#content{flex:1;padding:20px 40px;min-width:0;background-color:rgba(11,11,11,.8392156863);border-left:2px solid #104910}body#controlPanel footer{padding:1rem}body#controlPanel h1{font-family:"VT323","Courier New","SF Mono","Fira Code",Consolas,monospace;font-size:48px}/*# sourceMappingURL=novaconium.css.map */
diff --git a/skeleton/novaconium/public/css/novaconium.css.map b/skeleton/novaconium/public/css/novaconium.css.map
deleted file mode 100644
index 2f4f77f..0000000
--- a/skeleton/novaconium/public/css/novaconium.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sourceRoot":"","sources":["../../../../sass/abstracts/_variables.sass","../../../../sass/base/_reset.sass","../../../../sass/base/_background.sass","../../../../sass/framework/_main.sass","../../../../sass/framework/_ui.sass","../../../../sass/framework/_forms.sass","../../../../sass/framework/_login_form.sass","../../../../sass/framework/_logo.sass","../../../../sass/framework/_tabs.sass","../../../../sass/framework/_edit_page.sass","../../../../sass/framework/_tooltip.sass","../../../../sass/framework/_ace.sass","../../../../sass/framework/_tags.sass"],"names":[],"mappings":"CAoEA,MACE,0BACA,8BACA,+BACA,mCACA,iCACA,oCACA,qCACA,qCACA,kCACA,yCACA,8CC1EF,EACE,sBAEF,KACE,eACA,gBACA,uBACA,iBDWQ,aCVR,MDYW,KCVb,KACE,SACA,UACA,YDgBW,kCCfX,iBDIQ,aCHR,MDKW,KCJX,iBAGF,kBACE,gBACA,gBACA,gBACA,qBAEF,GACE,iBAEF,GACE,eAEF,GACE,kBAEF,GACE,iBAEF,GACE,kBAEF,GACE,eAGF,EACE,eAEF,MACE,kBAEF,SACE,gBAEF,KACE,kBAGF,EACE,MDnCa,eCoCb,qBACA,sCACA,iCAEA,gBACE,oBDzCW,eC0CX,aAGJ,MACE,eACA,mBAEF,GACE,oBAGF,WACE,aACA,iBACA,qCACA,kCACA,MD7DW,KCgEb,cACE,YDvDU,uDCwDV,iBACA,oCACA,qBACA,kBAEF,IACE,aACA,YACA,cACA,oCACA,kBACA,SACE,gBACA,UAGJ,MACE,WACA,yBACA,aAEF,MACE,cACA,gBACA,2CAEF,GACE,gBAGF,6BACE,oBACA,kBACA,oCACA,MDpGW,KCqGX,oCACA,kBACA,aAEA,qDACE,aACA,aDxGW,eCyGX,wCAEJ,OACE,eACA,qCAEA,gBACE,WACA,mBAGJ,IACE,eACA,YACA,kBAEF,OACE,aAGF,GACE,YACA,WACA,oCACA,aAGF,gBACE,iCACA,mBAGF,aACE,KACE,2BACA,uBAEJ,YACE,8BACA,MDnJW,KCsJb,kBACE,8BACA,MDxJW,KEtBb,gBACI,sBACA,0uKCEF,iCACE,aACA,UACA,uBACA,uBACA,mBAGF,wBACE,aACA,cACA,aACA,SACA,iBHGM,aGFN,gCAEF,2BACE,YACA,cACA,gBACA,UACA,oBACA,iBHNM,aGON,gCAEF,4BACE,6CAEA,uCACE,mBAEJ,2BACE,cACA,mBACA,qBACA,MHjBS,KGmBT,kEACE,oCACA,MHlBS,eGmBT,kBAGJ,0BACE,iCACE,sBACA,mBAEF,iDACE,WACA,gBACA,cAEF,yBACE,gBCtDJ,qBACE,2EACA,kBACA,gCACA,MJcS,KIbT,qBACA,kBACA,sCACA,sCAGF,uBACE,kBAGF,+EACE,mBACA,YACA,eACA,kBACA,iBAEF,0BACE,oCACA,qBACA,4BAEF,2BACE,sCACA,uBACA,8BAEF,0BACE,gCACA,MJdS,iBIeT,kCACA,gBACA,mBAGF,6BACE,WACA,sCAEA,gEACE,sCACA,gBAEF,gCACE,qCACA,MJ/BS,iBIgCT,gBClDF,uDACE,mBAEA,0EACE,WACA,gBAEJ,2DACE,kBAGF,gOAIE,gCACA,sCACA,WACA,cACA,kBACA,2EAEA,wPACE,aLHO,eKIP,2CACA,aAEJ,gEACE,aLRS,eKWX,+DACE,iBLZS,eKaT,mBACA,YACA,mBACA,kBACA,eACA,2EAEA,0IACE,sBACA,sCAGJ,6CACE,ML3BO,iBK6BT,6CACE,ML7BS,eK+BT,mDACE,MLlCO,iBKmCP,0BCzDR,uBAEE,UAIA,+HAGE,WACA,gBACA,aACA,mBACA,sBACA,eACA,sCACA,kBACA,WNEM,aMDN,MNGS,6CMCT,uUACA,4BACA,gCACA,qBACA,kBAEF,4CACE,iVACA,4BACA,gCACA,qBACA,kBAEF,2CACE,WNZW,eMaX,aNbW,eMcX,eACA,0BAEA,iDACE,WNlBS,eMmBT,uCAGF,kDACE,aACA,kBCnDJ,yBACE,kBACA,qBACA,eACA,gBACA,gBAEA,iCACE,WACA,kBACA,MACA,OACA,QACA,SACA,gJACA,0BACA,WACA,oBAGF,gCACE,WACA,kBACA,MACA,OACA,QACA,WACA,qEACA,YACA,kCAEF,+BACE,cACA,kCACA,iBACA,gBACA,WACA,oBACA,gBACA,yBAGA,yFACA,mDAEF,8BACE,cACA,kCACA,iBACA,gBACA,WACA,qBACA,iBACA,0EACA,mDAIA,qCACE,8BAEN,gBACE,GACE,SACF,KACE,UAEJ,kBACE,QACE,uBACF,IACE,+BACF,IACE,gCACF,IACE,8BACF,IACE,gCCvEJ,+BACE,mBACA,WRcM,aQZR,yBACE,aACA,iBRWQ,eQVR,6CAEF,4BACE,mBACA,WRMQ,eQLR,sCACA,mBACA,eACA,eACA,gBACA,kBACA,WACA,YRSQ,uDQPR,kCACE,iCAEF,wCACE,iBAEF,mCACE,iBRZI,aQaJ,uCACA,MRTS,eQUT,iBAEJ,6BACE,aACA,eACA,iBRpBM,aQqBN,MRnBS,KQoBT,YAEA,oCACE,cC5CN,iBACI,gBAEA,wBACI,WACA,iBACA,aAEJ,qBACI,gBACA,oBCRN,yBACE,kBACA,qBACA,YACA,eACA,MViBW,eUhBX,mBACA,QAEA,sCACE,kBACA,YACA,iBVMM,eULN,MVMO,KULP,gBACA,gBACA,cACA,eACA,aACA,UACA,uBACA,eACA,oCACA,oBAEA,6CACE,WACA,kBACA,SACA,UACA,iBACA,mBACA,sEAEJ,4CACE,mBACA,UAGJ,8BACE,kBACA,aC1CJ,kBACE,WACA,iBAEF,YACE,aACA,gCACA,YXuBU,uDWpBV,wBACE,qCACA,kCACA,iDAEF,0BACE,mCAEF,8CACE,oCAGF,6CACE,yCCtBF,+BACE,kBACA,SACA,OACA,QACA,iBACA,gBACA,WZWQ,eYVR,sCACA,gBACA,0BACA,gBACA,SACA,UACA,WACA,UACA,kBACA,uBAEA,mDACE,UACA,mBAEF,kCACE,qBACA,eACA,MZPO,KYQP,eACA,sCAEA,mFAEE,8BACA,MZXO,eYaT,6CACE,mBAEN,4BACE,kBAGF,4BACE,aACA,eACA,WACA,mBACA,sCACA,eACA,WZ/BQ,eYgCR,gBACA,cAEA,kCACE,YACA,yBACA,MZrCO,KYsCP,YZ5BM,uDY6BN,eACA,OACA,gBACA,aAEA,+CACE,MZ3CK,iBY6CX,0BACE,oBACA,mBACA,8BACA,MZhDW,eYiDX,qBACA,kBACA,eACA,gBACA,gBACA,uBACA,mBAEA,sCACE,gBACA,YACA,cACA,eACA,mBACA,eACA,UACA,cAEA,4CACE,WAWN,2EACE","file":"novaconium.css"}
\ No newline at end of file
diff --git a/twig/controlPanel/control-panel.html twig b/twig/cp/control-panel.html.twig
similarity index 68%
rename from twig/controlPanel/control-panel.html twig
rename to twig/cp/control-panel.html.twig
index 0d7ac7b..d186915 100644
--- a/twig/controlPanel/control-panel.html twig
+++ b/twig/cp/control-panel.html.twig
@@ -9,17 +9,17 @@
{# Page Header #}
Novaconium PHP
+ Novaconium