| | :root { |
| | --bg-primary: #06060f; |
| | --bg-secondary: #0c0c1e; |
| | --bg-panel: rgba(12, 12, 30, 0.75); |
| | --border-glow: rgba(100, 200, 255, 0.2); |
| | --text-primary: #e0e8ff; |
| | --text-secondary: #8090b0; |
| | --text-muted: #506080; |
| | --neon-cyan: #00f0ff; |
| | --neon-green: #00ff88; |
| | --neon-red: #ff3366; |
| | --neon-blue: #3399ff; |
| | --neon-amber: #ffaa00; |
| | --neon-purple: #cc66ff; |
| | --neon-pink: #ff66cc; |
| | --neon-white: #eef4ff; |
| | --gatherer-color: #00ff88; |
| | --predator-color: #ff3366; |
| | --builder-color: #3399ff; |
| | --explorer-color: #ffaa00; |
| | --hybrid-color: #cc66ff; |
| | --food-color: #00ffaa; |
| | --energy-color: #ffee44; |
| | --panel-radius: 12px; |
| | --panel-blur: 16px; |
| | --font-mono: "Courier New", "Consolas", monospace; |
| | --font-sans: system-ui, -apple-system, "Segoe UI", sans-serif; |
| | --z-canvas: 1; |
| | --z-particles: 2; |
| | --z-hud: 10; |
| | --z-announcements: 20; |
| | --z-modal: 30; |
| | } |
| |
|
| | *, |
| | *::before, |
| | *::after { |
| | box-sizing: border-box; |
| | margin: 0; |
| | padding: 0; |
| | } |
| |
|
| | html, |
| | body { |
| | width: 100%; |
| | height: 100%; |
| | overflow: hidden; |
| | background: var(--bg-primary); |
| | color: var(--text-primary); |
| | font-family: var(--font-sans); |
| | font-size: 14px; |
| | line-height: 1.4; |
| | -webkit-font-smoothing: antialiased; |
| | -moz-osx-font-smoothing: grayscale; |
| | } |
| |
|
| | #app { |
| | position: relative; |
| | width: 100%; |
| | height: 100%; |
| | overflow: hidden; |
| | } |
| |
|
| | #simulation-canvas { |
| | position: absolute; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | z-index: var(--z-canvas); |
| | display: block; |
| | } |
| |
|
| | #particle-canvas { |
| | position: absolute; |
| | top: 0; |
| | left: 0; |
| | width: 100%; |
| | height: 100%; |
| | z-index: var(--z-particles); |
| | pointer-events: none; |
| | display: block; |
| | } |
| |
|
| | .hud-panel { |
| | position: absolute; |
| | z-index: var(--z-hud); |
| | background: var(--bg-panel); |
| | backdrop-filter: blur(var(--panel-blur)); |
| | -webkit-backdrop-filter: blur(var(--panel-blur)); |
| | border: 1px solid var(--border-glow); |
| | border-radius: var(--panel-radius); |
| | padding: 12px 16px; |
| | pointer-events: auto; |
| | transition: |
| | opacity 0.3s ease, |
| | transform 0.3s ease; |
| | } |
| |
|
| | .hud-panel:focus-within { |
| | border-color: var(--neon-cyan); |
| | box-shadow: 0 0 12px rgba(0, 240, 255, 0.15); |
| | } |
| |
|
| | #panel-stats { |
| | top: 16px; |
| | left: 16px; |
| | min-width: 220px; |
| | } |
| |
|
| | #panel-performance { |
| | top: 16px; |
| | right: 16px; |
| | min-width: 160px; |
| | text-align: right; |
| | } |
| |
|
| | #panel-events { |
| | bottom: 16px; |
| | left: 16px; |
| | right: 16px; |
| | max-width: 600px; |
| | max-height: 120px; |
| | overflow-y: auto; |
| | scrollbar-width: thin; |
| | scrollbar-color: var(--text-muted) transparent; |
| | } |
| |
|
| | #panel-charts { |
| | bottom: 16px; |
| | right: 16px; |
| | width: 280px; |
| | height: 200px; |
| | } |
| |
|
| | #panel-generation { |
| | top: 16px; |
| | left: 50%; |
| | transform: translateX(-50%); |
| | text-align: center; |
| | min-width: 180px; |
| | } |
| |
|
| | .panel-title { |
| | font-family: var(--font-mono); |
| | font-size: 10px; |
| | font-weight: 700; |
| | text-transform: uppercase; |
| | letter-spacing: 2px; |
| | color: var(--text-muted); |
| | margin-bottom: 8px; |
| | } |
| |
|
| | .stat-value { |
| | font-family: var(--font-mono); |
| | font-size: 22px; |
| | font-weight: 700; |
| | color: var(--neon-cyan); |
| | line-height: 1.1; |
| | } |
| |
|
| | .stat-label { |
| | font-family: var(--font-mono); |
| | font-size: 11px; |
| | color: var(--text-secondary); |
| | } |
| |
|
| | .stat-row { |
| | display: flex; |
| | justify-content: space-between; |
| | align-items: baseline; |
| | padding: 3px 0; |
| | } |
| |
|
| | .stat-row .dot { |
| | display: inline-block; |
| | width: 8px; |
| | height: 8px; |
| | border-radius: 50%; |
| | margin-right: 6px; |
| | vertical-align: middle; |
| | } |
| |
|
| | .stat-row .count { |
| | font-family: var(--font-mono); |
| | font-size: 13px; |
| | font-weight: 600; |
| | color: var(--text-primary); |
| | min-width: 30px; |
| | text-align: right; |
| | } |
| |
|
| | .sparkline-container { |
| | width: 60px; |
| | height: 20px; |
| | display: inline-block; |
| | vertical-align: middle; |
| | margin-left: 8px; |
| | } |
| |
|
| | .event-entry { |
| | font-family: var(--font-mono); |
| | font-size: 11px; |
| | color: var(--text-secondary); |
| | padding: 2px 0; |
| | border-bottom: 1px solid rgba(100, 200, 255, 0.05); |
| | white-space: nowrap; |
| | overflow: hidden; |
| | text-overflow: ellipsis; |
| | } |
| |
|
| | .event-entry .timestamp { |
| | color: var(--text-muted); |
| | margin-right: 8px; |
| | } |
| |
|
| | .event-entry.event-birth { |
| | color: var(--neon-green); |
| | } |
| | .event-entry.event-death { |
| | color: var(--neon-red); |
| | } |
| | .event-entry.event-evolution { |
| | color: var(--neon-purple); |
| | } |
| | .event-entry.event-world { |
| | color: var(--neon-amber); |
| | } |
| | .event-entry.event-milestone { |
| | color: var(--neon-cyan); |
| | } |
| |
|
| | .chart-canvas { |
| | width: 100%; |
| | height: 100%; |
| | display: block; |
| | } |
| |
|
| | .hud-panel::-webkit-scrollbar { |
| | width: 4px; |
| | } |
| |
|
| | .hud-panel::-webkit-scrollbar-track { |
| | background: transparent; |
| | } |
| |
|
| | .hud-panel::-webkit-scrollbar-thumb { |
| | background: var(--text-muted); |
| | border-radius: 2px; |
| | } |
| |
|
| | @media (max-width: 768px) { |
| | .hud-panel { |
| | padding: 8px 12px; |
| | border-radius: 8px; |
| | } |
| |
|
| | #panel-stats { |
| | top: 8px; |
| | left: 8px; |
| | min-width: 180px; |
| | } |
| |
|
| | #panel-performance { |
| | top: 8px; |
| | right: 8px; |
| | min-width: 120px; |
| | } |
| |
|
| | #panel-events { |
| | bottom: 8px; |
| | left: 8px; |
| | right: 8px; |
| | max-height: 80px; |
| | font-size: 10px; |
| | } |
| |
|
| | #panel-charts { |
| | display: none; |
| | } |
| |
|
| | #panel-generation { |
| | top: 8px; |
| | } |
| |
|
| | .stat-value { |
| | font-size: 18px; |
| | } |
| | } |
| |
|
| | @media (max-width: 480px) { |
| | #panel-charts { |
| | display: none; |
| | } |
| |
|
| | #panel-stats { |
| | min-width: 150px; |
| | } |
| |
|
| | #panel-performance { |
| | min-width: 100px; |
| | } |
| |
|
| | .stat-value { |
| | font-size: 16px; |
| | } |
| | .stat-label { |
| | font-size: 10px; |
| | } |
| | } |
| |
|
| | .sr-only { |
| | position: absolute; |
| | width: 1px; |
| | height: 1px; |
| | margin: -1px; |
| | padding: 0; |
| | overflow: hidden; |
| | clip: rect(0, 0, 0, 0); |
| | border: 0; |
| | white-space: nowrap; |
| | } |
| |
|
| | *:focus-visible { |
| | outline: 2px solid var(--neon-cyan); |
| | outline-offset: 2px; |
| | } |
| |
|
| | @media (prefers-reduced-motion: reduce) { |
| | *, |
| | *::before, |
| | *::after { |
| | animation-duration: 0.01ms !important; |
| | animation-iteration-count: 1 !important; |
| | transition-duration: 0.01ms !important; |
| | } |
| | } |
| |
|