:root{--font:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--bg:#fafaf8;--surface:#fff;--surface-2:#f3f1ec;--border:#e2ded5;--text:#1c1b1a;--muted:#5d5a54;--accent:#3a2e8f;--accent-ink:#fff;--focus:#2d6fd6;--error:#b3261e;--board:#f1eee7;--board-edge:#d6d2c8;--fret:#c2bdb2;--string:#6e6a63;--nut:#2a2826;--inlay:#dcd7cc;--fret-num:#9a968d;--deg-1:#3a2e8f;--deg-1-ink:#fff;--deg-1-edge:#1f175c;--deg-2:#0e7c7e;--deg-2-ink:#fff;--deg-2-edge:#075253;--deg-3:#cf2440;--deg-3-ink:#fff;--deg-3-edge:#8e1226;--deg-4:#f2a516;--deg-4-ink:#2a1a00;--deg-4-edge:#a86a04;--deg-5:#2f8a3e;--deg-5-ink:#fff;--deg-5-edge:#1b5e27;--deg-6:#2d62c8;--deg-6-ink:#fff;--deg-6-edge:#1a3f87;--deg-7:#c2187f;--deg-7-ink:#fff;--deg-7-edge:#7e0c52;--cof-major:#f3f1ec;--cof-minor:#e9e6de;--cof-dim:#dfdbd2;--cof-key:#e4e0f7;--cof-key-strong:#cfc8f2;--play:#c6f01c;--play-ink:#141a05;--radius:12px;--shadow:0 1px 2px #0000000d, 0 2px 8px #0000000a}:root[data-theme=dark]{--play:#d4ff2e;--play-ink:#141a05;--bg:#121214;--surface:#1a191d;--surface-2:#232227;--border:#33313a;--text:#eeebe6;--muted:#a9a4ad;--accent:#8f83f5;--accent-ink:#121214;--focus:#7fb0ff;--error:#ff8a80;--board:#1f1e22;--board-edge:#34323a;--fret:#4a4750;--string:#a29da6;--nut:#e6e1d6;--inlay:#2f2d34;--fret-num:#7d7883;--deg-1:#7d6ff2;--deg-1-ink:#fff;--deg-1-edge:#b4aafa;--deg-2:#2bb3b5;--deg-2-ink:#062425;--deg-2-edge:#86dcdd;--deg-3:#e5435a;--deg-3-ink:#fff;--deg-3-edge:#f58a99;--deg-4:#f5b23a;--deg-4-ink:#2a1a00;--deg-4-edge:#fad08a;--deg-5:#43b95a;--deg-5-ink:#08230e;--deg-5-edge:#8bdb9a;--deg-6:#5b8df0;--deg-6-ink:#0b1a38;--deg-6-edge:#a6c2f8;--deg-7:#de4aa6;--deg-7-ink:#fff;--deg-7-edge:#f094cc;--cof-major:#232227;--cof-minor:#1d1c21;--cof-dim:#18171b;--cof-key:#2e2a4d;--cof-key-strong:#3e3870;--shadow:none}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}h1,h2,h3{margin:0;line-height:1.2}h1{letter-spacing:-.02em;font-size:clamp(1.75rem,3vw + 1rem,2.75rem)}h2{font-size:1.15rem}h3{margin-top:18px;font-size:.95rem}p{margin:0}a{color:var(--accent)}code{font-family:var(--mono);font-size:.9em}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:.85rem}.tabular{font-variant-numeric:tabular-nums;font-family:var(--mono)}.splash{min-height:100vh;color:var(--muted);place-items:center;display:grid}button{font:inherit;color:inherit}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 16px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.1)}.btn-ghost{background:0 0;border-color:#0000}.btn-small{min-height:36px;padding:0 12px;font-size:.9rem}.btn-google{background:var(--surface);width:100%}.btn-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.link-btn{color:var(--accent);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:500;text-decoration:underline}.icon-btn{cursor:pointer;width:40px;height:40px;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;min-height:44px;padding:0 12px}input[type=range]{min-height:auto;accent-color:var(--accent);padding:0}select{padding-right:32px}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;min-width:40px;min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;padding:0 12px;font-weight:500;display:inline-flex}.segmented button[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}:root[data-theme=dark] .segmented button[aria-checked=true]{background:var(--border)}.topbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px clamp(16px,3vw,32px);display:flex}.topbar-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.brand{color:var(--text);align-items:center;gap:10px;font-size:1.15rem;font-weight:700;text-decoration:none;display:inline-flex}.dev-banner{background:color-mix(in srgb, var(--deg-4) 18%, var(--surface));border-bottom:1px solid var(--border);padding:8px clamp(16px,3vw,32px);font-size:.85rem}.main{flex-direction:column;gap:20px;padding:20px clamp(16px,3vw,32px) 48px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.user-menu{align-items:center;gap:10px;display:flex}.avatar{background:var(--deg-1);width:32px;height:32px;color:var(--deg-1-ink);object-fit:cover;border-radius:50%;place-items:center;font-size:.9rem;font-weight:700;display:grid}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:18ch;font-weight:500;overflow:hidden}@media (width<=640px){.user-name{display:none}}.controls{flex-direction:column;gap:16px;display:flex}.control{flex-direction:column;gap:6px;display:flex}.control-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:600}.control-row{flex-wrap:wrap;align-items:flex-end;gap:16px 24px;display:flex}.key-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;display:grid}@media (width<=720px){.key-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}.key-btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;min-height:44px;font-size:1rem;font-weight:600}.key-btn:hover{background:var(--surface-2)}.key-btn[aria-checked=true]{background:var(--deg-1);color:var(--deg-1-ink);border-color:#0000}.inline-control{align-items:center;gap:8px;display:inline-flex}.inline-control select{min-height:36px}.jam-view{border:0;min-width:0;margin:0;padding:0}.jam-view legend{margin-bottom:6px;padding:0}.jam-toggles{flex-wrap:wrap;align-items:center;gap:6px 14px;min-height:36px;display:flex}.jam-toggles input{width:18px;height:18px;min-height:0;margin:0}.scale-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px 32px;display:flex}.scale-head p{max-width:60ch;margin-top:6px}.legend{flex-wrap:wrap;gap:10px 18px;margin:0;padding:0;list-style:none;display:flex}.legend li{align-items:center;gap:8px;display:flex}.legend-dot{border-radius:50%;place-items:center;width:40px;height:40px;font-weight:700;display:grid}.legend-text{flex-direction:column;line-height:1.2;display:flex}.legend-text strong{font-family:var(--mono)}.deg-1{--c:var(--note-1,var(--deg-1));--ink:var(--note-1-ink,var(--deg-1-ink));--edge:var(--note-1-edge,var(--deg-1-edge))}.deg-2{--c:var(--note-2,var(--deg-2));--ink:var(--note-2-ink,var(--deg-2-ink));--edge:var(--note-2-edge,var(--deg-2-edge))}.deg-3{--c:var(--note-3,var(--deg-3));--ink:var(--note-3-ink,var(--deg-3-ink));--edge:var(--note-3-edge,var(--deg-3-edge))}.deg-4{--c:var(--note-4,var(--deg-4));--ink:var(--note-4-ink,var(--deg-4-ink));--edge:var(--note-4-edge,var(--deg-4-edge))}.deg-5{--c:var(--note-5,var(--deg-5));--ink:var(--note-5-ink,var(--deg-5-ink));--edge:var(--note-5-edge,var(--deg-5-edge))}.deg-6{--c:var(--note-6,var(--deg-6));--ink:var(--note-6-ink,var(--deg-6-ink));--edge:var(--note-6-edge,var(--deg-6-edge))}.deg-7{--c:var(--note-7,var(--deg-7));--ink:var(--note-7-ink,var(--deg-7-ink));--edge:var(--note-7-edge,var(--deg-7-edge))}.legend-dot{background:var(--c);color:var(--ink);border:2px solid var(--edge)}.palette-picker{position:relative}.palette-picker summary{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;align-items:center;gap:10px;min-height:44px;padding:0 12px;font-weight:500;list-style:none;display:inline-flex}.palette-picker summary::-webkit-details-marker{display:none}.palette-picker summary:after{content:"▾";color:var(--muted);font-size:.8rem}.palette-picker summary:hover{background:var(--surface-2)}.palette-menu{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:2px;width:min(380px,100vw - 32px);max-height:min(70vh,560px);padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 10px 30px #0000002e}.palette-option{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:12px;padding:8px 10px;display:flex}.palette-option:hover{background:var(--surface-2)}.palette-option[aria-checked=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--surface))}.palette-text{flex-direction:column;gap:2px;line-height:1.25;display:flex}.pal-swatches{flex:none;gap:3px;display:inline-flex}.pal-dot{background:var(--c);border:2px solid var(--edge);border-radius:50%;width:16px;height:16px}.board-card{padding:12px 8px}.board-scroll{overflow-x:auto}.fretboard{width:100%;min-width:960px;height:auto;font-family:var(--font);display:block}.board-note{padding:4px 12px 0}.fb-board{fill:var(--board);stroke:var(--board-edge)}.fb-fret{stroke:var(--fret);stroke-width:2px}.fb-nut{fill:var(--nut)}.fb-string{stroke:var(--string)}.fb-inlay{fill:var(--inlay)}.fb-num text{fill:var(--fret-num);font-family:var(--mono);font-size:13px}.fb-num.strong text{fill:var(--text);font-weight:600}.fb-string-label{fill:var(--text);font-size:17px;font-weight:700}.fb-dot circle{fill:var(--c);stroke:var(--edge);stroke-width:2px}.fb-dot text{fill:var(--ink);pointer-events:none;font-weight:700}.fb-dot .ring{fill:none;stroke:var(--c);stroke-width:2.5px}.fb-dot.dim{opacity:.2}.fb-dot.chord circle:not(.ring){stroke:var(--text);stroke-width:3px}.fb-dot.outside circle{fill:var(--surface);stroke:var(--text);stroke-width:2px;stroke-dasharray:4 3}.fb-dot.outside text{fill:var(--text)}.theory-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:20px;display:grid}@media (width<=960px){.theory-grid{grid-template-columns:minmax(0,1fr)}}.side-col{flex-direction:column;gap:20px;min-width:0;display:flex}.circle-card p{margin-bottom:8px}.cof{width:100%;max-width:calc(100vh - 32px);height:auto;font-family:var(--font);margin:0 auto;display:block}.cof-seg{cursor:pointer;outline:none}.cof-seg path{stroke:var(--surface);stroke-width:2px;transition:fill .12s}.cof-seg.major path{fill:var(--cof-major)}.cof-seg.minor path{fill:var(--cof-minor)}.cof-seg.diminished path{fill:var(--cof-dim)}.cof-seg.in-key path{fill:var(--cof-key)}.cof-seg.tonic path{fill:var(--cof-key-strong)}.cof-seg:hover path{fill:color-mix(in srgb, var(--accent) 22%, var(--surface))}.cof-seg.selected path{fill:var(--accent)}.cof-seg:focus-visible path{stroke:var(--focus);stroke-width:3px}.cof-seg text{fill:var(--text);pointer-events:none;font-weight:600}.cof-seg .numeral{fill:var(--muted);font-family:var(--mono);font-weight:500}.cof-seg .alt{fill:var(--muted);font-weight:500}.cof-seg.selected text{fill:var(--accent-ink)}.cof-seg .in-prog{fill:var(--deg-7)}.cof-wedge{fill:none;stroke:var(--accent);stroke-width:2.5px;pointer-events:none}.cof-center circle{fill:var(--surface);stroke:var(--border)}.cof-center text{fill:var(--text)}.cof-center text+text{fill:var(--muted)}.chip{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;min-width:56px;min-height:52px;padding:4px 10px;line-height:1.2;display:inline-flex}.chip:hover{background:var(--surface-2)}.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:#0000}.chip[aria-pressed=true] .numeral{color:inherit}.chip .numeral{font-family:var(--mono);color:var(--muted);font-size:.8rem}.chip span:last-child{font-weight:600}.diatonic-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.chord-panel h2{font-size:1.5rem}.chord-panel .panel-head{flex-wrap:nowrap}.tones{gap:16px;margin:12px 0;padding:0;list-style:none;display:flex}.tones li{flex-direction:column;align-items:center;gap:4px;display:flex}.tone-dot{border:3px solid var(--text);background:var(--surface);border-radius:50%;place-items:center;width:44px;height:44px;font-weight:700;display:grid}.suggestions{flex-direction:column;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.prog-chips{flex-wrap:wrap;gap:8px;margin:8px 0 12px;padding:0;list-style:none;display:flex}.prog-chips li{position:relative}.prog-chips li.playing .chip{background:var(--deg-4);color:var(--deg-4-ink);border-color:#0000}.prog-chips li.playing .numeral{color:inherit}.chip-x{border:1px solid var(--border);background:var(--surface);cursor:pointer;width:24px;height:24px;color:var(--muted);border-radius:50%;place-items:center;font-size:15px;line-height:1;display:grid;position:absolute;top:-8px;right:-8px}.chip-x:hover{color:var(--text)}.add-row{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.chat-card{flex-direction:column;gap:12px;display:flex}.chat-card .panel-head{margin-bottom:0}.chat-status{margin:-4px 0 0}.chat-status .tabular{font-size:.8rem}.chat-settings .chat-key{flex-direction:column;grid-column:1/-1;gap:6px;min-width:0;display:flex}.chat-key-saved{flex-wrap:wrap;align-items:center;gap:4px;min-height:44px;display:flex}.chat-key-saved code{font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 10px}.chat-settings{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;padding:12px;display:grid}.chat-settings label{flex-direction:column;gap:6px;min-width:0;display:flex}.chat-settings .control-label a{text-transform:none;letter-spacing:0}.chat-settings-foot{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px 12px;display:flex}.chat-settings-foot .inline-control{flex-direction:row}.chat-settings-foot input[type=checkbox]{width:18px;height:18px;min-height:0}.chat-settings-foot .hint{flex-basis:100%;margin:0}.chat-thread{overscroll-behavior:contain;flex-direction:column;gap:10px;min-height:72px;max-height:min(40vh,420px);padding:4px 2px;display:flex;overflow-y:auto}.chat-starters{flex-wrap:wrap;gap:8px;margin:auto 0;display:flex}.chat-starter{text-align:left;height:auto;color:var(--muted);padding:8px 12px}.chat-msg{overflow-wrap:anywhere;border-radius:14px;max-width:min(78ch,92%);padding:10px 14px;line-height:1.5}.chat-msg.user{background:var(--accent);color:var(--accent-ink);white-space:pre-wrap;border-bottom-right-radius:4px;align-self:flex-end}.chat-msg.assistant{background:var(--surface-2);border-bottom-left-radius:4px;align-self:flex-start}.md p,.md ul,.md ol{margin:0}.md>*+*{margin-top:8px}.md ul,.md ol{padding-left:20px}.md code{font-family:var(--mono);background:var(--surface);border-radius:4px;padding:1px 4px;font-size:.9em}.chat-typing{background:radial-gradient(circle, var(--muted) 2px, transparent 2.5px) 0 50% / 9px 100% repeat-x;width:28px;height:10px;animation:1s steps(3,end) infinite chat-typing;display:inline-block}@keyframes chat-typing{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@media (prefers-reduced-motion:reduce){.chat-typing{animation:none}}.chat-error{color:var(--error);align-self:flex-start;margin:0;font-size:.9rem}.chat-notice{align-self:flex-start;margin:0;font-style:italic}.chat-action{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-wrap:wrap;align-self:flex-start;align-items:center;gap:8px 12px;max-width:100%;padding:10px 14px;display:flex}.chat-progression{flex-direction:column;align-items:stretch}.chat-progression-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.chat-progression .prog-chips,.chat-progression p{margin:0}.chat-composer{gap:8px;display:flex}.chat-composer input{flex:1;min-width:0}@media (width<=760px){.chat-settings{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){.chat-thread{max-height:50vh}.chat-msg{max-width:100%}}input[type=range]{min-height:0;accent-color:var(--accent);background:0 0;border:0;padding:0}.tempo input[type=range]{width:170px}.amp-dialog{border:1px solid var(--border);background:var(--surface);width:min(540px,100% - 32px);max-height:calc(100vh - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 12px 48px #00000047}.amp-dialog::backdrop{background:#00000073}.amp-body{flex-direction:column;gap:14px;padding:20px;display:flex}.amp-body .panel-head{flex-wrap:nowrap;margin-bottom:0}.amp-group{border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:10px;margin:0;padding:10px 14px 14px;display:flex}.amp-group legend{padding:0 6px}.amp-row{grid-template-columns:7.5rem minmax(0,1fr) 6rem;align-items:center;gap:12px;display:grid}.amp-row output{text-align:right;color:var(--muted);font-size:.85rem}.amp-done{margin-left:auto}@media (width<=480px){.amp-row{grid-template-columns:minmax(0,1fr) 5rem;gap:4px 10px}.amp-row>span{grid-column:1/-1}}.ex-dialog{border:1px solid var(--border);background:var(--bg);width:min(1000px,100% - 32px);max-height:calc(100vh - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 12px 48px #00000047}.ex-dialog::backdrop{background:#00000073}.ex-body{flex-direction:column;gap:12px;max-height:calc(100vh - 34px);padding:20px;display:flex}.ex-body .panel-head{flex-wrap:nowrap;margin-bottom:0}.ex-filters{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.ex-filters .segmented button{min-height:36px;padding:0 12px;font-size:.85rem}.ex-filters input[type=search]{flex:1;min-width:160px;min-height:36px}.ex-styles{flex-wrap:wrap;gap:6px;display:flex}.chip.ex-style{flex-direction:row;min-width:0;min-height:32px;padding:4px 12px;font-weight:600}.chip.ex-style[aria-checked=true]{background:var(--accent);color:var(--accent-ink);border-color:#0000}.ex-list{flex-direction:column;gap:14px;min-height:120px;padding-right:4px;display:flex;overflow-y:auto}.ex-pack{align-items:center;gap:8px;margin:0 0 8px;font-size:.95rem;display:flex}.ex-access{text-transform:uppercase;letter-spacing:.06em;background:color-mix(in srgb, var(--deg-5) 20%, var(--surface));border-radius:999px;padding:2px 8px;font-size:.7rem}.ex-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.ex-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:6px;padding:14px;display:flex}.ex-card h3{margin:0;font-size:1rem}.ex-card p{margin:0}.ex-card .btn-row{margin-top:auto;padding-top:4px}.ex-tags{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);flex-wrap:wrap;gap:8px;font-size:.72rem;font-weight:600;display:flex}.ex-kind{color:var(--accent)}.ex-kind.lick{color:var(--deg-7)}.ex-meta{color:var(--muted)}.ex-why{color:var(--text)}.ex-level{align-items:center;gap:6px;display:inline-flex}.ex-dots{gap:3px;display:inline-flex}.ex-dots i{border:1.5px solid;border-radius:50%;width:7px;height:7px}.ex-dots i.on{background:currentColor}.ex-key{margin-top:auto;padding-top:4px}.ex-key select{min-height:32px;padding:0 6px}.ex-key+.btn-row{margin-top:0}.ex-filters input[type=checkbox]{width:18px;height:18px;min-height:0;margin:0}.ex-scale{border-top:1px solid var(--border);padding-top:8px}.ex-scale input{width:18px;height:18px;min-height:0}.board-stack{min-width:960px;position:relative}.board-stack .fretboard{min-width:0}.fb-marks{pointer-events:none;width:100%;height:100%;font-family:var(--font);position:absolute;inset:0}.fb-mark.shape{fill:none;stroke:var(--play);stroke-width:3px;opacity:.8}.fb-mark.next{fill:none;stroke:var(--text);stroke-width:3.5px;stroke-dasharray:7 5;opacity:.85}.fb-mark.now .body{fill:var(--play);stroke:var(--text);stroke-width:4px}.fb-mark.now .glow{fill:var(--play);stroke:none;opacity:.45}.fb-mark.now text{fill:var(--play-ink);font-weight:800}.fb-mark.now .pulse{fill:none;stroke:var(--play);stroke-width:5px;transform-box:fill-box;transform-origin:50%;animation:.55s ease-out forwards fb-pulse}@keyframes fb-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}.fb-mark-arrow{stroke:var(--text);stroke-width:3px;stroke-dasharray:8 6;stroke-linecap:round;opacity:.75}.fb-arrow-head{fill:var(--text);opacity:.75}@media (prefers-reduced-motion:reduce){.fb-mark.now .pulse{opacity:0;animation:none}}.fb-mark .bend path{fill:none;stroke:var(--text);stroke-width:2.5px}.fb-mark .bend path.head{fill:var(--text);stroke:none}.fb-mark .bend text{fill:var(--text);font-size:15px;font-weight:600}.fb-tone{fill:none;stroke:var(--text);stroke-width:2.5px;opacity:.7}.fb-tone.root{stroke-width:5px;opacity:.9}.study-row{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;display:grid}.study-row:empty{display:none}.study-row.split{grid-template-columns:minmax(0,3fr) minmax(320px,2fr)}@media (width<=1100px){.study-row.split{grid-template-columns:minmax(0,1fr)}}.tab-card{flex-direction:column;gap:10px;min-width:0;display:flex}.tab-card .panel-head{flex-wrap:nowrap;margin-bottom:0}.tab-why{margin:0}.tab-toolbar{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.tab-toolbar .segmented button{min-height:36px;padding:0 10px;font-size:.85rem}.tab-toolbar select{min-height:36px;padding:0 8px}.tab-examples{margin-left:auto}.tab-scroll{overscroll-behavior:contain;max-height:min(60vh,560px);overflow:auto}.tab-empty{flex-direction:column;gap:10px;display:flex}.tab-svg{font-family:var(--mono);display:block}.tab-svg text{fill:var(--text)}.tab-line{stroke:var(--string);stroke-width:1px;opacity:.55}.tab-bar{stroke:var(--text);stroke-width:1.2px}.tab-bar.end{stroke-width:3px}.tab-barnum{font-size:9px;fill:var(--muted)!important}.tab-clef{font-size:11px;font-weight:700;fill:var(--muted)!important}.tab-note{cursor:pointer;outline:none}.tab-note rect{fill:var(--surface)}.tab-note text{font-size:12px;font-weight:600}.tab-note.tied text{fill:var(--muted);font-weight:500}.tab-note:hover rect,.tab-note:focus-visible rect{fill:var(--surface-2);stroke:var(--focus)}.tab-note.now rect{fill:var(--play);stroke:var(--text);stroke-width:1.5px}.tab-note.now text{fill:var(--play-ink)}.tab-cursor{fill:var(--play);opacity:.3}.tab-stem,.tab-flag,.tab-beam{stroke:var(--text);fill:none}.tab-stem{stroke-width:1.2px}.tab-flag{stroke-width:1.4px}.tab-beam{stroke-width:3px}.tab-dot,.tab-rest rect,.tab-rest circle{fill:var(--text)}.tab-rest path{fill:none;stroke:var(--text);stroke-width:1.5px;stroke-linejoin:round}.tab-tuplet,.tab-tech{font-size:9px;fill:var(--muted)!important}.tab-tech.ring{font-style:italic}.tab-pm-line{stroke:var(--muted);stroke-dasharray:3 3}.tab-slur path,.tab-slide,.tab-vibrato,.tab-bend path{fill:none;stroke:var(--text);stroke-width:1.3px}.tab-slur text{font-size:8px;fill:var(--muted)!important}.tab-bend path.head{fill:var(--text);stroke:none}.tab-bend text{font-size:9px;font-weight:600}.tab-accent{font-size:11px;font-weight:700}.tab-chord{font-family:var(--font);font-size:12px;font-weight:700;fill:var(--accent)!important}@media (prefers-reduced-motion:reduce){.tab-scroll{scroll-behavior:auto}}.add-row .btn{font-family:var(--mono)}.auth-page{flex-direction:column;min-height:100vh;display:flex}.auth-top{justify-content:space-between;align-items:center;padding:16px clamp(16px,3vw,32px);display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);width:min(440px,100% - 32px);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:16px;margin:4vh auto 48px;padding:28px;display:flex}.auth-card h1{font-size:1.75rem}.form{flex-direction:column;gap:14px;display:flex}.form label{flex-direction:column;gap:6px;font-size:.95rem;font-weight:500;display:flex}.label-row{justify-content:space-between;align-items:baseline;display:flex}.label-row a{font-size:.85rem;font-weight:400}.hint{color:var(--muted);font-size:.8rem;font-weight:400}.error{color:var(--error);font-size:.9rem}.notice{background:color-mix(in srgb, var(--deg-4) 16%, var(--surface));border:1px solid color-mix(in srgb, var(--deg-4) 40%, var(--border));border-radius:10px;padding:10px 12px;font-size:.85rem}.divider{color:var(--muted);align-items:center;gap:12px;font-size:.85rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-footer{text-align:center;color:var(--muted);font-size:.95rem}
