:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0a16;--panel:#161126;--panel-edge:#2a2145;--ink:#e9e4f7;--ink-dim:#9a91b8;--marker:#ffd24a;--approach:#6c5ce7;--hit-perfect:#3ee6d8;--hit-great:#8ef05a;--hit-good:#ffb84a;--miss:#ff5a7a;--font-heading:"Dela Gothic One", "Yu Gothic", sans-serif;--font-body:"Zen Kaku Gothic New", "Yu Gothic", sans-serif;--font-mono:"Share Tech Mono", ui-monospace, monospace;font-family:var(--font-body);background:var(--bg);color:var(--ink);font-synthesis:none}*{box-sizing:border-box}h1,h2,h3,.mode-card strong{font-family:var(--font-heading)}input[type=range],select,.dial-control strong{font-family:var(--font-mono)}body{background:radial-gradient(circle at 50% -10%, #6c5ce733, transparent 38%), var(--bg);min-width:320px;min-height:100vh;margin:0;padding:28px 16px 48px}button,input{font:inherit}.app{width:min(600px,100%);margin:0 auto}header{text-align:center;margin-bottom:20px}h1{color:var(--marker);letter-spacing:.1em;text-shadow:0 0 18px #ffd24a59;margin:0;font-size:clamp(26px,7vw,42px)}.sub{color:var(--ink-dim);margin:6px 0 0;font-size:13px}.notice{color:#f4dcae;background:#ffb84a14;border:1px solid #ffb84a73;border-radius:10px;margin:0 0 14px;padding:10px 12px;font-size:13px;line-height:1.6}.notice[hidden]{display:none}.stage{border:1px solid var(--panel-edge);background:#161126f0;border-radius:16px;padding:24px;box-shadow:0 24px 70px #00000040}.hud{color:var(--ink-dim);justify-content:space-between;font-size:14px;display:flex}.hud b{color:var(--ink);margin-left:6px;font-size:20px}.grid{grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0 6px;display:grid}.key{aspect-ratio:1;border:1px solid var(--panel-edge);color:#625686;cursor:pointer;touch-action:manipulation;background:#0a0714;border-radius:14px;justify-content:center;align-items:center;padding:0;font-size:18px;transition:background 50ms;display:flex;position:relative;overflow:visible}.key:focus-visible,button:focus-visible{outline:2px solid var(--marker);outline-offset:2px}.ring{border:3px solid var(--marker);pointer-events:none;will-change:transform, opacity;border-radius:14px;position:absolute;inset:0}.flash{pointer-events:none;border-radius:14px;animation:.18s ease-out forwards flash;position:absolute;inset:0}.pop{z-index:2;color:var(--ink);letter-spacing:.06em;white-space:nowrap;pointer-events:none;font-size:12px;animation:.5s ease-out forwards pop;position:absolute;top:-6px;left:50%;transform:translate(-50%,-100%)}@keyframes flash{0%{opacity:.95}to{opacity:0}}@keyframes pop{0%{opacity:1;translate:0}to{opacity:0;translate:0 -14px}}.judge{text-align:center;letter-spacing:.12em;height:32px;margin-top:2px;font-size:24px}.judge.perfect{color:var(--hit-perfect)}.judge.great{color:var(--hit-great)}.judge.good{color:var(--hit-good)}.judge.miss{color:var(--miss)}.controls{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:14px;display:flex}.controls button{border:1px solid var(--panel-edge);color:var(--ink);letter-spacing:.06em;cursor:pointer;background:#221a3d;border-radius:10px;padding:11px 22px;font-size:15px}.controls button:hover{background:#2c2350}.controls button:disabled{opacity:.4;cursor:default}.controls .primary,.controls .diff.sel{background:var(--marker);color:#1a1000;border-color:#0000;font-weight:700}.controls .diff{min-width:96px}.settings{color:var(--ink-dim);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:14px;font-size:13px;display:flex}.settings input[type=range]{width:150px;accent-color:var(--marker)}.settings .val{min-width:56px;color:var(--ink);text-align:left}.status{min-height:20px;color:var(--ink-dim);text-align:center;white-space:pre-line;margin-top:12px;font-size:13px;line-height:1.55}.status.err{color:var(--miss)}.status.ok{color:var(--hit-great)}.result{border-top:1px dashed var(--panel-edge);margin-top:18px;padding-top:14px;display:none}.result.show{display:block}.result h2{color:var(--marker);letter-spacing:.1em;justify-content:space-between;align-items:baseline;margin:0 0 4px;font-size:18px;display:flex}.result h2 .rank{font-size:34px}.result table{border-collapse:collapse;width:100%;font-size:14px}.result td{color:var(--ink-dim);padding:4px 0}.result td:last-child{color:var(--ink);text-align:right;font-size:16px}footer{color:var(--ink-dim);text-align:center;margin-top:18px;font-size:12px;line-height:1.8}.back{color:var(--ink-dim);margin-bottom:8px;font-size:13px;text-decoration:none;display:block}.mode-grid{gap:12px;display:grid}.mode-card{border:1px solid var(--panel-edge);color:var(--ink);background:#0a0714;border-radius:12px;justify-content:space-between;align-items:center;padding:18px;text-decoration:none;display:flex}.mode-card strong{color:var(--marker);letter-spacing:.08em;font-size:21px}.mode-card span{color:var(--ink-dim)}.primary-card{border-color:#3ee6d88c}.kit-bar{justify-content:center;align-items:center;gap:18px;margin-bottom:16px;display:flex}.kit-bar strong{min-width:150px;color:var(--marker);text-align:center;letter-spacing:.08em}.kit-bar button{border:1px solid var(--panel-edge);color:var(--ink);cursor:pointer;background:#221a3d;border-radius:8px}.page-bar{justify-content:center;align-items:center;gap:12px;margin:-6px 0 14px;display:flex}.page-bar strong{min-width:100px;color:var(--ink-dim);text-align:center;font-size:13px}.page-bar button{border:1px solid var(--panel-edge);color:var(--ink);cursor:pointer;background:#221a3d;border-radius:8px}.page-bar button:disabled{opacity:.35;cursor:default}.sampler-grid{grid-template-columns:repeat(var(--key-columns,4), minmax(0, 1fr));gap:12px;display:grid}.sampler-pad{aspect-ratio:1;border:2px solid color-mix(in srgb, var(--pad-color) 70%, #fff);background:color-mix(in srgb, var(--pad-color) 22%, #080611);color:var(--ink);cursor:pointer;box-shadow:inset 0 0 25px color-mix(in srgb, var(--pad-color) 15%, transparent);touch-action:manipulation;border-radius:14px;place-items:center;transition:transform 50ms,background 50ms,box-shadow 50ms;display:grid;position:relative}.sampler-pad span{font-size:clamp(12px,3vw,18px);font-weight:800}.sampler-pad kbd{color:var(--ink-dim);font-size:11px;position:absolute;bottom:6px;right:8px}.sampler-pad.active{background:var(--pad-color);color:#090610;box-shadow:0 0 28px var(--pad-color);transform:scale(.96)}.sampler-pad:disabled{opacity:.35;cursor:default}.touch-bar-mirror{border:1px solid var(--panel-edge);cursor:pointer;touch-action:none;background:#100b1f;border-radius:10px;width:100%;height:auto;margin-top:14px;display:block}.sampler-header{display:block}.header-row{justify-content:space-between;align-items:center;gap:12px;min-height:56px;display:flex}.header-row .back{margin:0}.header-actions{flex:none;gap:7px;display:flex;position:static}.sampler-header h1{margin-top:8px}.header-button{border:1px solid var(--panel-edge);min-height:38px;color:var(--ink);cursor:pointer;background:#221a3d;border-radius:19px;padding:0 12px;font-size:12px;font-weight:700}.connection-controls{margin:0 auto 14px}.help-button{border-radius:50%;width:38px;padding:0;font-size:15px;font-weight:900}@media (width<=560px){.header-row{min-height:56px}}.dial-panel{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.dial-control{border:1px solid var(--panel-edge);min-width:0;color:var(--ink);cursor:ns-resize;touch-action:none;background:#171127;border-radius:12px;justify-items:center;gap:4px;padding:12px 8px 10px;transition:border-color .15s;display:grid;position:relative;overflow:hidden}.dial-control:before{content:"";border:3px solid #665a80;border-top-color:var(--marker);background:radial-gradient(circle,#322a48 0 28%,#171127 30% 100%);border-radius:50%;width:44px;height:44px;box-shadow:inset 0 0 0 5px #0b0813}.dial-control.active{border-color:var(--hit-perfect)}.dial-control .dial-number{color:var(--ink-dim);font-size:11px;position:absolute;top:7px;left:9px}.dial-control .dial-name{color:var(--ink-dim);font-size:11px}.dial-control strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:clamp(14px,2.5vw,20px);overflow:hidden}.dial-control small{min-height:2.5em;color:var(--ink-dim);font-size:10px;line-height:1.25}.sampler-controls{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px;display:grid}.sampler-controls label{color:var(--ink-dim);text-align:center;gap:5px;font-size:12px;display:grid}.sampler-controls input{width:100%;accent-color:var(--marker)}.loop-panel{border-top:1px solid var(--panel-edge);margin-top:20px;padding-top:16px}.loop-controls{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.loop-controls button{border:1px solid var(--panel-edge);color:var(--ink);cursor:pointer;background:#221a3d;border-radius:8px;padding:8px 12px}.loop-controls .recording{border-color:var(--miss);background:var(--miss);color:#18030a}.loop-controls .enabled{border-color:var(--hit-perfect)}.loop-controls .clear-armed{border-color:var(--miss);background:color-mix(in srgb, var(--miss) 25%, #221a3d);color:#fff}.loop-controls button:disabled{opacity:.4;cursor:default}.loop-settings{color:var(--ink-dim);justify-content:center;gap:18px;margin:12px 0;font-size:12px;display:flex}.loop-settings label{align-items:center;gap:7px;display:flex}.loop-settings input{width:120px;accent-color:var(--marker)}.loop-settings select{border:1px solid var(--panel-edge);color:var(--ink);background:#0a0714;border-radius:5px}.step-grid{grid-template-columns:repeat(var(--loop-steps,16), minmax(3px, 1fr));gap:2px;min-height:56px;display:grid}.loop-step{background:#29223b;border-radius:2px;min-width:2px;min-height:5px}.loop-step.filled{background:var(--marker)}.loop-step.other{position:relative}.loop-step.other:after{background:var(--ink-dim);content:"";border-radius:50%;width:3px;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loop-step.current{box-shadow:inset 0 0 0 1px var(--hit-perfect);filter:brightness(1.7)}.export-panel{border:1px solid var(--panel-edge);border-radius:10px;margin-top:20px;padding:14px}.export-panel.dragging{border-color:var(--marker);background:color-mix(in srgb, var(--marker) 8%, transparent)}.export-panel h2{margin:0 0 10px;font-size:16px}.export-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.export-controls button,.export-controls select{border:1px solid var(--panel-edge);color:var(--ink);background:#221a3d;border-radius:7px;padding:7px 10px}.export-status{min-height:1.4em;color:var(--ink-dim);margin:9px 0 0;font-size:12px}.help-dialog{border:1px solid var(--panel-edge);width:min(620px,100vw - 28px);max-height:calc(100vh - 40px);color:var(--ink);background:#171127;border-radius:16px;padding:20px;overflow:auto;box-shadow:0 24px 80px #000b}.help-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080611cc}.help-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.help-heading h2{margin:0}.help-heading button{border:1px solid var(--panel-edge);width:36px;height:36px;color:var(--ink);cursor:pointer;background:#221a3d;border-radius:50%}.help-dialog h3{color:var(--marker);margin-bottom:4px}.help-dialog p,.help-dialog ul{color:var(--ink-dim);margin-top:4px;line-height:1.65}.settings-dialog{width:min(480px,100vw - 28px)}.dialog-settings{gap:18px;margin-top:22px;display:grid}.dialog-settings label{color:var(--ink-dim);grid-template-columns:1fr auto;gap:8px 12px;font-size:13px;display:grid}.dialog-settings label span{color:var(--ink);font-variant-numeric:tabular-nums}.dialog-settings input{width:100%;accent-color:var(--marker);grid-column:1/-1}.placeholder{text-align:center}.placeholder a{color:var(--marker)}@media (width<=480px){body{padding-inline:10px}.stage{padding:18px 14px}.grid{gap:9px}.sampler-grid{gap:8px}.dial-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.sampler-controls{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important}}
