Yoge-2004's picture
feat(auth): deploy Google OAuth 2.0, dual themes, async scan, and updated models
e4e5bb9 verified
Raw History Blame Contribute Delete
23.5 kB
:root {
/* ==========================================
THEME VARIABLES - DARK (DEFAULT)
========================================== */
--neon-cyan: #00f3ff;
--neon-pink: #ff0055;
--neon-green: #00ff9d;
--neon-yellow: #f5e65b;
--neon-orange: #ff9d00;
--bg-dark: #05080a;
--panel-bg: rgba(10, 15, 20, 0.95);
--hud-bg: rgba(0, 243, 255, 0.05);
--hud-border: rgba(0, 243, 255, 0.2);
--text-primary: #ffffff;
--text-accent: #00f3ff;
--text-muted: #888888;
--input-bg: rgba(0, 0, 0, 0.5);
--input-border: #333333;
--modal-bg: rgba(10, 15, 20, 0.98);
--modal-overlay: rgba(2, 4, 6, 0.88);
--toast-bg: rgba(10, 15, 20, 0.95);
--bar-track: #222222;
--panel-shadow: 0 0 40px rgba(0, 0, 0, 0.5);
--laser-color: #00f3ff;
--matrix-opacity: 0.12;
--font-ui: 'Rajdhani', sans-serif;
--font-code: 'JetBrains Mono', monospace;
--state-color: #00f3ff;
}
[data-theme="light"] {
/* ==========================================
THEME VARIABLES - LIGHT (HIGH CONTRAST)
========================================== */
--neon-cyan: #008fa8;
--neon-pink: #c90044;
--neon-green: #008751;
--neon-yellow: #b58900;
--neon-orange: #d97706;
--bg-dark: #f1f5f9;
--panel-bg: rgba(255, 255, 255, 0.98);
--hud-bg: rgba(0, 143, 168, 0.08);
--hud-border: rgba(0, 143, 168, 0.3);
--text-primary: #0f172a;
--text-accent: #008fa8;
--text-muted: #64748b;
--input-bg: rgba(248, 250, 252, 0.95);
--input-border: #cbd5e1;
--modal-bg: rgba(255, 255, 255, 0.98);
--modal-overlay: rgba(15, 23, 42, 0.65);
--toast-bg: rgba(255, 255, 255, 0.98);
--bar-track: #e2e8f0;
--panel-shadow: 0 8px 30px rgba(0, 143, 168, 0.12);
--laser-color: #008fa8;
--matrix-opacity: 0.05;
--state-color: #008fa8;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
scrollbar-width: thin;
scrollbar-color: var(--neon-cyan) var(--bg-dark);
}
/* ==========================================
1. CYBERPUNK CUSTOM SCROLLBARS (UNIVERSAL)
========================================== */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-dark);
border: 1px solid rgba(0, 243, 255, 0.08);
}
::-webkit-scrollbar-thumb {
background: rgba(0, 243, 255, 0.28);
border: 1px solid rgba(0, 243, 255, 0.5);
border-radius: 2px;
box-shadow: inset 0 0 4px rgba(0, 243, 255, 0.3);
transition: background 0.2s, box-shadow 0.2s;
}
[data-theme="light"] ::-webkit-scrollbar-thumb {
background: rgba(0, 143, 168, 0.35);
border-color: rgba(0, 143, 168, 0.6);
}
::-webkit-scrollbar-thumb:hover {
background: var(--neon-cyan);
box-shadow: 0 0 10px var(--neon-cyan);
}
::-webkit-scrollbar-corner {
background: var(--bg-dark);
}
/* Specific scrollbar styling for Job Description textarea */
#jobDescription::-webkit-scrollbar {
width: 7px;
}
#jobDescription::-webkit-scrollbar-thumb {
background: rgba(0, 243, 255, 0.35);
border: 1px solid rgba(0, 243, 255, 0.6);
}
#jobDescription::-webkit-scrollbar-thumb:hover {
background: var(--neon-cyan);
box-shadow: 0 0 10px var(--neon-cyan);
}
/* Specific scrollbar styling for Live Logs list */
.log-list {
scrollbar-width: thin;
scrollbar-color: var(--neon-green) var(--bg-dark);
}
.log-list::-webkit-scrollbar {
width: 6px;
}
.log-list::-webkit-scrollbar-track {
background: var(--bg-dark);
border: 1px solid rgba(0, 255, 157, 0.1);
}
.log-list::-webkit-scrollbar-thumb {
background: rgba(0, 255, 157, 0.35);
border: 1px solid rgba(0, 255, 157, 0.6);
border-radius: 2px;
}
.log-list::-webkit-scrollbar-thumb:hover {
background: var(--neon-green);
box-shadow: 0 0 8px var(--neon-green);
}
body {
background-color: var(--bg-dark);
color: var(--text-accent);
font-family: var(--font-ui);
font-weight: 500;
min-height: 100vh;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
display: flex;
justify-content: center;
align-items: center;
transition: background-color 0.3s ease, color 0.3s ease;
}
/* --- ANIMATIONS & BACKGROUND --- */
#matrixCanvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -10;
opacity: var(--matrix-opacity);
pointer-events: none;
transition: opacity 0.3s ease;
}
.crt-overlay {
position: fixed;
inset: 0;
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
background-size: 100% 4px;
pointer-events: none;
z-index: 100;
opacity: 0.12;
}
[data-theme="light"] .crt-overlay {
opacity: 0.04;
}
.cyber-void {
position: fixed;
inset: 0;
pointer-events: none;
z-index: -5;
}
.threat-obj {
position: absolute;
color: var(--neon-cyan);
font-size: 8rem;
opacity: 0.15;
animation: float 20s infinite linear;
}
.obj-shield {
top: 10%;
left: 5%;
color: var(--neon-green);
animation-duration: 25s;
}
.obj-ghost {
bottom: 20%;
right: 10%;
color: var(--neon-pink);
animation-duration: 30s;
font-size: 10rem;
}
.obj-bug {
top: 20%;
right: 45%;
color: var(--neon-orange);
animation-duration: 35s;
font-size: 6rem;
opacity: 0.12;
}
@keyframes float {
0% { transform: translate(0, 0) rotate(0deg); }
50% { transform: translate(0, -40px) rotate(10deg); }
100% { transform: translate(0, 0) rotate(0deg); }
}
/* --- LAYOUT --- */
.interface-wrapper {
width: 95%;
max-width: 1200px;
z-index: 10;
padding: 20px 0;
}
.hud-header {
display: flex;
justify-content: space-between;
align-items: center;
background: var(--hud-bg);
border: 1px solid var(--hud-border);
padding: 15px 25px;
margin-bottom: 20px;
position: relative;
transition: background 0.3s ease, border-color 0.3s ease;
}
.logo-glitch {
font-size: 2rem;
font-weight: 800;
color: var(--text-primary);
text-shadow: 0 0 5px var(--neon-cyan);
letter-spacing: 2px;
}
.sys-status {
font-family: var(--font-code);
font-size: 0.8rem;
letter-spacing: 2px;
color: var(--neon-green);
}
.user-profile {
display: flex;
align-items: center;
gap: 20px;
text-align: right;
}
.p-name {
display: block;
font-weight: 700;
color: var(--text-primary);
}
.p-role {
display: block;
font-size: 0.7rem;
color: var(--text-muted);
letter-spacing: 1px;
}
.action-buttons {
display: flex;
align-items: center;
gap: 10px;
}
.logout-btn {
background: transparent;
border: 1px solid var(--neon-cyan);
color: var(--neon-cyan);
padding: 8px 12px;
cursor: pointer;
transition: all 0.25s ease;
font-size: 0.95rem;
border-radius: 2px;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
}
.logout-btn:hover {
background: var(--neon-cyan);
color: #000;
box-shadow: 0 0 12px var(--neon-cyan);
}
.delete-btn {
border-color: var(--neon-pink);
color: var(--neon-pink);
}
.delete-btn:hover {
background: var(--neon-pink);
color: #fff;
box-shadow: 0 0 12px var(--neon-pink);
}
.theme-toggle-btn {
border-color: var(--neon-yellow);
color: var(--neon-yellow);
}
.theme-toggle-btn:hover {
background: var(--neon-yellow);
color: #000;
box-shadow: 0 0 12px var(--neon-yellow);
}
.docs-btn {
border-color: var(--neon-cyan);
color: var(--neon-cyan);
}
/* --- PANELS --- */
.dashboard-grid {
display: grid;
grid-template-columns: 1.2fr 0.8fr;
gap: 20px;
}
.panel {
background: var(--panel-bg);
border: 1px solid var(--hud-border);
padding: 25px;
position: relative;
box-shadow: var(--panel-shadow);
transition: background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}
.panel-header {
font-family: var(--font-code);
color: var(--neon-cyan);
border-bottom: 1px solid var(--hud-border);
padding-bottom: 10px;
margin-bottom: 20px;
letter-spacing: 1px;
font-size: 0.9rem;
}
/* --- INPUT --- */
.textarea-container {
position: relative;
height: 250px;
background: var(--input-bg);
border: 1px solid var(--input-border);
margin-bottom: 10px;
transition: border-color 0.3s, box-shadow 0.3s, background 0.3s;
}
.textarea-container:focus-within {
border-color: var(--neon-cyan);
box-shadow: 0 0 15px rgba(0, 243, 255, 0.2);
}
.textarea-container.input-error {
border-color: var(--neon-pink) !important;
box-shadow: 0 0 18px rgba(255, 0, 85, 0.4) !important;
}
textarea {
width: 100%;
height: 100%;
background: transparent;
border: none;
color: var(--text-primary);
font-family: var(--font-code);
padding: 20px;
resize: none;
outline: none;
font-size: 0.95rem;
line-height: 1.5;
position: relative;
z-index: 2;
}
textarea::placeholder {
color: var(--text-muted);
}
.scan-laser {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: var(--laser-color);
box-shadow: 0 0 10px var(--laser-color);
animation: scan 3s infinite;
z-index: 1;
opacity: 0.5;
}
@keyframes scan {
0%, 100% { top: 0; }
50% { top: 100%; }
}
.corner {
position: absolute;
width: 15px;
height: 15px;
border: 2px solid var(--neon-cyan);
}
.c-tl { top: -1px; left: -1px; border-bottom: 0; border-right: 0; }
.c-tr { top: -1px; right: -1px; border-bottom: 0; border-left: 0; }
.c-bl { bottom: -1px; left: -1px; border-top: 0; border-right: 0; }
.c-br { bottom: -1px; right: -1px; border-top: 0; border-left: 0; }
.data-readout {
display: flex;
justify-content: space-between;
font-family: var(--font-code);
font-size: 0.75rem;
color: var(--text-muted);
}
.blink {
animation: blink 1s infinite;
}
@keyframes blink {
50% { opacity: 0; }
}
.init-btn {
width: 100%;
margin-top: 20px;
padding: 15px;
background: rgba(0, 243, 255, 0.1);
border: 1px solid var(--neon-cyan);
color: var(--text-primary);
font-family: var(--font-ui);
font-size: 1.2rem;
font-weight: 700;
letter-spacing: 2px;
cursor: pointer;
transition: all 0.3s ease;
}
[data-theme="light"] .init-btn {
background: rgba(0, 143, 168, 0.1);
color: var(--text-primary);
}
.init-btn:hover:not(:disabled) {
background: var(--neon-cyan);
color: #fff;
box-shadow: 0 0 20px var(--neon-cyan);
}
.init-btn:disabled {
cursor: wait;
opacity: 0.8;
}
/* --- LOADER MODULE --- */
.loader-module {
margin-top: 20px;
padding: 18px;
background: rgba(0, 243, 255, 0.05);
border: 1px dashed var(--neon-cyan);
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
font-family: var(--font-code);
font-size: 0.85rem;
color: var(--neon-cyan);
letter-spacing: 1px;
}
.bar-loader {
width: 100%;
height: 4px;
background: var(--bar-track);
position: relative;
overflow: hidden;
}
.bar-loader::after {
content: '';
position: absolute;
top: 0;
left: -50%;
width: 40%;
height: 100%;
background: linear-gradient(90deg, transparent, var(--neon-cyan), transparent);
animation: barScan 1.6s infinite ease-in-out;
}
@keyframes barScan {
0% { left: -50%; }
100% { left: 150%; }
}
/* --- TELEMETRY --- */
.telemetry-panel {
display: flex;
flex-direction: column;
gap: 20px;
}
.globe-container {
height: 150px;
display: flex;
justify-content: center;
align-items: center;
position: relative;
border-bottom: 1px dashed var(--hud-border);
padding-bottom: 20px;
}
.wireframe-globe {
width: 100px;
height: 100px;
border-radius: 50%;
border: 1px solid var(--neon-cyan);
box-shadow: inset 0 0 10px rgba(0, 243, 255, 0.2);
position: relative;
animation: rotateGlobe 10s linear infinite;
transform-style: preserve-3d;
}
.globe-grid {
position: absolute;
inset: 0;
border-radius: 50%;
background: repeating-linear-gradient(90deg, transparent 0, transparent 10px, rgba(0, 243, 255, 0.2) 10px, rgba(0, 243, 255, 0.2) 11px);
}
.globe-equator {
position: absolute;
top: 50%;
width: 100%;
height: 1px;
background: var(--neon-cyan);
transform: rotateX(70deg);
}
@keyframes rotateGlobe {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* METRICS */
.metrics-grid {
display: flex;
flex-direction: column;
gap: 15px;
}
.metric-item {
display: flex;
flex-direction: column;
gap: 5px;
}
.m-label {
font-size: 0.7rem;
font-family: var(--font-code);
color: var(--text-muted);
display: block;
}
.m-bar-bg {
height: 6px;
background: var(--bar-track);
width: 100%;
}
.m-bar-fill {
height: 100%;
background: var(--neon-cyan);
box-shadow: 0 0 8px var(--neon-cyan);
}
@keyframes netLoad {
0% { width: 45%; }
25% { width: 75%; }
50% { width: 50%; }
75% { width: 85%; }
100% { width: 45%; }
}
@keyframes dbPulse {
0% { width: 15%; }
50% { width: 35%; }
100% { width: 15%; }
}
@keyframes apiSmooth {
0% { width: 60%; }
30% { width: 85%; }
60% { width: 65%; }
85% { width: 95%; }
100% { width: 60%; }
}
/* ==========================================
2. LOGS & COPY BUTTON (FEEDBACK ENHANCED)
========================================== */
.live-logs {
font-family: var(--font-code);
font-size: 0.7rem;
color: var(--text-muted);
margin-top: auto;
border-top: 1px solid var(--hud-border);
padding-top: 10px;
height: 180px;
display: flex;
flex-direction: column;
}
.log-header-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 5px;
border-bottom: 1px dashed var(--hud-border);
padding-bottom: 5px;
}
.log-title {
color: var(--neon-green);
font-weight: bold;
}
.copy-btn {
background: rgba(0, 0, 0, 0.4);
border: 1px solid var(--hud-border);
color: var(--text-muted);
font-family: var(--font-code);
font-size: 0.65rem;
padding: 4px 10px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 6px;
border-radius: 2px;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
user-select: none;
}
[data-theme="light"] .copy-btn {
background: #f1f5f9;
}
.copy-btn:hover {
color: var(--neon-cyan);
border-color: var(--neon-cyan);
box-shadow: 0 0 10px rgba(0, 243, 255, 0.35);
}
.copy-btn:active {
transform: scale(0.96);
}
.copy-btn.copy-success {
color: #fff !important;
background: var(--neon-green) !important;
border-color: var(--neon-green) !important;
box-shadow: 0 0 15px var(--neon-green) !important;
font-weight: 700;
}
.log-list {
list-style: none;
overflow-y: auto;
flex-grow: 1;
padding-right: 4px;
}
.log-list li {
margin-bottom: 3px;
word-wrap: break-word;
line-height: 1.4;
}
/* ==========================================
3. IN-APP CYBERPUNK MODAL DIALOG
========================================== */
.cyber-modal-overlay {
position: fixed;
inset: 0;
background: var(--modal-overlay);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
z-index: 10000;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
animation: modalOverlayFade 0.25s ease-out forwards;
}
@keyframes modalOverlayFade {
from { opacity: 0; }
to { opacity: 1; }
}
.cyber-modal-box {
background: var(--modal-bg);
border: 1px solid var(--neon-cyan);
box-shadow: 0 0 35px rgba(0, 243, 255, 0.25), inset 0 0 20px rgba(0, 243, 255, 0.05);
width: 100%;
max-width: 480px;
padding: 25px;
position: relative;
color: var(--text-primary);
animation: modalBoxPop 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.cyber-modal-box.modal-danger {
border-color: var(--neon-pink);
box-shadow: 0 0 35px rgba(255, 0, 85, 0.3), inset 0 0 20px rgba(255, 0, 85, 0.05);
}
.cyber-modal-box.modal-warning {
border-color: var(--neon-orange);
box-shadow: 0 0 35px rgba(255, 157, 0, 0.3);
}
@keyframes modalBoxPop {
from { transform: scale(0.92); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
.modal-corner {
position: absolute;
width: 12px;
height: 12px;
border: 2px solid var(--neon-cyan);
pointer-events: none;
}
.modal-danger .modal-corner { border-color: var(--neon-pink); }
.modal-warning .modal-corner { border-color: var(--neon-orange); }
.mc-tl { top: -2px; left: -2px; border-bottom: 0; border-right: 0; }
.mc-tr { top: -2px; right: -2px; border-bottom: 0; border-left: 0; }
.mc-bl { bottom: -2px; left: -2px; border-top: 0; border-right: 0; }
.mc-br { bottom: -2px; right: -2px; border-top: 0; border-left: 0; }
.cyber-modal-header {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--hud-border);
padding-bottom: 12px;
margin-bottom: 18px;
}
.modal-title-wrap {
display: flex;
align-items: center;
gap: 10px;
}
.modal-indicator {
display: inline-block;
width: 8px;
height: 8px;
background: var(--neon-cyan);
box-shadow: 0 0 8px var(--neon-cyan);
border-radius: 50%;
}
.modal-danger .modal-indicator { background: var(--neon-pink); box-shadow: 0 0 8px var(--neon-pink); }
.modal-warning .modal-indicator { background: var(--neon-orange); box-shadow: 0 0 8px var(--neon-orange); }
.modal-title {
font-family: var(--font-code);
font-size: 0.95rem;
font-weight: 700;
letter-spacing: 1.5px;
color: var(--neon-cyan);
}
.modal-danger .modal-title { color: var(--neon-pink); }
.modal-warning .modal-title { color: var(--neon-orange); }
.modal-close-btn {
background: transparent;
border: none;
color: var(--text-muted);
font-size: 1.5rem;
cursor: pointer;
line-height: 1;
transition: color 0.2s;
}
.modal-close-btn:hover {
color: var(--text-primary);
}
.cyber-modal-body {
display: flex;
align-items: flex-start;
gap: 16px;
margin-bottom: 24px;
line-height: 1.5;
}
.modal-icon {
font-size: 2.2rem;
flex-shrink: 0;
line-height: 1;
}
.modal-text-content {
flex-grow: 1;
}
.modal-message {
font-family: var(--font-ui);
font-size: 1.05rem;
color: var(--text-primary);
}
.cyber-modal-actions {
display: flex;
justify-content: flex-end;
gap: 12px;
}
.modal-btn {
padding: 10px 20px;
font-family: var(--font-code);
font-size: 0.85rem;
letter-spacing: 1.5px;
font-weight: 700;
cursor: pointer;
border: 1px solid var(--input-border);
background: rgba(255, 255, 255, 0.05);
color: var(--text-muted);
transition: all 0.25s ease;
border-radius: 2px;
}
.modal-btn:hover {
color: var(--text-primary);
border-color: var(--text-muted);
background: rgba(255, 255, 255, 0.1);
}
.modal-btn-confirm {
border-color: var(--neon-cyan);
color: var(--neon-cyan);
background: rgba(0, 243, 255, 0.1);
}
.modal-btn-confirm:hover {
background: var(--neon-cyan);
color: #000;
box-shadow: 0 0 15px var(--neon-cyan);
}
.modal-btn-danger {
border-color: var(--neon-pink);
color: var(--neon-pink);
background: rgba(255, 0, 85, 0.1);
}
.modal-btn-danger:hover {
background: var(--neon-pink);
color: #fff;
box-shadow: 0 0 18px var(--neon-pink);
}
/* ==========================================
4. CYBERPUNK TOAST NOTIFICATIONS
========================================== */
.cyber-toast-container {
position: fixed;
bottom: 24px;
right: 24px;
z-index: 10001;
display: flex;
flex-direction: column;
gap: 10px;
max-width: 380px;
pointer-events: none;
}
.cyber-toast {
pointer-events: auto;
background: var(--toast-bg);
border: 1px solid var(--hud-border);
border-left: 4px solid var(--neon-cyan);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
padding: 12px 16px;
font-family: var(--font-code);
font-size: 0.8rem;
color: var(--text-primary);
display: flex;
align-items: center;
gap: 12px;
animation: toastSlideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
backdrop-filter: blur(6px);
}
.cyber-toast.toast-success {
border-color: rgba(0, 255, 157, 0.4);
border-left-color: var(--neon-green);
}
.cyber-toast.toast-success i { color: var(--neon-green); }
.cyber-toast.toast-warning {
border-color: rgba(255, 157, 0, 0.4);
border-left-color: var(--neon-orange);
}
.cyber-toast.toast-warning i { color: var(--neon-orange); }
.cyber-toast.toast-error {
border-color: rgba(255, 0, 85, 0.4);
border-left-color: var(--neon-pink);
}
.cyber-toast.toast-error i { color: var(--neon-pink); }
.cyber-toast.toast-info i { color: var(--neon-cyan); }
.cyber-toast.toast-fadeout {
animation: toastFadeOut 0.3s ease-in forwards;
}
@keyframes toastSlideIn {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
@keyframes toastFadeOut {
from { transform: translateX(0); opacity: 1; }
to { transform: translateX(100%); opacity: 0; }
}
/* ==========================================
5. RESULTS PANEL & MOBILE POLISH
========================================== */
.hidden { display: none !important; visibility: hidden !important; opacity: 0 !important; }
.terminal-output {
margin-top: 20px;
border-top: 2px solid var(--state-color);
padding-top: 15px;
animation: terminalFade 0.4s ease-out;
}
@keyframes terminalFade {
from { opacity: 0; transform: translateY(6px); }
to { opacity: 1; transform: translateY(0); }
}
.verdict-box {
display: flex;
justify-content: space-between;
align-items: flex-end;
margin-bottom: 10px;
}
#verdictTitle {
font-size: 2rem;
font-weight: 800;
color: var(--state-color);
letter-spacing: 1px;
}
.conf-bar-bg {
height: 10px;
background: var(--bar-track);
margin-bottom: 5px;
overflow: hidden;
}
.conf-bar-fill {
height: 100%;
background: var(--state-color);
width: 0%;
transition: width 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
box-shadow: 0 0 10px var(--state-color);
}
#confidenceScore {
font-family: var(--font-code);
font-size: 1.2rem;
color: var(--state-color);
float: right;
}
/* --- MOBILE SPECIFIC FIXES --- */
@media (max-width: 900px) {
.dashboard-grid { grid-template-columns: 1fr; }
.telemetry-panel { display: flex; margin-top: 20px; }
.globe-container, .live-logs { display: none; }
.metrics-grid { display: flex; margin-bottom: 10px; }
.hud-header { flex-direction: column; align-items: flex-start; gap: 15px; }
.header-left { width: 100%; border-bottom: 1px solid var(--hud-border); padding-bottom: 10px; }
.user-profile { width: 100%; padding-left: 0; border-left: none; display: flex; justify-content: space-between; align-items: center; }
.action-buttons { justify-content: flex-end; }
.cyber-toast-container {
left: 15px;
right: 15px;
bottom: 15px;
max-width: none;
}
}