:root, [data-theme="dark"] { --font-pixel: 'Press Start 2P', monospace; --font-ui: 'Silkscreen', 'Press Start 2P', monospace; --font-mono: 'Space Mono', monospace; --font-digital: 'VT323', monospace; /* 16-Bit Dark Palette (SNES / Mad TV Night Studio) */ --retro-bg: #0c101a; --retro-bg-pattern: #131926; --retro-window-bg: #1a2236; --retro-window-inner: #101624; --retro-card-bg: #182033; --retro-card-hover: #222c44; --retro-bevel-light: #44567e; --retro-bevel-dark: #07090f; --retro-border: #28354f; --retro-titlebar-bg: linear-gradient(90deg, #1c396c 0%, #2f599e 50%, #172d54 100%); --retro-titlebar-text: #f8fafc; --retro-titlebar-stripes: repeating-linear-gradient(90deg, #244882, #244882 4px, #162f59 4px, #162f59 8px); --retro-text-main: #f1f5f9; --retro-text-dim: #94a3b8; --retro-text-muted: #64748b; --retro-accent-amber: #fbbf24; --retro-accent-cyan: #00f0ff; --retro-accent-green: #10b981; --retro-accent-red: #f43f5e; --retro-accent-purple: #c084fc; --retro-shadow: 3px 3px 0px #05070c; --retro-shadow-lg: 6px 6px 0px #04060a; --retro-grid-line: rgba(255, 255, 255, 0.08); --chart-grid-color: rgba(255, 255, 255, 0.08); --chart-text-color: #94a3b8; } [data-theme="light"] { --font-pixel: 'Press Start 2P', monospace; --font-ui: 'Silkscreen', 'Press Start 2P', monospace; --font-mono: 'Space Mono', monospace; --font-digital: 'VT323', monospace; /* 16-Bit Bright Palette (Amiga Workbench / Windows 95 / SNES Day Mode) */ --retro-bg: #b8bec9; --retro-bg-pattern: #c8ceda; --retro-window-bg: #d4d8e2; --retro-window-inner: #f1f4f9; --retro-card-bg: #dde2ed; --retro-card-hover: #eaf0fa; --retro-bevel-light: #ffffff; --retro-bevel-dark: #586173; --retro-border: #4d576a; --retro-titlebar-bg: linear-gradient(90deg, #0a246a 0%, #1d50b5 60%, #081e54 100%); --retro-titlebar-text: #ffffff; --retro-titlebar-stripes: repeating-linear-gradient(90deg, #103387, #103387 4px, #071c4f 4px, #071c4f 8px); --retro-text-main: #0f172a; --retro-text-dim: #334155; --retro-text-muted: #64748b; --retro-accent-amber: #b45309; --retro-accent-cyan: #0284c7; --retro-accent-green: #047857; --retro-accent-red: #be123c; --retro-accent-purple: #7e22ce; --retro-shadow: 3px 3px 0px #50596b; --retro-shadow-lg: 6px 6px 0px #404857; --retro-grid-line: rgba(0, 0, 0, 0.1); --chart-grid-color: rgba(0, 0, 0, 0.1); --chart-text-color: #334155; } html, body { width: 100%; max-width: 100vw; overflow-x: hidden; box-sizing: border-box; } * { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; } body { font-family: var(--font-mono); background-color: var(--retro-bg); color: var(--retro-text-main); min-height: 100vh; min-height: -webkit-fill-available; position: relative; background-image: radial-gradient(var(--retro-bg-pattern) 15%, transparent 16%), radial-gradient(var(--retro-bg-pattern) 15%, transparent 16%); background-size: 16px 16px; background-position: 0 0, 8px 8px; transition: background-color 0.2s ease, color 0.2s ease; -webkit-font-smoothing: antialiased; } /* Optional CRT Scanlines Layer */ .crt-overlay { position: fixed; inset: 0; pointer-events: none; z-index: 999; background: linear-gradient( rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.18) 50% ), linear-gradient( 90deg, rgba(255, 0, 0, 0.015), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.015) ); background-size: 100% 3px, 6px 100%; opacity: 0.6; } /* Base Container with Safe Area Support */ .container { width: 100%; max-width: 960px; margin: 0 auto; padding: 0.6rem 0.6rem 3rem 0.6rem; padding-left: max(0.6rem, env(safe-area-inset-left)); padding-right: max(0.6rem, env(safe-area-inset-right)); padding-bottom: max(3rem, env(safe-area-inset-bottom)); box-sizing: border-box; } /* 16-Bit Retro Window Component */ .retro-window { width: 100%; max-width: 100%; box-sizing: border-box; background-color: var(--retro-window-bg); border-top: 3px solid var(--retro-bevel-light); border-left: 3px solid var(--retro-bevel-light); border-right: 3px solid var(--retro-bevel-dark); border-bottom: 3px solid var(--retro-bevel-dark); box-shadow: var(--retro-shadow); margin-bottom: 1.15rem; } .retro-window-header { background: var(--retro-titlebar-bg); color: var(--retro-titlebar-text); padding: 0.35rem 0.5rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 2px solid var(--retro-bevel-dark); font-family: var(--font-pixel); font-size: clamp(0.58rem, 2.2vw, 0.7rem); letter-spacing: 0.04em; user-select: none; gap: 0.4rem; box-sizing: border-box; } .retro-window-title { display: flex; align-items: center; gap: 0.35rem; font-weight: 700; text-transform: uppercase; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .retro-window-controls { display: flex; gap: 0.25rem; flex-shrink: 0; } .retro-btn-box { width: 22px; height: 22px; min-width: 22px; background: var(--retro-window-bg); border-top: 2px solid var(--retro-bevel-light); border-left: 2px solid var(--retro-bevel-light); border-right: 2px solid var(--retro-bevel-dark); border-bottom: 2px solid var(--retro-bevel-dark); color: var(--retro-text-main); display: inline-flex; align-items: center; justify-content: center; font-size: 0.75rem; font-family: var(--font-pixel); cursor: pointer; line-height: 1; user-select: none; touch-action: manipulation; } .retro-btn-box:active { border-top: 2px solid var(--retro-bevel-dark); border-left: 2px solid var(--retro-bevel-dark); border-right: 2px solid var(--retro-bevel-light); border-bottom: 2px solid var(--retro-bevel-light); transform: translate(1px, 1px); } .retro-window-content { padding: 0.75rem; box-sizing: border-box; } /* Inset Retro Wells */ .retro-well { background: var(--retro-window-inner); border-top: 2px solid var(--retro-bevel-dark); border-left: 2px solid var(--retro-bevel-dark); border-right: 2px solid var(--retro-bevel-light); border-bottom: 2px solid var(--retro-bevel-light); padding: 0.45rem; box-sizing: border-box; } /* 16-Bit Interactive Buttons */ .retro-btn { font-family: var(--font-ui); font-size: clamp(0.62rem, 2.2vw, 0.72rem); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; padding: 0.4rem 0.65rem; background-color: var(--retro-window-bg); color: var(--retro-text-main); border-top: 2px solid var(--retro-bevel-light); border-left: 2px solid var(--retro-bevel-light); border-right: 2px solid var(--retro-bevel-dark); border-bottom: 2px solid var(--retro-bevel-dark); box-shadow: 2px 2px 0px rgba(0,0,0,0.3); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; transition: background-color 0.1s ease; user-select: none; touch-action: manipulation; white-space: nowrap; } .retro-btn:hover { background-color: var(--retro-card-hover); } .retro-btn:active, .retro-btn.active { border-top: 2px solid var(--retro-bevel-dark); border-left: 2px solid var(--retro-bevel-dark); border-right: 2px solid var(--retro-bevel-light); border-bottom: 2px solid var(--retro-bevel-light); box-shadow: inset 1px 1px 0px rgba(0,0,0,0.5); transform: translate(1px, 1px); } .retro-btn.btn-accent { background-color: var(--retro-accent-amber); color: #000000; border-color: #fde68a #92400e #92400e #fde68a; } /* Group Headers */ .group-section { margin-bottom: 1.15rem; width: 100%; box-sizing: border-box; } .group-header-bar { display: flex; align-items: center; justify-content: space-between; gap: 0.4rem; margin-bottom: 0.45rem; padding: 0.35rem 0.55rem; background: var(--retro-window-bg); border-top: 2px solid var(--retro-bevel-light); border-left: 2px solid var(--retro-bevel-light); border-right: 2px solid var(--retro-bevel-dark); border-bottom: 2px solid var(--retro-bevel-dark); box-sizing: border-box; flex-wrap: wrap; } .group-title { font-family: var(--font-pixel); font-size: clamp(0.58rem, 2.2vw, 0.72rem); font-weight: 700; color: var(--retro-text-main); display: flex; align-items: center; gap: 0.35rem; letter-spacing: 0.04em; text-transform: uppercase; } .group-hint { font-family: var(--font-ui); font-size: 0.58rem; color: var(--retro-text-dim); } /* Top-Down Metric List Stack */ .metrics-list-stack { display: flex; flex-direction: column; gap: 0.45rem; width: 100%; max-width: 100%; box-sizing: border-box; } /* Status Badges */ .retro-badge { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.15rem 0.4rem; font-family: var(--font-ui); font-size: clamp(0.52rem, 1.8vw, 0.62rem); font-weight: 700; border-top: 2px solid var(--retro-bevel-dark); border-left: 2px solid var(--retro-bevel-dark); border-right: 2px solid var(--retro-bevel-light); border-bottom: 2px solid var(--retro-bevel-light); background: var(--retro-window-inner); color: var(--retro-text-main); text-transform: uppercase; white-space: nowrap; } .retro-badge.badge-green { color: var(--retro-accent-green); border-color: #064e3b #34d399 #34d399 #064e3b; } .retro-badge.badge-amber { color: var(--retro-accent-amber); border-color: #78350f #fbbf24 #fbbf24 #78350f; } .retro-badge.badge-cyan { color: var(--retro-accent-cyan); border-color: #0c4a6e #38bdf8 #38bdf8 #0c4a6e; } .retro-badge.badge-red { color: var(--retro-accent-red); border-color: #881337 #fb7185 #fb7185 #881337; } /* Flashing Blinker for Live Status */ .retro-blinker { display: inline-block; width: 7px; height: 7px; min-width: 7px; background-color: var(--retro-accent-green); animation: retroBlink 1s steps(2, start) infinite; } @keyframes retroBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* App Footer */ .app-footer { margin-top: 1.25rem; padding-top: 0.75rem; border-top: 2px solid var(--retro-bevel-dark); font-family: var(--font-ui); font-size: clamp(0.52rem, 1.8vw, 0.65rem); color: var(--retro-text-dim); text-align: center; display: flex; flex-direction: column; gap: 0.25rem; } @media (max-width: 640px) { .container { padding: 0.4rem 0.4rem 2rem 0.4rem; } .group-hint { display: none; } }