:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--app-bg:#0f1115;--app-fg:#e7e9ee;--muted:#9aa3b2;--border:#262a33;--border-strong:#333a46;--panel:#1a1d24;--panel-2:#242833;--accent:#66bb6a;--board-light:#6f7787;--board-dark:#3b3f48;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}[data-theme=cartoony]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--app-bg:#fff4dc;--app-fg:#3a2a14;--muted:#8a6a3f;--border:#ffd591;--border-strong:#f4a83c;--panel:#ffe9c2;--panel-2:#ffd591;--accent:#ff6f3c;--board-light:#ffe6a8;--board-dark:#4cc36e}[data-theme=white]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--app-bg:#fff;--app-fg:#1a1a1a;--muted:#6b6b6b;--border:#e2e2e2;--border-strong:#cfcfcf;--panel:#f5f5f5;--panel-2:#e9e9e9;--accent:#4a4a4a;--board-light:#fff;--board-dark:#d6d6d6}[data-theme=black]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--app-bg:#000;--app-fg:#f0f0f0;--muted:#8a8a8a;--border:#1f1f1f;--border-strong:#2c2c2c;--panel:#0d0d0d;--panel-2:#181818;--accent:#bcbcbc;--board-light:#2c2c2c;--board-dark:#000}*{box-sizing:border-box}body{background:var(--app-bg);color:var(--app-fg);margin:0}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border);align-items:center;gap:1.5rem;padding:.75rem 1.5rem;display:flex}.brand{color:var(--app-fg);font-size:1.25rem;font-weight:700;text-decoration:none}.app-nav{gap:1rem;display:flex}.app-nav a{color:var(--muted);text-decoration:none}.app-nav a:hover{color:var(--app-fg)}.app-main{padding:1.5rem}.play-page{flex-wrap:wrap;align-items:flex-start;gap:2rem;display:flex}.play-sidebar{flex-direction:column;gap:1rem;width:260px;display:flex}.play-sidebar h1{margin:0}.game-setup{flex-direction:column;gap:.75rem;display:flex}.setup-field{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.85rem;display:flex}.setup-field select{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);border-radius:4px;padding:.4rem}.opponent-name{margin:0;font-size:.95rem}.status-line{min-height:1.2rem;font-size:.95rem}.result-banner{background:var(--panel);border:1px solid var(--border-strong);border-radius:6px;flex-direction:column;gap:.25rem;padding:.75rem;display:flex}.result-detail{color:var(--muted);font-size:.85rem}.clock-panel{gap:.4rem;display:grid}.clock-row{border:1px solid var(--border);background:var(--panel);border-radius:6px;justify-content:space-between;align-items:center;gap:.75rem;padding:.45rem .6rem;display:flex}.clock-row.is-active{border-color:var(--accent)}.clock-label{color:var(--muted);text-transform:capitalize;font-size:.85rem}.clock-time{font-variant-numeric:tabular-nums;font-weight:700}.game-controls{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.game-controls button{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);cursor:pointer;border-radius:4px;padding:.5rem}.game-controls button:hover:not(:disabled){background:var(--panel-2)}.game-controls button:disabled{opacity:.4;cursor:not-allowed}.saved-note{color:var(--accent);margin:0;font-size:.8rem}.review-link{border:1px solid var(--border-strong);background:var(--accent);color:var(--app-bg);border-radius:4px;justify-content:center;align-items:center;padding:.5rem;font-weight:700;text-decoration:none;display:inline-flex}.review-link:hover{filter:brightness(1.08)}.board-wrap{width:min(560px,90vw)}.muted{color:var(--muted);margin-top:0;font-size:.85rem}.app-account{margin-left:auto}.user-signin{color:var(--muted);text-decoration:none}.user-signin:hover{color:var(--app-fg)}.user-menu{align-items:center;gap:.5rem;display:flex}.user-avatar{border-radius:50%;display:block}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.9rem;overflow:hidden}.user-signout{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);cursor:pointer;border-radius:4px;padding:.3rem .6rem;font-size:.8rem}.user-signout:hover:not(:disabled){background:var(--panel-2)}.user-signout:disabled{opacity:.4;cursor:not-allowed}.history-row{align-items:center;gap:.75rem;display:flex}.history-link{color:var(--app-fg);flex:1;gap:1rem;text-decoration:none;display:flex}.history-link:hover{color:var(--accent)}.history-delete{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);cursor:pointer;border-radius:4px;padding:.3rem .6rem;font-size:.8rem}.history-delete:hover:not(:disabled){background:var(--panel-2)}.history-delete:disabled{opacity:.4;cursor:not-allowed}.coach{flex-direction:column;gap:1rem;max-width:48rem;display:flex}.coach-transcript{flex-direction:column;gap:.75rem;min-height:8rem;margin:0;padding:0;list-style:none;display:flex}.coach-empty{color:#6b7280;font-style:italic}.coach-msg{border:1px solid #e5e7eb;border-radius:.5rem;flex-direction:column;gap:.25rem;padding:.75rem 1rem;display:flex}.coach-msg-user{background:#f1f5f9;align-self:flex-end;max-width:85%}.coach-msg-assistant{background:#fff;align-self:flex-start;max-width:95%}.coach-role{text-transform:uppercase;letter-spacing:.04em;color:#6b7280;font-size:.75rem;font-weight:600}.coach-content{white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;line-height:1.5}.coach-error{color:#b91c1c;margin:0}.coach-form{flex-direction:column;gap:.5rem;display:flex}.coach-field{flex-direction:column;gap:.25rem;font-size:.875rem;display:flex}.coach-field input,.coach-field textarea{font:inherit;resize:vertical;border:1px solid #d1d5db;border-radius:.375rem;padding:.5rem}.coach-form button{color:#fff;font:inherit;cursor:pointer;background:#2563eb;border:none;border-radius:.375rem;align-self:flex-start;padding:.5rem 1.25rem}.coach-form button:disabled{opacity:.5;cursor:not-allowed}.review{--cls-best:#4caf50;--cls-excellent:#43a047;--cls-good:#66bb6a;--cls-ok:var(--muted);--cls-inaccuracy:#ffb300;--cls-mistake:#fb8c00;--cls-blunder:#ef5350;--played:#64b5f6f2;--best:#4caf50f2;flex-direction:column;gap:1.25rem;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.review-header{flex-wrap:wrap;align-items:stretch;gap:.75rem;display:flex}.review-vs{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);align-self:center;font-size:.8rem}.player-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:220px;gap:.6rem;padding:.85rem 1rem;display:flex}.player-card-top{align-items:center;gap:.5rem;display:flex}.player-disc{border:1px solid var(--border-strong);border-radius:50%;width:14px;height:14px}.disc-white{background:#f4f4f4}.disc-black{background:#1a1a1a}.player-name{font-size:.95rem;font-weight:600}.player-accuracy{color:var(--app-fg);margin-left:auto;font-size:1.6rem;font-weight:800;line-height:1}.player-accuracy-pct{color:var(--muted);margin-left:1px;font-size:.8rem;font-weight:600}.player-tally{gap:.4rem;display:flex}.tally{background:var(--panel-2);border:1px solid #0000;border-radius:7px;flex-direction:column;flex:1;align-items:center;gap:.1rem;padding:.35rem .25rem;display:flex}.tally-count{font-size:1.05rem;font-weight:700}.tally-label{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.6rem}.tally-zero{opacity:.55}.tally.cls-blunder{color:var(--cls-blunder);border-color:color-mix(in srgb, var(--cls-blunder) 45%, transparent)}.tally.cls-mistake{color:var(--cls-mistake);border-color:color-mix(in srgb, var(--cls-mistake) 45%, transparent)}.tally.cls-inaccuracy{color:var(--cls-inaccuracy);border-color:color-mix(in srgb, var(--cls-inaccuracy) 45%, transparent)}.review-body{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;display:flex}.review-board{align-items:stretch;gap:.5rem;display:flex}.review-board-inner{width:min(440px,86vw)}.eval-bar{border:1px solid var(--border-strong);background:#111;border-radius:4px;flex-direction:column-reverse;width:24px;display:flex;position:relative;overflow:hidden}.eval-bar-white{background:var(--app-fg);width:100%;transition:height .25s}.eval-bar-label{text-align:center;color:var(--muted);mix-blend-mode:difference;font-size:.6rem;position:absolute;bottom:2px;left:0;right:0}.review-side{flex-direction:column;flex:280px;gap:.75rem;min-width:260px;display:flex}.move-detail{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:10px;flex-direction:column;gap:.6rem;padding:.85rem 1rem;display:flex}.move-detail.is-emphatic{border-left-color:var(--cls-blunder);background:color-mix(in srgb, var(--cls-blunder) 8%, var(--panel))}.move-detail-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.move-detail-no{color:var(--muted);font-size:.8rem}.move-detail-badge{border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:700}.move-detail-moves{flex-direction:column;gap:.3rem;display:flex}.move-detail-played,.move-detail-best{align-items:baseline;gap:.6rem;display:flex}.move-detail-tag{text-transform:uppercase;letter-spacing:.04em;width:3.5rem;color:var(--muted);font-size:.65rem}.move-detail-played .move-detail-tag{color:var(--played)}.move-detail-best .move-detail-tag{color:var(--best)}.move-detail-san{font-size:1.05rem;font-weight:700}.move-detail-best.is-match .move-detail-san{color:var(--cls-best);font-size:.85rem;font-weight:500}.move-detail-stats{gap:.4rem;display:flex}.move-detail-stat{background:var(--panel-2);border-radius:7px;flex-direction:column;flex:1;gap:.05rem;padding:.35rem .5rem;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.6rem}.stat-value{font-size:.95rem;font-weight:700}.stat-loss{color:var(--cls-blunder)}.stat-phase{text-transform:capitalize;font-size:.85rem}.move-detail-motifs{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.motif-chip{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);text-transform:capitalize;border-radius:999px;padding:.1rem .5rem;font-size:.7rem}.review-legend{color:var(--muted);gap:1rem;font-size:.72rem;display:flex}.legend-played:before,.legend-best:before{content:"";vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.legend-played:before{background:var(--played)}.legend-best:before{background:var(--best)}.move-list{border:1px solid var(--border);border-radius:8px;max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.move-list li:last-child .move-row{border-bottom:none}.move-row{border:none;border-bottom:1px solid var(--border);width:100%;color:var(--app-fg);cursor:pointer;text-align:left;background:0 0;border-left:3px solid #0000;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:.85rem;display:flex}.move-row:hover{background:var(--panel)}.move-row.is-selected{background:var(--panel-2);border-left-color:var(--accent)}.move-row.is-emphatic .move-san{color:var(--cls-mistake)}.move-row.is-emphatic.is-selected{border-left-color:var(--cls-blunder)}.move-no{width:2.6rem;color:var(--muted);font-variant-numeric:tabular-nums}.move-san{flex:1;font-weight:600}.move-cpl{color:var(--cls-blunder);font-variant-numeric:tabular-nums;font-size:.72rem}.move-badge{text-align:center;border-radius:4px;min-width:1.4rem;padding:.05rem .35rem;font-size:.72rem;font-weight:700}.cls-best{background:color-mix(in srgb, var(--cls-best) 22%, transparent);color:var(--cls-best)}.cls-excellent{background:color-mix(in srgb, var(--cls-excellent) 22%, transparent);color:var(--cls-excellent)}.cls-good{background:color-mix(in srgb, var(--cls-good) 22%, transparent);color:var(--cls-good)}.cls-ok{background:var(--panel-2);color:var(--muted)}.cls-inaccuracy{background:color-mix(in srgb, var(--cls-inaccuracy) 22%, transparent);color:var(--cls-inaccuracy)}.cls-mistake{background:color-mix(in srgb, var(--cls-mistake) 24%, transparent);color:var(--cls-mistake)}.cls-blunder{background:color-mix(in srgb, var(--cls-blunder) 24%, transparent);color:var(--cls-blunder)}.review-nav{border:0;gap:.4rem;min-inline-size:0;margin:0;padding:0;display:flex}.review-nav button{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);cursor:pointer;border-radius:7px;flex:1;padding:.55rem .4rem;font-size:1rem;line-height:1;transition:background .12s}.review-nav button:hover:not(:disabled){background:var(--panel-2)}.review-nav button:disabled{opacity:.35;cursor:not-allowed}.review-nav-play{font-weight:700;background:var(--accent)!important;color:var(--app-bg)!important;border-color:var(--accent)!important;flex:1.4!important}.review-nav-play[aria-pressed=true]{filter:brightness(.92)}@media (prefers-reduced-motion:reduce){.eval-bar-white,.review-nav button{transition:none}}.trainer-page{flex-direction:column;gap:1.5rem;max-width:880px;display:flex}.trainer-dashboard{flex-direction:column;gap:1.25rem;display:flex}.trainer-headline{flex-wrap:wrap;gap:1rem;display:flex}.trainer-stat{background:#1a1d24;border:1px solid #262a33;border-radius:8px;flex-direction:column;gap:.15rem;min-width:140px;padding:.85rem 1.1rem;display:flex}.trainer-stat-value{color:#e7e9ee;font-size:1.6rem;font-weight:700}.trainer-stat-label{color:#9aa3b2;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.trainer-summary{margin:0}.trainer-card{background:#14171d;border:1px solid #262a33;border-radius:8px;padding:1rem 1.1rem}.trainer-card h3{margin:0 0 .75rem;font-size:1rem}.trainer-table{border-collapse:collapse;width:100%;font-size:.85rem}.trainer-table th{text-align:left;color:#9aa3b2;border-bottom:1px solid #262a33;padding:.35rem .5rem;font-weight:600}.trainer-table td{color:#e7e9ee;border-bottom:1px solid #1a1d24;padding:.4rem .5rem}.trainer-table tr:last-child td{border-bottom:none}.trainer-eco{font-variant-numeric:tabular-nums;color:#9aa3b2}.rate-pill{font-variant-numeric:tabular-nums;border-radius:3px;padding:.05rem .4rem;font-size:.78rem;display:inline-block}.rate-low{color:#81c784;background:#1b3a1f}.rate-moderate{color:#ffd54f;background:#3a341b}.rate-high{color:#ef5350;background:#3a1b1b}.color-dot{vertical-align:middle;border:1px solid #333a46;border-radius:50%;width:9px;height:9px;margin-right:.25rem;display:inline-block}.color-white{background:#e7e9ee}.color-black{background:#2a2f3a}.motif-bars{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.motif-row{grid-template-columns:140px 1fr 130px;align-items:center;gap:.75rem;font-size:.85rem;display:grid}.motif-name{color:#e7e9ee}.motif-track{background:#1a1d24;border:1px solid #262a33;border-radius:6px;height:12px;overflow:hidden}.motif-fill{border-radius:6px 0 0 6px;height:100%;transition:width .2s;display:block}.motif-fill.rate-low{background:#4caf50}.motif-fill.rate-moderate{background:#ffd54f}.motif-fill.rate-high{background:#ef5350}.motif-value{text-align:right;font-variant-numeric:tabular-nums;color:#e7e9ee}.drill-filters{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin:.25rem 0 1rem;display:flex}.drill-filter-group{background:var(--panel);border:1px solid var(--border);border-radius:8px;gap:.3rem;min-width:0;margin:0;padding:.2rem;display:inline-flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.drill-filter-chip{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.82rem;display:inline-flex}.drill-filter-chip:hover{background:var(--panel-2);color:var(--app-fg)}.drill-filter-chip.is-active{background:var(--panel-2);border-color:var(--accent);color:var(--app-fg)}.drill-filter-count{font-variant-numeric:tabular-nums;background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.02rem .35rem;font-size:.72rem}.drill-filter-chip.is-active .drill-filter-count{border-color:var(--accent);color:var(--app-fg)}.drill-filter-theme{align-items:center;gap:.45rem;font-size:.82rem;display:inline-flex}.drill-filter-theme select{border:1px solid var(--border-strong);background:var(--panel);color:var(--app-fg);cursor:pointer;border-radius:6px;padding:.35rem .5rem;font-size:.82rem}.drill-empty{margin:0}.drill-filter-reset{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.drill-player{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;display:flex}.drill-side{flex-direction:column;gap:.75rem;width:300px;display:flex}.drill-meta{align-items:center;gap:.5rem;display:flex}.drill-theme{color:#9aa3b2;background:#2a2f3a;border-radius:3px;padding:.1rem .45rem;font-size:.72rem}.theme-tactic_review{color:#64b5f6;background:#1b2f3a}.theme-blunder_recovery{color:#ef5350;background:#3a1b1b}.theme-endgame_technique{color:#81c784;background:#1b3a1f}.theme-opening_repair{color:#ffd54f;background:#3a341b}.drill-difficulty{color:#9aa3b2;text-transform:capitalize;font-size:.72rem}.drill-prompt{margin:0;font-size:.95rem;line-height:1.4}.drill-tomove{text-transform:capitalize;margin:0}.drill-feedback{border-radius:4px;margin:0;padding:.4rem .6rem;font-size:.85rem}.feedback-correct{color:#81c784;background:#1b3a1f}.feedback-wrong{color:#ffb74d;background:#3a2a1b}.drill-reveal{color:#e7e9ee;cursor:pointer;background:#1a1d24;border:1px solid #333a46;border-radius:4px;padding:.5rem}.drill-reveal:hover{background:#242833}.solution-line{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.solution-line li{font-variant-numeric:tabular-nums;background:#1a1d24;border:1px solid #262a33;border-radius:3px;padding:.15rem .4rem;font-size:.82rem}.drill-nav{align-items:center;gap:.5rem;display:flex}.drill-nav button{color:#e7e9ee;cursor:pointer;background:#1a1d24;border:1px solid #333a46;border-radius:4px;flex:1;padding:.5rem}.drill-nav button:disabled{opacity:.4;cursor:not-allowed}.drill-count{color:#9aa3b2;text-align:center;min-width:3rem;font-size:.8rem}
