:root{--ink:#f2f2f2;--muted:#a7a6a2;--canvas:#262421;--panel:#312e2b;--panel-raised:#3a3733;--line:#45423e;--gold:#81b64c;--teal:#81b64c;--danger:#e06c5c;--quality-best:#81b64c;--quality-excellent:#6a9dc6;--quality-good:#a7a6a2;--quality-inaccuracy:#f0be37;--quality-mistake:#f49446;--quality-blunder:#ef5044}*{box-sizing:border-box}html{background:var(--canvas);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%;overflow:hidden}body{height:100%;color:var(--ink);background:var(--canvas);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}button,input{font:inherit}button{color:inherit}.app-shell{min-height:100vh}.topbar{border-bottom:1px solid var(--line);background:#21201d;grid-template-columns:1fr auto 1fr;align-items:center;height:60px;padding:0 20px;display:grid}.topbar>p,.account-menu{color:var(--muted);justify-self:end;font-size:13px}.account-menu{align-items:center;gap:10px;display:flex}.account-menu button{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:4px;padding:5px 8px;font-size:9px}.account-menu button:hover{color:var(--ink);border-color:var(--gold)}.wordmark{letter-spacing:-.02em;align-items:center;gap:9px;display:flex}.wordmark strong{font-size:19px;font-weight:700}.brand-knight{fill:#090909;stroke:#f4f4f4;stroke-linejoin:round;stroke-width:1.2px;width:30px;height:30px}.brand-mark{color:#fff;background:var(--gold);border-radius:7px;place-items:center;width:34px;height:34px;font-size:13px;font-weight:800;display:grid;box-shadow:inset 0 -2px #00000024}.sync-status{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;font-size:11px;display:flex}.sync-status>span{background:var(--teal);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #5fa2961a}.mode-switch{background:#151412;border-radius:5px;gap:3px;padding:3px;display:flex}.mode-switch button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 11px;font-size:10px}.mode-switch button[data-active=true]{color:#fff;background:#46433e}.auth-shell{background:radial-gradient(circle at top, #37342f, var(--canvas) 55%);place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;gap:24px;width:min(100%,390px);padding:32px;display:grid;box-shadow:0 18px 60px #00000047}.auth-card h1{margin:0;font-size:25px}.auth-card p{color:var(--muted);margin:7px 0 0;font-size:12px}.auth-card .eyebrow{margin:0 0 6px}.auth-card form,.auth-card label{gap:8px;display:grid}.auth-card form{gap:16px}.auth-card label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:700}.auth-card input{width:100%;color:var(--ink);border:1px solid var(--line);text-transform:none;background:#262522;border-radius:5px;outline:0;padding:11px 12px;font-size:13px}.auth-card input:focus{border-color:var(--gold);box-shadow:0 0 0 2px #81b64c26}.auth-card .primary-button{color:#fff;background:var(--gold);cursor:pointer;border:0;border-radius:5px;padding:11px 14px;font-weight:700}.auth-card .auth-link{text-align:center;text-decoration:none}.auth-card small{color:var(--muted);font-size:10px;line-height:1.5}.auth-card .auth-error{color:#ffb2aa;background:#ef50441a;border:1px solid #ef504440;border-radius:5px;margin:-8px 0;padding:9px 11px}.workspace{grid-template-columns:270px minmax(520px,1fr) 340px;height:calc(100dvh - 60px);min-height:0;display:grid;overflow:hidden}.game-rail,.analysis-panel{background:var(--panel);min-width:0;overflow:hidden}.game-rail{z-index:3;border-right:1px solid var(--line);flex-direction:column;height:100%;min-height:0;display:flex;position:relative;overflow:visible}.analysis-panel{border-left:1px solid var(--line);flex-direction:column;display:flex}.rail-heading,.panel-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:82px;padding:18px 20px;display:flex}.eyebrow{color:var(--muted);letter-spacing:.11em;text-transform:uppercase;margin:0 0 5px;font-size:9px;font-weight:700}.rail-heading h2,.panel-heading h2{margin:0;font-size:20px;font-weight:700}.count-badge{min-width:27px;height:27px;color:var(--muted);border:1px solid var(--line);border-radius:50%;place-items:center;padding:0 7px;font-size:11px;display:grid}.search-field{color:var(--muted);border:1px solid var(--line);background:#262522;border-radius:5px;align-items:center;gap:8px;margin:14px;padding:10px 11px;display:flex}.search-field input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;padding:0;font-size:12px}.game-filters{border:1px solid var(--line);background:#292825;border-radius:5px;margin:0 14px 12px;position:relative}.game-filters summary{color:var(--ink);cursor:pointer;justify-content:space-between;align-items:center;padding:9px 11px;font-size:11px;font-weight:650;list-style:none;display:flex}.game-filters summary::-webkit-details-marker{display:none}.game-filters summary span:last-child{color:var(--muted);font-size:8px;font-weight:500}.game-filters[open] summary{background:#33312d}.filter-body{z-index:5;border:1px solid var(--line);background:#292825;border-radius:6px;width:250px;max-height:min(520px,100dvh - 190px);padding:14px;position:absolute;top:-1px;left:calc(100% + 16px);overflow-y:auto;box-shadow:0 14px 36px #0006}.filter-section+.filter-section{margin-top:14px}.filter-section>p{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 7px;font-size:8px;font-weight:700}.filter-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;display:grid}.filter-options button,.clear-filters{color:#d6d4cf;cursor:pointer;background:#373531;border:1px solid #484540;border-radius:4px;min-width:0;padding:7px 5px;font-size:9px}.filter-options button{justify-content:center;align-items:center;gap:5px;display:flex}.filter-options button:hover,.clear-filters:hover{background:#403e39}.filter-options button[data-active=true]{color:#fff;border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:#4b6338}.time-control-group+.time-control-group{margin-top:10px}.time-control-group>strong{color:#d7d4ce;align-items:center;gap:5px;margin-bottom:5px;font-size:10px;display:flex}.filter-symbol{min-width:14px;color:var(--muted);text-align:center;font-weight:800;display:inline-block}.filter-symbol .opponent-glyph{width:13px;height:13px}.clear-filters{width:100%;color:var(--muted);background:0 0;margin-top:12px}.game-list{flex:1;min-height:0;padding:0 8px 20px;overflow-y:auto}.game-card{text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #2b2922;border-radius:5px;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:13px 10px;display:grid;position:relative}.game-card:hover:not(:disabled){background:var(--panel-raised)}.game-card[data-active=true]{box-shadow:inset 3px 0 var(--gold);background:#3b3935}.game-card:disabled{opacity:.42;cursor:not-allowed}.result-pip{border:2px solid var(--line);width:32px;height:32px;color:var(--muted);background:#ffffff0a;border-radius:50%;place-items:center;font-size:12px;font-weight:900;display:grid}.result-pip.win{color:#b9e784;background:#81b64c26;border-color:#669a3d;box-shadow:0 0 0 2px #81b64c0f}.result-pip.loss{color:#ff8d82;background:#ef50441f;border-color:#9e4d43;box-shadow:0 0 0 2px #ef50440d}.result-pip.draw{color:#f4cb61;background:#f0be371f;border-color:#94772f}.result-chip.win{color:var(--teal);border-color:#5fa29666}.result-chip.loss{color:var(--danger);border-color:#c9796559}.game-card-copy{gap:3px;min-width:0;display:grid}.game-card-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.opponent-name{align-items:center;gap:8px;display:flex}.opponent-name>span:last-child{text-overflow:ellipsis;min-width:0;overflow:hidden}.opponent-icon{color:#e5e1d8;background:#4b4842;border:1px solid #625e56;border-radius:6px;flex:0 0 24px;place-items:center;width:24px;height:24px;font-size:13px;font-weight:900;display:grid;box-shadow:0 1px 3px #00000040}.opponent-icon[data-kind=coach]{color:#ffe07e;background:#665326;border-color:#8f7432}.opponent-icon[data-kind=online]{color:#eeeae1;background:#504d47;border-color:#706b62}.opponent-glyph{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:16px;height:16px;overflow:visible}.opponent-glyph.coach-glyph{transform:translate(1px)}.opponent-glyph .glyph-dot,.opponent-glyph .glyph-land{fill:currentColor;stroke:none}.game-card-copy small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.game-card-meta{align-items:center;gap:4px;display:flex}.meta-symbol{color:#cfcbc2;text-align:center;min-width:12px;font-size:10px;font-weight:900}.rating{color:#b6afa2;font-family:ui-monospace,monospace;font-size:10px}.empty-list{color:var(--muted);text-align:center;padding:30px 10px;font-size:12px}.review-stage{min-width:0;padding:24px clamp(18px,2.5vw,40px) 20px;overflow:hidden}.game-heading{justify-content:space-between;align-items:flex-start;gap:16px;max-width:710px;height:62px;margin:0 auto 12px;display:flex}.game-heading-copy{min-width:0}.game-heading-meta{align-items:center;gap:12px;margin-bottom:5px;display:flex}.game-heading-meta .eyebrow{margin:0}.game-heading h1{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:520px;margin:0;font-size:clamp(17px,1.5vw,21px);font-weight:700;line-height:1.15;display:-webkit-box;overflow:hidden}.game-heading-chips{align-items:center;gap:7px;display:flex}.turn-chip{color:var(--ink);border:1px solid var(--line);text-transform:uppercase;white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:7px 10px;font-size:10px;font-weight:700;display:flex}.result-chip{max-width:180px;color:var(--muted);border:1px solid var(--line);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;border-radius:99px;padding:7px 10px;font-size:10px;overflow:hidden}.original-game{color:var(--muted);white-space:nowrap;font-size:9px;text-decoration:none}.original-game:hover{color:var(--gold)}.board-row{grid-template-columns:26px minmax(0,1fr);gap:9px;width:min(100%,695px,100dvh - 304px);margin:0 auto;display:grid}.board-stack{min-width:0}.board-wrap{border-radius:4px;position:relative;overflow:hidden;box-shadow:0 8px 24px #0000003d}.arrow-legend{height:24px;color:var(--muted);opacity:0;pointer-events:none;justify-content:flex-end;align-items:center;gap:9px;padding:0 5px;font-size:8px;font-weight:700;display:flex}.arrow-legend[data-visible=true]{opacity:1}.arrow-legend span:before{vertical-align:middle;content:"";border-radius:2px;width:14px;height:3px;margin-right:4px;display:inline-block}.played-arrow:before{background:var(--quality-blunder)}.better-arrow:before{background:var(--quality-best)}.game-outcome{justify-content:flex-end;align-items:center;gap:8px;height:24px;padding:0 5px;font-size:9px;display:flex}.game-outcome strong{color:var(--quality-best)}.game-outcome.draw strong{color:var(--quality-inaccuracy)}.game-outcome span{color:var(--muted)}.player-strip{min-height:38px;color:var(--muted);grid-template-columns:27px minmax(0,1fr) auto auto;align-items:center;gap:8px;font-size:11px;display:grid}.player-strip strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:650;overflow:hidden}.player-strip time{min-width:46px;color:var(--ink);text-align:center;background:#3a3834;border-radius:4px;padding:5px 6px;font-family:ui-monospace,monospace}.player-strip[data-result=winner] strong{color:var(--quality-best)}.player-strip[data-result=loser] strong{color:var(--quality-blunder)}.player-strip[data-result=draw] strong{color:var(--quality-inaccuracy)}.piece-dot{color:#322e25;background:#ddd4c2;border-radius:4px;place-items:center;width:25px;height:25px;font-size:19px;display:grid}.piece-dot.black-piece{color:#c4bbab;background:#302d26}.kaneo-piece{object-fit:contain;pointer-events:none;filter:drop-shadow(0 2px 1px #14141459);width:100%;height:100%;display:block;transform:scale(.96)}.eval-bar{background:#e7e2d8;border-radius:3px;flex-direction:column;height:calc(100% - 116px);min-height:0;margin-top:38px;display:flex;overflow:hidden}.eval-black,.eval-white{min-height:0;transition:height .22s;position:relative}.eval-black{color:#f1ece2;background:#24221e}.eval-white{color:#29261f;background:#e5dfd3}.eval-bar span{white-space:nowrap;padding:5px 0;font-family:ui-monospace,monospace;font-size:8px;font-weight:800;position:absolute;left:50%;transform:translate(-50%)}.eval-black span{top:0}.eval-white span{bottom:0}.board-loading{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#12110eb3;place-items:center;display:grid;position:absolute;inset:0}.board-loading span{border:2px solid #ffffff26;border-top-color:var(--gold);border-radius:50%;width:30px;height:30px;animation:.7s linear infinite spin}.playback{grid-template-columns:repeat(5,36px) 1fr auto;align-items:center;gap:5px;padding-top:12px;display:grid}.playback button{background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:4px;height:34px}.playback button:hover:not(:disabled){color:var(--gold);border-color:#5c513d}.playback button:disabled{opacity:.35;cursor:default}.playback .play-button{color:#fff;background:var(--gold);border-color:var(--gold)}.playback .play-button:hover{color:#fff;background:#91c75a}.ply-count{color:var(--muted);padding-left:8px;font-family:ui-monospace,monospace;font-size:10px}.playback .flip-button{width:auto;color:var(--muted);align-items:center;gap:6px;padding:0 11px;font-size:10px;display:flex}.inline-error{color:#e2a18f;background:#883e2c2b;border:1px solid #c979654d;border-radius:4px;max-width:660px;margin:12px auto 0;padding:9px 12px;font-size:11px}.quiz-workspace{grid-template-columns:minmax(520px,1fr) 340px;height:calc(100dvh - 60px);min-height:0;display:grid;overflow:hidden}.quiz-board{width:min(100%,650px,100dvh - 190px);margin:0 auto}.quiz-context-label{color:#fff;background:#12110ed1;border-radius:4px;padding:7px 10px;font-size:10px;position:absolute;bottom:12px;right:12px}.quiz-board-legend{color:#fff;background:#12110ed1;border-radius:4px;gap:10px;padding:7px 10px;font-size:9px;font-weight:700;display:flex;position:absolute;bottom:12px;right:12px}.quiz-board-legend span:before{vertical-align:middle;content:"";border-radius:2px;width:14px;height:3px;margin-right:5px;display:inline-block}.quiz-board-legend .answer-arrow:before{background:var(--quality-best)}.quiz-board-legend .game-arrow:before{background:var(--quality-mistake)}.quiz-panel{min-height:0}.quiz-feedback{color:#d2d0cb;flex:1;min-height:0;padding:22px;font-size:12px;line-height:1.5;overflow-y:auto}.quiz-grade{text-transform:capitalize;border-radius:5px;justify-content:space-between;align-items:center;margin-bottom:14px;padding:16px;display:flex}.quiz-grade strong{font-size:18px}.quiz-grade span{font-family:ui-monospace,monospace;font-weight:800}.quiz-explanation{border-top:1px solid var(--line);gap:8px;margin-top:18px;padding-top:18px;display:grid}.quiz-explanation h3{color:var(--ink);margin:0 0 4px;font-size:13px}.quiz-explanation>div{background:#292825;border-radius:4px;grid-template-columns:92px 58px minmax(0,1fr);align-items:center;gap:8px;padding:9px 10px;display:grid}.quiz-explanation span{color:var(--muted);text-transform:uppercase;font-size:9px}.quiz-explanation strong{font-family:ui-monospace,monospace}.quiz-explanation small{color:var(--muted);text-align:right;text-transform:capitalize}.quiz-explanation p{margin:3px 0 0;font-size:10px}.coaching-card{border-top:1px solid var(--line);gap:12px;margin-top:18px;padding-top:18px;display:grid}.coaching-card>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.coaching-card>header span{color:#1d2417;background:var(--quality-best);border-radius:99px;padding:5px 8px;font-size:9px;font-weight:800}.coaching-card>header small,.coaching-card summary{color:var(--muted);font-size:9px}.coaching-card>p{gap:3px;margin:0;display:grid}.coaching-card>p strong{color:var(--ink);letter-spacing:.06em;text-transform:uppercase;font-size:9px}.coaching-step{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px;display:grid}.coaching-step p{gap:3px;margin:0;display:grid}.coaching-step strong{color:var(--ink);letter-spacing:.06em;text-transform:uppercase;font-size:9px}.coaching-step button{min-width:82px;color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:6px 8px;font-size:9px}.coaching-step button:hover{border-color:var(--quality-best)}.coaching-card .thinking-habit{border-left:3px solid var(--quality-best);background:#30352b;padding:10px}.coaching-card summary{cursor:pointer}.coaching-card ul{gap:6px;margin:10px 0;padding:0;list-style:none;display:grid}.coaching-card li{background:#292825;border-radius:4px;grid-template-columns:86px minmax(0,1fr);gap:2px 8px;padding:8px;display:grid}.coaching-card li[data-finding=inferred]{border-left:2px dashed var(--quality-inaccuracy)}.coaching-card li>span{color:var(--muted);text-transform:uppercase;font-size:8px}.coaching-card li>strong{font-size:10px}.coaching-card li>small,.coaching-card li>p{color:var(--muted);grid-column:2;margin:0;font-size:8px}.coaching-card .process-note{color:var(--quality-inaccuracy);margin:0;font-size:9px}.quiz-actions{gap:7px;margin-top:20px;display:grid}.quiz-actions button,.quiz-navigation button{background:var(--panel-raised);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:9px 11px}.quiz-actions button:hover,.quiz-navigation button:hover:not(:disabled){border-color:var(--gold)}.quiz-navigation{border-top:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:16px 20px;font-size:10px;display:grid}.quiz-navigation>button{justify-self:start}.quiz-navigation-actions{justify-self:end;gap:7px;display:flex}.quiz-navigation .return-review{border-color:var(--gold)}.quiz-navigation button:disabled{opacity:.35}.quiz-actions button:disabled{opacity:.35;cursor:default}.quiz-empty{min-height:calc(100dvh - 60px)}.keyboard-hint{color:var(--muted);font-family:ui-monospace,monospace;font-size:8px}.panel-tabs{background:#262522;border-radius:5px;gap:3px;padding:3px;display:flex}.panel-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 8px;font-size:9px}.panel-tabs button[data-active=true]{color:#fff;background:#46433e}.move-list{border-bottom:1px solid var(--line);flex:1;min-height:0;padding:12px 12px 18px;overflow-y:auto}.move-list-header{z-index:2;background:var(--panel);border-bottom:1px solid var(--line);grid-template-columns:28px 1fr 1fr;align-items:center;min-height:38px;margin:-12px -12px 8px;padding:0 12px;display:grid;position:sticky;top:-12px}.move-list-header strong{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;min-width:0;padding-left:7px;font-size:8px;font-weight:700;display:flex;overflow:hidden}.color-dot{border-radius:2px;flex:0 0 8px;width:8px;height:8px}.white-dot{background:#eee9de}.black-dot{background:#242321;border:1px solid #77736d}.move-row{grid-template-columns:28px 1fr 1fr;align-items:center;min-height:33px;font-family:ui-monospace,monospace;font-size:11px;display:grid}.move-row>span{color:#6e695f;text-align:right}.move-row button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:3px;align-items:center;gap:5px;height:27px;margin-left:6px;padding:0 8px;display:flex}.move-row button:hover{background:#403d39}.move-row button[data-active=true]{color:#fff;background:#769f47;font-weight:800}.move-row button.final-outcome-move{box-shadow:inset 0 0 0 1px #81b64c8c}.move-outcome{border:1px solid;border-radius:50%;flex:0 0 17px;place-items:center;width:17px;height:17px;margin-left:auto;font-family:ui-sans-serif,sans-serif;font-size:8px;font-weight:900;display:grid}.move-outcome.win{color:#c3ed91;background:#81b64c33}.move-outcome.loss{color:#ff9a90;background:#ef50442b}.result-step{text-align:left;border:1px solid var(--line);cursor:pointer;background:#292825;border-radius:4px;grid-template-columns:28px minmax(0,1fr) minmax(0,.8fr);align-items:center;gap:8px;width:100%;min-height:42px;margin-top:8px;padding:0 10px;display:grid}.result-step:hover,.result-step[data-active=true]{border-color:var(--quality-best);background:#3b4631}.result-step>span{color:var(--quality-best);text-align:center}.result-step strong{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.result-step small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:8px;overflow:hidden}.move-quality{border-radius:50%;flex:0 0 16px;place-items:center;width:16px;height:16px;font-family:ui-sans-serif,sans-serif;font-size:7px;font-weight:800;display:grid}.review-card{border-bottom:1px solid var(--line);flex:none;grid-template-columns:34px minmax(0,1fr);gap:10px;padding:15px 16px;display:grid;position:relative}.empty-review-card{padding:20px;display:block}.empty-review-card h3{margin-top:7px}.review-card h3{margin:0;font-size:15px}.review-card h3 strong{color:var(--ink)}.review-copy>p:not(.eyebrow,.principal-line){color:#d2d0cb;margin:7px 0 0;font-size:10px;line-height:1.4}.quality-icon{color:#fff;border-radius:50%;place-items:center;width:28px;height:28px;font-size:11px;font-style:normal;font-weight:800;display:grid}.evaluation-swing{align-items:center;gap:7px;margin-top:10px;font-family:ui-monospace,monospace;font-size:10px;display:flex}.evaluation-swing b{color:var(--muted)}.evaluation-swing small{color:var(--muted);margin-left:auto;font-size:8px}.next-issue{color:#fff;cursor:pointer;background:#47443f;border:0;border-radius:4px;grid-column:2;justify-self:start;padding:6px 9px;font-size:9px}.principal-line{color:#c2bbaf;gap:6px;margin:14px 0 0;font-family:ui-monospace,monospace;font-size:9px;line-height:1.5;display:grid}.principal-line span{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-family:Inter,sans-serif;font-size:8px}.chart-section{border-bottom:1px solid var(--line);flex:none;padding:10px 12px 12px}.chart-section header{color:var(--muted);text-transform:uppercase;justify-content:space-between;margin-bottom:6px;font-size:8px;display:flex}.chart-section header strong{color:var(--ink);font-family:ui-monospace,monospace}.evaluation-chart{cursor:crosshair;background:#3a3835;border:0;border-radius:4px;width:100%;height:64px;padding:0;display:block;overflow:hidden}.evaluation-chart svg{width:100%;height:100%;display:block}.chart-background{fill:#3a3835}.chart-zero{stroke:#bbb9b5;stroke-width:1.5px;vector-effect:non-scaling-stroke}.chart-area{fill:#f3f3f1}.chart-line{fill:none;stroke:#f3f3f1;stroke-width:1.5px;vector-effect:non-scaling-stroke}.chart-dot{stroke:none}.chart-selection{stroke:var(--quality-inaccuracy);stroke-width:2px;vector-effect:non-scaling-stroke}.quality-best{color:#fff;background:var(--quality-best);fill:var(--quality-best)}.quality-excellent{color:#fff;background:var(--quality-excellent);fill:var(--quality-excellent)}.quality-good{color:#fff;background:var(--quality-good);fill:var(--quality-good)}.quality-inaccuracy{color:#332a11;background:var(--quality-inaccuracy);fill:var(--quality-inaccuracy)}.quality-mistake{color:#fff;background:var(--quality-mistake);fill:var(--quality-mistake)}.quality-blunder{color:#fff;background:var(--quality-blunder);fill:var(--quality-blunder)}.quality-unscored{color:var(--muted);fill:#4a4742;background:#4a4742}.quality-surface-inaccuracy{box-shadow:inset 3px 0 var(--quality-inaccuracy)}.quality-surface-mistake{box-shadow:inset 3px 0 var(--quality-mistake)}.quality-surface-blunder{box-shadow:inset 3px 0 var(--quality-blunder)}.review-summary{flex:1;padding:20px;overflow-y:auto}.review-summary section{border-bottom:1px solid var(--line);padding-bottom:20px}.review-summary section+section{padding-top:20px}.summary-columns{grid-template-columns:1fr 1fr;gap:10px;display:grid}.summary-columns>div{text-align:center;gap:9px;min-width:0;display:grid}.summary-columns strong{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.summary-columns b{background:#252421;border-radius:5px;padding:10px;font-size:22px}.summary-row{grid-template-columns:minmax(0,1fr) 35px 32px 35px;align-items:center;min-height:34px;display:grid}.summary-row strong{font-size:10px}.summary-row>span{text-align:center;font-weight:700}.summary-row .quality-icon{width:24px;height:24px;margin:auto;font-size:9px}.phase-mark{border-radius:50%;place-items:center;width:24px;height:24px;margin:auto;font-size:9px;display:grid}.summary-note{color:var(--muted);font-size:8px;line-height:1.4}.mistake-heading{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.mistake-heading .eyebrow{overflow-wrap:anywhere;white-space:normal;min-width:0;margin:0;line-height:1.35}.mistake-navigation button{color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:7px 9px}.mistake-navigation button:hover{border-color:var(--quality-mistake)}.mistake-player-toggle{white-space:nowrap;flex:none;font-size:9px}.mistake-list{gap:6px;display:grid}.mistake-list button{text-align:left;justify-content:space-between;align-items:center;gap:8px;width:100%;display:flex}.mistake-list button>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mistake-list button>strong{color:var(--muted);flex:none;font-family:ui-monospace,monospace;font-size:11px;font-weight:800}.mistake-empty{color:var(--muted);margin:0;font-size:9px}.source-data{color:var(--muted);flex:none;padding:14px 20px;font-size:10px}.source-data summary{color:#bdb6aa;cursor:pointer}.source-data label{color:var(--gold);letter-spacing:.12em;text-transform:uppercase;margin:14px 0 5px;font-size:8px;display:block}.source-data code,.source-data pre{color:#c0bfbb;white-space:pre-wrap;word-break:break-word;background:#262522;border-radius:4px;max-height:150px;margin:0;padding:9px;font-family:ui-monospace,monospace;font-size:8px;line-height:1.5;display:block;overflow:auto}.panel-error,.empty-stage{color:var(--muted);text-align:center;margin:auto;padding:30px}.empty-stage{justify-items:center;display:grid}.empty-stage h1{margin:18px 0 4px;font-weight:700}.empty-stage p{margin:0;font-size:12px}.boot-state{min-height:100vh;color:var(--muted);background:var(--canvas);place-content:center;justify-items:center;display:grid}.boot-state p{font-size:12px}.loading-line{background:var(--line);width:150px;height:2px;overflow:hidden}.loading-line:after{content:"";background:var(--gold);width:60px;height:100%;animation:1.1s ease-in-out infinite load;display:block}.error-state{text-align:center;max-width:100%;padding:24px}.error-state h1{color:var(--ink);margin:4px 0;font-weight:700}.primary-button{color:#fff;background:var(--gold);cursor:pointer;border:0;border-radius:4px;margin-top:12px;padding:9px 14px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes load{0%{transform:translate(-70px)}to{transform:translate(160px)}}@media (max-width:1180px){.workspace{grid-template-columns:230px minmax(470px,1fr) 300px}.review-stage{padding-inline:18px}}@media (max-width:980px){html,body{height:auto;overflow:auto}.topbar{grid-template-columns:1fr auto}.topbar>p{display:none}.workspace{grid-template-columns:210px minmax(0,1fr);height:auto;min-height:calc(100dvh - 60px);overflow:visible}.analysis-panel{border-top:1px solid var(--line);border-left:0;grid-column:2}.game-rail{grid-row:1/span 2}.board-row{width:min(100%,695px)}.move-list{max-height:340px}.quiz-workspace{grid-template-columns:minmax(0,1fr) 300px}}@media (max-width:700px){.topbar{height:58px;padding:0 14px}.sync-status{font-size:8px}.workspace{flex-direction:column;min-height:calc(100dvh - 58px);display:flex}.game-rail{border-right:0;border-bottom:1px solid var(--line);order:0}.rail-heading{min-height:64px}.search-field{margin:0 14px 10px}.game-filters{margin-bottom:10px}.filter-body{border:0;border-top:1px solid var(--line);width:auto;max-height:260px;box-shadow:none;border-radius:0;padding:11px;position:static}.game-list{flex:none;max-height:none;padding:0 10px 10px;display:flex;overflow-x:auto}.game-card{border:1px solid var(--line);flex:0 0 230px}.review-stage{order:1;padding:18px 10px 24px}.analysis-panel{border-top:1px solid var(--line);order:2}.quiz-workspace{flex-direction:column;height:auto;min-height:calc(100dvh - 58px);display:flex;overflow:visible}.quiz-board{width:min(100%,100vw - 28px)}.game-heading{align-items:start;margin-inline:8px}.game-heading h1{max-width:64vw;font-size:23px}.result-chip,.turn-chip{font-size:8px}.board-row{grid-template-columns:18px minmax(0,1fr);gap:5px;width:100%}.eval-bar{min-height:300px}.playback{grid-template-columns:repeat(5,34px) 1fr auto}.playback .flip-button span,.ply-count{display:none}.panel-heading{min-height:70px}.move-list{max-height:300px}}
