@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5fb;--surface:#fff;--surface-2:#eceefa;--border:#d9dcf0;--read-ring:#464c788c;--text:#0f1131;--muted:#585d82;--accent:#3d3df5;--accent-strong:#2b2bd6;--accent-soft:#e4e4ff;--accent-ink:#fff;--hot:#ff2e7e;--hot-strong:#d6155f;--hot-soft:#ffe1ec;--zest:#ffd23f;--focus:#3d3df5;--danger:#c8102e;--sq-light:#e3e5fb;--sq-dark:#8088de;--sq-last:#ffd23f6b;--sq-last-ring:#ff2e7ed9;--shape:#3d3df5d9;--shape-alt:#ff2e7ed9;--engine-arrow:#0f1131cc;--line-engine:#0f1131;--line-user:#ff2e7e;--chart-white:#fff;--chart-black:#eceefa;--chart-gap-ok:#c3c7e6;--pill-best-bg:#3d3df5;--pill-best-fg:#fff;--pill-fine-bg:#e4e4ff;--pill-fine-fg:#2b2bd6;--pill-inaccuracy-bg:#fff1b8;--pill-inaccuracy-fg:#6b5000;--pill-mistake-bg:#ffc8dc;--pill-mistake-fg:#8a0f42;--pill-blunder-bg:#e0136a;--pill-blunder-fg:#fff;--series-board:#ff2e7e;--series-moves:#3d3df5;--up:#12805c;--down:#c8102e;--ink:#0b0c24;--ink-2:#16184a;--ink-text:#eef0ff;--ink-muted:#a3a8d8;--radius:16px;--radius-sm:10px;--shadow:0 1px 2px #0f11310f, 0 8px 24px -8px #0f113124;--shadow-lift:0 2px 4px #0f113114, 0 16px 40px -12px #0f113147;--board-size:min(calc(100vw - 32px), 60vh, 640px);--font-display:"Bricolage Grotesque Variable", system-ui, -apple-system, "Segoe UI", sans-serif;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#090a1c;--surface:#121433;--surface-2:#1a1d45;--border:#2a2e5e;--read-ring:#bec3f08c;--text:#eceeff;--muted:#9ea3cf;--accent:#8b8bff;--accent-strong:#b0b0ff;--accent-soft:#23245c;--accent-ink:#0a0a24;--hot:#ff5c9a;--hot-strong:#ff86b4;--hot-soft:#3d1530;--focus:#8b8bff;--danger:#ff6b81;--sq-light:#c4c8f2;--sq-dark:#5d64c4;--sq-last:#ffd23f61;--shape:#8b8bffe6;--engine-arrow:#0b0c24d9;--line-engine:#eceeff;--line-user:#ff5c9a;--chart-white:#1d2050;--chart-black:#11132f;--chart-gap-ok:#3a3f7a;--pill-best-bg:#8b8bff;--pill-best-fg:#0a0a24;--pill-fine-bg:#262a6a;--pill-fine-fg:#d6d8ff;--pill-inaccuracy-bg:#4d3d00;--pill-inaccuracy-fg:#ffe9a0;--pill-mistake-bg:#6a1638;--pill-mistake-fg:#ffd0e2;--pill-blunder-bg:#ff5c9a;--pill-blunder-fg:#2a0414;--shadow:0 1px 2px #0006, 0 8px 24px -8px #00000080;--shadow-lift:0 2px 4px #0006, 0 16px 40px -12px #000000b3;--series-board:#ff5c9a;--series-moves:#8b8bff;--up:#4ed6a4;--down:#ff6b81;--ink:#10123a;--ink-2:#1c1f5c}}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);margin:0}body{min-height:100vh}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--accent)}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .5em;line-height:1.1}p{margin:0 0 .75em}::selection{background:var(--hot);color:#fff}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{justify-content:space-between;align-items:center;gap:16px;width:100%;max-width:1200px;margin:0 auto;padding:14px 16px;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.03em;align-items:center;gap:10px;font-size:1.3rem;font-weight:800;text-decoration:none;display:flex}.brand:hover{color:inherit}.brand-mark{flex:none;width:30px;height:30px}.brand-mark .needle{transform-origin:16px 21px;transition:transform .6s cubic-bezier(.34,1.8,.5,1);transform:rotate(-28deg)}.brand:hover .brand-mark .needle{transform:rotate(34deg)}.topbar nav{color:var(--muted);gap:18px;font-size:.95rem;display:flex}.topbar nav a{white-space:nowrap;text-decoration:none}@media (width<=480px){.brand{gap:8px;font-size:1.1rem}.brand-mark{width:26px;height:26px}.topbar nav{gap:12px;font-size:.85rem}}main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:8px 16px 48px}.footer{color:var(--muted);text-align:center;flex-wrap:wrap;justify-content:center;gap:4px 16px;padding:20px 16px 28px;font-size:.8rem;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.btn{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:9px 18px;font-weight:500;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.btn:active:not(:disabled){transform:translateY(1px)scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 6px 18px -8px var(--accent);font-weight:650}.btn-primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong);color:var(--accent-ink);box-shadow:0 10px 24px -8px var(--accent);transform:translateY(-1px)}.btn-ghost{background:0 0;border-color:#0000}.btn-small{padding:4px 12px;font-size:.875rem}.btn-danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.muted{color:var(--muted)}.error{color:var(--danger)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:12px;display:flex}kbd{border:1px solid var(--border);background:var(--surface-2);color:var(--muted);border-bottom-width:2px;border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78em}input[type=text],textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:10px 12px}input[type=text]:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}textarea{resize:vertical}.pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:1px 9px;font-size:.8rem;font-weight:600;display:inline-block}.pill-best{background:var(--pill-best-bg);color:var(--pill-best-fg)}.pill-fine{background:var(--pill-fine-bg);color:var(--pill-fine-fg)}.pill-inaccuracy{background:var(--pill-inaccuracy-bg);color:var(--pill-inaccuracy-fg)}.pill-mistake{background:var(--pill-mistake-bg);color:var(--pill-mistake-fg)}.pill-blunder{background:var(--pill-blunder-bg);color:var(--pill-blunder-fg)}.pill-none{border-color:var(--border);color:var(--muted)}.home-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:24px;margin:8px 0 28px;display:grid}.home-copy{flex-direction:column;gap:18px;min-width:0;display:flex}.home-copy h1{letter-spacing:-.045em;margin:0;font-size:clamp(2.6rem,6.4vw,4.6rem);font-weight:800;line-height:.95}.home-copy h1 .hot{color:var(--hot)}.home-copy .pitch{color:var(--muted);max-width:26em;margin:0;font-size:clamp(1.05rem,1.6vw,1.2rem)}.home-copy .pitch strong{color:var(--text);font-weight:600}.beats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 40px;padding:0;list-style:none;display:grid}.beat{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);align-items:baseline;gap:12px;padding:14px 16px;display:flex}.beat-num{font-family:var(--font-display);color:var(--accent);font-size:1.6rem;font-weight:800;line-height:1}.beat:nth-child(2) .beat-num{color:var(--hot)}.beat:nth-child(3) .beat-num{color:var(--text)}.beat strong{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.15rem;display:block}.beat span{color:var(--muted);font-size:.92rem}.importer{width:100%}.importer textarea{min-height:60px;font-size:1.05rem}.sample-cta{color:var(--muted);margin:6px 2px 0;font-size:1rem}.sample-link{font:inherit;font-family:var(--font-display);color:var(--hot-strong);cursor:pointer;text-underline-offset:4px;background:0 0;border:0;padding:0;font-size:1.1rem;font-weight:700}.sample-link:hover{text-decoration:underline}.sample-banner{border-radius:var(--radius);background:var(--hot-soft);border:1px solid color-mix(in srgb, var(--hot) 35%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin:0 0 16px;padding:12px 18px;display:flex}.sample-banner p{margin:0}.sample-banner strong{font-family:var(--font-display)}.hint{min-height:1.5em;color:var(--muted);margin:8px 2px}.game-list{flex-direction:column;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.game-row{text-align:left;width:100%;font:inherit;color:inherit;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;padding:10px 12px;display:grid}.game-row:hover:not(:disabled){border-color:var(--accent)}.game-row:disabled{opacity:.55;cursor:default}.game-row .meta{color:var(--muted);font-size:.85rem}.side-chooser{grid-template-columns:minmax(0,260px) 1fr;align-items:center;gap:16px;margin-top:12px;display:grid}.resume-card{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 16px;padding:14px 18px;text-decoration:none;transition:border-color .15s,transform .15s;display:grid}.resume-card:hover{color:inherit;border-color:var(--accent);transform:translateY(-1px)}.resume-label{text-transform:uppercase;letter-spacing:.08em;color:var(--hot-strong);font-size:.75rem;font-weight:700}.resume-title{overflow-wrap:anywhere;grid-column:1;min-width:0}.resume-title strong{font-family:var(--font-display);font-size:1.1rem}.resume-go{font-family:var(--font-display);color:var(--accent);grid-area:1/2/span 2;font-weight:700}.resume-card .progress,.game-card .progress{height:6px;display:block}.resume-card .progress{grid-column:1/-1;margin-top:8px}.resume-card .progress>span,.game-card .progress>span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--hot));height:100%;display:block}.home-games{margin:0 0 28px}.home-games-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.home-games-head h2{margin-bottom:12px;font-size:1.5rem}.home-games-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.game-card{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);flex-direction:column;gap:6px;height:100%;padding:14px 16px;text-decoration:none;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}.game-card:hover{color:inherit;border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-2px)}.game-card-meta{color:var(--muted);justify-content:space-between;gap:8px;font-size:.8rem;display:flex}.game-card-title{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:1.15rem;overflow:hidden}.game-card-score{align-items:center;gap:10px;margin-top:auto;font-size:.85rem;display:flex}.game-card-score .progress{flex:1}.score-chip{font-family:var(--font-display);background:var(--hot-soft);color:var(--hot-strong);border-radius:999px;padding:1px 10px;font-size:1.15rem;font-weight:800}.board-wrap{width:var(--board-size);aspect-ratio:1;-webkit-user-select:none;user-select:none;max-width:100%;box-shadow:var(--shadow);border-radius:8px;position:relative;overflow:hidden}.board-stage{perspective:1300px;perspective-origin:50% 0;--tilt:34deg}.board-stage .board-wrap{transform-origin:50% 100%;transition:transform .7s cubic-bezier(.3,1.25,.5,1),box-shadow .7s}.board-stage [data-piece]{transform-origin:50% 82%;transition:transform .7s cubic-bezier(.3,1.4,.5,1)}.board-stage.three-d .board-wrap{transform:rotateX(var(--tilt));box-shadow:0 0 0 8px var(--ink-2), 0 46px 40px -24px #05061e8c;overflow:visible}.board-stage.three-d .board-wrap div{transform-style:preserve-3d}.board-stage.three-d [id$=-board]{overflow:visible!important}.board-stage.three-d [data-piece]{transform:rotateX(calc(-1 * var(--tilt))) scale(1.08)}.board-stage.three-d [data-piece] svg{filter:drop-shadow(0 3px 2px #05061e59)}@media (prefers-reduced-motion:reduce){.board-stage .board-wrap,.board-stage [data-piece]{transition:none}}.board-overlay{pointer-events:none;z-index:5;position:absolute;inset:0}.board-small{--board-size:100%}.review-layout{grid-template-columns:auto minmax(300px,1fr);align-items:start;gap:24px;display:grid}.review-side{flex-direction:column;gap:12px;min-width:0;display:flex}.players{justify-content:space-between;gap:8px;margin:6px 2px;font-size:.95rem;display:flex}.players .clock{color:var(--muted);font-variant-numeric:tabular-nums}.move-list{font-variant-numeric:tabular-nums;grid-template-columns:3em 1fr 1fr;max-height:240px;padding:4px;font-size:.95rem;display:grid;overflow-y:auto}.move-list .num{color:var(--muted);padding:2px 6px}.move-cell{font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;min-width:0;padding:2px 6px;display:flex}.move-cell:hover{background:var(--surface-2)}.move-cell.current{background:var(--accent-soft);font-weight:700}.move-cell.unvisited{color:var(--muted)}.move-cell .dot{background:var(--accent);border-radius:50%;flex:none;width:6px;height:6px}.move-cell .mark{color:var(--muted);font-size:.75em}.move-cell .san{text-overflow:ellipsis;min-width:0;overflow:hidden}.read{border:1px solid var(--read-ring);vertical-align:middle;border-radius:2px;flex:none;width:7px;height:14px;display:inline-block}.read.carried{opacity:.6;height:7px}.read.empty{border-color:#0000}.pill-mini{padding:0 5px;font-size:.7rem;font-weight:700;line-height:1.4}.move-cell.flash{animation:1.4s ease-out carry-flash}@keyframes carry-flash{0%,30%{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}to{box-shadow:none;background:0 0}}@media (prefers-reduced-motion:reduce){.move-cell.flash{box-shadow:inset 0 0 0 1px var(--accent);animation:none}}.move-list-legend{border-top:1px solid var(--border);flex-wrap:wrap;gap:4px 14px;padding:6px 6px 0;font-size:.75rem;display:flex}.move-list-legend>span{align-items:center;gap:5px;display:inline-flex}.slider-block label{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.25rem;font-weight:700}.slider-ends{color:var(--muted);justify-content:space-between;font-size:.8rem;display:flex}.read-chip{background:var(--shade);color:var(--shade-ink);border:1px solid var(--read-ring);border-radius:999px;padding:2px 12px;font-size:.85rem;font-weight:600;transition:background .15s;animation:.3s cubic-bezier(.34,1.8,.5,1) chip-pop}@keyframes chip-pop{0%{transform:scale(.85)}}.eval-slider{--squash:0;appearance:none;cursor:pointer;background:0 0;width:100%;height:36px}.eval-slider::-webkit-slider-runnable-track{background:var(--track);border:1px solid var(--read-ring);border-radius:6px;height:12px}.eval-slider::-moz-range-track{background:var(--track);border:1px solid var(--read-ring);border-radius:6px;height:12px}.eval-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--shade);border:4px solid var(--hot);width:30px;height:30px;box-shadow:0 2px 6px #0f113159, 0 0 0 6px color-mix(in srgb, var(--hot) 18%, transparent);transform:scale(calc(1 + var(--squash)), calc(1 - var(--squash)));border-radius:50%;margin-top:-10px;transition:transform .35s cubic-bezier(.34,1.9,.5,1)}.eval-slider::-moz-range-thumb{background:var(--shade);border:4px solid var(--hot);width:22px;height:22px;box-shadow:0 2px 6px #0f113159, 0 0 0 6px color-mix(in srgb, var(--hot) 18%, transparent);transform:scale(calc(1 + var(--squash)), calc(1 - var(--squash)));border-radius:50%;transition:transform .35s cubic-bezier(.34,1.9,.5,1)}.eval-slider:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.slider-footnote{color:var(--muted);font-size:.8rem}.slider-track{position:relative}.score-buttons{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.score-btn{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;font-size:.85rem;display:flex}.score-btn kbd{font-size:.7rem}.score-btn:hover{border-color:var(--accent)}.score-btn.selected{outline:2px solid var(--accent);outline-offset:-1px;font-weight:700}.score-buttons.deemphasized .score-btn{opacity:.6}.score-buttons.deemphasized .score-btn.selected,.score-buttons.deemphasized .score-btn:hover{opacity:1}.progress{background:var(--surface-2);border-radius:4px;height:8px;overflow:hidden}.progress>div{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--hot));height:100%;transition:width .2s}.legend{font-size:.85rem}.legend dl{grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0;display:grid}.legend dt{white-space:nowrap}.legend dd{color:var(--muted);margin:0}.toggle{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.toggle[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);font-weight:600}.btn[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong);font-weight:650}.switch{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;margin-left:auto;padding:6px 2px;font-size:.9rem;display:inline-flex}.switch-track{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;width:34px;height:20px;transition:background .2s;position:relative}.switch-track:after{content:"";background:var(--muted);border-radius:50%;width:14px;height:14px;transition:transform .3s cubic-bezier(.34,1.8,.5,1),background .2s;position:absolute;top:2px;left:2px}.switch[aria-pressed=true]{color:var(--text)}.switch[aria-pressed=true] .switch-track{background:var(--accent);border-color:var(--accent)}.switch[aria-pressed=true] .switch-track:after{background:#fff;transform:translate(14px)}.note-editor textarea{min-height:80px}.note-preview{color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9rem}.dialog-backdrop{z-index:50;background:#0a0f1680;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{max-width:420px}.report-title{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:4px 0 6px;font-size:1.05rem;display:flex}.stamp{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:var(--hot);border:3px solid var(--hot);border-radius:10px;padding:2px 14px;font-size:clamp(1.5rem,4vw,2.1rem);font-weight:800;line-height:1.1;animation:.55s cubic-bezier(.2,1.4,.4,1) .35s both stamp;display:inline-block;transform:rotate(-4deg)}@keyframes stamp{0%{opacity:0;transform:scale(2.6)rotate(-14deg)}60%{opacity:1;transform:scale(.94)rotate(-3deg)}to{transform:rotate(-4deg)}}@media (prefers-reduced-motion:reduce){.stamp,.read-chip{animation:none}}.report-head{grid-template-columns:1fr 1fr;gap:16px;display:grid}.score-hero{text-align:center;flex-direction:column;padding:24px;display:flex}.ink-panel,.score-hero.ink{--muted:var(--ink-muted);--border:#ffffff24;--surface:#ffffff0d;--surface-2:#ffffff1a;--text:var(--ink-text);--accent:#8b8bff;--accent-soft:#8b8bff33;--accent-ink:#0a0a24;color:var(--ink-text);background:radial-gradient(circle at 12% 0%, #3d3df58c, transparent 50%), radial-gradient(circle at 100% 100%, #ff2e7e4d, transparent 50%), var(--ink);box-shadow:var(--shadow-lift);border-color:#0000}.score-hero.ink .seg-right{background:#8b8bff}.report-head.solo{grid-template-columns:minmax(0,1fr)}.report-head.solo .score-hero{text-align:left;grid-template-rows:auto auto auto auto 1fr;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:48px;padding:28px 32px;display:grid}.report-head.solo .score-hero>:not(.stats,.how){grid-column:1}.report-head.solo .score-hero>.stats{grid-area:1/2/span 4;justify-content:stretch;align-self:center;row-gap:6px;font-size:.95rem}.report-head.solo .score-hero>.how{grid-area:5/2}.score-hero .label{text-transform:uppercase;letter-spacing:.1em;font-size:.78rem;font-weight:700}.score-hero .sub{font-size:.85rem}.score-hero .big{font-family:var(--font-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;margin:6px 0;font-size:clamp(3.4rem,10vw,5.6rem);font-weight:800;line-height:1}.score-hero p{margin:0 0 .4em;font-size:.9rem}.score-hero .big .unit{color:var(--muted);letter-spacing:0;margin-left:8px;font-size:.3em;font-weight:600}.stat-bar{background:var(--surface-2);border-radius:5px;height:10px;margin:2px 0 10px;display:flex;overflow:hidden}.stat-bar .seg-right{background:var(--pill-best-bg)}.stat-bar .seg-cautious{background:var(--pill-inaccuracy-bg)}.stat-bar .seg-confident{background:var(--pill-mistake-bg)}.stat-bar .seg-backwards{background:var(--pill-blunder-bg)}.stats{grid-template-columns:auto auto;justify-content:center;gap:3px 20px;margin:0 0 10px;font-size:.9rem;display:grid}.stats dt{text-align:left;color:var(--muted)}.stats dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:600}.score-hero .how{color:var(--muted);margin-top:auto;font-size:.8rem}.score-hero .how summary{cursor:pointer}.score-hero .how p{text-align:left;margin:6px 0 0;font-size:.8rem}.score-hero .quip{color:var(--muted);font-style:italic}.report-body{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:20px;display:grid}.report-board{--board-size:min(calc(100vw - 32px), 50vh, 480px);position:sticky;top:12px}.chart-card svg{touch-action:none;cursor:crosshair;width:100%;height:auto;display:block}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:.8rem;display:flex}.chart-legend>span{white-space:nowrap}.chart-legend .swatch{border-top:2px solid var(--line-engine);vertical-align:middle;width:18px;height:0;margin-right:4px;display:inline-block}.chart-legend .bar-swatch{background:var(--line-user);vertical-align:middle;width:10px;height:12px;display:inline-block}.chart-legend .bar-swatch.ok{background:var(--chart-gap-ok)}.chart-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-bottom:4px;display:flex}.chart-views{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.chart-view{font:inherit;background:var(--surface);color:var(--muted);cursor:pointer;border:none;padding:4px 10px;font-size:.85rem}.chart-view+.chart-view{border-left:1px solid var(--border)}.chart-view[aria-pressed=true]{background:var(--accent-soft);color:var(--text);font-weight:600}.chart-readout{color:var(--muted);font-variant-numeric:tabular-nums;min-height:1.3em;margin:0 0 6px;font-size:.85rem}.chart-legend .swatch.user{border-top:2px dashed var(--line-user)}.move-table-wrap{overflow-x:auto}.move-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}.move-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:.8rem;font-weight:600}.move-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:6px 8px}.move-table tr{cursor:pointer}.move-table tr:hover td{background:var(--surface-2)}.move-table tr.current td{background:var(--accent-soft)}.move-table tr.opponent td{color:var(--muted)}.move-table tr.own td:first-child{font-weight:600}.move-table td:first-child,.move-table td.yours{white-space:nowrap}.move-table td.yours .read{margin-right:6px}.move-table tr.has-comment td{border-bottom:none}.move-table tr.comment-row td.comment{color:var(--muted);white-space:normal;padding-top:0;font-size:.82rem;font-style:italic}.move-table tfoot td{color:var(--muted);cursor:default;border-bottom:none;font-size:.8rem}.analysis-progress{text-align:center;max-width:600px;margin:40px auto;padding:32px}.analysis-progress h2{font-size:clamp(1.6rem,4vw,2.2rem)}.analysis-progress .progress>div{background:linear-gradient(90deg,#8b8bff,#ff2e7e,#8b8bff) 0 0/200% 100%;animation:1.6s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.btn-reveal{--accent:#ff2e7e;--accent-strong:#ff5c9a;--accent-ink:#fff;padding:12px 34px;font-size:1.1rem;animation:2.2s ease-in-out infinite reveal-pulse}@keyframes reveal-pulse{0%,to{box-shadow:0 0 #ff2e7e8c}60%{box-shadow:0 0 0 14px #ff2e7e00}}@media (prefers-reduced-motion:reduce){.btn-reveal,.analysis-progress .progress>div{animation:none}}.analysis-progress .joke{min-height:3em;color:var(--muted);font-style:italic}.depth-options{grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 20px;display:grid}.depth-option{font:inherit;color:inherit;text-align:left;border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:10px 12px}.depth-option[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.depth-option small{color:var(--muted);display:block}.pv-line{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.toast{background:var(--text);color:var(--bg);z-index:60;overflow-wrap:anywhere;border-radius:8px;max-width:calc(100vw - 32px);padding:10px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.prose{max-width:720px;margin:0 auto}.prose h2{margin-top:1.5em}@media (width<=800px){.review-layout,.report-body,.report-head{grid-template-columns:minmax(0,1fr)}.report-head.solo .score-hero{grid-template-columns:minmax(0,1fr);padding:24px 20px}.report-head.solo .score-hero>.stats,.report-head.solo .score-hero>.how{grid-area:auto/1}.move-table th:nth-child(4),.move-table td:nth-child(4),.move-table .cost-explain{display:none}.report-board{position:static}.side-chooser{grid-template-columns:1fr}.move-list{max-height:160px}.depth-options{grid-template-columns:1fr}}.topbar nav{align-items:center}.account{position:relative}.account-button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;max-width:220px;padding:4px 8px;display:inline-flex}.account-button:hover{border-color:var(--border)}.account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sync-dot{background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px}.sync-dot[data-status=idle]{background:var(--up)}.sync-dot[data-status=pushing],.sync-dot[data-status=pulling]{background:var(--accent)}.sync-dot[data-status=offline]{box-shadow:inset 0 0 0 2px var(--muted);background:0 0}.sync-dot[data-status=error]{background:var(--danger)}.account-menu{z-index:50;min-width:240px;color:var(--text);flex-direction:column;gap:2px;padding:8px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.account-menu a,.account-menu button{font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px;text-decoration:none}.account-menu a:hover,.account-menu button:hover{background:var(--surface-2)}.account-menu .danger:hover{color:var(--danger)}.account-status{margin:0;padding:4px 8px;font-size:.85rem}.signin{max-width:440px;margin:32px auto}.signin-buttons .btn{width:100%}.signin-prompt{margin:0}.toast-action{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;margin-left:12px;font-weight:700;text-decoration:underline}.games h1{margin:0}.banner{background:var(--accent-soft);border-radius:8px;margin:0;padding:10px 14px}.stat-strip{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.tile{padding:12px 16px}.tile-label{color:var(--muted);font-size:.85rem}.tile-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700;line-height:1.2}.tile-sub,.tile-delta{font-size:.85rem}.tile-delta.up,.row-delta.up{color:var(--up)}.tile-delta.down,.row-delta.down{color:var(--down)}.sync-line{margin:0;font-size:.9rem}.progress-chart svg{width:100%;height:auto;display:block}.progress-chart .dot{cursor:pointer}.progress-chart .dot:focus-visible{stroke:var(--focus);stroke-width:3px;outline:none}.series-swatch-board,.series-swatch-moves,.mean-swatch{vertical-align:middle;border-radius:2px;width:18px;height:3px;margin-right:6px;display:inline-block}.series-swatch-board{background:var(--series-board)}.series-swatch-moves{background:var(--series-moves)}.mean-swatch{background:var(--muted);opacity:.3;height:6px}.filter-bar{gap:8px}.filter select,.filter input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:6px 10px}.filter-search{flex:200px}.filter-search input{box-sizing:border-box;width:100%}.bulk-bar{z-index:5;padding:8px 12px;position:sticky;top:8px}.games-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.92rem}.games-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:.8rem;font-weight:600}.games-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px}.games-table .num{text-align:right}.games-table tbody tr{cursor:pointer}.games-table tbody tr:hover{background:var(--surface-2)}.games-table tr.current{box-shadow:inset 3px 0 0 var(--accent);background:var(--surface-2)}.games-table tr.sub td{color:var(--muted);font-size:.88rem}.games-table tr.sub .opponent{padding-left:28px}.col-select{width:28px}.col-actions{text-align:right}.row-actions{flex-wrap:nowrap;justify-content:flex-end;gap:4px}.row-delta{font-size:.78rem}.site-badge{text-align:center;letter-spacing:.04em;background:var(--surface-2);min-width:2.2em;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:1px 4px;font-size:.7rem;font-weight:700;display:inline-block}.attempt-badge{background:var(--accent-soft);border-radius:999px;margin-left:6px;padding:1px 6px;font-size:.75rem}.opponent .expand{margin-left:4px;padding:0 6px;font-size:.78rem}.outcome-W{color:var(--up);font-weight:600}.outcome-L{color:var(--down);font-weight:600}.keys-hint{margin:0;font-size:.8rem}.account-settings summary{cursor:pointer;font-weight:600}.account-settings input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:6px 10px}@media (width<=800px){.games-table thead{display:none}.games-table,.games-table tbody,.games-table tr,.games-table td{display:block}.games-table tbody tr{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:10px;padding:8px 8px 8px 36px;position:relative}.games-table td{text-align:left;border:0;padding:2px 0}.games-table .num{text-align:left}.games-table td[data-label]:before{content:attr(data-label) ": ";color:var(--muted);font-size:.8rem}.games-table td.opponent:before{content:none}.games-table td.opponent{font-size:1rem;font-weight:600}.games-table .col-select{position:absolute;top:10px;left:10px}.games-table .col-actions{padding-top:6px}.row-actions{flex-wrap:wrap;justify-content:flex-start}.row-delta{margin-left:6px;display:inline}.games-table tr.sub .opponent{padding-left:0}.home-hero{grid-template-columns:minmax(0,1fr);margin-top:0}.beats,.home-games-grid{grid-template-columns:minmax(0,1fr);gap:8px}.beat{padding:10px 14px}}.offboard{width:260px;height:120px;margin:0 auto 24px;position:relative}.offboard-squares{background:repeating-linear-gradient(90deg, var(--sq-light) 0 40px, var(--sq-dark) 40px 80px);width:200px;height:40px;box-shadow:var(--shadow);border-radius:6px 0 0 6px;position:absolute;bottom:0;left:0}.offboard-pawn{width:40px;height:48px;fill:var(--text);transform-origin:50% 100%;animation:4.5s ease-in-out infinite offboard;position:absolute;bottom:40px;left:0}@keyframes offboard{0%{opacity:0;transform:translate(0)}8%{opacity:1}45%{transform:translate(170px)}52%{transform:translate(176px)rotate(14deg)}58%{transform:translate(172px)rotate(-4deg)}64%{transform:translate(180px)rotate(22deg)}80%{opacity:1;transform:translate(220px)translateY(140px)rotate(150deg)}81%,to{opacity:0;transform:translate(220px)translateY(140px)rotate(150deg)}}@media (prefers-reduced-motion:reduce){.offboard-pawn{animation:none;transform:translate(176px)rotate(14deg)}}
