.app{max-width:1240px;margin:0 auto}@keyframes page-in{0%{opacity:0}to{opacity:1}}.toc,.write-tab,.library,.studies{animation:.14s ease-out page-in}.toc-chapter,.jump-target{scroll-margin-top:62px}.appbar{padding:4px var(--pad);border-bottom:var(--border-thing);z-index:20;background:var(--paper);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.wordmark-seal{border:2px solid var(--accent);background:var(--paper);padding:3px;display:inline-flex}.wordmark-btn{min-height:var(--target);font:inherit;color:inherit;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.wordmark-btn:active{opacity:.7}.wordmark-ring{border:1.5px solid var(--accent);align-items:center;padding:4px 14px 3px;display:inline-flex}.wordmark{font-family:var(--font-display);letter-spacing:.05em;color:var(--ink);font-size:20px;line-height:1}.wordmark span{color:var(--accent-text)}.appbar-actions{align-items:center;gap:var(--space-2);flex:none;display:flex}.mute-btn{min-width:var(--target);min-height:var(--target);color:var(--ink);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.mute-btn.on{color:var(--accent-text)}.share-btn{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);padding:0 var(--space-2);background:0 0;border:0;align-items:center;display:flex}.app-tabs{border-bottom:var(--border-thing);grid-template-columns:repeat(3,1fr);display:grid}.app-tab{min-height:56px;font-family:var(--font-display);letter-spacing:.12em;color:var(--ink-soft);border:0;border-right:1px solid var(--ink);background:0 0;justify-content:center;align-items:center;gap:7px;padding:0 18px;font-size:15px;display:inline-flex}.app-tab:last-child{border-right:0}.app-tab.active{background:var(--ink);color:var(--card)}.label{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.stamp{border:2px solid var(--accent);color:var(--accent-text);font-family:var(--font-display);letter-spacing:.18em;background:var(--card);padding:4px 11px 3px;font-size:13px;display:inline-block;transform:rotate(-1.6deg)}.study-top{justify-content:space-between;align-items:center;gap:var(--space-2);margin:4px var(--pad) 0;display:flex}.study-top-actions{align-items:center;gap:2px;display:flex}.study-top-actions .star-btn:last-child{padding-right:0}.star-btn{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;background:var(--card);color:var(--muted-ink);border:1.5px solid var(--ink);align-items:center;gap:7px;padding:0 14px;display:inline-flex}.star-btn.on{color:var(--accent-text);border-color:var(--accent)}.back-link{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;color:var(--accent-text);padding:0 var(--space-2) 0 0;background:0 0;border:0;align-items:center;margin:0;display:flex}.back-link:active{opacity:.6}.study{padding:4px var(--pad) 10px;justify-content:space-between;align-items:center;gap:12px;display:flex}.study .l{min-width:0}.study .l .stamp{margin-bottom:13px}.study h1{overflow-wrap:break-word;font-family:var(--font-display);font-weight:400;font-size:var(--text-display-m);letter-spacing:.02em;line-height:1.05}.study .roman{color:var(--accent-text);letter-spacing:.06em;margin-top:6px;font-size:12px;font-weight:700}.study h1+.roman{margin-top:2px}.keybtn{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--card);color:var(--muted-ink);border:var(--border-thing);text-align:left;flex:none;padding:0 12px;line-height:1.35}.keybtn b{color:var(--ink);font-size:13px;display:block}.keybtn[aria-expanded=true]{background:var(--ink);color:var(--card)}.chart{margin:0 var(--pad);border:var(--border-thing);background:0 0}.chart-h{border-bottom:var(--border-within);justify-content:space-between;align-items:baseline;padding:11px 12px 10px;display:flex}.chart-h .t{font-family:var(--font-display);letter-spacing:.16em;white-space:nowrap;font-size:15px}.chart-h i{font-size:var(--text-label);color:var(--ink-soft);text-transform:none;letter-spacing:.02em;text-align:right;font-weight:400}.bars{background:var(--surface);display:grid}.bar{border-right:var(--border-within);text-align:center;min-height:90px;font:inherit;color:inherit;background:0 0;border-top:0;border-bottom:0;border-left:0;padding:17px 4px 15px;position:relative}.bar:nth-child(4n){border-right:0}.bar.wrapped{border-top:var(--border-within)}.bar .deg{font-weight:700;font-size:var(--text-label);letter-spacing:.1em;color:var(--accent-text);margin-bottom:6px;display:block}.bar .sym{font-family:var(--font-display);white-space:nowrap;margin:2px 0;font-size:clamp(24px,8vw,44px);line-height:1;display:block;overflow:hidden}.bar .cnt{font-weight:700;font-size:var(--text-label);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;display:block}.bar[aria-selected=true]{background:var(--ink)}.bar[aria-selected=true] .sym{color:var(--card)}.bar[aria-selected=true] .deg,.bar[aria-selected=true] .cnt{color:var(--rule)}.bar .cnt.sounds{color:var(--accent-text);text-transform:none;letter-spacing:.04em}.bar[aria-selected=true] .cnt.sounds{color:var(--accent)}.follow-sounds{letter-spacing:.06em;color:var(--accent-text);margin-top:-2px;font-size:13px;font-weight:700}.bar.beat{background:var(--accent-wash)}.bar.beat:after{content:"";background:var(--accent);height:3px;position:absolute;bottom:5px;left:9px;right:9px}.bar[aria-selected=true].beat{background:var(--ink)}.bar[data-empty][aria-selected=true]{background:var(--accent-wash);box-shadow:inset 0 0 0 2px var(--accent)}.bar[data-empty][aria-selected=true] .sym{color:var(--muted-ink)}.bar[data-empty][aria-selected=true] .deg,.bar[data-empty][aria-selected=true] .cnt{color:var(--accent-dark)}@keyframes stamp-settle{0%{box-shadow:inset 0 0 0 3px var(--accent);transform:scale(1.05)}to{box-shadow:inset 0 0 0 0 var(--accent);transform:none}}.bar.swapped{animation:.2s ease-out stamp-settle}.transport{gap:var(--space-2);border-top:var(--border-thing);flex-wrap:wrap;padding:15px 10px 16px;display:flex}.play{min-width:160px;min-height:52px;font-family:var(--font-display);letter-spacing:.14em;background:var(--accent);color:#fff;border:var(--border-thing);box-shadow:var(--shadow-press);flex:1;font-size:17px}.play:active{box-shadow:none;transform:translate(2px,2px)}.tog{min-height:52px;min-width:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--card);color:var(--muted-ink);border:var(--border-thing);padding:0 14px}.tempo{border-top:1px solid var(--rule);align-items:stretch;gap:0;margin:0 10px;padding:6px 0 8px;display:flex}.tempo .label{flex:none;align-self:center}.step{min-width:34px;min-height:var(--target);font-family:var(--font-display);background:var(--card);color:var(--ink);border:var(--border-thing);font-size:20px}.step:active{background:var(--ink);color:var(--card)}.tempo .val{border:var(--border-within);font-family:var(--font-display);flex:1;justify-content:center;align-items:center;gap:6px;font-size:20px;display:flex}.tempo .val small{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);color:var(--ink-soft)}.settings{margin:10px var(--pad) 0;border:0;border-top:1px solid var(--divider);background:0 0;display:none}.settings.open{display:block}.set-row{padding:13px 0}.set-row+.set-row{border-top:1px solid var(--divider)}.set-row .label{margin-bottom:8px;display:block}.set-row .pill,.pal-roots .pill{background:var(--ink-wash);color:var(--ink);border:0}.set-row .pill[aria-pressed=true],.pal-roots .pill[aria-pressed=true]{background:var(--ink);color:var(--card)}.scroller{gap:var(--space-2);scrollbar-width:none;flex-wrap:wrap;margin:0;padding:0;display:flex;overflow:visible}.scroller::-webkit-scrollbar{display:none}.pill{min-width:var(--target);min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-chip);background:var(--paper);color:var(--ink);border:1.5px solid var(--ink);flex:none;padding:0 10px}.pill[aria-pressed=true]{background:var(--ink);color:var(--card)}.memo{margin:var(--space-5) var(--pad) 0;border-left:2px solid var(--accent);background:var(--surface-bright);padding:13px 16px}.memo .label{color:var(--accent-text);margin-bottom:3px;display:block}.memo p{font-style:italic;font-size:var(--text-caption);margin:0;line-height:1.5}.heard{margin:var(--space-4) var(--pad) 0}.heard .label{margin-bottom:6px;display:block}.songlist{border-top:1.5px solid var(--ink);margin:0;padding:0;list-style:none}.songlist li{border-bottom:1px dashed var(--rule);font-size:var(--text-body);justify-content:space-between;align-items:baseline;gap:12px;padding:12px 2px;display:flex}.songlist .a{font-weight:700;font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}.delete-prog-btn{min-height:var(--target);margin:var(--space-3) var(--pad) 0;font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--card);color:var(--accent-text);border:1.5px solid var(--accent);padding:0 16px}.delete-prog-btn:active{background:var(--accent-deep);color:var(--card)}.sec-head{margin:var(--space-5) var(--pad) var(--space-3);text-align:left;border-bottom:1px solid var(--divider);padding-bottom:6px}.sec-head .over{font-weight:700;font-size:var(--text-label);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:3px;display:block}.sec-head h2{font-family:var(--font-display);font-weight:400;font-size:var(--text-display-s);letter-spacing:.04em;margin:0 0 2px;line-height:1.1}.sec-head .why{color:var(--ink-soft);font-size:12px;font-style:italic}.share-overlay{z-index:60;padding:var(--pad);background:#2a24188c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.share-box{background:var(--paper);border:3px solid var(--ink);width:100%;max-width:420px;padding:var(--space-5);gap:var(--space-3);flex-direction:column;display:flex}.share-box h3{font-family:var(--font-display);margin:0;font-size:26px;line-height:1.1}.share-name-label{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.share-box input{min-height:var(--target);font-family:var(--font-mono);background:var(--card);color:var(--ink);border:var(--border-thing);padding:0 12px;font-size:16px;font-weight:700}.share-actions{gap:var(--space-2);flex-direction:column;display:flex}.share-send{min-height:var(--target);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:var(--accent-deep);color:#fff;border:2px solid var(--ink);font-weight:700}.share-send:disabled{opacity:.55}.share-cancel{min-height:var(--target);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);border:1.5px solid var(--rule);background:0 0;font-weight:700}.share-note{color:var(--ink-soft);margin:0;font-size:13px;font-style:italic}.save-bars{gap:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.save-bar{min-height:var(--target);font-family:var(--font-display);background:var(--card);color:var(--ink);border:2px solid var(--ink);font-size:22px}.save-bar:active{background:var(--ink);color:var(--card)}.section-nav{align-items:stretch;gap:var(--space-2);margin:var(--space-3) var(--pad) 0;display:flex}.section-nav .fig-nav-btn{flex:none}.section-nav .fig-nav-btn:disabled{opacity:.3}.section-row{align-items:center;gap:var(--space-2);scrollbar-width:none;flex:1;display:flex;overflow-x:auto}.section-row::-webkit-scrollbar{display:none}.section-row.in-study{margin:var(--space-3) var(--pad) 10px;flex-wrap:wrap}.section-pill{flex:none;min-width:76px}.toc-jump{margin-top:var(--space-2)}.study-jump{margin:var(--space-3) var(--pad) 0}.toc-jump .section-pill,.study-jump .section-pill{min-width:0;font-size:var(--text-label);color:var(--ink-soft);border-color:var(--rule);padding:0 12px}.toc-jump .section-pill:active,.study-jump .section-pill:active{background:var(--ink);color:var(--card)}.section-tools{gap:var(--space-2);margin:var(--space-2) var(--pad) 0;flex-wrap:wrap;display:flex}.write-count{text-align:right;font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);flex:1;align-self:center}.rename-btn{min-height:var(--target);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text);border:1.5px dashed var(--rule);background:0 0;align-items:center;margin:2px 0;padding:0 10px;font-size:11px;font-weight:700;display:inline-flex}.rename-input{width:100%;font-family:var(--font-display);background:var(--card);color:var(--ink);border:var(--border-thing);padding:4px 10px;font-size:28px}.toc-row-tag{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:92px;font-size:10px;font-weight:700;overflow:hidden}.from-tag{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);margin-top:2px}.toc-empty-link{font:inherit;color:var(--accent-text);background:0 0;border:none;padding:0;font-style:italic;text-decoration:underline}.follow-top-actions{align-items:center;gap:var(--space-2);display:flex}.beat-ticks{justify-content:center;align-items:center;gap:14px;margin:22px 0 26px;display:flex}.beat-ticks.idle{opacity:.35}.beat-tick{border:2px solid var(--ink);background:0 0;width:11px;height:11px;transition:transform 90ms}.beat-tick.on{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}.follow-launch{min-height:52px;font-family:var(--font-display);letter-spacing:.14em;text-transform:uppercase;background:var(--ink);color:var(--surface);border:var(--border-thing);box-shadow:var(--shadow-press);margin:0 10px 14px;padding:0 28px;font-size:17px;display:block}.follow-launch:active{background:var(--accent-dark);color:#fff;box-shadow:none;transform:translate(2px,2px)}.use-fig{width:100%;min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;background:var(--accent);color:#fff;border:var(--border-thing);box-shadow:var(--shadow-press);margin-top:8px}.use-fig:active{box-shadow:none;transform:translate(2px,2px)}.use-fig[disabled]{width:auto;color:var(--accent-dark);box-shadow:none;letter-spacing:.08em;background:0 0;border:0;align-self:flex-start;padding:0}.fig-nav{z-index:15;align-items:stretch;gap:var(--space-2);margin:var(--space-5) var(--pad) 0;background:var(--paper);border-bottom:var(--border-thing);padding-bottom:var(--space-2);display:flex;position:sticky;top:54px}.fig-nav-btn{min-width:var(--target);min-height:var(--target);font-family:var(--font-display);background:var(--card);color:var(--ink);border:var(--border-thing);font-size:24px;line-height:1}.fig-nav-btn:active{background:var(--ink);color:var(--card)}.fig-nav-label{border:var(--border-within);background:var(--card);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1px;display:flex}.fig-nav-label b{font-family:var(--font-display);font-size:20px;line-height:1}.fig-nav-label small{font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.fig-nav+.sec-head{margin-top:var(--space-3)}.pal-roots{gap:var(--space-2);grid-template-columns:repeat(6,1fr);display:grid}.pal-roots .pill{min-height:var(--target);text-align:center;padding:0}.chips.chips-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(72px,1fr));display:grid}.chips.chips-grid .chip{justify-content:center;width:auto}.plates{margin:0 var(--pad);grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.plate{border:var(--border-thing);background:0 0;flex-direction:column;display:flex}.plate .dwrap{background:var(--surface-bright);border-bottom:var(--border-within);justify-content:center;align-items:center;padding:18px 8px 10px;display:flex}.plate .dwrap svg{width:100%;max-width:220px;height:auto}.plate .body{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:12px;display:flex}.plate .fig{flex-direction:column;align-items:center;gap:2px;display:flex}.plate .fig .no{font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text)}.plate .fig .nm{font-size:15px;font-weight:700}.hear{min-height:var(--target);width:auto;font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;background:var(--card);color:var(--accent-text);border:1.5px solid var(--accent);align-self:center;padding:0 16px}.hear:active:not([disabled]){background:var(--accent-deep);color:var(--card)}.hear[disabled]{opacity:.55}.plate-mode{margin:0 var(--pad) 16px;display:flex}.plate-mode button,.write-mode button,.instrument-row .pill{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--card);color:var(--muted-ink);border:var(--border-thing);flex:1}.plate-mode button:first-child,.write-mode button:first-child,.instrument-row .pill:first-child{border-right:0}.plate-mode button[aria-pressed=true],.write-mode button[aria-pressed=true],.instrument-row .pill[aria-pressed=true]{background:var(--ink);color:var(--card)}.instrument-row{gap:var(--space-2);padding:0 var(--pad) 14px;display:flex}.keys{width:100%;display:block}.keys .wkey{fill:var(--card);stroke:var(--ink);stroke-width:1px}.keys .bkey{fill:var(--ink);stroke:var(--ink);stroke-width:.5px}.keys .wkey.on{fill:#dabea4;stroke:var(--ink)}.keys .bkey.on{fill:var(--accent-dark);stroke:var(--ink)}.keys .wkey.on.root,.keys .bkey.on.root{fill:var(--accent);stroke:var(--ink)}.keys .klabel{font-family:var(--font-mono);text-anchor:middle;fill:var(--ink);font-weight:700}.keys .klabel.on-dark{fill:var(--surface)}.keys .baseline{stroke:var(--ink);stroke-width:2px}.kplates{margin:0 var(--pad);flex-direction:column;gap:10px;display:flex}.kplate{border:var(--border-thing);background:0 0}.kplate .kwrap{border-bottom:var(--border-within);padding:10px 10px 2px}.kplate .body{flex-direction:column;padding:9px 12px 11px;display:flex}.kplate .fig{justify-content:space-between;align-items:baseline;margin-bottom:2px;display:flex}.kplate .fig .no{font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text)}.kplate .fig .nm{font-weight:700;font-size:var(--text-body)}.kplate .kcaption{font-style:italic;font-size:var(--text-caption);color:var(--ink-soft);margin:2px 0 8px;line-height:1.45}.kplate .hear{align-self:flex-start;width:auto}.kwrap-lead{padding:4px 12px 8px}.follow-keys{width:min(92vw,560px);margin-top:10px}.pal-view{align-items:center;gap:var(--space-2);margin:0 var(--pad) var(--space-2);display:flex}.pal-view-label{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);flex:none}.pal-select{min-height:var(--target);font-family:var(--font-mono);background:var(--card);color:var(--ink);border:var(--border-thing);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 12px);background-repeat:no-repeat;background-size:6px 6px,6px 6px;flex:1;padding:0 12px;font-size:16px;font-weight:700}.armed-note{margin:0 var(--pad) var(--space-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;display:flex}.armed-note p{color:var(--ink-soft);margin:0;font-size:12px;font-style:italic}.armed-note b{color:var(--ink);font-style:normal}.surprise-btn{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;background:var(--card);color:var(--accent-text);border:1.5px solid var(--accent);margin-left:auto;padding:0 12px}.surprise-btn:active{background:var(--accent-deep);color:#fff}.pal{margin:0 var(--pad);background:0 0;border:0}.pgroup{padding:15px 0 16px}.pgroup+.pgroup{border-top:1px solid var(--rule)}.pgroup .head{flex-wrap:wrap;align-items:baseline;gap:9px;margin-bottom:8px;display:flex}.pgroup .head .t{font-family:var(--font-display);letter-spacing:.14em;flex:none;font-size:14px}.pgroup .head .why{color:var(--ink-soft);font-size:12px;font-style:italic}.chips{flex-wrap:wrap;gap:12px 10px;display:flex}.chip{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-chip);background:var(--ink-wash);color:var(--ink);border:0;padding:0 13px;line-height:1}.chip sub{font-size:var(--text-label);color:var(--accent-text);vertical-align:baseline;margin-left:5px}.chip:active{background:var(--accent-deep);color:var(--card)}.chip:active sub{color:var(--card)}.mapstack{margin:0 var(--pad);flex-direction:column;gap:12px;display:flex}.mapcard{border:var(--border-thing);background:0 0;margin:0;padding:12px 0 6px}.mapcard-h{border-bottom:1px solid var(--divider);margin-bottom:10px;padding:0 12px 8px}.mapcard-h .t{font-family:var(--font-display);letter-spacing:.04em;font-size:16px;display:block}.mapcard-h .why{color:var(--ink-soft);margin:2px 0 0;font-size:12px;font-style:italic}.mapwrap{scrollbar-width:none;padding:0 12px;overflow-x:auto}@media (min-width:700px){.mapwrap{justify-content:center;display:flex}.mapwrap svg{width:100%;max-width:720px;height:auto}}.mapwrap::-webkit-scrollbar{display:none}.legend{font-weight:700;font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);justify-content:center;gap:16px;padding:8px 12px 6px;display:flex}.legend i{margin-right:5px;display:inline-block}.legend .r i{background:var(--accent);vertical-align:-2px;width:12px;height:12px}.legend .s i{background:var(--ink);vertical-align:-1px;width:8px;height:8px}.names-row{margin:-4px var(--pad) var(--space-2);display:flex}.names-row .tog{min-height:var(--target);color:var(--muted-ink);-webkit-text-decoration:underline dotted var(--accent);text-decoration:underline dotted var(--accent);text-underline-offset:6px;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.names-row .tog[aria-pressed=true]{color:var(--ink);-webkit-text-decoration:underline solid var(--ink);text-decoration:underline solid var(--ink);background:0 0}.mapcard-hear{padding:4px 12px 10px}.colophon{text-align:center;padding:var(--space-5) var(--pad) var(--space-2);font-weight:700;font-size:var(--text-label);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.follow-overlay{z-index:300;background:var(--paper);padding:max(16px, env(safe-area-inset-top,16px)) var(--pad) max(20px, env(safe-area-inset-bottom,20px));flex-direction:column;align-items:center;display:flex;position:fixed;inset:0}.follow-top{align-items:center;gap:14px;width:100%;max-width:560px;display:flex}.follow-dots{flex-wrap:wrap;flex:1;gap:7px;display:flex}.follow-dot{background:var(--rule);width:9px;height:9px}.follow-dot.on{background:var(--accent)}.follow-close{background:var(--card);border:var(--border-thing);color:var(--ink-soft);width:var(--target);height:var(--target);font-size:17px}.follow-main{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;min-height:0;display:flex}.follow-roman{color:var(--accent-text);font-size:17px;font-weight:700}.follow-symbol{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 6px;font-size:54px;font-weight:400}.follow-next{align-items:baseline;gap:10px;margin-bottom:18px;display:flex}.follow-next-label{font-size:var(--text-label);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.follow-next-symbol{font-family:var(--font-mono);color:var(--ink);font-size:22px;font-weight:700}.follow-controls{align-items:center;gap:12px;display:flex}.follow-controls .play{flex:none;min-width:140px}.follow-hint{color:var(--ink-soft);text-align:center;margin-top:12px;font-size:12px}.toc-search{margin:var(--space-3) var(--pad) 0}.toc-search input{width:100%;min-height:var(--target);font-family:var(--font-mono);color:var(--ink);border:1.5px solid var(--rule);background:0 0;padding:0 12px;font-size:16px}.toc-search input::placeholder{color:var(--ink-soft)}.toc-new{width:calc(100% - var(--pad) * 2);margin:var(--space-2) var(--pad) 0;min-height:50px;font-family:var(--font-display);letter-spacing:.1em;color:var(--accent-text);border:2px solid var(--accent);background:#c2601e21;font-size:17px;display:block}.toc-new:active{background:var(--accent-deep);color:var(--card)}.toc-chapter{margin:var(--space-5) var(--pad) 0}.toc-chapter-h{border-bottom:1.5px solid var(--ink);align-items:baseline;gap:8px;margin-bottom:2px;padding-bottom:6px;display:flex}.toc-chapter-h .t{font-family:var(--font-display);letter-spacing:.1em;font-size:16px}.toc-chapter-h .n{font-size:var(--text-label);color:var(--ink-soft);font-weight:700}.toc-list{margin:0;padding:0;list-style:none}.toc-row{min-height:var(--target);border-bottom:1px dashed var(--rule);align-items:center;gap:10px;padding:4px 0;display:flex}.toc-row-main{text-align:left;font:inherit;color:var(--ink);min-height:var(--target);background:0 0;border:0;flex:1;align-items:baseline;gap:10px;display:flex}.toc-row-no{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);color:var(--accent-text);flex-shrink:0;width:22px}.toc-row-name{font-size:var(--text-body)}.toc-row-roman{color:var(--ink-soft);white-space:nowrap;margin-left:auto;font-size:11px}.toc-star,.toc-trash{min-width:var(--target);min-height:var(--target);color:var(--ink-soft);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.toc-star.active{color:var(--accent-text)}.toc-empty{color:var(--ink-soft);padding:10px 0;font-size:13px;font-style:italic}.write-tab{margin:0 0 var(--space-5)}.write-mode{margin:var(--space-3) var(--pad) 0;display:flex}.write-draft{margin:var(--space-3) var(--pad) 0;border:var(--border-thing);background:var(--surface);align-items:center;gap:var(--space-2);flex-wrap:wrap;min-height:90px;padding:12px;display:flex}.write-slip{border:1.5px solid var(--ink);background:var(--surface);flex-direction:column;align-items:center;gap:2px;min-width:62px;padding:8px 10px;display:flex;position:relative}.write-slip .sym{font-family:var(--font-display);font-size:20px}.write-slip .roman{color:var(--ink-soft);font-size:10px}.write-slip button{background:var(--surface);border:1.5px solid var(--ink);width:20px;height:20px;font-size:11px;line-height:1;position:absolute;top:-8px;right:-8px}.write-save{gap:var(--space-2);margin:var(--space-3) var(--pad) 0;display:flex}.write-save input{min-height:var(--target);font-family:var(--font-mono);background:var(--card);border:var(--border-thing);color:var(--ink);flex:1;padding:0 12px;font-size:15px}.write-save-btn{min-height:var(--target);font-family:var(--font-display);letter-spacing:.08em;background:var(--accent);color:#fff;border:var(--border-thing);box-shadow:var(--shadow-press);padding:0 20px;font-size:15px}.write-save-btn:active{box-shadow:none;transform:translate(2px,2px)}.write-save-btn[disabled]{opacity:.5;box-shadow:none}.library{margin-bottom:var(--space-5)}.lib-picker{margin:var(--space-3) var(--pad) 0;background:0 0;border:0;padding:0}.lib-picker .label{margin-bottom:8px;display:block}.lib-picker .set-row{padding:0}.lib-picker .set-row+.set-row{border-top:var(--border-within);margin-top:12px;padding-top:12px}.lib-search{width:100%;min-height:var(--target);font-family:var(--font-mono);background:var(--card);border:1.5px solid var(--ink);color:var(--ink);margin-top:8px;padding:0 12px;font-size:15px}.lib-suffix-chips{gap:var(--space-2);flex-wrap:wrap;margin-top:8px;display:flex}.lib-add-btn{margin:var(--space-2) var(--pad) 0;min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--accent);color:#fff;border:var(--border-thing);padding:0 16px}.lib-add-btn:active{transform:translate(1px,1px)}.muted{color:var(--ink-soft);margin:var(--space-2) var(--pad);font-size:13px;font-style:italic}.tabbar-fixed{z-index:30;background:var(--paper-deep);border-top:var(--border-thing);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar-fixed button{background:var(--paper-deep);min-height:56px;font-family:var(--font-display);letter-spacing:.12em;color:var(--ink-soft);border:0;border-right:1px solid var(--ink);font-size:15px}.tabbar-fixed button:last-child{border-right:0}.tabbar-fixed button[aria-current=page]{background:var(--ink);color:var(--card)}@media (min-width:700px){.app-tabs{display:grid}.tabbar-fixed{display:none}.app{padding-bottom:0}}@media (max-width:699px){.app-tabs{display:none}.tabbar-fixed{display:grid}.app{padding-bottom:calc(64px + env(safe-area-inset-bottom))}}@media (max-width:360px){.study h1{font-size:20px}}.miniplayer{z-index:14;align-items:center;gap:var(--space-2);padding:6px var(--pad);background:var(--surface);border-bottom:var(--border-thing);animation:.18s ease-out mini-in;display:flex;position:fixed;top:54px;left:0;right:0}@keyframes mini-in{0%{opacity:0}}.mini-prog{flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.mini-chord{font-family:var(--font-mono);color:var(--muted-ink);white-space:nowrap;font-size:15px;font-weight:700}.mini-chord+.mini-chord:before{content:"→";color:var(--divider);margin-right:6px}.mini-chord.on{color:var(--accent-dark)}.mini-bar,.mini-bpm{font-size:var(--text-label);color:var(--muted-ink);white-space:nowrap}.mini-play{min-width:var(--target);min-height:var(--target);background:var(--accent);color:#fff;border:1.5px solid var(--ink);font-size:14px}.mini-tog{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);text-transform:uppercase;letter-spacing:.08em;background:var(--card);color:var(--muted-ink);border:1.5px solid var(--ink);padding:0 10px}@media (max-width:400px){.mini-bpm{display:none}}@media (max-width:320px){.mini-bar{display:none}}.disclose{margin-top:var(--space-2);min-height:var(--target);font-family:var(--font-mono);text-align:left;color:var(--accent-dark);text-underline-offset:3px;background:0 0;border:0;padding:0;font-size:12px;font-style:italic;text-decoration:underline;display:block}@media (min-width:900px){.memo,.armed-note,.toc-search,.write-save,.sec-head .why,.armed-note p{max-width:74ch}.write-count,.toc-row-roman{text-align:right}.sec-head{margin-top:40px}.instrument-row,.plate-mode,.write-mode{max-width:520px}.play{max-width:420px}}.chip[aria-pressed=true]{background:var(--ink);color:var(--surface);border-color:var(--ink)}.chip[aria-pressed=true] sub{color:var(--divider)}.study-jump{border-bottom:var(--border-thing);margin-bottom:0}.study-jump .section-row{gap:0}.study-jump .section-pill,.toc-jump .section-pill{color:var(--muted-ink);background:0 0;border:0;padding:0 16px}.study-jump .section-pill[aria-selected=true]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--ink);background:0 0;border:0}.study-jump .section-pill:active,.toc-jump .section-pill:active{background:var(--surface);color:var(--ink)}.step{color:var(--ink);background:0 0;border:0;font-size:22px}.step:active{color:var(--accent-dark);background:0 0}.tempo .val{border:0;flex:none;justify-content:flex-start;gap:4px;padding:0}.star-btn{background:0 0;border:0;padding:0 8px}.star-btn.on{border:0}.send-btn{color:var(--accent-text);gap:4px}.send-btn:active{opacity:.6}.send-btn:before{content:"↗";letter-spacing:0;font-size:19px;line-height:1}.keybtn{text-align:right;background:0 0;border:0;padding:0}.keybtn b{-webkit-text-decoration:underline dotted var(--accent);text-decoration:underline dotted var(--accent);text-underline-offset:4px}.keybtn b:after{content:" ▾";color:var(--accent-dark);font-size:11px}.keybtn[aria-expanded=true]{color:var(--accent-dark);background:0 0}.keybtn[aria-expanded=true] b{color:var(--accent-dark);-webkit-text-decoration:underline solid var(--accent);text-decoration:underline solid var(--accent)}.keybtn[aria-expanded=true] b:after{content:" ▴"}.instrument-row{gap:0}.instrument-row .pill{flex:1}.instrument-row .pill:first-child{border-right:0}.instrument-row .pill,.plate-mode button,.write-mode button{flex:none;padding:0 26px}.instrument-row,.plate-mode,.write-mode{justify-content:flex-start}.memo{margin-left:calc(var(--pad) + 18px)}@media (min-width:900px){.bar{min-height:132px}.memo{margin-left:calc(var(--pad) + 40px)}}.vuse{align-items:center;gap:var(--space-2);margin:0 var(--pad) var(--space-3);flex-wrap:wrap;display:flex}.vuse-now{min-width:0;font-weight:700;font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;color:var(--muted-ink);flex:1}.vuse-btn{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.1em;text-transform:uppercase;background:var(--accent);color:#fff;border:var(--border-thing);box-shadow:var(--shadow-press);padding:0 16px}.vuse-btn:active{box-shadow:none;transform:translate(2px,2px)}.vuse-btn[disabled]{color:var(--accent-dark);box-shadow:none;background:0 0;border:0;padding:0}.vsheet{margin:0 var(--pad)}.vgroup{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.14em;text-transform:uppercase;color:var(--muted-ink);border-bottom:1px solid var(--divider);margin:22px 0 10px;padding-bottom:5px}.vsheet>:first-child .vgroup,.vsheet>.vgroup:first-child{margin-top:0}.vgrid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}@media (min-width:700px){.vgrid{grid-template-columns:repeat(4,minmax(0,232px));justify-content:start}}.vtile{min-height:var(--target);background:var(--surface-bright);border:1.5px solid var(--ink);font:inherit;color:inherit;flex-direction:column;align-items:center;gap:7px;padding:12px 8px 10px;display:flex;position:relative}.vtile>svg{width:100%;max-width:150px;height:auto}.vgrid-keys{grid-template-columns:1fr}.vgrid-keys .vtile>svg{max-width:none}.vcap{font-weight:700;font-size:var(--text-label);letter-spacing:.03em;color:var(--ink);white-space:nowrap;align-items:center;gap:5px;display:flex}.vtile .vspk{width:11px;height:11px;color:var(--accent-dark);flex:none}.vtile[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.vtile[aria-pressed=true]:after{content:"";border-top:13px solid var(--accent);border-left:13px solid #0000;position:absolute;top:0;right:0}.edit-chords{min-height:var(--target);font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-dark);background:0 0;border:0;padding:0 12px}.edit-chords:active{opacity:.6;background:0 0}.chart-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;margin:0 10px 14px;display:flex}.chart-actions .follow-launch{margin:0}.memo-writable textarea{resize:vertical;width:100%;min-height:3.2em;font-family:var(--font-mono);font-style:italic;font-size:var(--text-caption);color:var(--ink);background:0 0;border:0;margin:0;padding:0;line-height:1.5;display:block}.memo-writable textarea::placeholder{color:var(--muted-ink)}.memo-writable textarea:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.fig-nav-btn{color:var(--ink);background:0 0;border:0}.fig-nav-btn:active{color:var(--accent-dark);background:0 0}.fig-nav-label{background:0 0;border:0}.tog,.mini-tog{background:var(--ink-wash);color:var(--muted-ink);border:0}.tog[aria-pressed=true]{background:var(--ink);color:var(--card)}.mini-tog[aria-pressed=true]{background:var(--ink);color:var(--surface)}.hear,.surprise-btn{color:var(--accent-dark);background:0 0;border:0;padding:0 4px}.hear:active:not([disabled]),.surprise-btn:active{color:var(--accent-dark);opacity:.6;background:0 0}.pgroup[data-group=diatonic] .chip{background:#29211621}.pgroup[data-group=softer] .chip,.pgroup[data-group=harmonic] .chip{background:#2921161a}.pgroup[data-group=grittier] .chip,.pgroup[data-group=pointing] .chip{background:#29211612}.pgroup[data-group=borrowed] .chip{color:var(--muted-ink);background:#2921160a}.fig-nav{border-bottom:1px solid var(--divider);padding-bottom:6px}.appbar{transition:transform .16s ease-out}html.figs-pinned .appbar{transform:translateY(-100%)}html.figs-pinned .fig-nav{top:0}
