/* Shared chrome for the demo routes. Tuned for screen capture: big type, high contrast, no thin hairlines that vanish in a GIF. */ :root { --bg: #0a0b10; --ink: #eef0f6; --dim: #97a0b8; --violet: #c9a4ff; --violet-deep: #8a5cff; --good: #6ee7a8; --bad: #ff7a8a; --panel: rgba(14, 16, 26, 0.82); --line: rgba(150, 160, 200, 0.18); } * { box-sizing: border-box; } html, body { margin: 0; height: 100%; overflow: hidden; background: var(--bg); color: var(--ink); font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif; -webkit-font-smoothing: antialiased; } #stage { position: fixed; inset: 0; } #stage canvas { display: block; } /* ---------- caption (top-left) ---------- */ .caption { position: fixed; left: 22px; top: 20px; z-index: 5; max-width: 420px; pointer-events: none; } .caption h1 { margin: 0; font-size: 19px; font-weight: 650; letter-spacing: -0.01em; } .caption p { margin: 6px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--dim); } .caption .home { display: inline-block; margin-bottom: 10px; font-size: 11.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--violet); text-decoration: none; opacity: 0.75; pointer-events: auto; } .caption .home:hover { opacity: 1; } /* ---------- control panel (top-right) ---------- */ .panel { position: fixed; right: 22px; top: 20px; z-index: 5; width: 268px; padding: 14px 16px 16px; border-radius: 14px; background: var(--panel); border: 1px solid var(--line); backdrop-filter: blur(10px); font-size: 13px; } .panel h2 { margin: 0 0 12px; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); } .panel .row { margin-bottom: 13px; } .panel .row:last-child { margin-bottom: 0; } .panel label { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 6px; color: var(--ink); } .panel label .val { font-variant-numeric: tabular-nums; font-size: 12px; color: var(--violet); } .panel input[type='range'] { -webkit-appearance: none; appearance: none; width: 100%; height: 4px; border-radius: 4px; background: rgba(180, 190, 230, 0.22); outline: none; } .panel input[type='range']::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--violet); border: none; cursor: pointer; box-shadow: 0 0 0 4px rgba(201, 164, 255, 0.16); } .panel input[type='range']::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--violet); border: none; cursor: pointer; } .panel .check { display: flex; justify-content: flex-start; align-items: center; gap: 9px; cursor: pointer; user-select: none; margin-bottom: 0; } .panel .check input { display: none; } .panel .check .box { width: 15px; height: 15px; flex: none; border-radius: 4px; border: 1.5px solid rgba(180, 190, 230, 0.4); position: relative; transition: background 0.14s, border-color 0.14s; } .panel .check input:checked + .box { background: var(--violet); border-color: var(--violet); } .panel .check input:checked + .box::after { content: ''; position: absolute; left: 4.5px; top: 1px; width: 4px; height: 8px; border: solid #1a0f2a; border-width: 0 2px 2px 0; transform: rotate(43deg); } .panel button { width: 100%; padding: 9px 12px; border: none; border-radius: 9px; font: inherit; font-weight: 650; font-size: 12.5px; color: #1a0f2a; background: linear-gradient(180deg, #dfc2ff, #b287f0); cursor: pointer; } .panel button:hover { filter: brightness(1.06); } .panel button:active { transform: translateY(1px); } .panel button.ghost { background: rgba(255, 255, 255, 0.07); color: var(--ink); border: 1px solid var(--line); } .panel .seg { display: flex; gap: 6px; } .panel .seg button { flex: 1; } .panel .note { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--line); font-size: 12px; line-height: 1.55; color: var(--dim); } .panel .note b { color: var(--violet); font-weight: 600; } /* ---------- readouts (bottom-left) ---------- */ .readouts { position: fixed; left: 22px; bottom: 22px; z-index: 5; display: flex; flex-direction: column; gap: 7px; padding: 13px 16px; border-radius: 12px; background: var(--panel); border: 1px solid var(--line); backdrop-filter: blur(10px); font-size: 12.5px; pointer-events: none; } .readouts .r { display: flex; justify-content: space-between; gap: 24px; font-variant-numeric: tabular-nums; } .readouts .r span:first-child { color: var(--dim); } .readouts .r span:last-child { color: var(--ink); font-weight: 600; } .readouts .r.hi span:last-child { color: var(--violet); } .readouts .r.good span:last-child { color: var(--good); } .readouts .r.bad span:last-child { color: var(--bad); } /* ---------- split-screen labels ---------- */ .splits { position: fixed; left: 0; right: 0; bottom: 96px; z-index: 4; display: flex; pointer-events: none; } .splits > div { flex: 1; text-align: center; } .splits .tag { display: inline-block; padding: 6px 15px; border-radius: 999px; font-size: 13px; font-weight: 650; background: rgba(14, 16, 26, 0.8); border: 1px solid var(--line); } .splits .tag.no { color: var(--bad); border-color: rgba(255, 122, 138, 0.35); } .splits .tag.yes { color: var(--good); border-color: rgba(110, 231, 168, 0.35); } .splits .sub { display: block; margin-top: 7px; font-size: 12px; color: var(--dim); } /* ---------- demo index ---------- */ .index-page { overflow: auto; display: block; padding: 64px 32px 96px; } .index-wrap { max-width: 940px; margin: 0 auto; } .index-wrap h1 { font-size: 30px; margin: 0 0 8px; letter-spacing: -0.02em; } .index-wrap .lede { color: var(--dim); font-size: 15px; line-height: 1.6; max-width: 640px; margin: 0 0 40px; } .index-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; } .index-grid a { display: block; padding: 18px 20px; border-radius: 14px; text-decoration: none; color: var(--ink); background: rgba(255, 255, 255, 0.03); border: 1px solid var(--line); transition: background 0.15s, border-color 0.15s, transform 0.15s; } .index-grid a:hover { background: rgba(201, 164, 255, 0.07); border-color: rgba(201, 164, 255, 0.35); transform: translateY(-2px); } .index-grid .n { font-size: 11px; letter-spacing: 0.1em; color: var(--violet); opacity: 0.8; } .index-grid h3 { margin: 7px 0 6px; font-size: 16px; font-weight: 620; } .index-grid p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--dim); } /* ---------- fatal ---------- */ .fatal { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 9; max-width: 460px; padding: 18px 22px; border-radius: 12px; background: rgba(28, 10, 14, 0.9); border: 1px solid rgba(255, 122, 138, 0.4); color: #ffb4bd; font-size: 13.5px; line-height: 1.55; }