:root { color-scheme: dark; font-family: "Space Grotesk", "Segoe UI", sans-serif; --bg: #050812; --panel: rgba(9, 18, 34, 0.78); --panel-border: rgba(132, 196, 255, 0.18); --text: #eaf4ff; --muted: #98adc4; --accent: #7fd6ff; --warning: #ffbf69; } * { box-sizing: border-box; } html, body, #app { margin: 0; width: 100%; height: 100%; overflow: hidden; background: radial-gradient(circle at top, rgba(89, 132, 247, 0.16), transparent 30%), radial-gradient(circle at 18% 42%, rgba(255, 136, 92, 0.14), transparent 24%), linear-gradient(180deg, #03060d 0%, #060c18 100%); } canvas { display: block; } .viewer-shell { position: fixed; inset: 0; pointer-events: none; } .topbar, .details-panel, .faction-strip { position: absolute; backdrop-filter: blur(18px); background: var(--panel); border: 1px solid var(--panel-border); box-shadow: 0 18px 54px rgba(0, 0, 0, 0.35); } .topbar { top: 20px; left: 20px; right: 20px; border-radius: 22px; padding: 18px 20px; display: flex; justify-content: space-between; align-items: center; gap: 20px; pointer-events: auto; } .eyebrow { margin: 0 0 6px; color: var(--accent); letter-spacing: 0.18em; font-size: 0.72rem; text-transform: uppercase; } .topbar h1, .details-panel h2, .details-panel h3, .faction-card h3 { margin: 0; } .topbar h1 { font-size: 1.2rem; } .topbar-actions { display: flex; align-items: center; gap: 12px; } .status-pill, .reset-button { border-radius: 999px; border: 1px solid rgba(127, 214, 255, 0.18); background: rgba(12, 25, 46, 0.92); color: var(--text); padding: 11px 16px; font: inherit; } .reset-button { cursor: pointer; pointer-events: auto; transition: transform 120ms ease, border-color 120ms ease; } .reset-button:hover { transform: translateY(-1px); border-color: rgba(127, 214, 255, 0.42); } .details-panel { top: 110px; right: 20px; width: min(380px, calc(100vw - 40px)); bottom: 20px; border-radius: 24px; padding: 18px; color: var(--text); pointer-events: auto; overflow: auto; } .details-panel h2 { color: var(--accent); letter-spacing: 0.16em; font-size: 0.72rem; text-transform: uppercase; } .detail-title { margin-top: 12px; font-size: 1.05rem; } .detail-body { margin-top: 12px; color: var(--muted); line-height: 1.55; } .detail-body p { margin: 0 0 12px; } .history { font-family: "IBM Plex Mono", "SFMono-Regular", monospace; font-size: 0.78rem; line-height: 1.6; } .error-strip { margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: rgba(255, 116, 88, 0.14); color: #ffd8cf; } .faction-strip { left: 20px; bottom: 20px; width: min(920px, calc(100vw - 440px)); min-height: 110px; border-radius: 24px; padding: 16px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; pointer-events: auto; } .faction-card { border-radius: 18px; border: 1px solid rgba(127, 214, 255, 0.14); background: linear-gradient(180deg, rgba(11, 23, 43, 0.85), rgba(7, 15, 28, 0.9)); padding: 14px; display: flex; gap: 12px; align-items: flex-start; color: var(--text); } .faction-card p { margin: 6px 0 0; color: var(--muted); line-height: 1.45; } .swatch { width: 14px; height: 48px; border-radius: 999px; flex: none; } @media (max-width: 1080px) { .faction-strip { right: 20px; width: auto; } } @media (max-width: 760px) { .topbar { flex-direction: column; align-items: flex-start; } .details-panel { position: absolute; top: auto; left: 20px; right: 20px; bottom: 148px; width: auto; max-height: 38vh; } .faction-strip { left: 20px; right: 20px; bottom: 20px; width: auto; min-height: 100px; grid-template-columns: 1fr; } }