.btn{display:inline-flex;width:auto;min-height:var(--tap);align-items:center;justify-content:center;gap:var(--s-1);padding:var(--s-2) var(--s-4);border:var(--hairline) solid var(--line-strong);border-radius:var(--r-2);background:var(--surface);color:var(--ink);font-size:var(--t-3);font-weight:var(--w-medium);line-height:var(--lh-tight);text-align:center;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}.btn-sm{min-height:var(--tap);padding:var(--control-sm-pad) var(--s-3);font-size:var(--t-2)}.btn:active{background:var(--inset)}.btn:disabled{background:var(--inset);border-color:var(--line);color:var(--ink-3);cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-1)}.btn-primary:active{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-danger{background:var(--surface);border-color:var(--bad);color:var(--bad)}.btn-danger:active{background:var(--bad-soft)}.sheet{position:fixed;z-index:var(--z-sheet);inset:0;display:flex;align-items:flex-end;justify-content:center;background:var(--backdrop);opacity:0;transition:opacity var(--dur-2) var(--ease)}.sheet-open{opacity:1}.sheet-locked{overflow:hidden}.sheet-panel{display:flex;width:100%;max-width:var(--page);max-height:var(--sheet-max);flex-direction:column;gap:var(--s-3);padding:var(--s-2) var(--gutter) calc(var(--s-5) + env(safe-area-inset-bottom,0px));border-radius:var(--r-sheet) var(--r-sheet) 0 0;border-top:2px solid var(--sage);box-sizing:border-box;background:var(--surface);box-shadow:0 -2px 18px -6px var(--sage-glow),var(--shadow-sheet);transform:translateY(100%);transition:transform var(--dur-3) var(--ease);overflow:hidden auto}.sheet-panel:focus,.sheet-panel:focus-visible{outline:none}.sheet-open .sheet-panel{transform:translateY(0)}.sheet-handle{width:var(--sheet-handle-w);height:var(--sheet-handle-h);flex:none;align-self:center;border-radius:var(--r-pill);background:var(--line-strong)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.sheet-title{font-size:var(--t-title);font-weight:var(--w-bold)}.sheet-body{display:flex;flex-direction:column;align-items:stretch;gap:var(--s-3);font-size:var(--t-3);color:var(--ink-2)}.stack{display:flex;flex-direction:column;align-items:stretch;gap:var(--s-4)}.stack>.btn{align-self:start;margin-top:var(--s-2)}.sheet-actions{display:flex;flex-wrap:wrap;gap:var(--s-2);padding-top:var(--s-2);border-top:var(--hairline) solid var(--line)}.sheet-close{margin-left:auto;color:var(--ink-2);background:var(--inset)}.toasts{position:fixed;z-index:var(--z-toast);top:calc(var(--gutter) + env(safe-area-inset-top));right:var(--gutter);left:var(--gutter);display:flex;flex-direction:column;align-items:center;gap:var(--s-2);pointer-events:none}.toast{display:flex;max-width:100%;align-items:center;gap:10px;padding:10px 18px 10px 14px;border:var(--hairline) solid var(--line-strong);border-radius:var(--r-pill);background:var(--surface-glass, rgba(18, 20, 28, .92));box-shadow:var(--shadow-2);pointer-events:auto;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:toast-life var(--toast-life) var(--ease) forwards}.toast-mark{display:grid;width:22px;height:22px;flex:none;border-radius:50%;background:var(--line-strong);color:var(--ink);font-size:13px;font-weight:700;line-height:1;place-items:center}.toast-text{margin:0;font-size:var(--t-3);font-weight:500;line-height:1.35;color:var(--ink)}.toast-ok .toast-mark{background:var(--ok);color:var(--paper)}.toast-warn .toast-mark{background:var(--warn);color:var(--paper)}.toast-bad .toast-mark{background:var(--bad);color:var(--paper)}.toast-ok{border-color:var(--ok)}.toast-warn{border-color:var(--warn)}.toast-bad{border-color:var(--bad)}@keyframes toast-life{0%{opacity:0;transform:translateY(-14px) scale(.96)}7%,90%{opacity:1;transform:none}to{opacity:0;transform:translateY(-8px) scale(.98)}}@media(prefers-reduced-motion:reduce){@keyframes toast-life{0%{opacity:0}7%,90%{opacity:1}to{opacity:0}}}@media print{.dock,.top,.toolbar,.sheet,.toasts,.glow,.seg,.stepper,.solfa-hint,.actions,.ex,.more,.keeprow,.btn,button,.card.fix,.hint,.legend,.playrow,.install,.search{display:none!important}:root,body,.app{background:#fff!important;color:#000!important}.app{min-height:0;padding:0;overflow:visible}.wrap{max-width:none;padding:0}.solfa,.solfa *,.card,.notes,.notes *{color:#000!important;background:transparent!important}.card,.solfa{border-color:#999!important;box-shadow:none!important}.solfa-title{font-size:18pt;font-weight:700}.solfa-body{font-size:12pt}.solfa-line,.notes-bar,tr{break-inside:avoid;page-break-inside:avoid}@page{margin:16mm}}.toolbar{position:fixed;left:50%;bottom:calc(var(--s-3) + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:var(--s-2);z-index:var(--z-sticky);max-width:calc(100% - var(--s-3) * 2)}.toolbar-pill{display:flex;align-items:center;gap:var(--s-1);padding:var(--s-1);border-radius:var(--r-pill);background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line);box-shadow:var(--shadow-2)}.toolbar-btn,.toolbar-round{display:grid;place-items:center;width:var(--tap);height:var(--tap);border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);cursor:pointer;padding:0}.toolbar-btn[aria-pressed=true]{background:var(--inset);color:var(--ink)}.toolbar-btn-primary{background:var(--ink);color:var(--paper)}.toolbar-round{background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow-2);flex:none}.toolbar-btn:focus-visible,.toolbar-round:focus-visible,.menu-item:focus-visible{outline:var(--ring-w) solid var(--focus);outline-offset:var(--ring-offset)}.menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-2)}@media(max-width:349px){.menu-grid{grid-template-columns:repeat(3,1fr)}}.menu-item{display:grid;justify-items:center;gap:var(--s-1);padding:var(--s-2) var(--s-1);min-height:76px;border:1px solid transparent;border-radius:var(--r-2);background:var(--inset);color:var(--ink-2);font:inherit;cursor:pointer}.menu-item-active{background:var(--ink);color:var(--paper)}.menu-icon{display:grid;place-items:center;height:24px;color:inherit}.menu-label{font-size:var(--t-1);line-height:1.2;text-align:center;color:inherit}.menu-note{font-size:11px;color:var(--ink-3)}.menu-item-active .menu-note{color:inherit;opacity:.7}.menu-item,.toolbar-btn,.toolbar-round{transition:transform var(--dur-1, .1s) ease,background-color var(--dur-1, .1s) ease}.menu-item:active,.toolbar-btn:active,.toolbar-round:active{transform:scale(.94);background:var(--line-strong)}.toolbar-btn-primary:active{background:var(--ink)}.toolbar-btn[aria-disabled=true]{opacity:.4;pointer-events:none}:root{--paper:#05060B;--surface:#12141C;--inset:#1B1F2B;--line-strong:#252A39;--line:rgba(255,255,255,.09);--ink:#ECEEF6;--ink-2:#A3A9C0;--ink-3:#6E7590;--accent:#4D6BFF;--accent-ink:#FFFFFF;--sage:#5AD8FF;--ok:#4AD6A5;--bad:#FF6B7A;--i1:#7FA2FF;--i2:#5AD8FF;--i3:#4AD6A5;--i4:#9BE36D;--i5:#F0B429;--i6:#FF9F6B;--i7:#E05BFF;--i8:#FF6B9D;--i9:#C9CEDC;--warn:#F0B429;--glow:rgba(77,107,255,.55);--sage-glow:rgba(90,216,255,.28);--ok-soft:rgba(74,214,165,.12);--bad-soft:rgba(255,107,122,.12);--warn-soft:rgba(240,180,41,.12);--accent-soft:rgba(77,107,255,.16);--scrim:rgba(5,6,11,.62);--grid:rgba(255,255,255,.05);--grid-bar:rgba(255,255,255,.09);--sage-soft:rgba(90,216,255,.16);--glow-2:rgba(42,64,220,.28);--ink-faint:rgba(236,238,246,.06);--i1-soft:rgba(127,162,255,.12);--ok-edge:rgba(74,214,165,.35);--bad-edge:rgba(255,107,122,.35);--warn-edge:rgba(240,180,41,.35);--sage-edge:rgba(90,216,255,.35);--accent-edge:rgba(77,107,255,.38);--surface-glass:rgba(18,20,28,.85);--shadow:rgba(0,0,0,.8);--disc-shade:rgba(0,0,0,.35);--disc-hi:#C7BEFF;--disc-lo:#24157A;--ok-hi:#D4FFF0;--ok-lo:#0E5A45;--violet:#8B5BFF;--pink:#E05BFF;--pink-hi:#FFC4F2;--pink-lo:#6A1A8A;--glow-pink:rgba(224,91,255,.42);--glow-violet:rgba(139,91,255,.36);--wash-blue:rgba(77,107,255,.13);--wash-pink:rgba(224,91,255,.11);--wash-violet:rgba(139,91,255,.1);--r-pill:999px;--r-sheet:24px;--r-card:14px;--r-tile:16px;--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--dur-1:.15s;--dur-2:.25s;--beat:.652s}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink)}body{font:400 16px/1.5 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,a,input{font:inherit;color:inherit}button{cursor:pointer}a{text-decoration:none}:focus-visible{outline:2px solid var(--sage);outline-offset:2px}svg.i{width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}svg.i.s{width:20px;height:20px}svg.i.xs{width:16px;height:16px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{position:relative;min-height:100vh;min-height:100dvh;overflow:hidden;padding-bottom:110px;background:radial-gradient(135% 55% at 8% -4%,var(--wash-blue) 0%,transparent 62%),radial-gradient(120% 50% at 96% 4%,var(--wash-pink) 0%,transparent 60%),radial-gradient(130% 48% at 50% 104%,var(--wash-violet) 0%,transparent 68%)}.glow{position:absolute;left:-40%;right:-40%;top:-300px;height:560px;border-radius:50%;pointer-events:none;animation:breathe 7s ease-in-out infinite;background:radial-gradient(closest-side at 74% 42%,var(--glow-pink) 0%,transparent 72%),radial-gradient(closest-side at 46% 50%,var(--glow-violet) 0%,transparent 78%),radial-gradient(closest-side at 24% 46%,var(--glow) 0%,var(--glow-2) 55%,transparent 100%)}.wrap{position:relative;width:100%;max-width:560px;margin:0 auto;padding:0 16px}.top{position:relative;display:flex;align-items:center;gap:4px;height:64px;padding:12px 8px 0}.top h1{flex:1;margin:0;font-size:16px;font-weight:600;letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top .center{text-align:center}.ib{width:44px;height:44px;flex:none;border:0;border-radius:var(--r-pill);background:transparent;display:flex;align-items:center;justify-content:center;color:var(--ink)}.ib:hover{background:var(--inset)}.kicker{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.h-xl{font-size:28px;line-height:1.15;font-weight:650;letter-spacing:-.02em;margin:0}.h-l{font-size:22px;line-height:1.2;font-weight:650;letter-spacing:-.015em;margin:0}.body{font-size:15px;line-height:1.55;color:var(--ink-2);margin:0}.small{font-size:13px;color:var(--ink-2)}.muted{color:var(--ink-3)}.btn{min-height:48px;padding:0 20px;border-radius:var(--r-pill);border:0;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:16px;font-weight:600;white-space:nowrap}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 28px -10px var(--glow),0 10px 34px -14px var(--glow-pink)}.btn-quiet{background:var(--inset);color:var(--ink)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-danger{background:var(--bad-soft);color:var(--bad)}.btn-sm{min-height:44px;padding:0 14px;font-size:14px}.btn-xl{min-height:60px;padding:0 30px;font-size:18px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}.chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:var(--r-pill);background:var(--inset);font-size:12px;font-weight:600;color:var(--ink-2)}.mono{font-family:var(--mono)}.dock{position:fixed;left:12px;right:12px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;display:flex;align-items:center;gap:10px;max-width:536px;margin:0 auto}.dock nav{flex:1;height:64px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);display:flex;align-items:center;justify-content:space-around;padding:0 6px}.dock nav a,.dock nav button{width:52px;height:52px;border-radius:var(--r-pill);border:0;background:transparent;color:var(--ink-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:600}.dock nav a.on,.dock nav button.on{background:transparent;color:var(--ink)}.dock nav a.on:after,.dock nav button.on:after{content:"";position:absolute;bottom:6px;width:4px;height:4px;border-radius:50%;background:var(--ink)}.dock nav a,.dock nav button{position:relative}.dock .plus{width:64px;height:64px;flex:none;border-radius:50%;border:1px solid var(--line);background:var(--inset);color:var(--ink);display:flex;align-items:center;justify-content:center;transition:transform var(--dur-2)}.dock .plus[aria-expanded=true]{background:var(--ink);color:var(--paper)}.scrim{position:fixed;inset:0;z-index:30;background:var(--scrim)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.ringbox{position:relative;width:300px;height:300px;margin:0 auto;perspective:700px}.ring{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:rotateX(14deg)}.disc{--a:calc(var(--i) * 15deg);position:absolute;width:40px;height:84px;margin:-42px 0 0 -20px;border-radius:50%;background:radial-gradient(ellipse at 30% 25%,var(--disc-hi) 0%,var(--accent) 45%,var(--disc-lo) 100%);box-shadow:inset -4px -6px 10px var(--disc-shade);transform:rotate(var(--a)) translateY(-112px) rotateY(20deg)}.disc:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 25%,var(--pink-hi) 0%,var(--pink) 45%,var(--pink-lo) 100%);opacity:calc(var(--i) / 24 * .85)}.ring.live .disc:after{animation:disc-sheen 2.4s ease-in-out infinite;animation-delay:calc(var(--i) * -.1s)}@keyframes disc-sheen{0%,35%,to{opacity:0}55%{opacity:.9}}.ring.live .disc{animation:wave 2.4s ease-in-out infinite;animation-delay:calc(var(--i) * -.1s)}@keyframes wave{0%,to{transform:rotate(var(--a)) translateY(-112px) rotateY(15deg) scale(.82)}50%{transform:rotate(var(--a)) translateY(-122px) rotateY(72deg) scale(1)}}.ringcore{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center}@media(min-width:900px){.app{padding-bottom:40px;padding-left:112px}.dock{inset:50% auto auto 20px;transform:translateY(-50%);flex-direction:column;max-width:none;margin:0}.dock nav{flex:none;width:72px;height:auto;flex-direction:column;padding:8px 0;gap:6px}.dock nav a,.dock nav button{width:60px;height:60px}.sheet{left:112px;right:auto;bottom:24px;width:420px;max-width:none;max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px)}.top{padding-left:24px;padding-right:24px}.wrap{max-width:1120px;padding:0 32px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition:none!important}}.seg{display:flex;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px}.seg button{flex:1;min-height:44px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);font-size:13.5px;font-weight:600;line-height:1.1;display:flex;flex-direction:column;align-items:center;justify-content:center}.seg button[aria-pressed=true]{background:var(--line-strong);color:var(--ink)}@media(min-width:900px){.tools{inset:50% auto auto 20px;transform:translateY(-50%);flex-direction:column;max-width:none;margin:0}.tools .bar{flex:none;width:72px;height:auto;flex-direction:column;padding:8px 0;gap:6px}.tools .bar button{width:60px;height:60px}.vc{left:auto;right:24px;transform:none}}:root{--accent-strong: #7fa2ff;--autofill-spread: 100px;--backdrop: rgba(5, 6, 11, .72);--bar-h: 6px;--box-mark: 4px;--box: 22px;--control-h: 44px;--control-sm-pad: .3125rem;--dur-3: .28s;--dur-shimmer: 1.4s;--dur-spin: .9s;--ease: cubic-bezier(.2, .6, .2, 1);--focus: #5ad8ff;--font-mono: ui-monospace, "Roboto Mono", Menlo, Consolas, monospace;--glyph-back: "\2190";--glyph-close: "\d7";--glyph: .8125rem;--gutter: clamp(.875rem, 4vw, 1.25rem);--hairline: 1px;--lh-tight: 1.25;--lh: 1.5;--page: 32rem;--r-1: 4px;--r-2: 8px;--r-3: 12px;--ring-offset: 2px;--ring-w: 2px;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--scrollbar: 8px;--section-gap: clamp(1.25rem, 5vw, 2.25rem);--select-bg: rgba(77, 107, 255, .35);--shadow-1: 0 1px 2px rgba(0, 0, 0, .5);--shadow-2: 0 4px 18px rgba(0, 0, 0, .55);--shadow-sheet: 0 -6px 20px rgba(0, 0, 0, .38);--sheet-handle-h: 4px;--sheet-handle-w: 36px;--sheet-max: 86vh;--shimmer: rgba(255, 255, 255, .06);--skeleton-h: .75rem;--spinner-w: 2px;--spinner: 20px;--t-1: .75rem;--t-2: .8125rem;--t-3: .875rem;--t-4: 1rem;--t-display: clamp(1.25rem, 6vw, 1.75rem);--t-title: clamp(1.0625rem, 4.4vw, 1.375rem);--tap-highlight: rgba(90, 216, 255, .18);--tap: 44px;--thumb: 24px;--toast-life: 5.2s;--toast-max: 26rem;--track-caps: .07em;--track-h: 4px;--track-tight: -.011em;--voice-1-glyph: "\25cf";--voice-1: #7fa2ff;--voice-2-glyph: "\25a0";--voice-2: #5ad8ff;--voice-3-glyph: "\25b2";--voice-3: #4ad6a5;--voice-4-glyph: "\25c6";--voice-4: #9be36d;--voice-5-glyph: "\25cb";--voice-5: #f0b429;--voice-6-glyph: "\25a1";--voice-6: #ff9f6b;--voice-7-glyph: "\25bc";--voice-7: #e05bff;--voice-8-glyph: "\25c7";--voice-8: #ff6b9d;--voice-9-glyph: "\d7";--voice-9: #c9cedc;--voice-10-glyph: "\2726";--voice-10: #ffd166;--voice-11-glyph: "\2605";--voice-11: #b89bff;--voice-12-glyph: "\271a";--voice-12: #ff5e57;--w-bold: 600;--w-medium: 500;--w-regular: 400;--z-sheet: 100;--z-sticky: 10;--z-toast: 200}.sub{color:var(--ink-2);font-size:13px;line-height:1.45}.lbl{color:var(--ink-3);font-size:11px;letter-spacing:.07em;text-transform:uppercase;font-weight:600}:root{accent-color:var(--accent);caret-color:var(--accent)}::selection{background:var(--select-bg);color:var(--ink)}input[type=checkbox],input[type=radio],input[type=range],progress{accent-color:var(--accent)}@keyframes breathe{0%,to{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@media(prefers-reduced-motion:reduce){.glow{animation:none}}.app:after{content:"";position:fixed;inset:0;z-index:-1;opacity:.055;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px}.field{display:flex;width:100%;min-width:0;flex-direction:column;gap:var(--s-1);margin:0;padding:0;border:0}.field-label{font-size:var(--t-2);font-weight:var(--w-medium);color:var(--ink-2)}.field-hint{font-size:var(--t-1);color:var(--ink-3)}.field-error{font-size:var(--t-1);color:var(--bad)}.field-error:empty{display:none}.field input,.field select,.field textarea{width:100%;min-width:0;min-height:var(--tap);box-sizing:border-box;padding:var(--s-2) var(--s-3);border:var(--hairline) solid var(--line-strong);border-radius:var(--r-2);background:var(--inset);color:var(--ink);font:inherit;font-size:var(--t-3);-webkit-appearance:none;appearance:none}.field select{padding-right:calc(var(--s-4) + var(--box))}.field option{background:var(--surface);color:var(--ink)}.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:var(--ring-w) solid var(--accent);outline-offset:2px}.field textarea{min-height:calc(var(--tap) * 2);resize:vertical}.field-invalid input,.field-invalid select,.field-invalid textarea{border-color:var(--bad)}.select-wrap{position:relative;display:flex}.select-wrap:after{position:absolute;top:50%;right:var(--s-4);width:var(--box-mark);height:var(--box-mark);border-right:var(--ring-w) solid var(--ink-2);border-bottom:var(--ring-w) solid var(--ink-2);content:"";transform:translateY(-65%) rotate(45deg);pointer-events:none}.field-check{display:flex;min-height:var(--tap);align-items:center;gap:var(--s-3);font-size:var(--t-3);cursor:pointer}.field-radios{display:flex;flex-direction:column}.state{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:var(--s-2);padding:var(--s-4);border:var(--hairline) solid var(--line);border-radius:var(--r-3);background:var(--surface)}.state-error{border-color:var(--bad);background:var(--bad-soft)}.state-title{font-size:var(--t-4);font-weight:var(--w-bold)}.state-message{max-width:36ch;font-size:var(--t-3);color:var(--ink-2)}.state .btn{margin-top:var(--s-1)}.skeleton{display:flex;width:100%;flex-direction:column;gap:var(--s-2)}.skeleton-bar{display:block;height:var(--skeleton-h);border-radius:var(--r-1);background:var(--inset);background-image:linear-gradient(90deg,transparent,var(--shimmer),transparent);background-repeat:no-repeat;background-size:40% 100%;animation:skeleton-sweep var(--dur-shimmer) var(--ease) infinite}.skeleton-bar:nth-child(3n){width:72%}.skeleton-bar:last-child{width:54%}@keyframes skeleton-sweep{0%{background-position:-60% 0}to{background-position:160% 0}}@media(prefers-reduced-motion:reduce){.skeleton-bar{background-image:none;animation:none}}.spinner{display:inline-flex;align-items:center}.spinner-ring{display:block;width:var(--spinner);height:var(--spinner);border:var(--spinner-w) solid var(--line);border-top-color:var(--accent);border-radius:var(--r-pill);animation:spinner-turn var(--dur-spin) linear infinite}@keyframes spinner-turn{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.spinner-ring{animation:spinner-breathe var(--dur-spin) var(--ease) infinite alternate}}@keyframes spinner-breathe{to{opacity:.35}}.shell{display:flex;width:100%;min-height:100%;flex:1;flex-direction:column}.shell-head{position:sticky;z-index:var(--z-sticky);top:0;display:flex;width:100%;max-width:var(--page);align-items:center;gap:var(--s-3);align-self:center;padding:var(--s-2) var(--gutter);border-bottom:var(--hairline) solid var(--line);background:var(--paper)}.shell-title{font-size:var(--t-title);font-weight:var(--w-bold);line-height:var(--lh-tight)}.shell-main{display:flex;width:100%;max-width:var(--page);flex:1;flex-direction:column;align-self:center;padding:var(--section-gap) var(--gutter) var(--s-6)}.shell-content{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:var(--s-3)}.shell-back .btn:before{content:var(--glyph-back);margin-right:var(--s-1)}.shell-loading{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:var(--s-3)}.voice{display:inline-flex;min-height:var(--tap);align-items:center;gap:var(--s-2);font-size:var(--t-2)}.voice-mark{display:inline-flex;width:var(--box);height:var(--box);align-items:center;justify-content:center;color:var(--voice);font-size:var(--glyph);line-height:1}.voice-mark:before{content:var(--voice-mark)}.voice-name{color:var(--ink)}.voice-chip{display:inline-block;width:var(--box);height:var(--box);border-radius:50%;background:var(--voice)}.voice-chip-plain{background:var(--ink-2)}.ring-stage{--bg: #07051A;--ink: #ECEEF6;--blue-hi: #C7BEFF;--blue: #5B5BFF;--blue-lo: #24157A;--pink-hi: #FFC4F2;--pink: #E05BFF;--pink-lo: #6A1A8A;--r: 118px;--n: 24;--speed: 2.4s;position:relative;width:100%;aspect-ratio:360 / 640;max-height:68dvh;margin-inline:auto;overflow:hidden;border-radius:28px;background:radial-gradient(closest-side at 50% 45%,#5b5bff47,#07051a00 70%),var(--bg);perspective:700px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.ring-stage .ring{position:absolute;left:50%;top:45%;width:0;height:0;transform-style:preserve-3d;transform:rotateX(14deg)}.ring-stage .disc{--a: calc(var(--i) * (360deg / var(--n)));position:absolute;width:44px;height:92px;margin:-46px 0 0 -22px;border-radius:50%;background:radial-gradient(ellipse at 30% 25%,var(--blue-hi) 0%,var(--blue) 45%,var(--blue-lo) 100%);box-shadow:inset -4px -6px 10px #00000059;transform:rotate(var(--a)) translateY(calc(var(--r) * -1)) rotateY(20deg);animation:ring-wave var(--speed) ease-in-out infinite;animation-delay:calc(var(--i) * var(--speed) / var(--n) * -1);will-change:transform}.ring-stage .disc:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 25%,var(--pink-hi) 0%,var(--pink) 45%,var(--pink-lo) 100%);opacity:0;animation:ring-sheen var(--speed) ease-in-out infinite;animation-delay:inherit}@keyframes ring-wave{0%,to{transform:rotate(var(--a)) translateY(calc(var(--r) * -1)) rotateY(15deg) scale(.82)}50%{transform:rotate(var(--a)) translateY(calc(var(--r) * -1 - 10px)) rotateY(72deg) scale(1)}}@keyframes ring-sheen{0%,35%,to{opacity:0}55%{opacity:.95}}.ring-stage .orbit{position:absolute;left:50%;top:45%;width:0;height:0;animation:ring-spin 6s linear infinite}.ring-stage .orb{position:absolute;width:22px;height:22px;margin:-11px;border-radius:50%;transform:translateY(calc(var(--r) * -1 - 4px));background:radial-gradient(circle at 40% 35%,#fff,#e9e4ff 40%,#9c8cff);box-shadow:0 0 0 6px #9c8cff2e,0 0 26px 6px #9c8cffb3}@keyframes ring-spin{to{transform:rotate(360deg)}}.ring-stage .words{position:absolute;left:0;right:0;top:45%;height:0;color:var(--ink);text-align:center;font-weight:600;font-size:22px;letter-spacing:-.01em}.ring-stage .words span{position:absolute;left:0;right:0;transform:translateY(-50%);opacity:0;animation:ring-word 9s ease-in-out infinite}.ring-stage .words span:nth-child(2){animation-delay:3s}.ring-stage .words span:nth-child(3){animation-delay:6s}.ring-stage .words em{font-style:normal;color:#a9a2ff}@keyframes ring-word{0%{opacity:0;transform:translateY(calc(-50% + 10px))}6%,28%{opacity:1;transform:translateY(-50%)}34%,to{opacity:0;transform:translateY(calc(-50% - 10px))}}.ring-stage .caption{position:absolute;left:0;right:0;bottom:56px;text-align:center;color:#a3a9c0;font-size:14px}.ring-stage .caption b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}@media(prefers-reduced-motion:reduce){.ring-stage .disc,.ring-stage .disc:after,.ring-stage .orbit{animation:none}.ring-stage .words span{animation:none}.ring-stage .words span:first-child{opacity:1}}.welcome{position:fixed;inset:0;background:var(--paper)}.welcome .ring-stage{position:absolute;inset:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;border-radius:0}.welcome .caption{bottom:calc(72px + env(safe-area-inset-bottom))}@media(max-width:899px){.dock{bottom:calc(16px + env(safe-area-inset-bottom))}}.dock nav button.feature{background:linear-gradient(140deg,var(--accent),var(--pink));color:var(--accent-ink);box-shadow:0 6px 18px -8px var(--glow),0 8px 22px -12px var(--glow-pink)}.home{display:flex;flex-direction:column;padding-bottom:110px}@media(min-width:900px){.home{padding:0 0 40px 112px}}.home-mark{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:auto;padding:0 0 18px;color:var(--ink)}@keyframes dot{0%,to{opacity:.25}50%{opacity:1}}.d1{animation:dot 1.2s infinite}.d2{animation:dot 1.2s .2s infinite}.d3{animation:dot 1.2s .4s infinite}.start{margin:auto 12px 16px;max-width:536px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sheet);padding:14px;display:flex;flex-direction:column;gap:12px}.start-label{font-size:13px;color:var(--ink-2);padding:0 4px}.start-ways{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.start-way{height:64px;border:0;border-radius:var(--r-tile);display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;font-weight:600}.start-sing{background:var(--ink);color:var(--paper)}.start-draw{background:var(--inset);color:var(--ink)}.start-recent{min-height:44px;width:100%;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;display:flex;align-items:center;gap:10px;padding:0 4px}.start-recent span{flex:1;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.start-recent em{font-style:normal;color:var(--ink-3)}.start-recent svg{width:14px;height:14px;color:var(--ink-3)}.home-nudge{max-width:300px;margin:18px auto 0;color:var(--ink-2);font-size:15px;line-height:1.45}.home-songs{display:grid;gap:6px;width:100%;max-width:420px;margin:auto auto 0;padding:0 4px}.home-songs .kicker{margin:0 4px 4px}.home-song{display:flex;min-height:var(--tap);align-items:center;gap:12px;padding:10px 14px;border:0;border-radius:var(--r-card);background:var(--surface);color:var(--ink);text-align:left}.home-song>span{flex:1;min-width:0;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-song em{font-style:normal;color:var(--ink-3);margin-left:8px}.home-song svg:first-child{color:var(--sage);flex:none}.home-song svg:last-child{color:var(--ink-3);flex:none}.home-all{display:flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);border:0;background:transparent;color:var(--ink-2);font-size:14px}.home-nudge{max-width:320px;margin:clamp(40px,12vh,110px) auto clamp(24px,6vh,48px);padding:0 8px;color:var(--ink);font-size:20px;font-weight:300;line-height:1.45;text-align:center;letter-spacing:-.005em}.home-wave{display:flex;align-items:center;justify-content:center;gap:5px;height:28px}.home-wave i{width:4px;height:100%;border-radius:2px;background:linear-gradient(var(--accent),var(--pink));transform-origin:center;animation:home-wave 1.5s ease-in-out infinite;animation-delay:calc(var(--i) * -.17s)}@keyframes home-wave{0%,to{transform:scaleY(.22);opacity:.5}50%{transform:scaleY(1);opacity:1}}@media(prefers-reduced-motion:reduce){.home-wave i{animation:none;transform:scaleY(.5)}}.sing-page{padding-bottom:32px}.sing{display:flex;flex-direction:column;align-items:center;text-align:center;gap:22px;padding:8px 20px 0}.copy{max-width:330px;display:flex;flex-direction:column;gap:10px;align-items:center}.actions{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:18px}.core-badge{width:72px;height:72px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface-glass);border:1px solid var(--line)}.sing .ringbox{transform:scale(.86);margin:4px auto -22px}.sing .ringbox.sm{transform:scale(.68);margin:-36px auto -60px}.trace{width:100%;max-width:340px;padding:14px;text-align:left}.beat{width:200px;height:200px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--line);background:radial-gradient(closest-side,var(--accent-soft),transparent)}.beat .big{font-size:64px;font-weight:300;line-height:1;font-variant-numeric:tabular-nums}.dots{display:flex;gap:16px;align-items:center;justify-content:center}.dots i{width:12px;height:12px;border-radius:50%;background:var(--line-strong)}.dots i.on{background:var(--sage);box-shadow:0 0 0 5px var(--sage-glow)}.sing .seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px}.sing .seg button{min-height:44px;padding:0 14px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);font-size:14px;font-weight:600;display:flex;flex-direction:column;justify-content:center;line-height:1.1}.sing .seg button small{font-size:10.5px;font-weight:500;color:var(--ink-3)}.sing .seg button[aria-pressed=true]{background:var(--line-strong);color:var(--ink)}@media(min-width:900px){.sing-page{padding-left:0}.sing{flex-direction:row;justify-content:center;text-align:left;gap:80px;min-height:calc(100vh - 64px);min-height:calc(100dvh - 64px);padding-bottom:40px}.copy{align-items:flex-start;max-width:380px}.actions{align-items:flex-start}.sing .ringbox{transform:scale(1.15);margin:0}.sing .ringbox.sm{transform:scale(.95);margin:0}}.top .pad{width:var(--tap);flex:none}.sing .lit{color:var(--ink);font-weight:600}.core-badge.hearing{color:var(--sage);border-color:var(--sage-edge)}.core-badge.settled{color:var(--ok);border-color:var(--ok-edge)}.core-badge.caution{color:var(--warn);border-color:var(--warn-edge)}.ring.idle .disc{opacity:.5;filter:saturate(.6)}.ring.settled .disc{background:radial-gradient(ellipse at 30% 25%,var(--ok-hi) 0%,var(--ok) 45%,var(--ok-lo) 100%);transform:rotate(var(--a)) translateY(-112px) rotateY(40deg);animation:settle .7s ease-out 1 both}@keyframes settle{0%{transform:rotate(var(--a)) translateY(-112px) rotateY(70deg) scale(.9)}60%{transform:rotate(var(--a)) translateY(-120px) rotateY(40deg) scale(1.06)}to{transform:rotate(var(--a)) translateY(-112px) rotateY(40deg) scale(1)}}.adv{--adv-wait:1.4s;width:160px;height:3px;border-radius:2px;background:var(--line-strong);overflow:hidden}.adv i{display:block;height:100%;background:var(--ok);animation:fill var(--adv-wait) linear both}@keyframes fill{0%{width:0}to{width:100%}}.adv.live i{animation:none;width:0;background:var(--sage);transition:width var(--dur-1) linear}.ring.rest .disc{opacity:.38;filter:grayscale(.7)}.dots.preview i{animation:tick calc(var(--beat) * 4) steps(1) infinite}.dots.preview i:nth-child(2){animation-delay:var(--beat)}.dots.preview i:nth-child(3){animation-delay:calc(var(--beat) * 2)}.dots.preview i:nth-child(4){animation-delay:calc(var(--beat) * 3)}@keyframes tick{0%{background:var(--sage);box-shadow:0 0 0 5px var(--sage-glow)}25%,to{background:var(--line-strong);box-shadow:none}}.counting .ready-only,.ready .count-only{display:none}.beat.pulse{animation:pulse var(--beat) ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--sage-glow)}to{box-shadow:0 0 0 26px transparent}}.beat.rec{animation:pulse var(--beat) ease-out infinite;border-color:var(--sage-edge)}.meter{display:flex;align-items:flex-end;gap:4px;height:40px}.meter i{width:8px;border-radius:3px;background:var(--ok);transition:height var(--dur-1) linear}.recdot{width:10px;height:10px;border-radius:50%;background:var(--bad);animation:blink 1.2s infinite}@keyframes blink{50%{opacity:.3}}.done{min-height:64px;padding:0 34px;border-radius:var(--r-pill);border:0;background:var(--ink);color:var(--paper);display:inline-flex;align-items:center;gap:12px;font-size:18px;font-weight:700}.done span{width:18px;height:18px;border-radius:4px;background:var(--bad)}.ring.slow .disc{animation-duration:4.8s}.hero{display:flex;flex-direction:column;align-items:center;gap:20px}.hero.live{gap:18px}.speed{display:flex;flex-direction:column;gap:18px;align-items:inherit;margin-bottom:10px}.speed .btn-quiet{margin-top:2px}.row.mid{justify-content:center}.bpm-row{display:flex;align-items:center;gap:10px;width:100%;max-width:330px}.bpm-row input[type=range]{flex:1;min-width:0;height:var(--tap);accent-color:var(--accent)}.bpm-row .ib{font-size:22px;font-weight:600;background:var(--inset)}.solfa{--solfa-glyph: 1rem;display:block;padding:.7rem .6rem;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:.5rem;position:relative}.solfa-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem}.solfa-title{font-size:.95rem;font-weight:600}.solfa-key{font-size:.95rem;letter-spacing:.06em;text-transform:uppercase}.solfa-meter{font-size:.85rem;color:var(--ink-2)}.solfa-hint,.solfa-empty{margin:.4rem 0 0;font-size:.8rem;line-height:1.45;color:var(--ink-3)}.solfa-doh{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.solfa-body{margin-top:.2rem}.solfa-page+.solfa-page{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.solfa-line{margin-top:.7rem}.solfa-no{font-size:.7rem;line-height:1;color:var(--ink-3)}.solfa-grid{display:grid;grid-template-columns:repeat(var(--cols, 4),minmax(0,1fr)) auto;align-items:baseline;margin-top:.1rem}.solfa-name{grid-column:1 / -1;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.solfa-beat{font-size:var(--solfa-glyph);font-weight:600;line-height:1.5;white-space:pre;border-radius:.2rem}.solfa-beat.is-at{background:var(--inset)}.solfa-mark,.solfa-div,.solfa-end{font-weight:400;color:var(--ink-3)}.solfa-mark{padding-right:.2em}.solfa-end{font-size:var(--solfa-glyph);letter-spacing:-.1em}.solfa-probe{position:absolute;top:0;left:0;visibility:hidden;pointer-events:none;white-space:pre;font-size:var(--solfa-glyph);font-weight:600}.score-canvas{display:block;width:100%;height:62vw;max-height:15rem;background:var(--surface);border:1px solid var(--line);border-radius:.5rem;touch-action:none;-webkit-tap-highlight-color:transparent;cursor:crosshair}@supports (aspect-ratio: 3 / 2){.score-canvas{height:auto;max-height:none;aspect-ratio:3 / 2}}.plain{margin:var(--s-3) 0}.plain-bar{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-2);padding:var(--s-2) 0;border-top:1px solid var(--line)}.plain-bar:first-child{border-top:0}.plain-no{flex:0 0 1.6rem;color:var(--ink-3);font-size:var(--t-1);font-variant-numeric:tabular-nums}.plain-syl{font-family:var(--font-mono);font-size:var(--t-3);color:var(--ink);letter-spacing:.02em}.sketch{display:block;width:100%;height:min(44vh,360px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);touch-action:none;cursor:crosshair}@media(orientation:landscape)and (max-height:520px){.sketch{height:min(72dvh,320px)}}.sketch-settings{width:100%;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:var(--s-2);margin:var(--s-3) 0}.sketch-page{padding:0;overflow:hidden}.sketch-back{position:fixed;z-index:var(--z-sticky);top:calc(8px + env(safe-area-inset-top));left:8px;border-radius:var(--r-pill);background:var(--inset);color:var(--ink)}.stage{position:relative;width:100vw;margin-inline:calc(50% - 50vw);height:100dvh;min-height:320px;overflow:hidden}.stage .sketch{display:block;width:100%;height:100%;border-radius:0;border:0;background:transparent}.stage:fullscreen{height:100dvh}.stage:fullscreen .sketch{border-top:0}.sketch-tracks{position:absolute;z-index:2;top:calc(8px + env(safe-area-inset-top));right:8px;left:60px;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;pointer-events:none}.sketch-tracks::-webkit-scrollbar{display:none}.sketch-tracks[hidden]{display:none}.sketch-track{display:grid;width:128px;flex:none;gap:5px;padding:8px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface-glass, rgba(18, 20, 28, .78));opacity:.6;pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:opacity var(--dur-1, .12s) ease}.sketch-track.on{opacity:1;border-color:var(--line-strong)}.sketch-track.shut{width:auto;max-width:132px;padding:6px 10px}.sketch-track.add{display:grid;width:38px;padding:0;color:var(--ink-2);place-items:center}.sketch-track.add svg{width:18px;height:18px}.sketch-track.off{opacity:.32}.sketch-track:active{opacity:1}.track-name{display:flex;min-height:28px;align-items:center;gap:6px;padding:0;border:0;background:transparent;color:var(--ink);font-size:12px;font-weight:700;text-align:left}.track-name i{width:9px;height:9px;flex:none;border-radius:50%}.track-name span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track-name svg{width:12px;height:12px;flex:none;color:var(--ink-3)}.track-row{display:flex;align-items:center;gap:5px}.track-btn{display:grid;width:28px;height:26px;place-items:center;flex:none;border:1px solid var(--line);border-radius:var(--r-1, 7px);background:transparent;color:var(--ink-3);font-size:11px;font-weight:700}.track-btn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.track-btn svg{width:14px;height:14px}.track-row em{flex:1;font-style:normal;font-size:11px;color:var(--ink-3);text-align:right}.sketch-track input[type=range]{width:100%;height:22px;margin:0;accent-color:var(--accent)}.sketch-track.drums{width:auto;min-width:104px}.stage:fullscreen .sketch-tracks{opacity:.45}.tool-erase{display:grid;justify-items:center;gap:var(--s-1)}.tool-erase i{display:block;width:var(--s-1);height:calc(var(--hairline) * 2);border-radius:var(--r-pill);background:currentColor;transition:width var(--dur-1) var(--ease)}[data-erase=line] .tool-erase i{width:calc(var(--s-1) * 4)}@media(prefers-reduced-motion:reduce){.tool-erase i{transition:none}}.tool-swatch{display:block;width:20px;height:20px;border:2px solid var(--surface);border-radius:50%;box-shadow:0 0 0 1px var(--line-strong)}.plain-pen{display:flex;width:100%;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);color:var(--ink);text-align:left}.plain-pen .voice-chip{flex:none}.plain-pen strong{font-size:15px;font-weight:650}.plain-pen span{flex:1;font-size:13px;color:var(--ink-2)}.plain-pen.on{background:var(--ink);color:var(--paper)}.plain-pen.on span{color:var(--paper);opacity:.7}.cols{display:grid;gap:16px;padding-top:4px}.search{display:flex;align-items:center;gap:10px;height:48px;padding:0 14px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);color:var(--ink-3)}.search input{flex:1;border:0;background:transparent;outline:none;color:var(--ink);font-size:15px}.list{list-style:none;margin:0;padding:0}.item{display:flex;align-items:center;gap:12px;min-height:68px;border-bottom:1px solid var(--line)}.item a.t{flex:1;min-width:0;display:flex;align-items:center;gap:12px;color:var(--ink);padding:10px 0}.thumb{width:44px;height:44px;flex:none;border-radius:12px;background:var(--inset);display:flex;align-items:center;justify-content:center;color:var(--ink-2)}.tt{display:block;font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts{display:block;font-size:12.5px;color:var(--ink-3)}.act-d{display:none}.item .kc{flex:none}@media(min-width:600px){.act-d{display:flex}.act-m{display:none}}.confirm{padding:12px 0 14px;border-bottom:1px solid var(--line);display:grid;gap:10px}.safety{padding:16px;display:grid;gap:10px}.install{padding:16px;display:grid;gap:14px;background:linear-gradient(180deg,var(--accent-soft),transparent 80%),var(--surface);border-color:var(--accent-edge)}.step{display:flex;gap:12px;align-items:center;font-size:14px}.step .n{width:26px;height:26px;flex:none;border-radius:50%;border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.mini{margin-left:auto;width:84px;height:34px;flex:none;border-radius:8px;background:var(--inset);display:flex;align-items:center;justify-content:flex-end;padding:0 6px}.empty{text-align:center;display:grid;gap:10px;justify-items:center;padding:20px 8px 8px}.where{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-2)}@media(min-width:900px){.cols{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:28px}}.search input::placeholder{color:var(--ink-3)}.search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}button.card{appearance:none;-webkit-appearance:none;width:100%;text-align:left;font:inherit;color:inherit}.song{display:grid;gap:18px;padding-top:6px}.col-l,.col-r{display:grid;gap:16px}.shape{position:relative}.hint{position:absolute;left:12px;bottom:10px;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);background:var(--surface-glass);padding:4px 10px 4px 8px;border-radius:var(--r-pill)}.playrow{display:flex;align-items:center;gap:14px}.playbtn{width:72px;height:72px;border-radius:50%;border:0;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 8px var(--ink-faint)}.playbtn svg{width:28px;height:28px}.meta{display:flex;flex-wrap:wrap;gap:6px}.notes{padding:14px 16px 8px}.notes ol{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}.notes li{display:flex;align-items:baseline;gap:14px;min-height:40px;padding:6px 8px;border-radius:10px}.notes li.on{background:var(--inset)}.sys{display:flex;flex-wrap:wrap;gap:10px 14px;font-size:24px;font-weight:600;letter-spacing:.01em}.bl{color:var(--ink-3);font-weight:400}.sys{align-items:baseline}.sy{display:inline-block;position:relative}.sy sup,.sy sub{font-size:.62em;line-height:0;color:var(--ink)}.sy sup{vertical-align:.95em}.sy sub{vertical-align:-.35em}.sy.now sup,.sy.now sub{color:inherit}.sy.now{color:var(--sage);text-shadow:0 0 14px var(--sage-glow)}.notes .legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px;padding:10px 8px 6px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-3)}.notes .legend b{color:var(--ink);font-weight:600}.exports{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ex{min-height:96px;border-radius:var(--r-card);border:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:12px;text-align:left}.ex strong{font-size:15px;font-weight:600}.ex span{font-size:11.5px;line-height:1.3;color:var(--ink-3)}.more{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 16px;border-radius:var(--r-card);border:1px solid var(--line);background:transparent;width:100%;text-align:left}.more .mono{color:var(--ink-3);font-size:13px}.keeprow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}@media(min-width:900px){.song{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;gap:24px}.col-r{gap:18px}}.stave-wrap{overflow-x:auto;width:0;min-width:100%}.stave{display:block;color:var(--ink)}.stave-line,.stave-bar,.stave-stem{stroke:currentColor;stroke-width:1;fill:none}.stave-bar{stroke-width:1.4}.stave-head{fill:currentColor;stroke:none}.stave-head-open{fill:none;stroke:currentColor;stroke-width:1.6}.stave-flag{fill:none;stroke:currentColor;stroke-width:1.4}.stave-dot{fill:currentColor}.stave-clef{fill:currentColor;font-size:30px}.stave-acc{fill:currentColor;font-size:13px}.stave-rest{fill:currentColor;font-size:15px;text-anchor:middle}.stave-head.now{fill:var(--sage);stroke:var(--sage)}.stave-head-open.now{fill:none;stroke:var(--sage)}.layout{display:grid;gap:16px;padding-top:6px}.side{display:grid;gap:16px}.fix{padding:16px;display:grid;gap:14px;background:linear-gradient(180deg,var(--accent-soft),transparent 70%),var(--surface);border-color:var(--accent-edge)}.stepper{display:flex;align-items:center;justify-content:space-between;gap:10px}.stepper button{min-width:76px;min-height:56px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--inset);color:var(--ink);font-size:15px;font-weight:650;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.stepper button small{font-size:10.5px;color:var(--ink-3);font-weight:500}.stepper .key{text-align:center}.stepper .key b{display:block;font:600 34px/1 var(--mono);letter-spacing:-.02em}.keyline{display:flex;gap:8px;flex-wrap:wrap}.side .legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink-2)}.side .legend span{display:inline-flex;align-items:center;gap:6px}.score{padding:14px 6px 16px}.score .solfa{border:0;background:transparent;padding:0}.score .solfa-head,.score .solfa-doh,.score .solfa-hint{display:none}@media(min-width:900px){.layout{grid-template-columns:340px minmax(0,1fr);align-items:start;gap:24px}.side{position:sticky;top:16px}.score .solfa{--solfa-glyph:1.15rem}}.practice-page .sing{gap:16px;justify-content:center;min-height:calc(100dvh - 190px)}.practice-page .actions{margin-top:6px}.practice-page .seg{width:100%;max-width:340px}.practice-meter{display:grid;width:100%;max-width:340px;justify-items:center;gap:4px}.practice-big{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}.practice-big.good{color:var(--ok)}.practice-line{min-height:18px;font-size:13px;color:var(--ink-2);text-align:center}.gauge{display:grid;width:100%;max-width:320px;gap:8px;justify-items:center}.gauge-names{display:flex;width:100%;align-items:baseline;justify-content:center;gap:18px}.gauge-side{min-width:42px;font-size:15px;color:var(--ink-3);text-align:center}.gauge-note{min-width:86px;font-size:38px;font-weight:700;color:var(--ink);text-align:center;letter-spacing:-.02em}.gauge.in .gauge-note{color:var(--ok)}.gauge-bar{position:relative;width:100%;height:34px}.gauge-scale{display:flex;height:100%;align-items:center;justify-content:space-between}.gauge-scale .tick{width:1px;height:9px;background:var(--line-strong)}.gauge-scale .tick.mid{height:20px;background:var(--ink-3)}.gauge-needle{position:absolute;top:2px;width:3px;height:30px;margin-left:-1.5px;border-radius:2px;background:var(--warn);transition:left var(--dur-1, .12s) linear,background var(--dur-1, .12s) linear}.gauge.in .gauge-needle{background:var(--ok)}.gauge-cents{font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}.gauge.in .gauge-cents{color:var(--ok)}.dead{max-width:460px;margin:0 auto;padding:40px 22px 0;display:grid;gap:16px}.linkbox{display:flex;gap:8px;align-items:center}.linkbox code{flex:1;min-width:0;height:48px;display:flex;align-items:center;padding:0 14px;border-radius:var(--r-card);background:var(--inset);color:var(--ink-2);font:14px var(--mono);overflow:hidden;white-space:nowrap}@media(min-width:900px){.dead{padding-top:100px}}.app.blocked{padding:0}.linkbox code::selection{background:var(--select-bg);color:var(--ink)}
