:root { --bg: #0f172a; --canvas-bg: #071020; --text: #e6eef8; --label: #cfe7ff; --button-bg: #0b1220; --footer: #9bb8d9; --border: rgba(255, 255, 255, 0.06); } * { box-sizing: border-box; font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial; } body { margin: 0; min-height: 100vh; background: var(--bg); color: var(--text); display: flex; justify-content: center; align-items: center; } main { width: 100%; max-width: 1100px; padding: 22px; } /* ---------- Header ---------- */ header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; } h1 { margin: 0; font-size: 24px; } #status { display: flex; gap: 14px; font-size: 13px; opacity: 0.85; } #runState::before { content: "● "; } #runState.running { color: #7cb7ff; } /* ---------- Controls ---------- */ .controls { display: flex; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; } .panel { border-radius: 10px; padding: 10px; border: 1px solid var(--border); } .panel.primary { display: flex; gap: 6px; flex-wrap: wrap; background: rgba(255,255,255,0.02); } .panel.secondary { display: flex; flex-direction: column; gap: 8px; background: rgba(255,255,255,0.015); min-width: 260px; } /* ---------- Inputs ---------- */ button { background: var(--button-bg); color: var(--text); border: 1px solid var(--border); padding: 8px 12px; border-radius: 6px; cursor: pointer; } button:hover { filter: brightness(1.05); } button:disabled { opacity: 0.4; cursor: default; } select, input[type="range"] { background: var(--button-bg); color: var(--text); } label { display: grid; grid-template-columns: 1fr auto; gap: 6px; font-size: 14px; color: var(--label); } label.inline { display: flex; gap: 6px; align-items: center; } output { font-size: 12px; opacity: 0.7; align-self: center; } #modeHint { font-size: 12px; opacity: 0.7; line-height: 1.3; } /* ---------- Canvas ---------- */ #lifeCanvas { width: 100%; height: 70vh; display: block; background: var(--canvas-bg); border: 1px solid var(--border); cursor: crosshair; } /* ---------- Footer ---------- */ footer { margin-top: 8px; text-align: center; color: var(--footer); font-size: 12px; } /* ---------- Recording -------- */ .recording-indicator { margin-left: 8px; font-size: 13px; color: #ff5f5f; animation: pulse 1.2s infinite; } .hidden { display: none; } @keyframes pulse { 0% { opacity: 1 } 50% { opacity: 0.4 } 100% { opacity: 1 } }