:root{--bg:#f7f5f0;--fg:#1d1b18;--muted:#6b665d;--card:#fff;--line:#e2ddd3;--accent:#2f6f5e;--hit:#2e9d5b;--miss:#d0473a;--unsure:#d6a033;--timing:#3b82c4;color:var(--fg);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#141412;--fg:#ece8e0;--muted:#9a958b;--card:#1e1d1a;--line:#33312c;--accent:#5cb89c}}*{box-sizing:border-box}body{background:var(--bg);margin:0}main{gap:20px;max-width:960px;margin:0 auto;padding:24px 16px 64px;display:grid}h1{margin:0;font-size:1.6rem}h2{color:var(--muted);margin:0 0 8px;font-size:1rem;font-weight:600}.muted{color:var(--muted);margin:4px 0 0}.error{background:color-mix(in srgb, var(--miss) 15%, transparent);color:var(--miss);border-radius:8px;margin:0;padding:8px 12px}.note{background:color-mix(in srgb, var(--accent) 15%, transparent);border-radius:8px;margin:0;padding:8px 12px}.controls{background:var(--card);border:1px solid var(--line);border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;padding:16px;display:grid}.controls label{color:var(--muted);gap:4px;font-size:.8rem;display:grid}.controls .wide{grid-column:1/-1}textarea,input,select{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px}textarea{resize:vertical;font-family:ui-monospace,monospace;font-size:1.1rem}input[type=range]{accent-color:var(--accent);padding:0}.buttons{flex-wrap:wrap;grid-column:1/-1;gap:8px;display:flex}button{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);cursor:pointer;border-radius:8px;padding:10px 18px}button.primary{background:var(--accent);color:#fff;border-color:#0000;min-width:96px;font-weight:600}button.rec{color:var(--miss);border-color:var(--miss)}.transport{flex-wrap:wrap;align-items:end;gap:16px;display:flex}.transport label{color:var(--muted);gap:4px;font-size:.8rem;display:grid}.transport input{width:80px}button.big{min-width:140px;padding:12px 28px;font-size:1.15rem}button.stop{background:var(--miss)}.hint{align-self:center;font-size:.8rem}.streak{color:var(--accent);align-self:center;font-weight:800}.stats{color:var(--muted);align-self:center;margin-left:auto}.stats b{color:var(--fg);font-size:1.3rem}.lane{border:1px solid var(--line);border-radius:12px;width:100%;display:block}.progression{background:var(--card);border:1px solid var(--line);border-radius:12px;gap:10px;padding:14px;display:grid}.chips{flex-wrap:wrap;align-items:center;gap:8px;min-height:40px;display:flex}.chip{border:1px solid var(--line);background:var(--bg);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:6px;padding:6px 4px 6px 10px;display:inline-flex;position:relative}.chip .name{font-size:1.1rem;font-weight:700}.chip .x{color:var(--muted);background:0 0;border:none;padding:2px 8px}.chip.lifted{opacity:.35}.chip.drop-replace{outline:2px dashed var(--accent);outline-offset:2px}.chip.drop-before:before,.chip.drop-after:after{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;top:-4px;bottom:-4px}.chip.drop-before:before{left:-6px}.chip.drop-after:after{right:-6px}.progression.dragging .chips{outline:2px dashed var(--line);outline-offset:4px;border-radius:8px}.drop-hint{padding:8px 0}.dots{gap:3px;display:inline-flex}.dots i{background:var(--line);border-radius:50%;width:7px;height:7px}.dots i.perfect,.dots i.hold{background:var(--hit)}.dots i.early,.dots i.late{background:var(--timing)}.dots i.not-quite{background:var(--miss)}.palette{flex-wrap:wrap;gap:6px;display:flex}.tile{border:1px solid var(--line);background:var(--bg);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;justify-content:center;align-items:center;min-width:52px;padding:8px 10px;font-weight:700;display:inline-flex}.tile:hover{border-color:var(--accent);color:var(--accent)}.tile.ghost{z-index:10;pointer-events:none;background:var(--accent);color:#fff;cursor:grabbing;border-color:#0000;position:fixed;transform:translate(-50%,-60%);box-shadow:0 6px 20px #0000004d}.tile.ghost.removing{background:var(--miss)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chart-text{width:100%;font-family:ui-monospace,monospace}.settings summary{cursor:pointer;color:var(--muted);padding:6px 0}.settings .controls{margin-top:8px}.chroma{background:var(--card);border:1px solid var(--line);border-radius:12px;grid-template-columns:repeat(12,1fr);gap:4px;height:110px;padding:12px;display:grid}.pc{color:var(--muted);flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;font-size:.7rem;display:flex}.pc .fill{background:var(--muted);border-radius:3px 3px 0 0;width:100%;min-height:2px}.pc.expected .fill{background:var(--accent)}.pc.expected span{color:var(--accent);font-weight:700}
