:root{color-scheme:light dark;--bg:#f4f3ee;--fg:#1d1c19;--mut:#6a685f;--card:#fff;--bd:#dddbd2;--ac:#2d6a4f;--ok:#2d9d5c;--no:#c0392b;--warn:#d4a017;--soft:#ebe9e1;--ovl:rgba(244,243,238,.9)}
@media(prefers-color-scheme:dark){:root{--bg:#141412;--fg:#ecebe4;--mut:#9b998e;--card:#1e1e1b;--bd:#34342e;--ac:#74c69d;--ok:#4cd080;--no:#ef6a5b;--warn:#e9c46a;--soft:#2a2a26;--ovl:rgba(20,20,18,.88)}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.4 system-ui,sans-serif;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
main{max-width:560px;margin:0 auto;padding:14px 16px 24px}
header{display:flex;align-items:center;gap:12px;margin-bottom:10px}
a.back{color:var(--ac);text-decoration:none;font-weight:600;white-space:nowrap}
h1{font-size:22px;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stats{display:flex;gap:8px}
.stat{background:var(--card);border:1px solid var(--bd);border-radius:10px;padding:3px 10px;text-align:center;min-width:58px}
.stat small{display:block;color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.stat b{font-size:17px}
.bar{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;margin-bottom:10px;color:var(--mut);font-size:14px}
.bar .grp{display:flex;gap:6px;flex-wrap:wrap}
button{padding:9px 16px;border:0;border-radius:10px;background:var(--ac);color:var(--bg);font:inherit;font-weight:600;cursor:pointer;touch-action:manipulation}
button.sec{background:var(--card);color:var(--fg);border:1px solid var(--bd);padding:7px 12px}
button.sec.on{border-color:var(--ac);box-shadow:inset 0 0 0 1px var(--ac);color:var(--ac)}
button:disabled{opacity:.45;cursor:default}
.wrap{position:relative;touch-action:none;margin:0 auto}
canvas{display:block;width:100%;height:auto;background:var(--card);border:1px solid var(--bd);border-radius:14px}
.ov{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;background:var(--ovl);border-radius:14px;padding:20px;z-index:5}
.ov[hidden]{display:none}
.ov h2{margin:0;font-size:28px}.ov p{margin:0;color:var(--mut)}
.ov .row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.help{color:var(--mut);font-size:13px;margin:10px 0 0;text-align:center}
.pad{display:none;gap:8px;justify-content:center;margin-top:12px;touch-action:none;flex-wrap:wrap}
.pad button{min-width:64px;height:56px;padding:0 12px;font-size:22px;background:var(--card);color:var(--fg);border:1px solid var(--bd)}
.pad button.held,.pad button:active{background:var(--soft);border-color:var(--ac)}
@media(pointer:coarse){.pad{display:flex}}
@media(max-height:560px){main{padding:8px 16px}header{margin-bottom:6px}.help{display:none}}
