feat: black ops colour migration + 3-column HUD grid layout

- Replace all #00ffc8 → #00ff41 in admin.css (74 refs), admin.html (2 refs), index.html SVG (15 refs)
- Replace all rgba(0,255,200,...) → rgba(0,255,65,...) across all files
- Restructure hero HUD from 2-col to 3-col grid: narrow left (map 250px), center (identity), right (data panels 380px)
- Add .hud-col-center wrapper for identity block
- Update responsive breakpoints for 1024px, 768px, 480px
- Increase max-width to 1400px for wider displays
This commit is contained in:
jae 2026-04-01 04:20:39 +00:00
parent 139849d632
commit 3c31a18cb9
4 changed files with 122 additions and 97 deletions

View file

@ -854,8 +854,8 @@
<div class="editor-field"> <div class="editor-field">
<label class="editor-label" for="themeAccentColor">ACCENT COLOUR</label> <label class="editor-label" for="themeAccentColor">ACCENT COLOUR</label>
<div class="color-picker-row"> <div class="color-picker-row">
<input type="color" id="themeAccentColor" class="editor-input color-input" value="#00ffc8"> <input type="color" id="themeAccentColor" class="editor-input color-input" value="#00ff41">
<input type="text" id="themeAccentColorHex" class="editor-input color-hex" value="#00ffc8" placeholder="#00ffc8"> <input type="text" id="themeAccentColorHex" class="editor-input color-hex" value="#00ff41" placeholder="#00ff41">
</div> </div>
</div> </div>
<div class="editor-field"> <div class="editor-field">

View file

