@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-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:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_3eb911{font-family:Inter,Inter Fallback;font-style:normal}.__variable_3eb911{--font-inter:"Inter","Inter Fallback"}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/79dc71eb81eeb04b-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/b2f220a05f61d2fd-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/07844ae7c4262727-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_8e2105{font-family:Space Grotesk,Space Grotesk Fallback;font-weight:700;font-style:normal}.__variable_8e2105{--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"}:root{--bg:#0f0e0e;--surface:#1a1817;--surface-2:#2a2624;--border:#3a3431;--text:#f2ede6;--text-muted:#8b847a;--accent:#d4f542;--accent-dim:rgba(212,245,66,0.15);--error:#ff6b35;color-scheme:dark}*,:after,:before{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--font-inter),system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text)}.viewport-notice{display:none}.viewport-app{display:block;min-height:100vh;min-height:100dvh}.viewport-notice__inner{max-width:28rem;margin:0 auto}.viewport-notice__title{margin:0 0 1rem;font-family:var(--font-space-grotesk),system-ui,sans-serif;font-weight:700;font-size:1.35rem;letter-spacing:.02em;color:var(--text)}.viewport-notice__body{margin:0;color:var(--text-muted);font-size:1rem;line-height:1.55}@media (max-width:767px){.viewport-notice{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:2rem 1.25rem;text-align:center;background:var(--bg);color:var(--text)}.viewport-app{display:none}}.app{max-width:920px;margin:0 auto;min-height:100vh;min-height:100dvh;padding:2rem 1.25rem 3rem;display:flex;flex-direction:column;gap:1.5rem}.app__header{text-align:center}.app__title{margin:0;font-family:var(--font-space-grotesk),system-ui,sans-serif;font-weight:700;font-size:clamp(1.75rem,4vw,2.25rem);letter-spacing:.04em;text-transform:uppercase}.app__tagline{margin:.5rem 0 0;color:var(--text-muted);font-size:.95rem}.app__tagline kbd{display:inline-block;padding:.05rem .4rem;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.78rem;line-height:1.4}.instrument-selector{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.instrument-selector__pill{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);padding:.55rem 1rem;border-radius:999px;font:inherit;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease}.instrument-selector__pill:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.instrument-selector__pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.instrument-selector__pill:disabled{opacity:.55;cursor:not-allowed}.instrument-selector__pill--active{background:var(--accent);border-color:transparent;color:var(--bg);color-scheme:light}.row-assignment__select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.composite-builder{display:grid;justify-items:center;grid-gap:.8rem;gap:.8rem}.add-row-button{width:46px;height:46px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-family:var(--font-space-grotesk),system-ui,sans-serif;font-size:1.6rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.add-row-button:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent);transform:translateY(-1px)}.add-row-button:focus-visible,.row-assignment__remove:focus-visible,.row-picker__choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.add-row-button:disabled{opacity:.45;cursor:not-allowed}.composite-builder__limit{margin:-.4rem 0 0;color:var(--text-muted);font-size:.82rem}.row-picker{width:min(720px,100%);display:grid;grid-gap:.7rem;gap:.7rem;padding:.85rem;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.02)}.row-picker__hint{margin:0;color:var(--text-muted);text-align:center;font-size:.9rem}.row-picker__choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:.6rem;gap:.6rem}.row-picker__choice{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);padding:.75rem;font:inherit;text-align:left;cursor:pointer}.row-picker__choice:hover{background:var(--surface-2)}.row-picker__choice small,.row-picker__choice strong{display:block}.row-picker__choice small{margin-top:.2rem;color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.78rem}.row-assignment__select{min-width:140px;background:var(--surface-2);color:var(--text)}.row-assignment__remove,.row-assignment__select{border:1px solid var(--border);border-radius:10px;padding:.55rem .7rem;font:inherit}.row-assignment__remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--text-muted);cursor:pointer}.row-assignment__remove:hover{background:var(--surface-2);color:var(--text)}.keyboard-pad{display:flex;flex-direction:column;gap:.75rem;align-items:center;transition:opacity .2s ease}.keyboard-pad--loading{opacity:.65;animation:pad-pulse 1.5s ease-in-out infinite}@keyframes pad-pulse{0%,to{opacity:.65}50%{opacity:1}}.keyboard-pad__section{width:100%;display:grid;grid-gap:.45rem;gap:.45rem;justify-items:center}.keyboard-pad__row-meta{width:min(100%,820px);display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--text-muted);font-size:.82rem}.keyboard-pad__row-controls,.keyboard-pad__row-title{display:flex;align-items:center;gap:.5rem}.keyboard-pad__row-name{font-weight:700;color:var(--text)}.keyboard-pad__row{display:grid;grid-template-columns:repeat(10,minmax(48px,72px));grid-gap:.5rem;gap:.5rem}.key,.keyboard-pad__row{justify-content:center;width:100%}.key{position:relative;aspect-ratio:1;max-width:112px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.15rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 3px 0 rgba(0,0,0,.35);touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:transform .08s ease-out,background .08s ease-out,border-color .08s ease-out,box-shadow .08s ease-out}.key:hover:not(:disabled){background:var(--surface-2)}.key:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.key:disabled{opacity:.45;cursor:not-allowed}.key__digit{font-family:var(--font-space-grotesk),system-ui,sans-serif;font-weight:700;font-size:clamp(1.45rem,4vw,2.3rem);line-height:1}.key__note{font-size:.8125rem;font-weight:500;color:var(--text-muted)}.key--pressed{transform:scale(.97);background:color-mix(in srgb,var(--row-accent,var(--accent)) 18%,transparent);border-color:var(--row-accent,var(--accent));box-shadow:inset 0 2px 6px rgba(0,0,0,.35)}@media (prefers-reduced-motion:reduce){.key,.key--pressed{transition:none}.key--pressed{transform:none}.keyboard-pad--loading{animation:none}}@media (min-width:768px){.keyboard-pad__row{grid-template-columns:repeat(10,72px)}}.status-bar{flex-direction:column;text-align:center;min-height:2.5rem}.status-bar,.status-bar__live{display:flex;align-items:center;gap:.35rem}.status-bar__live{flex-wrap:wrap;justify-content:center;color:var(--text-muted);font-size:.9rem}.status-bar__text--error{color:var(--error)}.status-bar__detail{color:var(--text-muted);font-size:.85rem}.status-bar__retry{font-size:.9rem}.status-bar__spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--accent-dim);border-top-color:var(--accent);animation:spin .75s linear infinite}@media (prefers-reduced-motion:reduce){.status-bar__spinner{animation:none;border-top-color:var(--accent);opacity:.85}}@keyframes spin{to{transform:rotate(1turn)}}.app__footer{margin-top:auto;text-align:center}.link-button{background:none;border:none;color:var(--accent);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.link-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.icon-button{border:none;background:transparent;color:var(--text);font-size:1.5rem;line-height:1;cursor:pointer;padding:.25rem .5rem;border-radius:8px}.icon-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.attribution-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1rem}.attribution-overlay__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.65)}.attribution-overlay__panel{position:relative;z-index:1;width:min(640px,100%);max-height:min(80vh,720px);background:var(--surface);border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.55)}.attribution-overlay__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.attribution-overlay__header h2{margin:0;font-size:1.1rem}.attribution-overlay__body{margin:0;padding:1rem 1.25rem 1.25rem;overflow:auto;white-space:pre-wrap;font-size:.85rem;color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}@media (max-width:480px){.keyboard-pad__row-meta{align-items:flex-start;flex-direction:column}.keyboard-pad__row-controls{align-items:stretch;flex-direction:column;width:100%}.row-assignment__select{width:100%}.keyboard-pad__row{grid-template-columns:repeat(10,minmax(36px,1fr));width:100%}}