:root{
  --bg:#14100d; --panel:#1d1712; --line:#3a2f25; --ink:#eadfca; --dim:#9a8b74;
  --brass:#d6a94a; --brass2:#f0c968; --green:#6fcf6f; --red:#e0654f;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --serif:Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;color:var(--ink);background:var(--bg);font:15px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif;min-height:100vh;display:flex;flex-direction:column}
.banner{font:600 12px var(--mono);letter-spacing:.12em;text-transform:lowercase;text-align:center;padding:9px 12px;background:#0d0a08;color:var(--brass);border-bottom:1px solid var(--line)}
.app{flex:1;display:grid;grid-template-columns:minmax(220px,300px) minmax(300px,380px) minmax(300px,1fr);gap:18px;padding:22px;max-width:1180px;width:100%;margin:0 auto;align-items:start}
.unit{display:flex;flex-direction:column;align-items:center;gap:14px}
.case{width:100%;max-width:300px;background:radial-gradient(ellipse at 50% 30%,#2a2018,#17110c);border:1px solid var(--line);border-radius:10px;padding:10px}
#pend{width:100%;height:auto;display:block}
.dots{display:flex;gap:9px;flex-wrap:wrap;justify-content:center;min-height:22px}
.dot{width:14px;height:14px;padding:0;border-radius:50%;background:#2c241c;border:1px solid #504334;cursor:pointer;transition:background .06s,transform .06s}
.dot.acc{border-color:var(--red)}
.dot.mt{background:transparent;border-style:dashed}
.dot.on{background:var(--brass);transform:scale(1.25)}
.dot.acc.on{background:var(--red);transform:scale(1.5)}
.dot.dim{opacity:.55}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}
.panel h2{margin:18px 0 8px;font:600 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.panel h2:first-child{margin-top:0}
.readout{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bpmwrap{text-align:center}
.bpm{font:300 76px/1 var(--mono);letter-spacing:-.03em;color:var(--brass2);font-variant-numeric:tabular-nums}
.bpmlab{font:600 11px var(--mono);letter-spacing:.2em;color:var(--dim)}
.marking{text-align:center;font:italic 20px var(--serif);margin:6px 0 10px;color:var(--ink)}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer}
.step{width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:#271e17;font-size:26px;line-height:1;transition:background .12s,border-color .12s}
.step:hover{background:#33281e;border-color:var(--brass)}
.step:active{transform:translateY(1px)}
:focus-visible{outline:2px solid var(--brass2);outline-offset:2px}
input[type=range]{width:100%;accent-color:var(--brass);height:28px}
.status{display:flex;align-items:center;gap:8px;font:12px var(--mono);color:var(--dim);margin:2px 0 14px}
.led{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}
.bars{margin-left:auto}
.row{display:flex;gap:10px;margin-bottom:14px}
.go,.tap{flex:1;padding:12px 10px;border-radius:8px;border:1px solid var(--brass);background:var(--brass);color:#1a1209;font-weight:700;transition:background .12s,transform .05s}
.go:hover{background:var(--brass2)}
.go:active,.tap:active{transform:translateY(1px)}
.go.on{background:var(--red);border-color:var(--red);color:#fff}
.go.alt{background:transparent;color:var(--brass);width:100%}
.go.alt:hover{background:#2a2016}
.go.alt.on{background:var(--red);color:#fff}
.tap{background:transparent;color:var(--ink);border-color:var(--line)}
.tap:hover{border-color:var(--brass)}
.tap.flash{background:#3a2d1f}
kbd{font:600 10px var(--mono);padding:1px 5px;border:1px solid currentColor;border-radius:4px;margin-left:6px;opacity:.65}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
label{display:flex;flex-direction:column;gap:4px;font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
select{background:#271e17;border:1px solid var(--line);border-radius:6px;padding:7px 8px;text-transform:none;letter-spacing:0;font:14px system-ui,sans-serif;color:var(--ink)}
select:hover{border-color:var(--brass)}
.setlist{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.setlist summary{cursor:pointer;font:600 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.setlist ol{list-style:none;margin:10px 0 0;padding:0}
.setlist li button{width:100%;display:flex;gap:8px;align-items:baseline;text-align:left;background:none;border:0;border-bottom:1px solid #2a2118;padding:7px 4px;border-radius:0}
.setlist li button:hover{background:#271e17}
.setlist .t{flex:1}
.setlist .m{font:12px var(--mono);color:var(--dim)}
#scope{width:100%;height:auto;background:#0f0b08;border:1px solid var(--line);border-radius:6px;display:block}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 0}
.stats dt{font:600 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.stats dd{margin:2px 0 0;font:500 17px var(--mono);font-variant-numeric:tabular-nums}
.pstate{margin:10px 0;color:var(--dim);font-size:14px}
.pstate kbd{opacity:.8}
.card{border:1px solid var(--line);border-radius:8px;padding:14px;background:#161009}
.card .g{float:right;font:300 54px/1 var(--serif);color:var(--brass2);margin-left:12px}
.card .v{font-size:16px;margin:0 0 8px}
.card table{border-collapse:collapse;font:13px var(--mono);width:100%;clear:both}
.card td{padding:3px 0;border-top:1px solid #2a2118}
.card td:last-child{text-align:right}
.hist{width:100%;border-collapse:collapse;font:12px var(--mono);color:var(--dim)}
.hist td{padding:5px 4px;border-top:1px solid #2a2118}
.hist td:last-child{text-align:right;color:var(--ink)}
.footer{display:flex;justify-content:space-between;gap:12px;padding:14px 22px;font:12px var(--mono);color:var(--dim);border-top:1px solid var(--line)}
.footer a{color:var(--brass);text-decoration:none}
.footer a:hover{text-decoration:underline}
.trainer{margin-top:12px}
.tr{margin-top:10px}
.chk{flex-direction:row;align-items:center;gap:8px}
.trline{margin-top:6px;font:13px var(--mono);color:var(--dim);line-height:2.1}
.trline input[type=number]{width:54px;background:#271e17;border:1px solid var(--line);border-radius:6px;padding:4px 6px;font:13px var(--mono);color:var(--ink)}
.hint{margin:10px 0 0;font:12px var(--mono);color:var(--dim)}
.stats .wide{grid-column:1/-1}
@media (max-width:980px){.app{grid-template-columns:1fr 1fr}.unit{grid-column:1/-1}.case{max-width:220px}}
@media (max-width:680px){.app{grid-template-columns:1fr;padding:14px}.bpm{font-size:64px}}
@media (prefers-reduced-motion:reduce){.dot{transition:none}}