@ -58,7 +58,7 @@ body {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
min-height: 100vh; min-height: 100vh;
background: radial-gradient(ellipse at center, rgba(0,255,200,0.03) 0%, transparent 70%), var(--bg); background: radial-gradient(ellipse at center, rgba(0,255,65,0.03) 0%, transparent 70%), var(--bg);
} }
.login-box { .login-box {
@ -77,7 +77,7 @@ body {
.login-icon { .login-icon {
font-size: 2.5rem; font-size: 2.5rem;
color: var(--accent); color: var(--accent);
text-shadow: 0 0 20px rgba(0,255,200,0.3); text-shadow: 0 0 20px rgba(0,255,65,0.3);
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
@ -121,7 +121,7 @@ body {
} }
.login-input:focus { .login-input:focus {
border-color: var(--accent); border-color: var(--accent);
box-shadow: 0 0 8px rgba(0,255,200,0.15); box-shadow: 0 0 8px rgba(0,255,65,0.15);
} }
.login-error { .login-error {
@ -147,7 +147,7 @@ body {
} }
.login-btn:hover { .login-btn:hover {
background: var(--accent-dim); background: var(--accent-dim);
box-shadow: 0 0 15px rgba(0,255,200,0.2); box-shadow: 0 0 15px rgba(0,255,65,0.2);
} }
.login-footer { .login-footer {
@ -264,7 +264,7 @@ body {
} }
.mobile-menu-btn:hover { .mobile-menu-btn:hover {
border-color: var(--accent); border-color: var(--accent);
box-shadow: 0 0 8px rgba(0,255,200,0.15); box-shadow: 0 0 8px rgba(0,255,65,0.15);
} }
.mobile-menu-btn .hamburger-line { .mobile-menu-btn .hamburger-line {
display: block; display: block;
@ -331,11 +331,11 @@ body {
} }
.sidebar-link:hover { .sidebar-link:hover {
color: var(--text); color: var(--text);
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
} }
.sidebar-link.active { .sidebar-link.active {
color: var(--accent); color: var(--accent);
background: rgba(0,255,200,0.05); background: rgba(0,255,65,0.05);
border-left-color: var(--accent); border-left-color: var(--accent);
} }
@ -434,7 +434,7 @@ body {
} }
.action-btn:hover { .action-btn:hover {
background: var(--accent-dim); background: var(--accent-dim);
box-shadow: 0 0 10px rgba(0,255,200,0.15); box-shadow: 0 0 10px rgba(0,255,65,0.15);
} }
.action-btn.secondary { .action-btn.secondary {
border-color: var(--text-dim); border-color: var(--text-dim);
@ -504,7 +504,7 @@ body {
font-size: 1.6rem; font-size: 1.6rem;
font-weight: 700; font-weight: 700;
color: #fff; color: #fff;
text-shadow: 0 0 10px rgba(0,255,200,0.2); text-shadow: 0 0 10px rgba(0,255,65,0.2);
} }
/* ─── Services Grid (Dashboard) ─── */ /* ─── Services Grid (Dashboard) ─── */
@ -534,7 +534,7 @@ body {
align-items: center; align-items: center;
gap: 1rem; gap: 1rem;
padding: 0.5rem 0; padding: 0.5rem 0;
border-bottom: 1px solid rgba(0,255,200,0.04); border-bottom: 1px solid rgba(0,255,65,0.04);
font-size: 0.7rem; font-size: 0.7rem;
} }
.threat-id { .threat-id {
@ -583,13 +583,13 @@ body {
.posts-table td { .posts-table td {
padding: 0.6rem 0.8rem; padding: 0.6rem 0.8rem;
border-bottom: 1px solid rgba(0,255,200,0.03); border-bottom: 1px solid rgba(0,255,65,0.03);
font-size: 0.75rem; font-size: 0.75rem;
vertical-align: middle; vertical-align: middle;
} }
.posts-table tr:hover td { .posts-table tr:hover td {
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
} }
.post-link { .post-link {
@ -616,7 +616,7 @@ body {
letter-spacing: 1px; letter-spacing: 1px;
font-weight: 600; font-weight: 600;
} }
.threat-low { color: var(--accent); border: 1px solid rgba(0,255,200,0.2); } .threat-low { color: var(--accent); border: 1px solid rgba(0,255,65,0.2); }
.threat-medium { color: var(--warn); border: 1px solid rgba(255,165,2,0.2); } .threat-medium { color: var(--warn); border: 1px solid rgba(255,165,2,0.2); }
.threat-high { color: var(--danger); border: 1px solid rgba(255,71,87,0.2); } .threat-high { color: var(--danger); border: 1px solid rgba(255,71,87,0.2); }
.threat-critical { color: #ff0040; border: 1px solid rgba(255,0,64,0.3); animation: critPulse 1.5s ease-in-out infinite; } .threat-critical { color: #ff0040; border: 1px solid rgba(255,0,64,0.3); animation: critPulse 1.5s ease-in-out infinite; }
@ -680,7 +680,7 @@ body {
appearance: none; appearance: none;
width: 100%; width: 100%;
height: 6px; height: 6px;
background: rgba(0,255,200,0.1); background: rgba(0,255,65,0.1);
outline: none; outline: none;
border-radius: 0; border-radius: 0;
} }
@ -691,7 +691,7 @@ body {
background: var(--accent); background: var(--accent);
cursor: pointer; cursor: pointer;
border: none; border: none;
box-shadow: 0 0 8px rgba(0,255,200,0.4); box-shadow: 0 0 8px rgba(0,255,65,0.4);
} }
.range-val { .range-val {
@ -819,7 +819,7 @@ body {
color: var(--accent); color: var(--accent);
} }
.editor-preview .post-rendered .inline-code { .editor-preview .post-rendered .inline-code {
background: rgba(0,255,200,0.06); background: rgba(0,255,65,0.06);
border: 1px solid var(--border); border: 1px solid var(--border);
padding: 0.1rem 0.3rem; padding: 0.1rem 0.3rem;
} }
@ -848,12 +848,12 @@ body {
align-items: center; align-items: center;
gap: 1rem; gap: 1rem;
padding: 0.5rem 0.8rem; padding: 0.5rem 0.8rem;
border-bottom: 1px solid rgba(0,255,200,0.04); border-bottom: 1px solid rgba(0,255,65,0.04);
font-size: 0.75rem; font-size: 0.75rem;
transition: background 0.2s; transition: background 0.2s;
} }
.track-row:hover { .track-row:hover {
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
} }
.track-num { .track-num {
@ -928,13 +928,13 @@ body {
transition: all 0.3s; transition: all 0.3s;
} }
.toggle-row input[type="checkbox"]:checked { .toggle-row input[type="checkbox"]:checked {
background: rgba(0,255,200,0.15); background: rgba(0,255,65,0.15);
border-color: var(--accent); border-color: var(--accent);
} }
.toggle-row input[type="checkbox"]:checked::after { .toggle-row input[type="checkbox"]:checked::after {
left: 20px; left: 20px;
background: var(--accent); background: var(--accent);
box-shadow: 0 0 6px rgba(0,255,200,0.4); box-shadow: 0 0 6px rgba(0,255,65,0.4);
} }
.toggle-label { .toggle-label {
@ -966,13 +966,13 @@ body {
transition: all 0.3s; transition: all 0.3s;
} }
.toggle-switch:checked { .toggle-switch:checked {
background: rgba(0,255,200,0.15); background: rgba(0,255,65,0.15);
border-color: var(--accent); border-color: var(--accent);
} }
.toggle-switch:checked::after { .toggle-switch:checked::after {
left: 20px; left: 20px;
background: var(--accent); background: var(--accent);
box-shadow: 0 0 6px rgba(0,255,200,0.4); box-shadow: 0 0 6px rgba(0,255,65,0.4);
} }
/* =================================================== /* ===================================================
@ -992,9 +992,9 @@ body {
font-size: 0.75rem; font-size: 0.75rem;
} }
.section-item:hover { .section-item:hover {
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
border-color: var(--border-strong); border-color: var(--border-strong);
box-shadow: 0 0 6px rgba(0,255,200,0.05); box-shadow: 0 0 6px rgba(0,255,65,0.05);
} }
.section-item-label { .section-item-label {
@ -1133,9 +1133,9 @@ body {
cursor: grab; cursor: grab;
} }
.homepage-section-item:hover { .homepage-section-item:hover {
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
border-color: var(--border-strong); border-color: var(--border-strong);
box-shadow: 0 0 6px rgba(0,255,200,0.05); box-shadow: 0 0 6px rgba(0,255,65,0.05);
} }
.homepage-section-item:active { .homepage-section-item:active {
cursor: grabbing; cursor: grabbing;
@ -1188,12 +1188,12 @@ body {
align-items: center; align-items: center;
gap: 0.8rem; gap: 0.8rem;
padding: 0.5rem 0.8rem; padding: 0.5rem 0.8rem;
border-bottom: 1px solid rgba(0,255,200,0.04); border-bottom: 1px solid rgba(0,255,65,0.04);
font-size: 0.75rem; font-size: 0.75rem;
transition: background 0.2s; transition: background 0.2s;
} }
.service-item:hover { .service-item:hover {
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
} }
.service-item-name { .service-item-name {
@ -1225,12 +1225,12 @@ body {
align-items: center; align-items: center;
gap: 0.8rem; gap: 0.8rem;
padding: 0.5rem 0.8rem; padding: 0.5rem 0.8rem;
border-bottom: 1px solid rgba(0,255,200,0.04); border-bottom: 1px solid rgba(0,255,65,0.04);
font-size: 0.75rem; font-size: 0.75rem;
transition: background 0.2s; transition: background 0.2s;
} }
.nav-item:hover { .nav-item:hover {
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
} }
.nav-item-label { .nav-item-label {
@ -1262,12 +1262,12 @@ body {
align-items: center; align-items: center;
gap: 0.8rem; gap: 0.8rem;
padding: 0.5rem 0.8rem; padding: 0.5rem 0.8rem;
border-bottom: 1px solid rgba(0,255,200,0.04); border-bottom: 1px solid rgba(0,255,65,0.04);
font-size: 0.75rem; font-size: 0.75rem;
transition: background 0.2s; transition: background 0.2s;
} }
.link-item:hover { .link-item:hover {
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
} }
.link-item-icon { .link-item-icon {
@ -1308,7 +1308,7 @@ body {
} }
.api-group-card:hover { .api-group-card:hover {
border-left-color: #fff; border-left-color: #fff;
box-shadow: 0 0 12px rgba(0,255,200,0.06); box-shadow: 0 0 12px rgba(0,255,65,0.06);
} }
.api-group-header { .api-group-header {
@ -1383,7 +1383,7 @@ body {
} }
.api-group-save:hover { .api-group-save:hover {
background: var(--accent-dim); background: var(--accent-dim);
box-shadow: 0 0 8px rgba(0,255,200,0.15); box-shadow: 0 0 8px rgba(0,255,65,0.15);
} }
/* ─── Theme / Appearance ─── */ /* ─── Theme / Appearance ─── */
@ -1577,7 +1577,7 @@ body {
} }
.backup-card:hover { .backup-card:hover {
border-color: var(--border-strong); border-color: var(--border-strong);
box-shadow: 0 0 10px rgba(0,255,200,0.06); box-shadow: 0 0 10px rgba(0,255,65,0.06);
} }
.backup-card.highlight { .backup-card.highlight {
@ -1585,18 +1585,18 @@ body {
max-width: 800px; max-width: 800px;
border-color: var(--accent); border-color: var(--accent);
background: rgba(0, 255, 65, 0.03); background: rgba(0, 255, 65, 0.03);
box-shadow: 0 0 15px rgba(0,255,200,0.06); box-shadow: 0 0 15px rgba(0,255,65,0.06);
} }
.backup-icon { .backup-icon {
font-size: 2rem; font-size: 2rem;
color: var(--accent); color: var(--accent);
text-shadow: 0 0 12px rgba(0,255,200,0.2); text-shadow: 0 0 12px rgba(0,255,65,0.2);
} }
.backup-card.highlight .backup-icon { .backup-card.highlight .backup-icon {
font-size: 2.5rem; font-size: 2.5rem;
text-shadow: 0 0 20px rgba(0,255,200,0.3); text-shadow: 0 0 20px rgba(0,255,65,0.3);
} }
.backup-label { .backup-label {
@ -1631,7 +1631,7 @@ body {
} }
.backup-download-btn:hover { .backup-download-btn:hover {
background: var(--accent-dim); background: var(--accent-dim);
box-shadow: 0 0 8px rgba(0,255,200,0.15); box-shadow: 0 0 8px rgba(0,255,65,0.15);
} }
.backup-download-btn .dl-icon { .backup-download-btn .dl-icon {
@ -1669,7 +1669,7 @@ body {
.admin-notification.success { .admin-notification.success {
border-color: var(--success); border-color: var(--success);
color: var(--success); color: var(--success);
box-shadow: 0 0 15px rgba(0,255,200,0.1); box-shadow: 0 0 15px rgba(0,255,65,0.1);
} }
.admin-notification.error { .admin-notification.error {
@ -1997,7 +1997,7 @@ body {
width: 240px; width: 240px;
height: 100vh; height: 100vh;
background: #060a12; background: #060a12;
border-right: 1px solid rgba(0,255,200,0.1); border-right: 1px solid rgba(0,255,65,0.1);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
z-index: 1000; z-index: 1000;
@ -2011,7 +2011,7 @@ body {
color: #00ff41; color: #00ff41;
letter-spacing: 2px; letter-spacing: 2px;
text-transform: uppercase; text-transform: uppercase;
border-bottom: 1px solid rgba(0,255,200,0.08); border-bottom: 1px solid rgba(0,255,65,0.08);
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.5rem; gap: 0.5rem;
@ -2022,7 +2022,7 @@ body {
top: 0.8rem; top: 0.8rem;
right: 0.8rem; right: 0.8rem;
background: none; background: none;
border: 1px solid rgba(0,255,200,0.2); border: 1px solid rgba(0,255,65,0.2);
color: #00ff41; color: #00ff41;
font-size: 1.2rem; font-size: 1.2rem;
cursor: pointer; cursor: pointer;
@ -2031,13 +2031,13 @@ body {
} }
.sidebar-divider { .sidebar-divider {
height: 1px; height: 1px;
background: linear-gradient(90deg, transparent, rgba(0,255,200,0.15), transparent); background: linear-gradient(90deg, transparent, rgba(0,255,65,0.15), transparent);
margin: 0.5rem 0; margin: 0.5rem 0;
} }
.sidebar-header { .sidebar-header {
padding: 0.6rem 1rem 0.3rem; padding: 0.6rem 1rem 0.3rem;
font-size: 0.6rem; font-size: 0.6rem;
color: rgba(0,255,200,0.4); color: rgba(0,255,65,0.4);
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 3px; letter-spacing: 3px;
} }
@ -2051,7 +2051,7 @@ body {
.sidebar-section-label { .sidebar-section-label {
padding: 0.8rem 1rem 0.3rem; padding: 0.8rem 1rem 0.3rem;
font-size: 0.55rem; font-size: 0.55rem;
color: rgba(0,255,200,0.35); color: rgba(0,255,65,0.35);
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 3px; letter-spacing: 3px;
font-weight: 600; font-weight: 600;
@ -2060,7 +2060,7 @@ body {
padding: 0.8rem 1rem; padding: 0.8rem 1rem;
font-size: 0.6rem; font-size: 0.6rem;
color: rgba(255,255,255,0.2); color: rgba(255,255,255,0.2);
border-top: 1px solid rgba(0,255,200,0.06); border-top: 1px solid rgba(0,255,65,0.06);
text-align: center; text-align: center;
} }
@ -2071,7 +2071,7 @@ body {
justify-content: space-between; justify-content: space-between;
padding: 0.8rem 1.5rem; padding: 0.8rem 1.5rem;
background: rgba(6,10,18,0.9); background: rgba(6,10,18,0.9);
border-bottom: 1px solid rgba(0,255,200,0.08); border-bottom: 1px solid rgba(0,255,65,0.08);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
position: sticky; position: sticky;
top: 0; top: 0;
@ -2079,7 +2079,7 @@ body {
} }
.topbar-title { .topbar-title {
font-size: 0.75rem; font-size: 0.75rem;
color: rgba(0,255,200,0.6); color: rgba(0,255,65,0.6);
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 2px; letter-spacing: 2px;
font-weight: 600; font-weight: 600;
@ -2120,7 +2120,7 @@ body {
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
font-size: 1.8rem; font-size: 1.8rem;
color: #00ff41; color: #00ff41;
text-shadow: 0 0 20px rgba(0,255,200,0.3); text-shadow: 0 0 20px rgba(0,255,65,0.3);
letter-spacing: 4px; letter-spacing: 4px;
font-weight: 700; font-weight: 700;
} }
@ -2142,8 +2142,8 @@ body {
/* ─── EDITOR: Operator HUD ─── */ /* ─── EDITOR: Operator HUD ─── */
.operator-hud { .operator-hud {
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
border: 1px solid rgba(0,255,200,0.1); border: 1px solid rgba(0,255,65,0.1);
border-radius: 8px; border-radius: 8px;
padding: 1rem; padding: 1rem;
margin-top: 1rem; margin-top: 1rem;
@ -2184,7 +2184,7 @@ body {
} }
.preview-pane { .preview-pane {
background: rgba(0,0,0,0.3); background: rgba(0,0,0,0.3);
border: 1px solid rgba(0,255,200,0.08); border: 1px solid rgba(0,255,65,0.08);
border-radius: 6px; border-radius: 6px;
padding: 1rem; padding: 1rem;
overflow-y: auto; overflow-y: auto;
@ -2199,7 +2199,7 @@ body {
gap: 0.8rem; gap: 0.8rem;
align-items: end; align-items: end;
padding: 0.8rem 0; padding: 0.8rem 0;
border-bottom: 1px solid rgba(0,255,200,0.06); border-bottom: 1px solid rgba(0,255,65,0.06);
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
} }
.editor-textarea-sm { .editor-textarea-sm {
@ -2207,7 +2207,7 @@ body {
min-height: 60px; min-height: 60px;
resize: vertical; resize: vertical;
background: rgba(0,0,0,0.3); background: rgba(0,0,0,0.3);
border: 1px solid rgba(0,255,200,0.12); border: 1px solid rgba(0,255,65,0.12);
border-radius: 4px; border-radius: 4px;
color: #e0e0e0; color: #e0e0e0;
padding: 0.5rem; padding: 0.5rem;
@ -2223,13 +2223,13 @@ body {
gap: 0.3rem; gap: 0.3rem;
padding: 0.5rem; padding: 0.5rem;
background: rgba(0,0,0,0.2); background: rgba(0,0,0,0.2);
border: 1px solid rgba(0,255,200,0.06); border: 1px solid rgba(0,255,65,0.06);
border-radius: 6px; border-radius: 6px;
margin-bottom: 0.8rem; margin-bottom: 0.8rem;
} }
.toolbar-btn { .toolbar-btn {
background: rgba(0,255,200,0.06); background: rgba(0,255,65,0.06);
border: 1px solid rgba(0,255,200,0.12); border: 1px solid rgba(0,255,65,0.12);
color: #00ff41; color: #00ff41;
padding: 0.3rem 0.6rem; padding: 0.3rem 0.6rem;
font-size: 0.7rem; font-size: 0.7rem;
@ -2239,13 +2239,13 @@ body {
font-family: "JetBrains Mono", monospace; font-family: "JetBrains Mono", monospace;
} }
.toolbar-btn:hover { .toolbar-btn:hover {
background: rgba(0,255,200,0.15); background: rgba(0,255,65,0.15);
border-color: #00ff41; border-color: #00ff41;
} }
.toolbar-sep { .toolbar-sep {
width: 1px; width: 1px;
height: 20px; height: 20px;
background: rgba(0,255,200,0.12); background: rgba(0,255,65,0.12);
margin: 0 0.2rem; margin: 0 0.2rem;
} }
@ -2259,21 +2259,21 @@ body {
.admin-table td { .admin-table td {
padding: 0.6rem 0.8rem; padding: 0.6rem 0.8rem;
text-align: left; text-align: left;
border-bottom: 1px solid rgba(0,255,200,0.06); border-bottom: 1px solid rgba(0,255,65,0.06);
} }
.admin-table th { .admin-table th {
color: rgba(0,255,200,0.5); color: rgba(0,255,65,0.5);
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 1px; letter-spacing: 1px;
font-size: 0.6rem; font-size: 0.6rem;
font-weight: 600; font-weight: 600;
} }
.admin-table tr:hover { .admin-table tr:hover {
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
} }
.table-wrap { .table-wrap {
overflow-x: auto; overflow-x: auto;
border: 1px solid rgba(0,255,200,0.08); border: 1px solid rgba(0,255,65,0.08);
border-radius: 6px; border-radius: 6px;
background: rgba(0,0,0,0.15); background: rgba(0,0,0,0.15);
} }
@ -2284,8 +2284,8 @@ body {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 0.8rem; gap: 0.8rem;
padding: 1rem; padding: 1rem;
background: rgba(0,255,200,0.02); background: rgba(0,255,65,0.02);
border: 1px solid rgba(0,255,200,0.08); border: 1px solid rgba(0,255,65,0.08);
border-radius: 6px; border-radius: 6px;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
@ -2310,7 +2310,7 @@ body {
width: 100%; width: 100%;
padding: 1rem 1.25rem; padding: 1rem 1.25rem;
background: rgba(0,0,0,0.2); background: rgba(0,0,0,0.2);
border: 1px solid rgba(0,255,200,0.06); border: 1px solid rgba(0,255,65,0.06);
border-radius: 6px; border-radius: 6px;
gap: 1rem; gap: 1rem;
} }
@ -2336,7 +2336,7 @@ body {
transition: all 0.3s; transition: all 0.3s;
} }
.toggle-slider.active { .toggle-slider.active {
background: rgba(0,255,200,0.2); background: rgba(0,255,65,0.2);
} }
.toggle-slider.active::after { .toggle-slider.active::after {
left: 22px; left: 22px;
@ -2376,7 +2376,7 @@ body {
justify-content: space-between; justify-content: space-between;
padding: 0.6rem 0.8rem; padding: 0.6rem 0.8rem;
background: rgba(0,0,0,0.2); background: rgba(0,0,0,0.2);
border: 1px solid rgba(0,255,200,0.06); border: 1px solid rgba(0,255,65,0.06);
border-radius: 4px; border-radius: 4px;
font-size: 0.75rem; font-size: 0.75rem;
} }
@ -2386,7 +2386,7 @@ body {
width: 100%; width: 100%;
max-width: 800px; max-width: 800px;
background: rgba(0,0,0,0.2); background: rgba(0,0,0,0.2);
border: 1px solid rgba(0,255,200,0.08); border: 1px solid rgba(0,255,65,0.08);
border-radius: 8px; border-radius: 8px;
padding: 1.2rem; padding: 1.2rem;
margin-bottom: 1rem; margin-bottom: 1rem;
@ -2396,7 +2396,7 @@ body {
.color-input { .color-input {
width: 50px; width: 50px;
height: 36px; height: 36px;
border: 1px solid rgba(0,255,200,0.15); border: 1px solid rgba(0,255,65,0.15);
border-radius: 4px; border-radius: 4px;
cursor: pointer; cursor: pointer;
background: transparent; background: transparent;
@ -2409,7 +2409,7 @@ body {
font-family: "JetBrains Mono", monospace; font-family: "JetBrains Mono", monospace;
font-size: 0.75rem; font-size: 0.75rem;
background: rgba(0,0,0,0.3); background: rgba(0,0,0,0.3);
border: 1px solid rgba(0,255,200,0.12); border: 1px solid rgba(0,255,65,0.12);
border-radius: 4px; border-radius: 4px;
color: #e0e0e0; color: #e0e0e0;
padding: 0.4rem 0.5rem; padding: 0.4rem 0.5rem;
@ -2452,8 +2452,8 @@ body {
} }
.backup-status { .backup-status {
padding: 0.8rem; padding: 0.8rem;
background: rgba(0,255,200,0.03); background: rgba(0,255,65,0.03);
border: 1px solid rgba(0,255,200,0.08); border: 1px solid rgba(0,255,65,0.08);
border-radius: 6px; border-radius: 6px;
font-size: 0.7rem; font-size: 0.7rem;
color: rgba(255,255,255,0.5); color: rgba(255,255,255,0.5);

View file

@ -322,19 +322,36 @@ a:hover { color: #fff; text-shadow: 0 0 10px var(--accent-glow); }
.hero-hud-grid { .hero-hud-grid {
width: 100%; width: 100%;
max-width: 1200px; max-width: 1400px;
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 250px 1fr 380px;
grid-template-rows: auto auto; grid-template-rows: auto;
gap: 1.5rem; gap: 1.5rem;
align-items: start;
animation: fadeIn 1s ease both; animation: fadeIn 1s ease both;
} }
.hud-col-left, .hud-col-left {
display: flex;
flex-direction: column;
gap: 1.5rem;
min-width: 0;
}
.hud-col-center {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 400px;
min-width: 0;
}
.hud-col-right { .hud-col-right {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 1.5rem; gap: 1.5rem;
min-width: 0;
} }
/* ============================ /* ============================
@ -1514,7 +1531,7 @@ a:hover { color: #fff; text-shadow: 0 0 10px var(--accent-glow); }
/* === RESPONSIVE === */ /* === RESPONSIVE === */
@media (max-width: 1024px) { @media (max-width: 1024px) {
.hero-hud-grid { grid-template-columns: 1fr 1fr; gap: 1rem; max-width: 900px; } .hero-hud-grid { grid-template-columns: 200px 1fr 300px; gap: 1rem; max-width: 1000px; }
.blog-grid, .dev-grid { grid-template-columns: repeat(2, 1fr); } .blog-grid, .dev-grid { grid-template-columns: repeat(2, 1fr); }
.panels-grid { grid-template-columns: 1fr; } .panels-grid { grid-template-columns: 1fr; }
.contact-grid { grid-template-columns: 1fr; } .contact-grid { grid-template-columns: 1fr; }
@ -1590,6 +1607,7 @@ a:hover { color: #fff; text-shadow: 0 0 10px var(--accent-glow); }
opacity: 1; opacity: 1;
} }
/* HUD grid stacks on mobile */ /* HUD grid stacks on mobile */
.hero-hud-grid { .hero-hud-grid {
grid-template-columns: 1fr; grid-template-columns: 1fr;
@ -1597,6 +1615,11 @@ a:hover { color: #fff; text-shadow: 0 0 10px var(--accent-glow); }
padding: 0; padding: 0;
} }
.hud-col-center {
min-height: auto;
order: -1;
}
.hud-row-panels { grid-template-columns: 1fr 1fr; } .hud-row-panels { grid-template-columns: 1fr 1fr; }
.hero-title { font-size: clamp(1.8rem, 6vw, 2.5rem); } .hero-title { font-size: clamp(1.8rem, 6vw, 2.5rem); }

View file

@ -83,35 +83,35 @@
<svg viewBox="0 0 250 400" class="uk-map-svg"> <svg viewBox="0 0 250 400" class="uk-map-svg">
<defs> <defs>
<pattern id="mapGrid" width="20" height="20" patternUnits="userSpaceOnUse"> <pattern id="mapGrid" width="20" height="20" patternUnits="userSpaceOnUse">
<path d="M 20 0 L 0 0 0 20" fill="none" stroke="rgba(0,255,200,0.06)" stroke-width="0.5"/> <path d="M 20 0 L 0 0 0 20" fill="none" stroke="rgba(0,255,65,0.06)" stroke-width="0.5"/>
</pattern> </pattern>
<filter id="glow"><feGaussianBlur stdDeviation="3" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter> <filter id="glow"><feGaussianBlur stdDeviation="3" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter>
<radialGradient id="dotGlow" cx="50%" cy="50%" r="50%"> <radialGradient id="dotGlow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#00ffc8" stop-opacity="0.5"/> <stop offset="0%" stop-color="#00ff41" stop-opacity="0.5"/>
<stop offset="100%" stop-color="#00ffc8" stop-opacity="0"/> <stop offset="100%" stop-color="#00ff41" stop-opacity="0"/>
</radialGradient> </radialGradient>
</defs> </defs>
<rect width="250" height="400" fill="url(#mapGrid)"/> <rect width="250" height="400" fill="url(#mapGrid)"/>
<!-- UK mainland outline --> <!-- UK mainland outline -->
<polygon points="80,12 95,8 120,5 140,8 155,18 152,35 148,55 142,72 138,88 135,100 142,108 150,118 155,135 158,155 162,175 168,195 172,215 170,235 168,255 172,272 168,280 155,288 142,292 130,296 115,302 100,308 85,315 72,318 65,310 75,295 82,280 88,268 85,255 72,248 62,238 55,222 52,205 55,192 60,182 68,175 78,168 82,155 80,140 75,125 70,112 62,100 55,82 52,65 58,45 68,30" fill="rgba(0,255,200,0.03)" stroke="#00ffc8" stroke-width="1.2" stroke-opacity="0.4" stroke-linejoin="round"/> <polygon points="80,12 95,8 120,5 140,8 155,18 152,35 148,55 142,72 138,88 135,100 142,108 150,118 155,135 158,155 162,175 168,195 172,215 170,235 168,255 172,272 168,280 155,288 142,292 130,296 115,302 100,308 85,315 72,318 65,310 75,295 82,280 88,268 85,255 72,248 62,238 55,222 52,205 55,192 60,182 68,175 78,168 82,155 80,140 75,125 70,112 62,100 55,82 52,65 58,45 68,30" fill="rgba(0,255,65,0.03)" stroke="#00ff41" stroke-width="1.2" stroke-opacity="0.4" stroke-linejoin="round"/>
<!-- Northern Ireland (simplified) --> <!-- Northern Ireland (simplified) -->
<polygon points="42,105 55,98 62,102 58,115 48,118 38,112" fill="rgba(0,255,200,0.02)" stroke="#00ffc8" stroke-width="0.8" stroke-opacity="0.3" stroke-linejoin="round"/> <polygon points="42,105 55,98 62,102 58,115 48,118 38,112" fill="rgba(0,255,65,0.02)" stroke="#00ff41" stroke-width="0.8" stroke-opacity="0.3" stroke-linejoin="round"/>
<!-- Crosshair lines at Manchester --> <!-- Crosshair lines at Manchester -->
<line x1="0" y1="172" x2="250" y2="172" stroke="#00ffc8" stroke-width="0.3" stroke-opacity="0.25" stroke-dasharray="4,4"/> <line x1="0" y1="172" x2="250" y2="172" stroke="#00ff41" stroke-width="0.3" stroke-opacity="0.25" stroke-dasharray="4,4"/>
<line x1="90" y1="0" x2="90" y2="400" stroke="#00ffc8" stroke-width="0.3" stroke-opacity="0.25" stroke-dasharray="4,4"/> <line x1="90" y1="0" x2="90" y2="400" stroke="#00ff41" stroke-width="0.3" stroke-opacity="0.25" stroke-dasharray="4,4"/>
<!-- Manchester glow --> <!-- Manchester glow -->
<circle cx="90" cy="172" r="25" fill="url(#dotGlow)"/> <circle cx="90" cy="172" r="25" fill="url(#dotGlow)"/>
<!-- Manchester dot --> <!-- Manchester dot -->
<circle cx="90" cy="172" r="3" fill="#00ffc8" filter="url(#glow)"/> <circle cx="90" cy="172" r="3" fill="#00ff41" filter="url(#glow)"/>
<!-- Pulse rings --> <!-- Pulse rings -->
<circle cx="90" cy="172" r="8" fill="none" stroke="#00ffc8" stroke-width="0.8" class="pulse-ring pulse-ring-1"/> <circle cx="90" cy="172" r="8" fill="none" stroke="#00ff41" stroke-width="0.8" class="pulse-ring pulse-ring-1"/>
<circle cx="90" cy="172" r="16" fill="none" stroke="#00ffc8" stroke-width="0.5" class="pulse-ring pulse-ring-2"/> <circle cx="90" cy="172" r="16" fill="none" stroke="#00ff41" stroke-width="0.5" class="pulse-ring pulse-ring-2"/>
<circle cx="90" cy="172" r="24" fill="none" stroke="#00ffc8" stroke-width="0.3" class="pulse-ring pulse-ring-3"/> <circle cx="90" cy="172" r="24" fill="none" stroke="#00ff41" stroke-width="0.3" class="pulse-ring pulse-ring-3"/>
<!-- Manchester label --> <!-- Manchester label -->
<text x="108" y="168" fill="#00ffc8" font-size="8" font-family="'JetBrains Mono',monospace" letter-spacing="1">MANCHESTER</text> <text x="108" y="168" fill="#00ff41" font-size="8" font-family="'JetBrains Mono',monospace" letter-spacing="1">MANCHESTER</text>
<text x="108" y="180" fill="rgba(0,255,200,0.5)" font-size="6" font-family="'JetBrains Mono',monospace">53.48°N 2.24°W</text> <text x="108" y="180" fill="rgba(0,255,65,0.5)" font-size="6" font-family="'JetBrains Mono',monospace">53.48°N 2.24°W</text>
<!-- Scan sweep --> <!-- Scan sweep -->
<line x1="0" y1="0" x2="250" y2="0" stroke="#00ffc8" stroke-width="1" stroke-opacity="0.4" class="map-scan-line"/> <line x1="0" y1="0" x2="250" y2="0" stroke="#00ff41" stroke-width="1" stroke-opacity="0.4" class="map-scan-line"/>
</svg> </svg>
<div class="map-data-overlay"> <div class="map-data-overlay">
<div class="map-coord-block"> <div class="map-coord-block">
@ -129,8 +129,10 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- Identity Block --> <!-- Middle Column: Identity -->
<div class="hud-col-center">
<div class="hud-identity"> <div class="hud-identity">
<div class="hero-label">SYSTEM IDENTIFICATION</div> <div class="hero-label">SYSTEM IDENTIFICATION</div>
<h1 class="hero-title"> <h1 class="hero-title">
@ -355,7 +357,7 @@
</div> </div>
</div> </div>
<div class="blog-view-all" style="text-align:center; margin-top:2rem;"> <div class="blog-view-all" style="text-align:center; margin-top:2rem;">
<a href="/blog" class="blog-view-all-link" style="font-family:'JetBrains Mono',monospace; font-size:0.8rem; color:#00ffc8; letter-spacing:2px; text-decoration:none; border:1px solid rgba(0,255,200,0.2); padding:0.6rem 2rem; transition:all 0.3s;">VIEW ALL TRANSMISSIONS →</a> <a href="/blog" class="blog-view-all-link" style="font-family:'JetBrains Mono',monospace; font-size:0.8rem; color:#00ff41; letter-spacing:2px; text-decoration:none; border:1px solid rgba(0,255,65,0.2); padding:0.6rem 2rem; transition:all 0.3s;">VIEW ALL TRANSMISSIONS →</a>
</div> </div>
</div> </div>
</section> </section>