diff --git a/README.md b/README.md index 6f978f1..c8b4f39 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ docker run --rm --interactive --tty --volume ./novaconium/:/app composer:latest cp -R novaconium/vendor/4lt/novaconium/skeleton/. .; # Edit .env +# pwgen -cnsB1v 12 root password +# pwgen -cnsB1v 12 mysql user password (need in both config and env) +# pwgen -cnsB1v 64 framework key (need in config) # Edit novaconium/App/config.php docker compose up -d diff --git a/sass/abstracts/_variables.sass b/sass/abstracts/_variables.sass new file mode 100644 index 0000000..981a80e --- /dev/null +++ b/sass/abstracts/_variables.sass @@ -0,0 +1,80 @@ +// abstracts/_variables.sass (updated) + +@use 'sass:map' + +// Color palette (Sass map: HSL for modularity; all lightnesses darkened ~10-20%) +$colors: ( + 'bg-dark': hsl(0, 0%, 2%), + 'bg-darker': hsl(210, 7%, 5%), + 'text-light': hsla(0, 0%, 100%, 1.00), + '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) +) + +// Helper functions to pull from map +@function color($key) + @return map.get($colors, $key) + +// Direct vars for common use +$bg-dark: color('bg-dark') !default +$bg-darker: color('bg-darker') !default +$text-light: color('text-light') !default +$text-lighter: color('text-lighter') !default +$text-muted: color('text-muted') !default +$accent-light: color('accent-light') !default +$accent-success: color('accent-success') !default +$accent-warning: color('accent-warning') !default +$accent-error: color('accent-error') !default +$border-light: color('border-light') !default + +$font-stack: 'Courier New', 'SF Mono', monospace +$mono-font: 'Courier New', 'SF Mono', 'Fira Code', Consolas, monospace + +$spacing: ( + 'xs': 0.25rem, + 'sm': 0.5rem, + 'md': 1rem, + 'lg': 1.5rem, + 'xl': 2.5rem, + '2xl': 4rem +) + +@function space($key) + @return map.get($spacing, $key) + +$breakpoints: ( + 'sm': 640px, + 'md': 768px, + 'lg': 1024px, + 'xl': 1280px, + '2xl': 1536px +) + +$z-index: ( + 'dropdown': 1000, + 'sticky': 50, + 'modal': 2000 +) + +@function z($key) + @return map.get($z-index, $key) + +$dark-mode: true !default + +:root + --bg-dark: #{color('bg-dark')} + --bg-darker: #{color('bg-darker')} + --text-light: #{color('text-light')} + --text-lighter: #{color('text-lighter')} + --text-muted: #{color('text-muted')} + --accent-light: #{color('accent-light')} + --accent-success: #{color('accent-success')} + --accent-warning: #{color('accent-warning')} + --accent-error: #{color('accent-error')} + --border-light: #{color('border-light')} + --font-stack: #{$font-stack} \ No newline at end of file diff --git a/sass/abstracts/index.sass b/sass/abstracts/index.sass new file mode 100644 index 0000000..aa4ff9a --- /dev/null +++ b/sass/abstracts/index.sass @@ -0,0 +1 @@ +@forward 'variables'; \ No newline at end of file diff --git a/sass/base/_background.sass b/sass/base/_background.sass new file mode 100644 index 0000000..4454b18 --- /dev/null +++ b/sass/base/_background.sass @@ -0,0 +1,6 @@ +// base/_background.sass +// svg from https://heropatterns.com/ + +body + background-color: #000000; + 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") \ No newline at end of file diff --git a/sass/base/_reset.sass b/sass/base/_reset.sass new file mode 100644 index 0000000..5bffe54 --- /dev/null +++ b/sass/base/_reset.sass @@ -0,0 +1,178 @@ +// base/_reset.sass + +@use '../abstracts' as * + +// Global box-sizing and resets +* + box-sizing: border-box + +html + font-size: 16px // Base font size + line-height: 1.5 + scroll-behavior: smooth + background-color: $bg-dark // Dark bg + color: $text-light // Light text + +body + margin: 0 + padding: 0 + font-family: $font-stack // e.g., -apple-system, sans-serif + background-color: $bg-dark + color: $text-light + min-height: 100vh + +// Headings: Light, bold, with spacing +h1, h2, h3, h4, h5, h6 + margin: 0 0 0.5em + font-weight: 600 + line-height: 1.2 + color: $accent-light + +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 + +// Paragraphs and text +p + margin: 0 0 1em + +small + font-size: 0.875rem + +strong, b + font-weight: 700 + +em, i + font-style: italic + +// Links: Light with hover underline +a + color: $accent-light + text-decoration: none + border-bottom: 1px solid transparent + transition: border-color 0.2s ease + + &:hover, &:focus + border-bottom-color: $accent-light + outline: none + +// Lists +ul, ol + margin: 0 0 1em + padding-left: 1.5em + +li + margin-bottom: 0.25em + +// Blockquote +blockquote + margin: 1em 0 + padding: 0.5em 1em + border-left: 4px solid $accent-light + background-color: rgba($bg-dark, 0.5) + color: $text-light + +// Code and pre +code, kbd, samp + font-family: $mono-font + font-size: 0.875em + background-color: rgba($text-light, 0.1) + padding: 0.125em 0.25em + border-radius: 3px + +pre + margin: 1em 0 + padding: 1em + overflow: auto + background-color: rgba($text-light, 0.1) + border-radius: 4px + code + background: none + padding: 0 + +// Tables +table + width: 100% + border-collapse: collapse + margin: 1em 0 + +th, td + padding: 0.75em + text-align: left + border-bottom: 1px solid rgba($text-light, 0.2) + +th + font-weight: 600 + +// Forms +input, select, textarea, button + font-family: inherit + font-size: inherit + background-color: rgba($text-light, 0.1) + color: $text-light + border: 1px solid rgba($text-light, 0.3) + border-radius: 4px + padding: 0.5em + + &:focus + outline: none + border-color: $accent-light + box-shadow: 0 0 0 2px rgba($accent-light, 0.2) + +button + cursor: pointer + transition: background-color 0.2s ease + + &:disabled + opacity: 0.5 + cursor: not-allowed + +// Images and media +img + max-width: 100% + height: auto + border-radius: 4px // Optional subtle rounding + +figure + margin: 1em 0 + +// HR +hr + border: none + height: 1px + background-color: rgba($text-light, 0.2) + margin: 2em 0 + +// Accessibility: Focus visible for all interactive elements +*:focus-visible + outline: 2px solid $accent-light + outline-offset: 2px + +// Print styles (optional) +@media print + body + background: white !important + color: black !important + +::selection + background: rgba($accent-light, 0.3) // Subtle accent highlight for that terminal select vibe + color: $text-light // Crisp text contrast + +// Optional: Vendor prefixes for broader support (though modern browsers are solid) +*::-moz-selection + background: rgba($accent-light, 0.3) + color: $text-light \ No newline at end of file diff --git a/sass/base/index.sass b/sass/base/index.sass new file mode 100644 index 0000000..a28cbf2 --- /dev/null +++ b/sass/base/index.sass @@ -0,0 +1,2 @@ +@forward 'reset'; +@forward 'background'; \ No newline at end of file diff --git a/sass/framework/_forms.sass b/sass/framework/_forms.sass new file mode 100644 index 0000000..6960820 --- /dev/null +++ b/sass/framework/_forms.sass @@ -0,0 +1,61 @@ +// pages/_forms.sass + +@use '../abstracts' as * +@use '../base' as * + +#edit-page-form-novaconium + // Form groups: Spacing + .form-group + margin-bottom: space('md') // 1rem + + &.fullwidth textarea + width: 100% + resize: vertical + + .checkbox-group + margin-top: space('lg') // 1.5rem + + // Inputs: Dark bg, green focus + input[type="text"], + input[type="number"], + textarea, + select + background-color: color('bg-darker') // Deeper green-black + border: 1px solid color('border-light') + color: $text-light + padding: space('sm') + border-radius: 4px + font-family: 'VT323', $mono-font // Matrix monospace + + &:focus + border-color: $accent-light // Lime focus + box-shadow: 0 0 0 space('xs') rgba($accent-light, 0.3) // Glow ring + outline: none + + input[type="checkbox"] + accent-color: $accent-light // Green checkbox + + // Submit button: Green primary + button[type="submit"] + background-color: $accent-light + color: color('bg-dark') // Dark text on green + border: none + padding: space('sm') space('md') + border-radius: 4px + cursor: pointer + font-family: 'VT323', $mono-font + + &:hover, &:focus + background-color: hsl(120, 100%, 30%) // Darker green (35% L -5%) + box-shadow: 0 0 4px rgba($accent-light, 0.5) + + // Text/links: Muted with hover + p + color: $text-muted + + a + color: $accent-light + + &:hover + color: $text-lighter // Brighter green + text-decoration: underline \ No newline at end of file diff --git a/sass/framework/_login_form.sass b/sass/framework/_login_form.sass new file mode 100644 index 0000000..8539c11 --- /dev/null +++ b/sass/framework/_login_form.sass @@ -0,0 +1,53 @@ +// framework/_login_form.sass + +@use '../abstracts' as * + +#login + // No background or border—use parent's ambient styling + padding: 0 // Or keep minimal if needed; adjust to 2rem if you want internal space + // No centering: left-aligned by default + + // Wrapper for inputs/button to align widths + input[type="text"], + input[type="password"], + button[type="submit"] + width: 100% // Full width of form (no max cap for flow) + max-width: 300px // Keep cap for consistency across fields + padding: 1rem + margin-bottom: 1rem + box-sizing: border-box // Include padding in width + font-size: 1rem + border: 1px solid $border-light + border-radius: 4px + background: $bg-dark + color: $text-light + + // Icon backgrounds: Cyber icons via data URI, now in white for visibility + input[type="text"] // Username input + 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 // Space for icon + + input[type="password"] // Password input + 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 // Space for icon + + button[type="submit"] + background: $accent-light // Green accent for submit + border-color: $accent-light + cursor: pointer + transition: background 0.2s + + &:hover + background: $accent-light + text-shadow: 0 0 5px rgba($accent-light, 0.5) // Cyber glow + + // No icon needed for button, but add if you want (e.g., arrow) + &::after + content: ' →' // Simple arrow, or swap for Material Icon + margin-left: 0.5rem \ No newline at end of file diff --git a/sass/framework/_logo.sass b/sass/framework/_logo.sass new file mode 100644 index 0000000..4ac8955 --- /dev/null +++ b/sass/framework/_logo.sass @@ -0,0 +1,78 @@ +#biglogo + position: relative + display: inline-block + padding: 20px 0 + border-radius: 0 // Keep it sharp, no curves + overflow: hidden + + &::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: 0.1 // Subtle grid/matrix rain hint + pointer-events: none + + // Scan lines for extra flicker + &::after + content: '' + position: absolute + top: 0 + left: 0 + right: 0 + height: 1px + background: linear-gradient(90deg, transparent, #00ff00, transparent) + opacity: 0.05 + animation: scan 3s linear infinite + + .main + display: block + font-family: 'Orbitron', sans-serif // Cyberpunk geometric punch + font-size: 4.5rem // Chunky figlet scale + font-weight: 900 // Black weight for max angular depth + color: #fff + letter-spacing: 0.1em // Slightly looser for Orbitron's geometry + line-height: 0.85 // Compact height like figlet blocks + text-transform: uppercase + + // Multi-layer shadow to mimic ansishadow's depth: base shadow + edge glow + text-shadow: 4px 4px 0 #222, 5px 5px 0 #111, -1px -1px 0 #00ff00, 1px 1px 20px rgba(0, 255, 0, 0.3) // Main drop shadow, deeper offset, subtle green edge highlight for cyber pop, glow for security flair + filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.8)) // Browser shadow boost + + .sub + display: block + font-family: 'Orbitron', sans-serif // Match for cohesion, or swap to monospace if you want contrast + font-size: 2.5rem + font-weight: 700 // Bold but not overpowering + color: #fff + letter-spacing: 0.15em // Wider for emphasis + margin-top: 0.5rem + text-shadow: 2px 2px 0 #222, -1px -1px 0 #00ff00, 1px 1px 10px rgba(0, 255, 0, 0.2) // Lighter shadow, subtle green edge, glow + filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.6)) + + // Optional: Glitch animation on hover for that hacked feel + &:hover + .main + animation: glitch 0.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) \ No newline at end of file diff --git a/sass/framework/_main.sass b/sass/framework/_main.sass new file mode 100644 index 0000000..4159cfb --- /dev/null +++ b/sass/framework/_main.sass @@ -0,0 +1,61 @@ +// layout/_main.sass + +@use '../abstracts' as * +@use '../base' as * + +// Main page wrapper: Centered flex +#page .container + display: flex + padding: 0 + justify-content: center + align-items: flex-start + padding-top: space('lg') + +// Article content: Fixed width, no shrink +article + width: 1140px + flex-shrink: 0 + padding: 3rem + margin: 0 + background-color: $bg-dark + border: 1px solid $bg-darker + +ul#leftnav + width: 320px + flex-shrink: 0 + list-style: none + padding: 0 + margin: 0 space('xl') 0 0 // Right margin preserved (overrides the 0 for other sides) + background-color: $bg-dark + border: 1px solid $bg-darker + +#leftnav li + border-bottom: 1px solid color('border-light') + + &:last-child + border-bottom: none + +#leftnav a + display: block + padding: space('sm') space('md') // Consistent spacing + text-decoration: none + color: $text-light // Theme text + + &:hover, &:focus + background-color: rgba($accent-light, 0.1) // Green hover tint + color: $accent-light // Accent on hover + border-radius: 4px + +// Responsive: Stack on mobile (add to themes/ for media queries) +@media (max-width: 1280px) // Your xl breakpoint + #page .container + flex-direction: column + align-items: center + + article, #leftnav + width: 100% + max-width: 900px + margin: space('md') 0 + + #leftnav + margin-right: 0 \ No newline at end of file diff --git a/sass/framework/_ui.sass b/sass/framework/_ui.sass new file mode 100644 index 0000000..3ac3e24 --- /dev/null +++ b/sass/framework/_ui.sass @@ -0,0 +1,58 @@ +// components/_ui.sass + +@use '../abstracts' as * +@use '../base' as * + +// Code blocks: Monospace lock-in with darker green tint +code + font-family: 'VT323', $mono-font // Prioritize Matrix font + font-size: 0.875rem // Smaller for inline; reset has base + background-color: color('bg-darker') // Deeper green-black + color: $text-light // Lighter green text + padding: space('xs') space('sm') + border-radius: 4px + border: 1px solid color('border-light') + box-shadow: 0 0 2px rgba($accent-light, 0.1) // Subtle glow + +// Utility: Small text (if still needed; consider rem-based) +.small + font-size: 0.625rem // 10px equiv; use sparingly + +// Error/notice divs: Centered alerts with theme colors +div.error, div.notice, div#debug + margin: space('xl') auto // Top/bottom spacing from map + width: 900px // Fixed width; add media query for mobile later + padding: space('lg') // Generous padding + border-radius: 6px + border: 1px solid + +div.error + background-color: rgba(color('accent-error'), 0.1) // Subtle red tint + color: color('accent-error') // Darker red text + border-color: color('accent-error') + +div.notice + background-color: rgba(color('accent-success'), 0.1) // Green tint + color: color('accent-success') // Heavier green text + border-color: color('accent-success') + +div#debug + background-color: color('bg-darker') // Deeper bg for debug + color: $text-muted // Muted green + border-color: color('border-light') + margin-top: space('2xl') + margin-bottom: space('2xl') + +// Tables: Simplified; reset handles collapse/padding +.pages-table + width: 100% + border: 1px solid color('border-light') // Green border + + th, td + border: 1px solid color('border-light') + text-align: left + + th + background-color: rgba($accent-light, 0.05) // Subtle accent bg + color: $text-lighter // Header green + font-weight: 600 // Semi-bold; no bold in monospace \ No newline at end of file diff --git a/sass/framework/index.sass b/sass/framework/index.sass new file mode 100644 index 0000000..8dcb9a6 --- /dev/null +++ b/sass/framework/index.sass @@ -0,0 +1,5 @@ +@forward 'main'; +@forward 'ui'; +@forward 'forms'; +@forward 'login_form'; +@forward 'logo'; \ No newline at end of file diff --git a/sass/novaconium.sass b/sass/novaconium.sass index 6f526a2..a3f1e47 100644 --- a/sass/novaconium.sass +++ b/sass/novaconium.sass @@ -1,142 +1,4 @@ -body - background-color: #1b1f23 - width: 100% - font-family: 'Fira Code', 'Source Code Pro', monospace - -#page .container - display: flex - padding: 0 - justify-content: center - align-items: flex-start - margin-top: 20px - -article - width: 900px - flex-shrink: 0 - -#leftnav - width: 320px - flex-shrink: 0 - margin: 0 - margin-right: 50px - -article, #leftnav - border: 1px solid #3b444c - background-color: #14171a - color: #fff - padding: 20px - -ul#leftnav - list-style: none - padding: 0 - -#leftnav li - border-bottom: 1px solid #3b444c - - &:last-child - border-bottom: none - -#leftnav a - display: block - padding: 10px 15px - text-decoration: none - color: #fff - - &:hover - background: #333 - -code - font-family: 'Fira Code', monospace - font-size: 13px - background-color: #0d1117 - color: #c9d1d9 - padding: 0.2em 0.4em - border-radius: 6px - border: 1px solid #30363d - -.small - font-size: 10px - -h2 - margin-top: 40px - -div.error, div#debug - border: 1px solid red - padding: 30px - background-color: pink - color: darkred - margin: 0 auto - width: 900px - -div.notice - border: 1px solid rgb(31, 119, 13) - padding: 30px - background-color: rgb(169, 218, 163) - color: rgb(20, 56, 13) - margin: 0 auto - width: 900px - -div#debug - margin-top: 100px - margin-bottom: 100px - -.pages-table - width: 100% - border-collapse: collapse - border: 1px solid #333 - - th, td - padding: 10px - border: 1px solid #ddd - text-align: left - - th - font-weight: bold - -/* ============================================================ - DARK MODE STYLES — edit-page-form-novaconium - ============================================================ */ -@media (prefers-color-scheme: dark) - #edit-page-form-novaconium - input[type="text"], - input[type="number"], - textarea, - select - background: #2a2a2a - border: 1px solid #444 - color: #eee - - input:focus, - textarea:focus, - select:focus - border-color: #3399ff - box-shadow: 0 0 0 3px rgba(51, 153, 255, 0.25) - - input[type="checkbox"] - accent-color: #3399ff - - button[type="submit"] - background: #3399ff - color: #fff - - &:hover - background: #1d7fd4 - - p - color: #aaa - - a - color: #66b3ff - - &:hover - color: #99ccff - - .form-group - margin-bottom: 1.2rem - - &.fullwidth textarea - width: 100% - resize: vertical - - .checkbox-group - margin-top: 1.5rem +// novaconium.sass +@use 'abstracts' as * +@use 'base' as * +@use 'framework' as * diff --git a/skeleton/novaconium/App/config.php b/skeleton/novaconium/App/config.php index ddc4d51..36dde83 100644 --- a/skeleton/novaconium/App/config.php +++ b/skeleton/novaconium/App/config.php @@ -10,5 +10,6 @@ $config = [ 'base_url' => 'http://localhost:8000', 'secure_key' => '', //64 alphanumeric characters 'logfile' => '/logs/novaconium.log', - 'loglevel' => 'ERROR' // 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'NONE' + 'loglevel' => 'ERROR', // 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'NONE' + 'fonts' => 'https://fonts.googleapis.com/css2?family=VT323:wght@400&family=Fira+Code:wght@400;500&display=swap&family=Material+Icons:wght@400;500&display=swap' ]; diff --git a/skeleton/novaconium/public/css/novaconium.css b/skeleton/novaconium/public/css/novaconium.css index 3a952cd..18f5e91 100644 --- a/skeleton/novaconium/public/css/novaconium.css +++ b/skeleton/novaconium/public/css/novaconium.css @@ -1 +1 @@ -body{background-color:#1b1f23;width:100%;font-family:"Fira Code","Source Code Pro",monospace}#page .container{display:flex;padding:0;justify-content:center;align-items:flex-start;margin-top:20px}article{width:900px;flex-shrink:0}#leftnav{width:320px;flex-shrink:0;margin:0;margin-right:50px}article,#leftnav{border:1px solid #3b444c;background-color:#14171a;color:#fff;padding:20px}ul#leftnav{list-style:none;padding:0}#leftnav li{border-bottom:1px solid #3b444c}#leftnav li:last-child{border-bottom:none}#leftnav a{display:block;padding:10px 15px;text-decoration:none;color:#fff}#leftnav a:hover{background:#333}code{font-family:"Fira Code",monospace;font-size:13px;background-color:#0d1117;color:#c9d1d9;padding:.2em .4em;border-radius:6px;border:1px solid #30363d}.small{font-size:10px}h2{margin-top:40px}div.error,div#debug{border:1px solid red;padding:30px;background-color:pink;color:darkred;margin:0 auto;width:900px}div.notice{border:1px solid #1f770d;padding:30px;background-color:#a9daa3;color:#14380d;margin:0 auto;width:900px}div#debug{margin-top:100px;margin-bottom:100px}.pages-table{width:100%;border-collapse:collapse;border:1px solid #333}.pages-table th,.pages-table td{padding:10px;border:1px solid #ddd;text-align:left}.pages-table th{font-weight:bold}@media(prefers-color-scheme: dark){#edit-page-form-novaconium input[type=text],#edit-page-form-novaconium input[type=number],#edit-page-form-novaconium textarea,#edit-page-form-novaconium select{background:#2a2a2a;border:1px solid #444;color:#eee}#edit-page-form-novaconium input:focus,#edit-page-form-novaconium textarea:focus,#edit-page-form-novaconium select:focus{border-color:#39f;box-shadow:0 0 0 3px rgba(51,153,255,.25)}#edit-page-form-novaconium input[type=checkbox]{accent-color:#39f}#edit-page-form-novaconium button[type=submit]{background:#39f;color:#fff}#edit-page-form-novaconium button[type=submit]:hover{background:#1d7fd4}#edit-page-form-novaconium p{color:#aaa}#edit-page-form-novaconium a{color:#66b3ff}#edit-page-form-novaconium a:hover{color:#9cf}#edit-page-form-novaconium .form-group{margin-bottom:1.2rem}#edit-page-form-novaconium .form-group.fullwidth textarea{width:100%;resize:vertical}#edit-page-form-novaconium .checkbox-group{margin-top:1.5rem}}/*# 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{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")}#page .container{display:flex;padding:0;justify-content:center;align-items:flex-start;padding-top:1.5rem}article{width:1140px;flex-shrink:0;padding:3rem;margin:0;background-color:hsl(0,0%,2%);border:1px solid hsl(210,7%,5%)}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%)}#leftnav li{border-bottom:1px solid hsla(120,60%,70%,.2)}#leftnav li:last-child{border-bottom:none}#leftnav a{display:block;padding:.5rem 1rem;text-decoration:none;color:#fff}#leftnav a:hover,#leftnav a:focus{background-color:rgba(0,178.5,0,.1);color:rgb(0,178.5,0);border-radius:4px}@media(max-width: 1280px){#page .container{flex-direction:column;align-items:center}article,#leftnav{width:100%;max-width:900px;margin:1rem 0}#leftnav{margin-right:0}}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)}.small{font-size:.625rem}div.error,div.notice,div#debug{margin:2.5rem auto;width:900px;padding:1.5rem;border-radius:6px;border:1px solid}div.error{background-color:rgba(229.5,0,0,.1);color:rgb(229.5,0,0);border-color:rgb(229.5,0,0)}div.notice{background-color:hsla(120,80%,45%,.1);color:hsl(120,80%,45%);border-color:hsl(120,80%,45%)}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}.pages-table{width:100%;border:1px solid hsla(120,60%,70%,.2)}.pages-table th,.pages-table td{border:1px solid hsla(120,60%,70%,.2);text-align:left}.pages-table th{background-color:rgba(0,178.5,0,.05);color:hsl(120,52%,15%);font-weight:600}#edit-page-form-novaconium .form-group{margin-bottom:1rem}#edit-page-form-novaconium .form-group.fullwidth textarea{width:100%;resize:vertical}#edit-page-form-novaconium .checkbox-group{margin-top:1.5rem}#edit-page-form-novaconium input[type=text],#edit-page-form-novaconium input[type=number],#edit-page-form-novaconium textarea,#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}#edit-page-form-novaconium input[type=text]:focus,#edit-page-form-novaconium input[type=number]:focus,#edit-page-form-novaconium textarea:focus,#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}#edit-page-form-novaconium input[type=checkbox]{accent-color:rgb(0,178.5,0)}#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}#edit-page-form-novaconium button[type=submit]:hover,#edit-page-form-novaconium button[type=submit]:focus{background-color:#090;box-shadow:0 0 4px rgba(0,178.5,0,.5)}#edit-page-form-novaconium p{color:hsl(120,40%,45%)}#edit-page-form-novaconium a{color:rgb(0,178.5,0)}#edit-page-form-novaconium a:hover{color:hsl(120,52%,15%);text-decoration:underline}#login{padding:0}#login input[type=text],#login input[type=password],#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}#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}#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}#login button[type=submit]{background:rgb(0,178.5,0);border-color:rgb(0,178.5,0);cursor:pointer;transition:background .2s}#login button[type=submit]:hover{background:rgb(0,178.5,0);text-shadow:0 0 5px rgba(0,178.5,0,.5)}#login button[type=submit]::after{content:" →";margin-left:.5rem}#biglogo{position:relative;display:inline-block;padding:20px 0;border-radius:0;overflow:hidden}#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}#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}#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))}#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))}#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)}}/*# sourceMappingURL=novaconium.css.map */ diff --git a/src/novaconium.php b/src/novaconium.php index aaffae0..71f6c26 100644 --- a/src/novaconium.php +++ b/src/novaconium.php @@ -20,6 +20,7 @@ require_once(FRAMEWORKPATH . '/src/functions.php'); // Creates the view() function using twig $data = array(); require_once(FRAMEWORKPATH . '/src/twig.php'); +$data['fonts'] = $config['fonts']; // Start a Session require_once(FRAMEWORKPATH . '/src/Session.php'); diff --git a/twig/head.html.twig b/twig/head.html.twig index 650e8ff..cc462f6 100644 --- a/twig/head.html.twig +++ b/twig/head.html.twig @@ -1,26 +1,40 @@ - -{{ title | default('Welcome To Novaconium') }} - +{# ============================================================================= + + ============================================================================= +#} + + +{{ title | default('Welcome To Novaconium') }} + + + +{# SEO & METADATA #} + - +{# DARK MODE & THEME HINTS #} + + + +{# OPEN GRAPH (OG) FOR SOCIAL SHARING #} - - - + + + +{# PWA & FAVICONS #} + + - - +{# GOOGLE FONTS (CDN VIA PRECONNECT) #} + + + -{# https://developers.google.com/fonts/docs/getting_started #} - - - - - \ No newline at end of file +{# STYLESHEET #} + \ No newline at end of file diff --git a/twig/left.html.twig b/twig/left.html.twig index 9b8ae2b..e5ee10d 100644 --- a/twig/left.html.twig +++ b/twig/left.html.twig @@ -1,11 +1,15 @@ -{% if username is not empty %}
-
-{% endif %} \ No newline at end of file + \ No newline at end of file diff --git a/views/login.html.twig b/views/login.html.twig index 3a4a969..0060822 100644 --- a/views/login.html.twig +++ b/views/login.html.twig @@ -4,7 +4,7 @@

{{title}}

-
+