:root{
  --bg:#1c1f26; --panel:#262a33; --panel2:#2e333e; --text:#e8e6e0; --muted:#9aa0ab;
  --accent:#d4a34f; --wood1:#e0b96a; --wood2:#c99b4a; --line:#5a4420; --danger:#d96b6b;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{
  background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  display:flex;min-height:100vh;align-items:flex-start;justify-content:center;gap:22px;padding:20px;flex-wrap:wrap;
}
#sidebar{width:300px;display:flex;flex-direction:column;gap:10px}
.titlebar{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:2px 0 4px}
h1{font-size:24px;letter-spacing:2px;color:var(--accent);text-align:center}
.version{font-size:11px;color:var(--muted)}
.panel{background:var(--panel);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}
.section-title{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.9px;font-weight:700}
label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}
select,input[type=number]{width:100%;background:var(--panel2);color:var(--text);border:1px solid #3a4050;border-radius:8px;padding:8px 10px;font-size:14px}
select:focus,input:focus,button:focus-visible,.button-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.row{display:flex;gap:8px}.row>div{flex:1;min-width:0}
button,.button-link{background:var(--panel2);color:var(--text);border:1px solid #3a4050;border-radius:8px;padding:9px 10px;font-size:13px;cursor:pointer;transition:background .15s,transform .08s;text-decoration:none;text-align:center;display:inline-flex;align-items:center;justify-content:center}
button:hover:not(:disabled),.button-link:hover{background:#3a4050}button:active:not(:disabled),.button-link:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}
button.primary{background:var(--accent);color:#1c1f26;border:none;font-weight:700}button.primary:hover:not(:disabled){background:#e2b45e}
.btnrow{display:flex;gap:7px}.btnrow>*{flex:1;min-width:0}
#status{background:var(--panel2);border-radius:8px;padding:10px 12px;font-size:14px;min-height:42px;display:flex;align-items:center;line-height:1.35}
.caps{display:flex;justify-content:space-between;background:var(--panel2);border-radius:8px;padding:9px 11px;font-size:13px}.caps b{font-size:15px}.dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px;vertical-align:-1px}.dot.b{background:#111;border:1px solid #555}.dot.w{background:#f5f5f5;border:1px solid #999}
#boardwrap{position:relative;max-width:calc(100vw - 360px);touch-action:none;user-select:none}
canvas{border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.5);display:block;cursor:pointer;max-width:100%;height:auto;touch-action:none}
#cv:focus-visible{outline:3px solid #59e5ff;outline-offset:5px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
#thinking,#turnBadge{position:absolute;top:10px;background:rgba(0,0,0,.68);padding:6px 11px;border-radius:18px;font-size:12px;pointer-events:none;backdrop-filter:blur(3px)}
#thinking{right:10px;color:#ffd97a;display:none}#turnBadge{left:10px;color:#fff}
.hidden{display:none!important}
small.hint{color:var(--muted);font-size:11px;line-height:1.45;padding:0 4px 4px}
.check{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;margin:0;color:var(--text);cursor:pointer}.check input{accent-color:var(--accent)}
.setup-note{font-size:11px;color:#ffd97a;background:rgba(212,163,79,.1);padding:7px 8px;border-radius:7px}
.score-estimate{font-size:12px;color:var(--muted);padding:2px 3px}.history-heading{display:flex;justify-content:space-between}.history-heading span:last-child{color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}.move-history{max-height:148px;overflow:auto;background:var(--panel2);border-radius:8px;padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55}.move-entry{display:grid;grid-template-columns:30px 18px 1fr;gap:3px}.move-entry .stone-symbol.black{color:#888}.move-entry .stone-symbol.white{color:#fff}.empty-history{color:var(--muted)}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.66);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{width:min(430px,100%);background:var(--panel);border:1px solid #414754;border-radius:14px;box-shadow:0 18px 60px rgba(0,0,0,.55);padding:20px}.modal h2{color:var(--accent);font-size:20px;margin-bottom:12px}.modal #modalBody,.modal #resultBreakdown{color:var(--text);line-height:1.5;font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions button{min-width:100px}.result-winner{font-size:20px;font-weight:700;margin:3px 0 14px}.score-table{width:100%;border-collapse:collapse;margin-top:8px}.score-table th,.score-table td{padding:7px 8px;border-bottom:1px solid #3a4050;text-align:right}.score-table th:first-child,.score-table td:first-child{text-align:left}.score-table th{color:var(--muted);font-size:11px;text-transform:uppercase}.score-table .total{font-weight:700;color:var(--accent)}
@media(max-width:760px){body{display:block;padding:10px}#sidebar{width:100%;max-width:none;margin-bottom:12px}.setup-panel,.options-panel{gap:9px}#boardwrap{max-width:100%;width:100%;display:flex;justify-content:center}.history-panel{order:2}canvas{width:100%;max-width:min(100vw - 20px,720px)}.row{gap:6px}}
@media(max-width:420px){.btnrow{flex-wrap:wrap}.btnrow>*{flex:1 1 30%}.panel{padding:12px}.row{flex-direction:column}.row>div{width:100%}}
/* v1.2.0 */
.clocks{display:flex;justify-content:space-between;gap:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.clocks span{flex:1;background:var(--panel2);padding:7px 9px;border-radius:7px;text-align:center;border:1px solid transparent}.clocks span.active{border-color:var(--accent);color:var(--accent)}
.slot-info{display:flex;align-items:flex-end;justify-content:flex-end;padding:0 2px 8px;color:var(--muted);font-size:11px}.save-panel input[type=file]{display:none}.replay-panel input[type=range]{width:100%;accent-color:var(--accent)}.replay-panel .btnrow button{padding:7px 4px}.stats-box{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:12px}.stats-box div{background:var(--panel2);padding:7px 8px;border-radius:7px;display:flex;justify-content:space-between}.stats-box b{color:var(--accent)}
/* v1.3.0 */
.teach-info{background:var(--panel2);border-radius:8px;padding:9px 10px;min-height:38px;color:var(--muted);font-size:12px;line-height:1.4}
.teach-info strong{color:var(--accent)}
.comment-row{display:flex;flex-direction:column;gap:6px}
textarea,input[type=text]{width:100%;background:var(--panel2);color:var(--text);border:1px solid #3a4050;border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;resize:vertical}
textarea:focus,input[type=text]:focus{outline:2px solid var(--accent);outline-offset:2px}
#playFromHere:not(:disabled){border-color:var(--accent)}
/* v1.4.0 */
.review-panel #scoreGraph{width:100%;height:110px;background:var(--panel2);border:1px solid #3a4050;border-radius:8px;display:block}
.analysis-box{background:var(--panel2);border-radius:8px;padding:9px 10px;min-height:52px;color:var(--muted);font-size:12px;line-height:1.45}
.game-library{display:flex;flex-direction:column;gap:6px}.library-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;background:var(--panel2);padding:8px;border-radius:8px;font-size:11px}.library-item strong{display:block;color:var(--text);font-size:12px}.library-item button{padding:5px 8px}.mini-btn{padding:3px 7px;font-size:10px;flex:none!important}.critical-move{color:#ffcf63}.bookmark-mark{color:#59e5ff;font-weight:700}.stats-box{grid-template-columns:1fr 1fr}.review-panel input[type=range],.options-panel input[type=range]{width:100%;accent-color:var(--accent)}
body.reduced-motion *,body.reduced-motion *::before,body.reduced-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
.variation-tree{display:flex;flex-wrap:wrap;gap:5px;align-items:center;font-size:11px;color:var(--muted)}.variation-tree button{padding:4px 7px;font-size:10px;border-radius:12px}.variation-main{padding:4px 7px;background:var(--panel2);border-radius:12px}
/* v1.5.0 */
.coach-box{background:linear-gradient(135deg,rgba(212,163,79,.12),var(--panel2));border:1px solid rgba(212,163,79,.28);border-radius:8px;padding:10px;min-height:72px;color:var(--text);font-size:12px;line-height:1.5}
.coach-box strong{color:var(--accent)}
.coach-box .coach-detail{display:block;color:var(--muted);margin-top:5px}
.coach-panel select{width:100%}
/* v1.6.0 */
.study-help{background:var(--panel2);border-radius:8px;padding:9px 10px;color:var(--muted);font-size:11px;line-height:1.45}
.study-panel select{width:100%}
.study-panel.active{outline:1px solid rgba(89,229,255,.55)}
.study-panel.active .section-title{color:#59e5ff}
/* v1.7.0 */
.candidate-list{display:flex;flex-direction:column;gap:6px}
.candidate-item{display:grid;grid-template-columns:30px 1fr;gap:8px;align-items:center;background:var(--panel2);border:1px solid #3a4050;border-radius:8px;padding:7px 8px;text-align:left}
.candidate-item:hover{border-color:#59e5ff}.candidate-rank{width:25px;height:25px;border-radius:50%;background:#12333c;color:#9cf3ff;display:flex;align-items:center;justify-content:center;font-weight:800}.candidate-copy strong{display:block;color:var(--text);font-size:12px}.candidate-copy span{display:block;color:var(--muted);font-size:10px;line-height:1.35;margin-top:2px}
.file-note{color:var(--muted);font-size:10px;line-height:1.4;padding:0 2px}
/* v1.8.0 */
#exportStudyReport{border-color:rgba(212,163,79,.55)}
/* v1.9.0 */
#focusBoard{border-color:rgba(89,229,255,.55)}
/* v1.10.0 */
.quality-summary{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--panel2);border-radius:8px;padding:8px;font-size:11px;color:var(--muted);line-height:1.4}
.quality-summary .quality-player{background:rgba(255,255,255,.035);border-radius:6px;padding:7px}
.quality-summary strong{display:block;color:var(--text);margin-bottom:2px}
.quality-summary .quality-worst{grid-column:1/-1;color:#ffbf5d}
.quality-badge{display:inline-block;margin-left:5px;padding:0 5px;border-radius:8px;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.35px}
.quality-best{background:#214d3b;color:#9aefbf}.quality-good{background:#29445a;color:#a9ddff}.quality-inaccuracy{background:#5a4722;color:#ffdc8a}.quality-mistake{background:#5b2929;color:#ffaaaa}
#jumpWorst:not(:disabled){border-color:#ffbf5d}
/* v1.11.0 */
#showAlternative:not(:disabled){border-color:#59e5ff}
#practiceAlternative:not(:disabled){border-color:#8ce2a8}
/* v1.12.0 */
.scoring-assistant{background:linear-gradient(135deg,rgba(89,229,255,.09),var(--panel2));border:1px solid rgba(89,229,255,.34);border-radius:9px;padding:10px;display:flex;flex-direction:column;gap:8px}
.scoring-title{display:flex;justify-content:space-between;gap:8px;font-size:11px}.scoring-title strong{color:#9cf3ff;text-transform:uppercase;letter-spacing:.55px}.scoring-title span{color:var(--muted)}
.scoring-breakdown{display:grid;grid-template-columns:1fr 1fr;gap:5px}.scoring-stat{background:rgba(0,0,0,.16);border-radius:6px;padding:6px 7px;font-size:10px;color:var(--muted)}.scoring-stat b{display:block;color:var(--text);font-size:12px}
.scoring-dispute-text{font-size:10px;line-height:1.4;color:#ffd98b}.scoring-assistant button{padding:7px}
/* v1.13.0 */
.score-agreement-title{padding-top:3px;border-top:1px solid rgba(255,255,255,.09);color:#9cf3ff;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.55px}
.score-agreement-status{font-size:10px;line-height:1.4;color:var(--muted)}
.scoring-assistant button.confirmed{background:#214d3b;border-color:#8ce2a8;color:#c8ffda;font-weight:700}
/* v1.14.0 */
.score-history-title{padding-top:3px;border-top:1px solid rgba(255,255,255,.09);color:#ffcf78;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.55px}
.score-edit-status{font-size:10px;line-height:1.4;color:var(--muted)}
#undoScoreMark:not(:disabled),#redoScoreMark:not(:disabled){border-color:#d8a34e}
/* v1.15.0 */
.score-decision-details{background:rgba(0,0,0,.14);border-radius:6px;padding:6px 8px;font-size:10px;color:var(--muted)}
.score-decision-details summary{cursor:pointer;color:#ffcf78;font-weight:700}
.score-decision-details ol{margin:7px 0 2px;padding-left:19px;display:flex;flex-direction:column;gap:5px;line-height:1.35}
.score-decision-details li::marker{color:#d8a34e;font-weight:700}
/* v1.16.0 */
.score-impact-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.score-impact-grid div{background:rgba(0,0,0,.18);border-radius:6px;padding:6px 7px}
.score-impact-grid b{display:block;color:var(--text);font-size:12px}.score-impact-grid span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.4px}
.scoring-impact-status{border-left:3px solid #74808f;padding-left:7px;font-size:10px;line-height:1.4;color:var(--muted)}
.scoring-impact-status.toward-black{border-color:#aeb8c8;color:#dce3ec}.scoring-impact-status.toward-white{border-color:#f5e3b5;color:#fff1cb}
