@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Grotesk Fallback;src:local("Arial");ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.00%;size-adjust:109.69%}.__className_48cfcd{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.__variable_48cfcd{--font-sans:"Space Grotesk","Space Grotesk Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_898c26{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_898c26{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--bg:#0a0b0f;--panel:#14161c;--panel-well:#0d0f14;--border:rgba(255,255,255,0.08);--text:#e8e8ec;--text-dim:#8b8d98;--accent:#7dd3fc;--warm:#f87171;--mono:var(--font-mono),ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--sans:var(--font-sans),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--focus-ring:0 0 0 2px var(--bg),0 0 0 4px rgba(125,211,252,0.55)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--sans)}body{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:inherit}a.brand:hover .brand-sub{color:var(--accent)}.brand-mark{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,#f87171,#7dd3fc);box-shadow:0 0 12px rgba(125,211,252,.6)}.brand h1{font-size:18px;letter-spacing:.12em;margin:0}.brand h1,.brand-sub{font-family:var(--mono)}.brand-sub{font-size:11px;color:var(--text-dim);letter-spacing:.04em}.tabs{display:flex;gap:4px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:4px}.tab{background:transparent;border:none;color:var(--text-dim);font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;padding:8px 18px;border-radius:7px;cursor:pointer;transition:color .12s,background .12s}.tab:hover{color:var(--text)}.tab:focus-visible{outline:none;box-shadow:var(--focus-ring)}.tab.active{background:#20232b;color:var(--text);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}.controls-strip{margin:16px 24px 0;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:12px 16px}.content{padding:16px 24px 24px;flex:1 1;min-height:0;display:flex;flex-direction:column}.mode-panel{display:none;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px 20px}.mode-panel.active{display:flex}.control-row{gap:8px;font-family:var(--mono);font-size:12px;color:var(--text-dim)}.control-row,.control-row label{display:flex;flex-direction:column}.control-row label{gap:6px;min-width:180px}.control-row input[type=range],.control-row select{width:100%}.mode-panel .hint{flex:1 1;min-width:220px;margin:0}.btn-primary{background:linear-gradient(135deg,var(--warm),var(--accent));border:none;color:#0a0b0f;font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:11px 18px;border-radius:9px;cursor:pointer;transition:filter .12s,transform .08s,box-shadow .12s;box-shadow:0 2px 12px -4px rgba(125,211,252,.35)}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 18px -4px rgba(125,211,252,.5)}.btn-primary:active{transform:translateY(0);filter:brightness(.96)}.btn-primary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:11px 18px;border-radius:9px;cursor:pointer;transition:border-color .12s,background .12s,transform .08s}.btn-ghost:hover{border-color:var(--accent);background:rgba(125,211,252,.06);transform:translateY(-1px)}.btn-ghost:focus-visible{outline:none;box-shadow:var(--focus-ring)}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--panel-well) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238b8d98' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 10px center;border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--mono);font-size:12.5px;padding:9px 28px 9px 10px;cursor:pointer;transition:border-color .12s}select:hover{border-color:rgba(255,255,255,.18)}select:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}input[type=range]{-moz-appearance:none;appearance:none;-webkit-appearance:none;height:22px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:#262a33}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--text);margin-top:-5px;border:none;box-shadow:0 0 0 3px rgba(125,211,252,.18);-webkit-transition:box-shadow .12s;transition:box-shadow .12s}input[type=range]:hover::-webkit-slider-thumb{box-shadow:0 0 0 5px rgba(125,211,252,.28)}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:#262a33}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--text);border:none;box-shadow:0 0 0 3px rgba(125,211,252,.18)}input[type=range]:focus-visible{outline:none}input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:var(--focus-ring)}input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}.hint{line-height:1.5;font-family:var(--mono)}.drop-zone,.hint{font-size:12px;color:var(--text-dim)}.drop-zone{border:1.5px dashed var(--border);border-radius:10px;padding:16px 14px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;flex:1 1;min-width:240px}.drop-zone.dragover{border-color:var(--accent);background:rgba(125,211,252,.06)}.file-stats{font-family:var(--mono);font-size:12px;display:flex;flex-direction:column;gap:6px}.file-stats .label{color:var(--text-dim);display:inline-block;width:96px}.hidden{display:none!important}.playback-controls{display:flex;flex-direction:row;align-items:center;gap:12px}#waveform-canvas{height:80px}#chord-canvas,#waveform-canvas{flex-basis:100%;width:100%;border-radius:8px;background:var(--panel-well);cursor:pointer}#chord-canvas{height:36px}.visual-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:16px;gap:16px}.color-field{grid-column:span 4;border-radius:16px;background:#111;display:flex;align-items:flex-end;padding:14px;transition:background .12s linear,box-shadow .12s linear;min-height:230px}.color-field-hex{font-family:var(--mono);font-size:13px;background:rgba(0,0,0,.35);padding:4px 8px;border-radius:6px;color:#fff}.note-readout{grid-column:span 3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:var(--panel-well);border-radius:16px}.note-name{font-family:var(--sans);font-size:52px;font-weight:700;letter-spacing:.01em}.gauge-label{font-size:11px;letter-spacing:.08em}.gauge-label,.key-chord{font-family:var(--mono);color:var(--text-dim)}.key-chord{font-size:12px;text-align:center;display:flex;flex-direction:column;gap:2px;min-height:30px}#chord-readout{color:var(--text)}#wheel-panel{grid-column:span 5}#wheel-canvas{height:210px;width:auto;aspect-ratio:1;align-self:center}#spectrum-canvas{width:100%;flex:1 1;min-height:0}.raw-panel{background:var(--panel-well);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:8px;align-self:start}.raw-panel canvas{width:100%;display:block}#chroma-canvas,#notestrip-canvas{aspect-ratio:4/1}#scope-canvas{aspect-ratio:640/130}#meter-canvas{aspect-ratio:640/48}#spectrogram-canvas{border-radius:8px;width:100%;flex:1 1;min-height:0}#spectrogram-panel{grid-column:span 8;min-height:240px}#spectrum-panel{grid-column:span 4;min-height:240px}.raw-label{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--text-dim);text-transform:uppercase}#chroma-panel,#notestrip-panel,#scope-panel{grid-column:span 4}#piano-keyboard{flex-basis:100%;height:96px}.keyboard-help{flex-basis:100%!important}.piano{position:relative;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}.piano-key{position:absolute;top:0;cursor:pointer}.piano-key.white{height:100%;background:#e8e8ec;border:1px solid #2a2d36;border-radius:0 0 4px 4px;z-index:1}.piano-key.white.pressed{background:var(--accent)}.piano-key.black{height:62%;background:#16181f;border:1px solid #000;border-radius:0 0 3px 3px;z-index:2}.piano-key.black.pressed{background:#38bdf8}.checkbox-row{flex-direction:row!important;align-items:center;gap:8px}#epicycle-panel,#equalizer-panel,#palette-saver-panel{grid-column:span 12}#equalizer-canvas{aspect-ratio:960/220}.palette-saver{display:flex;flex-direction:column;gap:12px}.pal-live{display:flex;align-items:center;gap:12px}.pal-live-swatch{width:56px;height:56px;border-radius:12px;background:#0a0a0a;flex:none;transition:background .12s linear,box-shadow .12s linear}.pal-live-meta{display:flex;flex-direction:column;gap:2px}.pal-live-note{font-family:var(--sans);font-size:22px;font-weight:700}.pal-live-hex{font-family:var(--mono);font-size:12px;color:var(--text-dim)}.pal-swatches{display:grid;grid-template-columns:repeat(44,1fr);grid-gap:3px;gap:3px}.pal-swatch{aspect-ratio:1;border:1px solid rgba(255,255,255,.08);border-radius:3px;background:#0a0a0a;padding:0;cursor:default}.pal-swatch.filled{border-color:rgba(255,255,255,.25);cursor:pointer}.pal-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.pal-count,.pal-status{font-family:var(--mono);font-size:11px;color:var(--text-dim)}.visual-grid.simple #chroma-panel,.visual-grid.simple #epicycle-panel,.visual-grid.simple #notestrip-panel,.visual-grid.simple #scope-panel,.visual-grid.simple #spectrogram-panel,.visual-grid.simple #spectrum-panel,.visual-grid.simple .color-field,.visual-grid.simple .note-readout{display:none}.visual-grid.simple{flex:1 1;min-height:0;grid-template-rows:minmax(0,1fr) auto}.visual-grid.simple #equalizer-panel{grid-column:span 9;order:1;align-self:stretch}.visual-grid.simple #equalizer-canvas{aspect-ratio:auto;height:auto;flex:1 1;min-height:0}.visual-grid.simple #wheel-panel{grid-column:span 3;min-height:340px;order:2;align-self:stretch}.visual-grid.simple #palette-saver-panel{order:3}.visual-grid.simple #wheel-canvas{flex:1 1;min-height:0;height:auto;width:auto;max-width:100%;aspect-ratio:1;align-self:center}.nav-groups{display:flex;gap:10px;align-items:center}a.tab,span.tab{text-decoration:none;display:inline-flex;align-items:center}.practice-grid{display:grid;grid-template-columns:2fr 1fr;grid-gap:16px;gap:16px;align-items:start}.practice-main,.practice-side{display:flex;flex-direction:column;gap:16px}.practice-grid.simple{grid-template-columns:1fr}.practice-grid.simple .practice-side{display:none}#tuner-canvas{width:100%;aspect-ratio:640/360}#pitch-history-canvas{width:100%;aspect-ratio:960/160;background:#000;border-radius:8px}.control-row input[type=number]{background:var(--panel-well);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--mono);font-size:13px;padding:8px 10px;width:100%}.preset-row{display:flex;gap:8px}.btn-chip{background:var(--panel-well);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:12px;padding:6px 12px;border-radius:999px;cursor:pointer;transition:border-color .12s,background .12s}.btn-chip:hover{border-color:var(--accent);background:rgba(125,211,252,.06)}.btn-chip:focus-visible{outline:none;box-shadow:var(--focus-ring)}.control-row input[type=number]:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.drone-pitch{flex-direction:row;gap:12px}.drone-pitch label{flex:1 1;min-width:0}.beat-dots{display:flex;gap:10px;padding:4px 0}.beat-dot{width:14px;height:14px;border-radius:50%;background:var(--panel-well);border:1px solid var(--border);transition:background .06s,box-shadow .06s}.beat-dot.on{background:var(--accent);box-shadow:0 0 10px rgba(125,211,252,.7)}.beat-dot.on.accent{background:#f87171;box-shadow:0 0 12px rgba(248,113,113,.8)}@media (max-width:1100px){.practice-grid{grid-template-columns:1fr}}#epicycle-canvas{width:100%;aspect-ratio:960/340}.raw-label-row{justify-content:space-between;gap:16px;flex-wrap:wrap}.inline-slider,.raw-label-row{display:flex;align-items:center}.inline-slider{gap:8px;font-family:var(--mono);font-size:10px;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase}.inline-slider input[type=range]{width:140px}.landing{max-width:1080px;margin:0 auto;padding:0 24px 48px}.hero{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:32px;gap:32px;align-items:center;padding:56px 0 32px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:18px}.hero-copy h2{font-family:var(--sans);font-size:clamp(38px,5vw,58px);font-weight:700;line-height:1.04;letter-spacing:-.02em;margin:0 0 20px}.hero-accent{background:linear-gradient(100deg,var(--warm),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.hero-copy p{font-family:var(--sans);font-size:16.5px;line-height:1.65;color:var(--text-dim);max-width:52ch;margin:0 0 28px}.cta-row{display:flex;gap:12px}.cta,.cta-row{align-items:center}.cta{text-decoration:none;display:inline-flex}.hero-visual{position:relative;display:flex;justify-content:center}.hero-glow{position:absolute;inset:-60px;pointer-events:none;transition:background .2s linear}.hero-visual canvas{width:100%;max-width:420px;aspect-ratio:1;position:relative}.how{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;padding:24px 0}.how-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:22px}.how-num{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--accent);margin-bottom:12px}.how-card h3{font-family:var(--sans);font-size:18px;font-weight:700;margin:0 0 10px}.how-card p{font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--text-dim);margin:0}.dest{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;padding:8px 0 24px}.dest-card{display:block;background:var(--panel-well);border:1px solid var(--border);border-radius:16px;padding:26px;text-decoration:none;color:inherit;transition:border-color .15s,transform .12s,box-shadow .15s}.dest-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 12px 32px -16px rgba(125,211,252,.35)}.dest-card h3{font-family:var(--sans);font-size:22px;font-weight:700;margin:10px 0}.dest-card p{font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--text-dim);margin:0 0 16px}.dest-go{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--accent)}.landing-footer{font-family:var(--mono);font-size:11.5px;color:var(--text-dim);text-align:center;padding:24px 0 0;border-top:1px solid var(--border)}@media (max-width:900px){.hero{padding-top:32px}.dest,.hero,.how{grid-template-columns:1fr}}.play-stage{position:relative;display:flex;flex-direction:column;gap:16px;flex:1 1;min-height:0}.info-anchor{position:absolute;top:12px;right:12px;z-index:5}.info-toggle{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:rgba(10,10,14,.7);color:var(--text);font-size:16px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.info-toggle:hover,.info-toggle[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.info-popover{position:absolute;top:40px;right:0;min-width:240px;display:flex;flex-direction:column;gap:12px;padding:14px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.5)}.info-popover .inline-select{justify-content:space-between}.info-popover .hint{margin:0}.piano-roll-canvas{width:100%;flex:1 1;min-height:0;display:block;border-radius:16px;background:#08080b;touch-action:none;cursor:pointer}.inline-select{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--text-dim)}@media (max-width:1100px){.visual-grid>*{grid-column:span 6!important}#epicycle-panel,#palette-saver-panel{grid-column:span 12!important}}@media (max-width:700px){.visual-grid>*{grid-column:span 12!important}.control-row label{min-width:100%}}