:root{--bg:#f4f1ea;--surface:#fff;--surface-2:#f7f5f0;--text:#1f2328;--muted:#6b6f76;--border:#e3ded3;--accent:#3b7a57;--accent-text:#fff;--accent-soft:#e2efe7;--error:#c0392b;--sq-light:#eeeed2;--sq-dark:#769656;--sq-last:#f6f6698c;--sq-selected:#14551e80;--sq-target:#14551e59;--board-shadow:0 6px 24px #0000002e;--arrow-1:#15781bcc;--arrow-2:#2463babf;--arrow-3:#c87814a6;--arrow-other:#aa28a0bf;--graph-white:#f2f2f2;--graph-black:#3a3a3a;--graph-mid:#999;--c-best:#1e9e57;--c-excellent:#3eaf6a;--c-good:#7a9a3a;--c-inaccuracy:#d4a017;--c-mistake:#e07b20;--c-blunder:#d23c2f;--radius:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#1b1d21;--surface:#25282d;--surface-2:#2c3036;--text:#e8e6e3;--muted:#9aa0a8;--border:#383c43;--accent:#5fb37e;--accent-text:#0f1a13;--accent-soft:#2a3d31;--error:#ff6b5b;--board-shadow:0 6px 24px #00000080;--graph-white:#d9d9d9;--graph-black:#2b2b2b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}h3{margin:0 0 .5rem;font-size:1rem}p{margin:.4rem 0}[hidden]{display:none!important}.app{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.5rem;font-size:1.15rem;font-weight:700;display:flex}.logo{color:var(--accent);font-size:1.6rem}.tabs{flex-wrap:wrap;gap:.25rem;display:flex}.tabs button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:500}.tabs button:hover{background:var(--surface-2);color:var(--text)}.tabs button.active{background:var(--accent-soft);color:var(--accent)}main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:1.25rem 1.5rem}.footer{text-align:center;padding:1rem}.layout{grid-template-columns:minmax(280px,620px) minmax(300px,1fr);align-items:start;gap:1.5rem;display:grid}.single-column{flex-direction:column;gap:1rem;max-width:900px;margin:0 auto;display:flex}.board-column{flex-direction:column;justify-self:center;gap:.5rem;width:100%;min-width:0;max-width:max(300px,100vh - 150px);display:flex;position:sticky;top:4.5rem}.board-with-bar{align-items:stretch;gap:.5rem;display:flex}.board{flex:1;min-width:0}.panel{flex-direction:column;gap:.75rem;min-width:0;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem}@media (width<=860px){.layout{grid-template-columns:minmax(0,1fr)}.board-column{position:static}main{padding:1rem}.header{gap:.5rem;padding:.6rem 1rem}}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:.45rem .85rem;transition:background .15s}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}.btn.small{padding:.25rem .6rem;font-size:.875rem}.btn.wide{width:100%;margin-top:.75rem;padding:.7rem;font-size:1.05rem}.btn-row{flex-wrap:wrap;gap:.5rem;display:flex}.icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:.25rem .5rem}.icon-btn:hover{color:var(--error)}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:.35rem .8rem}.segmented button.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px #0000001f}.sub-tabs{margin-bottom:1rem}.toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.switch{cursor:pointer;align-items:center;gap:.4rem;margin:.4rem 0;display:inline-flex}.switch input{accent-color:var(--accent);width:1rem;height:1rem}select,input[type=text],input:not([type]),textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.35rem .5rem}.field-label{margin:.75rem 0 .35rem;font-size:.9rem;font-weight:600;display:block}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.strong{font-weight:700}.error{color:var(--error);margin:0}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;margin-right:.35rem;padding:.1rem .5rem;font-size:.75rem;display:inline-block}.tag.muted{background:var(--surface-2);color:var(--muted)}.notes{margin:0;padding-left:1.2rem}.notes li{margin:.25rem 0}.eval-bar{border:1px solid var(--border);background:#403d39;border-radius:4px;flex-direction:column-reverse;flex-shrink:0;width:26px;display:flex;position:relative;overflow:hidden}.eval-bar.flipped{flex-direction:column}.eval-bar-white{background:#fff;transition:height .4s}.eval-bar-label{text-align:center;writing-mode:horizontal-tb;font-size:.65rem;font-weight:700;position:absolute;left:0;right:0}.eval-bar:not(.flipped) .eval-bar-label.on-white,.eval-bar.flipped .eval-bar-label.on-black{bottom:4px}.eval-bar:not(.flipped) .eval-bar-label.on-black,.eval-bar.flipped .eval-bar-label.on-white{top:4px}.eval-bar-label.on-white{color:#333}.eval-bar-label.on-black{color:#eee}.nav-buttons{justify-content:center;gap:.4rem;display:flex}.nav-buttons .btn{min-width:3rem}.player-tag{padding:.15rem .25rem;font-weight:600}.status-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.score-text{color:var(--muted);font-weight:500}.engine-lines{flex-direction:column;gap:.35rem;display:flex}.engine-header{justify-content:space-between;font-size:.85rem;font-weight:600;display:flex}.engine-line{text-align:left;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:6px;align-items:baseline;gap:.6rem;padding:.35rem .5rem;display:flex}.engine-line:hover{border-color:var(--accent)}.line-score{font-variant-numeric:tabular-nums;border-left:4px solid;min-width:3.6rem;padding-left:.4rem;font-weight:700}.line-moves{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.pulse{background:var(--accent);border-radius:50%;width:8px;height:8px;margin-left:.4rem;animation:1s ease-in-out infinite pulse;display:inline-block}@keyframes pulse{50%{opacity:.2}}.move-list{font-variant-numeric:tabular-nums;max-height:260px;overflow-y:auto}.move-row{grid-template-columns:2.5rem 1fr 1fr;align-items:center;display:grid}.move-row:nth-child(odd){background:var(--surface-2)}.move-no{color:var(--muted);padding-left:.4rem;font-size:.85rem}.move-cell{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .4rem;font-size:.95rem}.move-cell:hover:not(.empty){background:var(--accent-soft)}.move-cell.active{background:var(--accent);color:var(--accent-text)}.move-cell.active .move-symbol{color:inherit!important}.move-symbol{margin-left:.2rem;font-size:.85rem;font-weight:700}.empty-state{color:var(--muted);font-size:.9rem}.feedback{border-left:5px solid var(--border)}.feedback p{font-size:.95rem}.result-card{border-color:var(--accent)}.eval-graph{cursor:pointer;border-radius:6px;width:100%;height:110px;margin-bottom:.4rem;display:block}.summary{border-collapse:collapse;width:100%;margin-top:.4rem;font-size:.9rem}.summary th,.summary td{text-align:center;padding:.25rem .4rem}.summary td:first-child{text-align:left}.summary tbody tr:nth-child(odd){background:var(--surface-2)}.progress{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.progress div{background:var(--accent);height:100%;transition:width .3s}.progress-label{margin-bottom:.35rem;font-size:.9rem}.pgn-input{resize:vertical;width:100%;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.85rem}.palette{flex-direction:column;align-items:flex-start;gap:.35rem;display:flex}.palette-row{flex-wrap:wrap;gap:.25rem;display:flex}.palette-piece{border:2px solid var(--border);background:var(--sq-light);color:#111;cursor:pointer;border-radius:6px;width:2.6rem;height:2.6rem;font-size:1.9rem;line-height:1}.palette-piece.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.checks{grid-template-columns:1fr 1fr;gap:.25rem;margin:.6rem 0;display:grid}.checks label{align-items:center;gap:.35rem;font-size:.9rem;display:flex}.fen{word-break:break-all;background:var(--surface-2);border-radius:6px;margin-bottom:.5rem;padding:.4rem;font-size:.8rem;display:block}.input-row{gap:.5rem;display:flex}.input-row input{flex:1;min-width:0}.level-list{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.4rem;display:grid}.level{text-align:left;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:8px;flex-direction:column;padding:.5rem .65rem;display:flex}.level.active{border-color:var(--accent);background:var(--accent-soft)}.level-name{font-weight:600}.puzzle-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.4rem;display:flex}.puzzle-msg{background:var(--surface-2);border-radius:8px;padding:.5rem .75rem}.puzzle-msg.solved{background:color-mix(in srgb, var(--c-best) 18%, transparent)}.puzzle-msg.wrong{background:color-mix(in srgb, var(--c-blunder) 15%, transparent)}.puzzle-msg.checking{background:var(--accent-soft)}.puzzle-list{flex-direction:column;max-height:320px;margin-bottom:.4rem;display:flex;overflow-y:auto}.puzzle-item{border-radius:6px;align-items:center;display:flex}.puzzle-item.active{background:var(--accent-soft)}.puzzle-open{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;gap:.5rem;padding:.35rem .5rem;display:flex}.opening-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.75rem;display:grid}.opening-card{text-align:left;cursor:pointer;flex-direction:column;gap:.3rem;transition:border-color .15s,transform .15s;display:flex}.opening-card:hover{border-color:var(--accent);transform:translateY(-2px)}.opening-eco{color:var(--accent);font-size:.75rem;font-weight:700}.piece-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.piece-info{align-items:flex-start;gap:.75rem;display:flex}.piece-glyph{font-size:2.4rem;line-height:1}.basics-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.75rem;display:grid}.stat-row{text-align:center;grid-template-columns:repeat(4,1fr);gap:.5rem;display:grid}.stat{flex-direction:column;align-items:center;gap:.1rem;display:flex}.stat-value{font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700}.stat-label{color:var(--muted);text-align:center;font-size:.75rem}.stats{flex-direction:column;gap:1rem;display:flex}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;display:grid}.stat-grid .stat-value{font-size:1.6rem}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:1rem;display:grid}.line-chart{width:100%;position:relative}.line-chart svg{touch-action:none;display:block}.chart-grid line.chart-grid,.line-chart .chart-grid{stroke:var(--border);stroke-width:1px}.chart-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.chart-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2px}.chart-dot.active{stroke-width:2.5px}.chart-crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.chart-tooltip{background:var(--surface);border:1px solid var(--border);pointer-events:none;white-space:nowrap;border-radius:6px;flex-direction:column;padding:.3rem .5rem;font-size:.8rem;display:flex;position:absolute;transform:translate(-50%,-100%);box-shadow:0 4px 12px #0000001f}.bars{flex-direction:column;gap:.4rem;display:flex}.bar-row{grid-template-columns:minmax(110px,40%) 1fr 3rem;align-items:center;gap:.5rem;font-size:.9rem;display:grid}.bar-track{background:var(--surface-2);border-radius:999px;height:10px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:999px;height:100%;display:block}.bar-value{text-align:right;font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto}.games-table{border-collapse:collapse;width:100%;font-size:.9rem}.games-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:.35rem .5rem;font-weight:600}.games-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:.4rem .5rem}.nowrap{white-space:nowrap}.row-actions{align-items:center;gap:.25rem;display:flex}a.btn{color:inherit;text-decoration:none;display:inline-block}.btn.danger{color:var(--error)}.outcome-text.win{color:var(--c-best);font-weight:600}.outcome-text.loss{color:var(--c-blunder);font-weight:600}.outcome-text.draw{color:var(--muted);font-weight:600}.filters{flex-wrap:wrap;gap:1rem;margin-top:.6rem;display:flex}.rating-delta{font-variant-numeric:tabular-nums;font-weight:700}.rating-delta.up{color:var(--c-best)}.rating-delta.down{color:var(--c-blunder)}.tags{flex-wrap:wrap;gap:.25rem;margin:.4rem 0;display:flex}.puzzle-msg.failed,.puzzle-msg.shown{background:var(--surface-2)}.single-column.wide{max-width:1100px}.badge{background:var(--c-mistake);color:#fff;border-radius:999px;margin-left:.3rem;padding:0 .45rem;font-weight:600}.progress.small-progress{height:6px;margin:.2rem 0}.line-list{flex-direction:column;display:flex}.line-item{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .25rem;display:flex}.line-item:last-child{border-bottom:none}.line-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.status-chip{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:.15rem .55rem;font-size:.75rem}.status-chip.due{background:color-mix(in srgb, var(--c-mistake) 18%, transparent);color:var(--c-mistake);font-weight:600}.status-chip.learning{background:var(--accent-soft);color:var(--accent)}.status-chip.mastered{background:color-mix(in srgb, var(--c-best) 20%, transparent);color:var(--c-best);font-weight:600}.level-dots{gap:3px;display:inline-flex}.level-dots span{background:var(--border);border-radius:50%;width:7px;height:7px}.level-dots span.on{background:var(--accent)}.comment-card p{margin:.3rem 0}.import-panel{margin-top:.75rem}.game-list{flex-direction:column;gap:.35rem;max-height:420px;margin-top:.75rem;display:flex;overflow-y:auto}.game-item{text-align:left;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:8px;grid-template-columns:2rem 1fr auto;align-items:center;gap:.6rem;padding:.45rem .6rem;display:grid}.game-item:hover{border-color:var(--accent)}.game-main{flex-direction:column;min-width:0;display:flex}.game-meta{text-align:right;line-height:1.3}.outcome{color:#fff;background:var(--muted);border-radius:6px;place-items:center;width:1.8rem;height:1.8rem;font-weight:700;display:grid}.outcome.win{background:var(--c-best)}.outcome.loss{background:var(--c-blunder)}.outcome.none{background:var(--border)}.pgn-input{margin-top:.75rem}@media (width<=860px){.stat-row{grid-template-columns:repeat(2,1fr)}}.both-sides{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:.75rem;display:grid}.side-column{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:flex-start;gap:.3rem;padding:.6rem .7rem;display:flex}.side-head{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.side-swatch{border-radius:2px;width:14px;height:4px}.side-best{align-items:baseline;gap:.6rem;display:flex}.side-move{font-size:1.5rem;font-weight:700}.side-line{color:var(--muted);word-break:break-word}.side-best .line-score{min-width:0;color:var(--muted);border-left:none;padding-left:0}.footer a{color:inherit}.header-extra{align-items:center;gap:.5rem;margin-left:auto;display:flex}.install-btn{border-color:var(--accent);color:var(--accent);font-weight:600}.offline-badge{background:color-mix(in srgb, var(--c-inaccuracy) 22%, transparent);color:var(--text);border-radius:999px;padding:.15rem .55rem;font-size:.75rem;font-weight:600}.modal-backdrop{z-index:100;background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:420px}.install-steps{margin:.5rem 0;padding-left:1.2rem}.install-steps li{margin:.4rem 0}.share-icon{border:1.5px solid;border-radius:4px;padding:0 .3rem;font-size:.8rem;display:inline-block}@media (display-mode:standalone){.header{padding-top:max(.75rem, env(safe-area-inset-top))}}.game-over{text-align:center;border-top:6px solid var(--muted);max-width:460px;padding:1.5rem 1.25rem 1.25rem;animation:.35s cubic-bezier(.2,.9,.3,1.2) pop-in;position:relative}.game-over.win{border-top-color:var(--c-best)}.game-over.loss{border-top-color:var(--c-blunder)}.game-over h2{margin:.25rem 0 .4rem;font-size:1.5rem}.game-over-icon{font-size:3.2rem;line-height:1}.game-over-reason{font-weight:600}.game-over-stats{background:var(--surface-2);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.5rem;margin:1rem 0;padding:.75rem .5rem;display:grid}.game-over-stats>div{flex-direction:column;align-items:center;display:flex}.game-over-stats .stat-value{font-size:1.15rem}.game-over-actions{justify-content:center}.modal-close{font-size:1rem;position:absolute;top:.5rem;right:.5rem}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.confetti{pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti span{opacity:.9;border-radius:2px;width:9px;height:14px;animation-name:confetti-fall;animation-timing-function:linear;animation-iteration-count:2;animation-fill-mode:forwards;position:absolute;top:-20px}@keyframes confetti-fall{0%{transform:translateY(0)rotate(0)}to{transform:translateY(110vh)rotate(720deg)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}.game-over{animation:none}}.history-list{flex-direction:column;margin-bottom:.5rem;display:flex}.history-item{border-bottom:1px solid var(--border);grid-template-columns:2rem 1fr auto auto auto;align-items:center;gap:.5rem;padding:.45rem 0;display:grid}.history-item:last-child{border-bottom:none}.history-main{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;min-width:0;padding:0;display:flex}.history-main:hover strong{text-decoration:underline}.history-acc{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;min-width:2.5rem}@media (width<=520px){.history-item{grid-template-columns:2rem 1fr auto}.history-acc,.history-item>.btn{display:none}}
