:root{--bg: #07080b;--ink: #ece5d3;--ink-dim: #a89e88;--gold: #d8b96a;--gold-soft: rgba(216, 185, 106, .16);--panel: rgba(13, 15, 20, .82);--panel-border: rgba(216, 185, 106, .18);--danger: #e0483e;--serif: "Cormorant Garamond", Georgia, serif;--sans: "Inter", -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);overflow:hidden;-webkit-font-smoothing:antialiased}.app{position:fixed;inset:0}.viewport{position:absolute;inset:0}.viewport canvas{display:block}.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,transparent 55%,rgba(0,0,0,.55) 100%)}.loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--bg);z-index:40;pointer-events:none;transition:opacity .4s ease}.loader-mark{font-size:54px;color:var(--gold);animation:pulse 1.6s ease-in-out infinite}.loader-text{color:var(--ink-dim);letter-spacing:.2em;text-transform:uppercase;font-size:12px}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:14px 20px;z-index:20;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:10px}.brand-glyph{font-size:26px;color:var(--gold);line-height:1;text-shadow:0 0 18px rgba(216,185,106,.5)}.brand-title{font-family:var(--serif);font-size:24px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.top-actions{display:flex;align-items:center;gap:8px}.view-switch{display:flex;gap:6px;margin-right:6px}.chip{background:#14171ebf;color:var(--ink-dim);border:1px solid rgba(216,185,106,.14);border-radius:999px;padding:6px 13px;font-size:12px;font-weight:500;letter-spacing:.04em;cursor:pointer;transition:all .18s ease;backdrop-filter:blur(8px)}.chip:hover{color:var(--ink);border-color:#d8b96a66}.chip.active{color:#141414;background:var(--gold);border-color:var(--gold)}.chip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.icon-btn{width:34px;height:34px;border-radius:50%;background:#14171ebf;color:var(--ink-dim);border:1px solid rgba(216,185,106,.14);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .18s ease;backdrop-filter:blur(8px)}.icon-btn:hover{color:var(--gold);border-color:#d8b96a66}.panel{position:absolute;top:70px;right:18px;width:288px;z-index:15;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:16px;backdrop-filter:blur(14px);display:flex;flex-direction:column;gap:12px;max-height:calc(100% - 100px);box-shadow:0 18px 50px #00000080}.turn-row{display:flex;align-items:center;gap:10px}.turn-dot{width:13px;height:13px;border-radius:50%;flex-shrink:0;box-shadow:0 0 10px #ffffff40}.turn-dot.w{background:#f2ecdc}.turn-dot.b{background:#1c1e24;border:1px solid #555;box-shadow:none}.turn-label{font-family:var(--serif);font-size:19px;font-weight:500}.check-flag{color:var(--danger);font-style:normal;font-weight:600;font-size:15px}.captured{display:flex;flex-direction:column;gap:4px}.cap-row{display:flex;align-items:baseline;gap:8px;min-height:24px}.cap-name{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-dim);width:44px;flex-shrink:0}.cap-pieces{font-size:17px;letter-spacing:1px;line-height:1.2;word-break:break-all}.cap-pieces.light{color:#cfcfcf}.cap-pieces.dark{color:#8a8f9a}.cap-score{font-size:12px;color:var(--gold);font-weight:600}.moves{overflow-y:auto;max-height:220px;min-height:60px;border-top:1px solid rgba(216,185,106,.12);border-bottom:1px solid rgba(216,185,106,.12);padding:8px 2px;display:flex;flex-direction:column;gap:2px}.moves-empty{color:var(--ink-dim);font-size:13px;font-style:italic;padding:6px 4px}.move-row{display:grid;grid-template-columns:34px 1fr 1fr;font-size:13.5px;padding:2px 4px;border-radius:6px}.move-row:nth-child(odd){background:#ffffff06}.move-num{color:var(--ink-dim)}.move-san{font-weight:500}.mode-line{font-size:12px;color:var(--ink-dim);letter-spacing:.02em}.panel-actions{display:flex;gap:8px}.mobile-only{display:none}.fen-box{font-size:11px;color:var(--ink-dim)}.fen-box summary{cursor:pointer;letter-spacing:.1em;text-transform:uppercase;font-size:10px}.fen-box code{display:block;margin-top:6px;word-break:break-all;font-size:10.5px;line-height:1.5;color:#8f8774}.btn{border-radius:10px;padding:9px 16px;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .18s ease;border:1px solid transparent;font-family:var(--sans);letter-spacing:.02em}.btn.primary{background:var(--gold);color:#141414;border-color:var(--gold)}.btn.primary:hover{background:#e6c87e;box-shadow:0 4px 22px #d8b96a59}.btn.ghost{background:transparent;color:var(--ink);border-color:#d8b96a4d}.btn.ghost:hover{border-color:var(--gold);background:var(--gold-soft)}.btn:disabled{opacity:.4;cursor:default;box-shadow:none}.btn.large{padding:13px 26px;font-size:15px}.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.overlay{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#0405088c;backdrop-filter:blur(6px);animation:fadeIn .35s ease;padding:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.card{background:linear-gradient(160deg,#181b23f7,#0b0d11f7);border:1px solid var(--panel-border);border-radius:18px;padding:40px 44px;max-width:560px;width:100%;text-align:center;box-shadow:0 30px 90px #0009;animation:riseIn .45s cubic-bezier(.2,.9,.3,1);max-height:calc(100% - 40px);overflow-y:auto}@keyframes riseIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.menu-eyebrow{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}.menu-title{font-family:var(--serif);font-size:52px;font-weight:500;margin:0 0 6px;letter-spacing:.04em;line-height:1}.menu-sub{color:var(--ink-dim);font-size:14.5px;margin:0 0 24px}.menu-hint{margin-top:22px;font-size:12px;color:#6d675a;letter-spacing:.06em}.end-title{font-family:var(--serif);font-size:34px;margin:0 0 8px;font-weight:500}.mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.mode-card{background:#ffffff08;border:1px solid rgba(216,185,106,.16);border-radius:14px;padding:20px 12px;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center;transition:all .2s ease;color:var(--ink)}.mode-card:hover{border-color:#d8b96a73;background:#ffffff0d}.mode-card.active{border-color:var(--gold);background:var(--gold-soft);box-shadow:0 0 30px #d8b96a1f}.mode-glyph{font-size:30px}.mode-name{font-weight:600;font-size:15px}.mode-desc{font-size:12px;color:var(--ink-dim)}.menu-options{display:flex;flex-direction:column;gap:10px;margin-bottom:22px}.opt-row{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.opt-label{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-dim);margin-right:4px}.menu-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.promo-card h2,.settings-card h2{font-family:var(--serif);font-weight:500;font-size:30px;margin:0 0 6px}.promo-card p{color:var(--ink-dim);font-size:14px;margin:0 0 20px}.promo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}.promo-choice{background:#ffffff08;border:1px solid rgba(216,185,106,.2);border-radius:12px;padding:16px 6px;cursor:pointer;color:var(--ink);display:flex;flex-direction:column;gap:6px;align-items:center;transition:all .18s ease}.promo-choice:hover{border-color:var(--gold);background:var(--gold-soft);transform:translateY(-2px)}.promo-glyph{font-size:34px}.promo-label{font-size:12px;color:var(--ink-dim)}.settings-card{text-align:left;max-width:480px}.settings-card h2{text-align:center;margin-bottom:20px}.set-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(216,185,106,.1);font-size:14px;gap:12px}.set-row .seg{display:flex;gap:6px}.set-row input[type=range]{width:150px;accent-color:var(--gold)}.toggle{width:46px;height:26px;border-radius:999px;cursor:pointer;background:#ffffff1a;border:1px solid rgba(216,185,106,.25);position:relative;transition:background .2s ease;padding:0}.toggle .knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#8a8f9a;transition:all .2s ease}.toggle.on{background:#d8b96a59}.toggle.on .knob{left:22px;background:var(--gold)}.settings-card .menu-actions{margin-top:22px}@media (max-width: 900px){.brand-title{font-size:18px}.view-switch .chip{padding:5px 9px;font-size:11px}.panel{inset:auto 0 0;width:auto;border-radius:16px 16px 0 0;padding:12px 16px calc(14px + env(safe-area-inset-bottom));max-height:44%;gap:8px}.moves{display:none;max-height:130px}.moves.open{display:flex}.mobile-only{display:inline-block}.panel-actions .btn{flex:1;padding:9px 6px;font-size:12.5px}.fen-box{display:none}.card{padding:28px 22px}.menu-title{font-size:38px}.promo-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.view-switch .chip:nth-child(3),.view-switch .chip:nth-child(4){display:none}.brand-title{font-size:16px;letter-spacing:.08em}.topbar{padding:10px 12px}}@media (prefers-reduced-motion: reduce){.overlay,.card,.loader-mark{animation:none}}
