:root{--bg:#070912;--panel:#121829;--panel-2:#1b2340;--line:#2e3a5c;--text:#f4f7ff;--muted:#aab6d3;--accent:#b78cff;--accent-2:#ff5ecf;--accent-ink:#1c0840;--good:#3dff9a;--warn:#ffd23f;--bad:#ff4d6d;--radius:18px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0}button,select,input{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h2{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:.8rem;font-weight:600}sub{vertical-align:baseline;color:var(--muted);margin-left:.04em;font-size:.45em;position:relative;bottom:-.1em}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{max-width:640px;padding:max(12px, env(safe-area-inset-top)) 16px max(24px, env(safe-area-inset-bottom));margin:0 auto}main{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.topbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.brand{letter-spacing:.02em;margin:0;font-size:1.35rem}.select select{appearance:none;background:var(--panel-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238b9aab' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 12px center;border:1px solid var(--line);border-radius:999px;max-width:58vw;padding:8px 34px 8px 14px}.chip{border:1px solid var(--line);background:var(--panel-2);border-radius:999px;padding:6px 12px;font-size:.85rem}.chip--on{border-color:var(--accent);color:var(--accent)}.footnote{color:var(--muted);margin:10px 0 0;font-size:.8rem}.footer{text-align:center;color:var(--muted);margin-top:24px;font-size:.8rem}.footer a{color:var(--accent)}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.app{max-width:760px}.hero,.steps,.sweep,.keyboard,.transport{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.hero{text-align:center;transition:box-shadow .3s}.hero--playing{box-shadow:0 0 0 1px var(--accent), 0 0 48px -12px var(--accent)}.hero__note{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.hero__label{color:var(--accent);font-size:2rem;font-weight:700}.hero__cents{font-variant-numeric:tabular-nums;color:var(--warn);min-width:4.5em}.hero__cents--zero{color:var(--good)}.hero .chip:disabled{opacity:.4}.hero__hz,.hero__edit{font-variant-numeric:tabular-nums;letter-spacing:-.02em;background:0 0;border:0;justify-content:center;align-items:baseline;gap:10px;width:100%;margin:6px 0 12px;font-size:clamp(3rem,16vw,5.5rem);font-weight:700;line-height:1.1;display:flex}.hero__hz span,.hero__edit span{color:var(--muted);font-size:.32em;font-weight:600}.hero__edit input{background:var(--panel-2);border:1px solid var(--accent);text-align:center;width:6.2ch;font-size:inherit;font-weight:inherit;border-radius:12px;padding:0}.hero__edit input[aria-invalid=true]{border-color:var(--bad)}.ruler{background:linear-gradient(90deg, var(--panel) 0%, var(--panel-2) 20%, var(--panel-2) 80%, var(--panel) 100%);border:1px solid var(--line);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:12px;height:76px;position:relative;overflow:hidden}.ruler:active{cursor:grabbing}.ruler:focus-visible{outline:2px solid var(--accent)}.ruler__tick{border-left:1px solid var(--muted);opacity:.45;width:0;height:14px;position:absolute;top:0;left:0}.ruler__tick--note{border-left:2px solid var(--text);opacity:1;height:30px}.ruler__tick span{white-space:nowrap;font-size:.85rem;font-weight:600;position:absolute;top:38px;left:0;transform:translate(-50%)}.ruler__tick--sharp span{color:var(--muted);font-size:.72rem}.ruler__cursor{background:var(--accent);width:3px;box-shadow:0 0 12px var(--accent);pointer-events:none;margin-left:-1.5px;position:absolute;top:0;bottom:38px;left:50%}.hint{color:var(--muted);margin:10px 0 0;font-size:.8rem}.steps{grid-template-columns:repeat(8,1fr);gap:8px;padding:12px;display:grid}.step{border:1px solid var(--line);background:var(--panel-2);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;border-radius:12px;min-height:48px;font-weight:700}.step:active{background:color-mix(in srgb, var(--accent) 25%, var(--panel-2))}.sweep{padding:18px 16px 30px}.sweep input,.volume input{width:100%;accent-color:var(--accent)}.sweep input{height:28px}.sweep__scale{margin:2px 9px 0;position:relative}.sweep__scale span{color:var(--muted);font-size:.72rem;position:absolute;transform:translate(-50%)}.transport{align-items:center;gap:16px;display:flex}.playbtn{background:var(--accent);width:104px;height:104px;color:var(--accent-ink);box-shadow:0 8px 30px -10px var(--accent);border:0;border-radius:50%;flex:none;place-items:center;gap:2px;font-size:1rem;font-weight:800;display:grid}.playbtn span{font-size:1.8rem;line-height:1}.controls{flex:1;gap:14px;min-width:0;display:grid}.waves{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.wave{border:1px solid var(--line);background:var(--panel-2);border-radius:10px;place-items:center;height:44px;display:grid}.wave svg{fill:none;width:30px;height:24px;stroke:var(--muted);stroke-width:2.2px;stroke-linejoin:round}.wave--on{border-color:var(--accent)}.wave--on svg{stroke:var(--accent)}.volume{align-items:center;gap:10px;display:flex}.volume output{text-align:right;font-variant-numeric:tabular-nums;width:3.2em;color:var(--muted)}.keyboard__head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.keyboard__head h2{margin:0}.toggle{color:var(--muted);align-items:center;gap:8px;font-size:.85rem;display:flex}.toggle input{width:18px;height:18px;accent-color:var(--accent)}.piano{overscroll-behavior-x:contain;scrollbar-width:thin;border-radius:10px;overflow-x:auto}.piano__keys{height:150px;position:relative}.pkey{border-radius:0 0 8px 8px;justify-content:center;align-items:flex-end;padding:0 0 8px;display:flex;position:absolute;top:0}.pkey--white{color:#445;z-index:1;background:linear-gradient(#f4f7fb,#dde3ea);border:1px solid #9aa6b3;height:100%;font-size:.62rem}.pkey--white .pkey__c{color:#000;font-weight:700}.pkey--black{z-index:2;background:linear-gradient(#2a2f36,#0b0d10);border:1px solid #000;height:62%}.pkey--on.pkey--white{background:linear-gradient(#e9e1ff, var(--accent))}.pkey--on.pkey--black{background:linear-gradient(#8b6ff0,#5b3fc4)}.presets{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.select select{max-width:46vw}@media (width<=560px){.steps{grid-template-columns:repeat(4,1fr)}.transport{flex-direction:column;align-items:stretch}.playbtn{border-radius:999px;justify-content:center;gap:10px;width:100%;height:64px;font-size:1.15rem;display:flex}.playbtn span{font-size:1.2rem}.brand{font-size:1.1rem}}.suite{background:var(--panel);border:1px solid var(--line);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.suite__item{color:var(--muted);white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;text-decoration:none}a.suite__item:hover{color:var(--text);background:var(--panel-2)}.topbar{grid-template-columns:auto 1fr auto;grid-template-areas:"brand suite control";align-items:center;gap:12px;margin-bottom:16px;display:grid}.topbar .brand{grid-area:brand}.topbar .suite{grid-area:suite;justify-self:center}.topbar>:last-child{grid-area:control}.layout,.layout__primary,.layout__secondary{grid-template-columns:minmax(0,1fr);align-content:start;gap:16px;display:grid}@media (width<=639px){.topbar{grid-template-columns:auto 1fr;grid-template-areas:"brand control""suite suite";gap:10px}.topbar>:last-child{justify-self:end}.topbar .suite{text-align:center;grid-template-columns:repeat(3,1fr);justify-self:stretch;display:grid}}.wave__label{display:none}@media (width<=559px){.layout .keyboard{order:1}.layout .presets{order:2}.transport{bottom:max(8px, env(safe-area-inset-bottom));z-index:5;background:color-mix(in srgb, var(--panel) 88%, transparent);-webkit-backdrop-filter:blur(12px);order:3;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px;display:grid;position:sticky;box-shadow:0 12px 40px -8px #000000b3}.transport .playbtn{grid-column:1/-1;height:52px}.transport .controls{grid-column:1/-1;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px}.transport .waves{grid-template-columns:repeat(4,40px)}.transport .wave{height:40px}.volume output{display:none}}@media (width>=960px){.app{max-width:1180px;padding-left:32px;padding-right:32px}.layout{grid-template:"primary transport""primary presets"1fr"keyboard keyboard"/minmax(0,1.55fr) minmax(300px,1fr);align-items:start;gap:20px 24px}.layout__primary{grid-area:primary}.transport{flex-direction:column;grid-area:transport;align-items:stretch;padding:20px}.presets{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-area:presets;place-content:flex-start;padding:16px}.presets:before{content:"Presets";letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-basis:100%;margin-bottom:4px;font-size:.8rem;font-weight:600}.keyboard{grid-area:keyboard}.playbtn{border-radius:999px;justify-content:center;gap:12px;width:100%;height:72px;font-size:1.25rem;display:flex}.playbtn span{font-size:1.3rem}.waves{grid-template-columns:repeat(2,1fr)}.wave{justify-content:center;gap:8px;height:52px;display:flex}.wave__label{color:var(--muted);font-size:.85rem;display:inline}.wave--on .wave__label{color:var(--accent)}.hero{padding:24px}.hero__hz,.hero__edit{font-size:6.5rem}.ruler{height:88px}.piano__keys{height:180px}}body{background:radial-gradient(60vmax 42vmax at -5% -12%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 70%), radial-gradient(52vmax 40vmax at 105% 0%, color-mix(in srgb, var(--accent-2) 20%, transparent), transparent 70%), radial-gradient(70vmax 50vmax at 50% 125%, color-mix(in srgb, var(--accent-2) 12%, transparent), transparent 70%), var(--bg);background-attachment:fixed}.hero,.steps,.sweep,.keyboard,.transport{background:linear-gradient(180deg, #172036, var(--panel) 60%);border:1px solid color-mix(in srgb, var(--accent) 16%, var(--line));box-shadow:inset 0 1px #ffffff12,0 20px 44px -26px #000000e6}h2{color:color-mix(in srgb, var(--accent) 55%, var(--text))}.brand{background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:800}.brand__mark{color:inherit}.suite{border-color:var(--line);-webkit-backdrop-filter:blur(8px);background:#0a0e1cb3}.suite__item{color:var(--muted)}.suite__item--on{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:var(--accent-ink)}.primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:var(--accent-ink);box-shadow:0 12px 32px -12px var(--accent);transition:transform .12s,box-shadow .2s}.primary:hover{box-shadow:0 16px 36px -12px var(--accent);transform:translateY(-1px)}.primary:active{transform:translateY(1px)scale(.99)}.chip{background:var(--panel-2);border-color:var(--line);color:var(--text);transition:border-color .15s,background .15s,transform .1s}.chip:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 60%, var(--line))}.chip--on{background:color-mix(in srgb, var(--accent) 22%, var(--panel-2));border-color:var(--accent);color:var(--text);box-shadow:0 0 16px -6px var(--accent)}.select select{background-color:var(--panel-2);border-color:var(--line)}.footer{color:var(--muted)}.hero--playing{border-color:var(--accent);box-shadow:inset 0 1px 0 #ffffff12, 0 0 0 1px var(--accent), 0 0 60px -14px var(--accent), 0 0 90px -30px var(--accent-2)}.hero__label{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text}.hero__label sub{-webkit-text-fill-color:var(--muted)}.hero__hz{text-shadow:0 0 40px color-mix(in srgb, var(--accent) 35%, transparent)}.hero__hz span{color:var(--muted)}.scope{width:100%;height:64px;margin:-4px 0 10px;display:block;overflow:visible}.scope__axis{stroke:#ffffff14;stroke-dasharray:4 6}.scope__wave{fill:none;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.45;transition:opacity .3s}.scope--on .scope__wave{opacity:1;filter:drop-shadow(0 0 6px var(--accent))}.ruler{background:linear-gradient(90deg, var(--panel) 0%, #202a4a 20%, #202a4a 80%, var(--panel) 100%);border-color:var(--line)}.ruler__tick{border-left-color:#c9d3ea}.ruler__tick--note{border-left-color:#fff}.ruler__tick--sharp{border-left-color:#8f9bbd}.ruler__tick--sharp span{color:#a7b3d2}.ruler__cursor{background:linear-gradient(var(--accent), var(--accent-2));width:4px;box-shadow:0 0 14px var(--accent), 0 0 24px var(--accent-2);border-radius:2px;margin-left:-2px}.step{background:var(--panel-2);border-color:var(--line);transition:border-color .15s,background .15s,transform 80ms}.step:hover{border-color:color-mix(in srgb, var(--accent) 60%, var(--line))}.step:active{background:color-mix(in srgb, var(--accent) 30%, var(--panel-2));transform:scale(.95)}.sweep input,.volume input{accent-color:var(--accent-2)}.sweep__scale span{color:var(--muted)}.playbtn{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:var(--accent-ink);box-shadow:0 12px 36px -12px var(--accent-2);transition:transform .12s,box-shadow .2s}.playbtn:hover{transform:translateY(-1px)}.playbtn:active{transform:scale(.98)}.playbtn--on{background:linear-gradient(135deg, #ff7a59, var(--bad));color:#2a0612;box-shadow:0 12px 36px -12px var(--bad)}.wave{background:var(--panel-2);border-color:var(--line)}.wave svg{stroke:#c3cde6}.wave--on{background:color-mix(in srgb, var(--accent) 20%, var(--panel-2));border-color:var(--accent);box-shadow:0 0 16px -6px var(--accent)}.wave--on svg{stroke:var(--accent);filter:drop-shadow(0 0 4px var(--accent))}.wave__label{color:#c3cde6}.wave--on .wave__label{color:var(--text)}.pkey--white{color:#2a3150;background:linear-gradient(#fff,#e2e8f6);border-color:#7f8bad}.pkey--black{background:linear-gradient(#2c3452,#090c16)}.pkey--white:hover{background:linear-gradient(#fff,#eef0ff)}.pkey--on.pkey--white{background:linear-gradient(#f4edff, var(--accent) 55%, var(--accent-2));color:var(--accent-ink);box-shadow:0 0 22px -2px var(--accent)}.pkey--on.pkey--black{background:linear-gradient(var(--accent), var(--accent-2));box-shadow:0 0 20px -2px var(--accent-2)}.toggle{color:#c3cde6}.toggle input{accent-color:var(--accent)}@media (width>=960px){.presets{background:linear-gradient(180deg, #172036, var(--panel) 60%);border-color:color-mix(in srgb, var(--accent) 16%, var(--line))}.presets:before{color:color-mix(in srgb, var(--accent) 55%, var(--text))}.scope{height:80px}}@media (width<=559px){.transport{border-color:color-mix(in srgb, var(--accent) 30%, var(--line));background:#121829db}}.ruler__cursor{height:34px;bottom:auto}
