.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:calc(62px + var(--safe-top))}.appbar{padding:calc(4px + var(--safe-top)) var(--pad) 4px;border-bottom:var(--border-thing);z-index:20;background:var(--paper);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.safe-top-fill{height:var(--safe-top);background:var(--paper);z-index:21;pointer-events:none;position:fixed;top:0;left:0;right: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{--fit:max(11px, calc((100cqi - 8px) / (.62 * var(--len,2))));container-type:inline-size}.bar .sym{font-family:var(--font-mono);font-size:min(clamp(24px, 8vw, 44px), var(--fit));white-space:nowrap;margin:2px 0;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-current=true]{background:var(--ink)}.bar[aria-current=true] .sym{color:var(--card)}.bar[aria-current=true] .deg,.bar[aria-current=true] .cnt{color:var(--rule)}.bar .cnt.sounds{color:var(--accent-text);text-transform:none;letter-spacing:.04em}.bar[aria-current=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-current=true].beat{background:var(--ink)}.bar[data-empty][aria-current=true]{background:var(--accent-wash);box-shadow:inset 0 0 0 2px var(--accent)}.bar[data-empty][aria-current=true] .sym{color:var(--muted-ink)}.bar[data-empty][aria-current=true] .deg,.bar[data-empty][aria-current=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 h2 .sym-inline{font-family:var(--font-mono);letter-spacing:0;font-weight:700}.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{margin:var(--space-2) var(--pad) 0;display:block}.section-tools summary{cursor:pointer;min-height:44px;color:var(--ink-soft);align-content:center;font-size:12px}.section-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.write-tab .section-pill[aria-current=true]{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.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}.study-edit-row{flex-wrap:wrap;align-items:center;margin-left:-10px;display:flex}.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;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{top:calc(54px + var(--safe-top));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}.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-mono);font-size:20px;font-weight:700;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}.mapcard-h .gloss{color:var(--ink-soft);margin-top:1px;font-size:12px;display:block}.mapcard-meta{margin-bottom:4px}.mapcard-meta .which{font-weight:700;font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.leadsec+.leadsec{margin-top:var(--space-4)}.leadsec-h{margin:0 var(--pad) var(--space-2);border-bottom:1px dashed var(--divider);padding-bottom:5px}.leadsec-h .over{font-weight:700;font-size:var(--text-label);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);display:block}.leadsec-h .why{color:var(--ink-soft);margin:3px 0 0;font-size:12px;font-style:italic}.lead-join{margin:var(--space-3) var(--pad) var(--space-2);font-weight:700;font-size:var(--text-label);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:10px;display:flex}.lead-join:before,.lead-join:after{content:"";border-top:1px dashed var(--divider);flex:1}.mapstack .lead-join{margin:0}.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);background:0 0;border:0;align-items:center;gap:8px;padding:0;display:inline-flex}.tog-dot{fill:none;width:13px;height:13px;stroke:var(--muted-ink);stroke-width:1.6px;flex:none}.names-row .tog[aria-pressed=true]{color:var(--ink);background:0 0}.names-row .tog[aria-pressed=true] .tog-dot{fill:var(--ink);stroke:var(--ink)}.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-mono);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;position:relative}.toc-intro{font-family:var(--font-mono);color:var(--muted-ink);max-width:38ch;margin:8px 0 0;font-size:14px;line-height:1.6}.write-history{margin:16px var(--pad);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.audio-error{color:var(--accent-dark);font:13px/1.5 var(--font-mono);margin:8px 16px}.write-history button{background:var(--surface);min-width:80px;min-height:44px;color:var(--ink);font:13px var(--font-mono);border:0;padding:8px 12px}.write-history button:disabled{opacity:.45;cursor:default}.write-history span{min-width:120px;color:var(--muted-ink);flex:1;font-size:12px;line-height:1.5}.write-key-options{margin:12px var(--pad) 20px;border-block:1px solid var(--rule)}.write-key-options>summary{cursor:pointer;min-height:52px;font:14px var(--font-mono);align-items:center;gap:12px;display:flex}.write-key-options>summary:after{content:"+";margin-left:auto;font-size:22px}.write-key-options[open]>summary:after{content:"−"}.write-key-options>summary::-webkit-details-marker{display:none}.write-key-options summary span{color:var(--muted-ink);font-size:12px}.write-key-options .write-mode,.write-key-options .settings,.write-key-options .section-tools,.write-key-options .write-history{margin-inline:0}.write-composer{top:calc(54px + var(--safe-top));z-index:15;background:var(--paper);border-bottom:var(--border-thing);margin:0 0 var(--space-3);position:sticky}.write-composer-context{padding:4px var(--pad) 0;align-items:center;gap:6px;display:flex}.write-composer-context .fig-nav-btn{min-width:var(--target);min-height:var(--target);flex:none}.write-composer-place{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:12px var(--font-mono);letter-spacing:.04em;color:var(--ink-soft);text-align:center;flex:1;overflow:hidden}.write-composer-row{padding:2px var(--pad) 6px;align-items:center;gap:6px;display:flex}.write-composer-chord{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:700 17px var(--font-mono);color:var(--ink);flex:1;overflow:hidden}.write-composer-save{min-height:var(--target);background:var(--accent);color:#fff;border:var(--border-thing);font:700 13px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;flex:none;padding:0 14px}.write-composer-save[disabled]{opacity:.5}.write-composer-name-input{min-width:0;min-height:var(--target);font-family:var(--font-mono);background:var(--card);border:var(--border-thing);flex:1;padding:0 10px;font-size:15px}.write-composer-voicing{border-bottom:var(--border-thing);margin-bottom:var(--space-3);padding:4px 0 12px}.toc-clear{width:44px;height:44px;color:var(--ink);background:0 0;border:0;font-size:24px;position:absolute;top:0;right:0}.toc-filters{margin:12px var(--pad) 0;gap:6px;display:flex}.toc-filters button{background:var(--surface);min-height:44px;color:var(--ink);font:12px var(--font-mono);border:0;flex:1;padding:6px}.toc-filters button[aria-pressed=true]{background:var(--ink);color:var(--canvas)}.toc-filters button span{opacity:.8;display:inline-block}.toc-reset{background:var(--surface);min-height:44px;color:var(--ink);border:1px solid var(--rule);font:13px var(--font-mono);padding:8px 12px}.toc-row-main:hover .toc-row-name{color:var(--accent-dark)}.toc-row-main:active{background:var(--surface)}.reference-nav{padding:16px var(--pad);border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:8px 24px;display:flex}.reference-nav a{min-height:44px;color:var(--accent-dark);font:13px var(--font-mono);text-underline-offset:4px;align-items:center;display:inline-flex}.reference-footer{max-width:960px;padding-bottom:calc(90px + env(safe-area-inset-bottom));margin:24px auto 0}.home-intro{max-width:64ch;padding:16px var(--pad) 8px;font-size:15px;line-height:1.7}.home-intro h1{font:400 clamp(28px, 5vw, 40px)/1.1 var(--font-display);margin:0 0 12px}.home-intro h2{font:400 22px var(--font-display);margin:20px 0 8px}.home-intro ul{columns:2;gap:24px;margin:0;padding-left:1.2em}.home-intro li{break-inside:avoid}.home-intro a{color:var(--accent-dark);text-underline-offset:4px}.directory{max-width:960px;padding:0 var(--pad) 48px;margin:auto}.directory-header{border-bottom:2px solid var(--ink);padding:32px 0 24px}.directory-header h1{font:400 clamp(36px, 7vw, 64px)/1.05 var(--font-display);margin:8px 0 16px}.directory-header p{max-width:64ch;font-size:15px;line-height:1.7}.directory h2{font:400 28px var(--font-display);margin:28px 0 16px}.directory-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px;padding:0;list-style:none;display:grid}.directory-card{border:1px solid var(--rule);background:var(--surface);height:100%;color:var(--ink);padding:20px;text-decoration:none;display:block}.directory-card strong{font-size:18px;line-height:1.4;display:block}.directory-card span{color:var(--muted-ink);margin-top:12px;font-size:13px;line-height:1.7;display:block}.directory-card:hover{border-color:var(--accent)}.directory-keys{grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:10px;padding:0;list-style:none;display:grid}.directory-keys a{min-height:52px;color:var(--ink);background:var(--surface);text-underline-offset:4px;align-items:center;padding:12px;display:flex}.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;border-radius:0;padding:0 48px 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;min-width:0;font:inherit;color:var(--ink);min-height:var(--target);background:0 0;border:0;flex:1;grid-template-columns:22px minmax(0,1fr);align-items:baseline;column-gap:10px;display:grid}.toc-row-no{font-family:var(--font-mono);font-weight:700;font-size:var(--text-label);color:var(--accent-text)}.toc-row-body{flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-width:0;display:flex}.toc-row-name{font-size:var(--text-body);flex:none;max-width:100%}.toc-row-roman{color:var(--ink-soft);text-align:right;overflow-wrap:anywhere;flex:0 auto;min-width:0;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-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)}.app-tabs{display:none}.app{padding-bottom:calc(64px + env(safe-area-inset-bottom))}@media (max-width:360px){.study h1{font-size:20px}}.miniplayer{top:calc(54px + var(--safe-top));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;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,.leadsec-h .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-current]{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}.midi-btn{color:var(--accent-text);letter-spacing:.08em}.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)}}.fig-unavailable{margin:0 var(--pad) var(--space-3);font-size:var(--text-caption);color:var(--muted-ink);line-height:1.4}.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,minmax(0,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{text-align:center;overflow-wrap:anywhere;max-width:100%;font-weight:700;line-height:1.45;font-size:var(--text-label);letter-spacing:.03em;color:var(--ink);white-space:normal;display:block}.vtile .vspk{vertical-align:-1px;width:11px;height:11px;color:var(--accent-dark);margin-left:5px;display:inline-block}.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,.fig-nav,.miniplayer{transition:transform .18s ease-out}html.figs-pinned .appbar{transform:translateY(-100%)}html.figs-pinned .fig-nav{transform:translateY(-54px)}html.figs-pinned .miniplayer{transform:translateY(calc(-100% - 54px - var(--safe-top)));pointer-events:none}.toc>.sec-head,.write-tab>.sec-head:first-child{border:0;margin-top:20px;margin-bottom:10px}.toc .toc-search{margin-top:0}.toc .toc-chapter{margin-top:20px}.toc .toc-filters button:not([aria-pressed=true]){background:0 0}.toc-jump .section-pill{border-color:#0000}.write-tab .write-key-options{border:0;margin-top:0;margin-bottom:8px}.write-tab .write-key-options summary{min-height:44px}.write-tab .section-nav,.write-tab .section-tools{margin-top:0}.write-tab .write-history{margin-top:8px;margin-bottom:8px}.write-tab .write-history button{background:0 0}.write-tab .palette-heading{border:0;margin-top:16px;margin-bottom:8px}.write-key-hints{margin:12px var(--pad)}.write-key-hints p,.write-key-message{font-size:13px;line-height:1.6}.key-candidates{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.key-candidates>span{font-size:13px}.key-candidates .pill small{letter-spacing:.04em;opacity:.75;font-size:10px;display:block}.key-candidates-empty{color:var(--muted-ink);margin:0;font-size:13px;line-height:1.6}.write-key-message{margin-inline:var(--pad);color:var(--accent-dark)}.welcome-help{min-width:44px;min-height:44px;color:var(--ink);font:700 18px var(--font-mono);background:0 0;border:0}.contact-policy a{min-height:44px;color:var(--accent-dark);align-items:center;font-size:13px;display:inline-flex}.menu-trigger{padding:0 4px;font-size:13px}.menu-links{display:grid}.menu-links a,.menu-links button{border:0;border-bottom:1px solid var(--rule);min-height:44px;color:var(--ink);font:14px var(--font-mono);text-align:left;background:0 0;align-items:center;padding:8px 0;text-decoration:none;display:flex}.welcome-dialog{border:2px solid var(--ink);background:var(--canvas);width:min(460px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink);padding:28px;overflow-y:auto}.welcome-dialog::backdrop{background:#29211680}.welcome-close{width:44px;height:44px;color:var(--ink);font:24px var(--font-mono);background:0 0;border:0;margin:-12px -12px 0 auto;display:block}.welcome-dialog h2{font:400 34px/1.05 var(--font-display);margin:8px 0 16px}.welcome-dialog p{font:14px/1.6 var(--font-mono)}.welcome-dialog a{color:var(--accent-dark)}.welcome-choices{gap:10px;margin:20px 0;display:grid}.welcome-choices button{border:1px solid var(--rule);text-align:left;min-height:48px;color:var(--ink);background:var(--surface);font:700 14px var(--font-mono);padding:12px}.welcome-choices .welcome-explore{background:var(--accent-dark);color:var(--surface);border-color:var(--accent-dark)}.welcome-explore span{margin-top:4px;font-size:12px;font-weight:400;display:block}.welcome-browse{min-height:44px;color:var(--accent-dark);font:14px var(--font-mono);background:0 0;border:0;padding:8px 0;text-decoration:underline}.explore-intro{padding:12px var(--pad);background:var(--surface)}.explore-intro p{font:14px/1.5 var(--font-mono);margin:0}.explore-intro button{min-height:44px;color:var(--accent-dark);text-align:left;font:13px var(--font-mono);background:0 0;border:0;padding:8px 0;text-decoration:underline}.directory.contact-page{max-width:680px}.contact-form{gap:12px;padding:24px 0;display:grid}.contact-form label{font-size:14px;font-weight:700}.contact-form label span{font-weight:400}.contact-form input,.contact-form textarea{border:1px solid var(--rule);background:var(--surface);width:100%;min-height:48px;color:var(--ink);font:16px/1.5 var(--font-mono);padding:12px}.contact-form textarea{resize:vertical}.contact-form p{margin:0;font-size:13px;line-height:1.6}.contact-form button{min-height:48px;color:var(--surface);background:var(--accent-dark);font:700 15px var(--font-mono);border:0;padding:12px}.contact-form button:disabled{opacity:.6}.contact-honeypot{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.measure{flex-direction:column;min-width:0;display:flex;position:relative}.measure-chords{flex:auto;min-height:0;display:flex}.measure-chords>.bar{flex:1;min-width:0}.has-splits .measure{border:1px solid var(--rule);padding-top:22px}.measure-number{font:700 11px var(--font-mono);color:var(--accent-dark);position:absolute;top:3px;left:8px}.half-label{font:11px var(--font-mono);margin-bottom:5px;display:block}.has-splits .bar .sym{font-size:min(clamp(16px, 3vw, 30px), var(--fit))}.has-splits .bar{padding:12px 4px}@media (max-width:600px){.bars.has-splits{grid-template-columns:repeat(2,minmax(0,1fr))!important}}.has-splits .measure-chords>.bar{border:0}.has-splits .measure-chords>.bar+.bar{border-left:var(--border-within)}.drag-handle{width:100%;min-height:var(--target);color:var(--ink-soft);background:var(--surface);border-bottom:var(--border-within);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;flex:none;justify-content:center;align-items:center;gap:8px;font-size:18px;line-height:1;display:flex}.measure-number-inline{font:700 11px var(--font-mono);color:var(--accent-dark)}.has-splits .measure:has(.drag-handle){padding-top:0}.measure.drag-source{opacity:.35}.measure.drop-before:before,.measure.drop-after:after{content:"";background:var(--accent);z-index:3;width:4px;position:absolute;top:0;bottom:0}.measure.drop-before:before{left:-2px}.measure.drop-after:after{right:-2px}.bars.reordering .bar{pointer-events:none}.write-title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.write-title-row .write-history{margin:0}.chart-h:has(.shapes-tog){flex-wrap:wrap;gap:10px}.shapes-tog{min-height:var(--target);font-size:var(--text-label);letter-spacing:.08em;align-self:center;margin-left:auto;padding:0 12px}.chart-h:has(.shapes-tog) i{text-align:left;flex:1}.bars.showing-shapes .bar{min-height:0;padding:10px 3px 8px}.bars.showing-shapes .bar .sym{font-size:min(clamp(15px, 4.4vw, 22px), var(--fit))}.bars.showing-shapes .bar .deg{margin-bottom:3px}.bars.showing-shapes .bar .cnt{text-transform:none;letter-spacing:.02em;margin-top:3px;font-size:10px;line-height:1.3}.bar-fig{margin:2px 0 4px;display:block}.bar-fig svg{width:100%;height:auto;display:block}.bars.showing-shapes .bar .bar-fig svg{max-height:190px}.bars.showing-shapes .bar[aria-current=true],.bars.showing-shapes .bar[aria-current=true].beat{background:var(--accent-wash);box-shadow:inset 0 0 0 2px var(--accent)}.bars.showing-shapes .bar[aria-current=true] .sym{color:var(--ink)}.bars.showing-shapes .bar[aria-current=true] .deg{color:var(--accent-text)}.bars.showing-shapes .bar[aria-current=true] .cnt{color:var(--muted-ink)}.record-chords{margin:16px var(--pad);border:1px solid var(--rule);background:var(--surface);padding:12px}.record-chords-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.record-chords-head h3{font:15px var(--font-display);letter-spacing:.02em;margin:0}.record-chords-field{flex-direction:column;gap:4px;margin:10px 0;font-size:13px;display:flex}.record-chords-field input[type=number],.record-chords-field input[type=file]{min-height:var(--target);font:14px var(--font-mono);background:var(--card);border:1px solid var(--rule);color:var(--ink);padding:6px 10px}.record-chords-live{justify-content:space-between;align-items:center;gap:12px;display:flex}.record-chords-slots{flex-direction:column;gap:10px;margin:12px 0;display:flex}.record-chords-slot{border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 0;display:flex}.record-chords-slot.conflict{background:var(--accent-wash)}.record-chords-slot-place{color:var(--muted-ink);flex-basis:100%;font-size:11px}.record-chords-slot-note{color:var(--accent-dark);flex-basis:100%;font-size:12px}.record-chords-editor{border:1px solid var(--rule);background:var(--card);flex-direction:column;flex-basis:100%;gap:4px;max-height:260px;padding:8px;display:flex;overflow-y:auto}.record-chords-editor-row{flex-wrap:wrap;gap:4px;display:flex}.record-chords-editor-row .tog{min-width:56px;min-height:36px;padding:4px 6px;font-size:12px}
