@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Petaluma+Script&display=swap";@font-face{font-family:Petaluma;src:url(https://cdn.jsdelivr.net/npm/@steinbergmedia/petaluma@1.0.5/redist/woff/Petaluma.woff2)format("woff2");font-display:swap}:root{--bg-0:oklch(14% .006 70);--bg-1:oklch(17.5% .006 70);--bg-2:oklch(21.5% .007 70);--bg-3:oklch(26% .008 70);--line:oklch(30% .006 70);--line-2:oklch(38% .006 70);--ink-0:oklch(97% .005 80);--ink-1:oklch(78% .005 80);--ink-2:oklch(58% .005 80);--ink-3:oklch(42% .005 80);--ink-4:oklch(32% .005 80);--amber:oklch(79% .13 75);--amber-2:oklch(65% .11 75);--ink-blue:oklch(68% .11 250);--ink-blue-2:oklch(52% .1 250);--teal:oklch(72% .11 195);--rose:oklch(68% .17 25);--green:oklch(72% .13 145);--k-C:oklch(86% .06 85);--k-G:oklch(72% .1 145);--k-D:oklch(70% .12 165);--k-A:oklch(70% .11 200);--k-E:oklch(68% .12 245);--k-B:oklch(66% .13 285);--k-Fs:oklch(66% .16 315);--k-F:oklch(78% .13 60);--k-Bb:oklch(80% .14 80);--k-Eb:oklch(74% .13 45);--k-Ab:oklch(66% .13 25);--k-Db:oklch(62% .15 5);--t-display:"Cormorant Garamond", "Iowan Old Style", Georgia, serif;--t-ui:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, sans-serif;--t-chord:"Petaluma", "Cormorant Garamond", serif;--t-mono:"JetBrains Mono", "SF Mono", Menlo, monospace;--t-roman:"Cormorant Garamond", "Iowan Old Style", Georgia, serif;--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-15:15px;--fs-17:17px;--fs-20:20px;--fs-26:26px;--fs-34:34px;--fs-46:46px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--r-1:2px;--r-2:4px;--r-3:6px;--r-4:10px;--r-pill:999px;--sh-1:0 1px 0 #0006;--sh-2:0 6px 18px -8px #0009, 0 1px 0 #ffffff05 inset;--sh-3:0 20px 50px -20px #000000b3, 0 1px 0 #ffffff08 inset;--motion-fast:.12s cubic-bezier(.2,.6,.2,1);--motion-mid:.22s cubic-bezier(.2,.6,.2,1)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg-0);color:var(--ink-0);font-family:var(--t-ui);font-size:var(--fs-14);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}a{color:inherit;text-decoration:none}::selection{background:oklch(79% .13 75/.35)}.staff-edge{pointer-events:none;z-index:0;background:linear-gradient(#0000 0%,oklch(14% .006 70/0) 6% 94%,#0000 100%),repeating-linear-gradient(0deg,#0000 0 38px,oklch(30% .006 70/.08) 38px 39px);position:fixed;inset:0;-webkit-mask:linear-gradient(90deg,#000 0 80px,#0000 80px calc(100% - 80px),#000 calc(100% - 80px) 100%);mask:linear-gradient(90deg,#000 0 80px,#0000 80px calc(100% - 80px),#000 calc(100% - 80px) 100%)}.shell{z-index:1;grid-template-columns:240px 1fr;min-height:100vh;display:grid;position:relative}.toc{border-right:1px solid var(--line);height:100vh;padding:var(--s-6) var(--s-4);background:var(--bg-0);position:sticky;top:0;overflow-y:auto}.toc h1{font-family:var(--t-display);margin:0 0 var(--s-1);letter-spacing:.01em;font-size:24px;font-style:italic;font-weight:500}.toc .kicker{font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:var(--s-6)}.toc nav ol{margin:0 0 var(--s-5);counter-reset:toc;padding:0;list-style:none}.toc nav li{font-size:var(--fs-13);color:var(--ink-1);padding:var(--s-1) 0;counter-increment:toc;cursor:pointer}.toc nav li:before{content:counter(toc, decimal-leading-zero) "  ";font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-3);margin-right:var(--s-1)}.toc nav li:hover{color:var(--ink-0)}.toc nav h4{font-size:var(--fs-11);color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em;margin:var(--s-4) 0 var(--s-2);font-weight:500}.toc .footer{margin-top:var(--s-8);font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-3);line-height:1.6}.doc{padding:var(--s-12) var(--s-12);max-width:1320px}.doc section{margin-bottom:var(--s-16);scroll-margin-top:var(--s-6)}.doc h2{font-family:var(--t-display);font-style:italic;font-weight:500;font-size:var(--fs-46);margin:0 0 var(--s-1);letter-spacing:.005em;line-height:1.05}.doc .sec-kicker{font-family:var(--t-mono);font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.14em;color:var(--amber);margin-bottom:var(--s-2)}.doc .sec-lede{font-family:var(--t-display);font-size:var(--fs-20);color:var(--ink-1);max-width:60ch;margin:var(--s-4) 0 var(--s-8);line-height:1.5}.doc h3{font-size:var(--fs-17);margin:var(--s-8) 0 var(--s-3);letter-spacing:.01em;font-weight:500}.doc p{color:var(--ink-1);max-width:70ch}.doc code,.doc pre{font-family:var(--t-mono);font-size:var(--fs-12)}.doc pre{background:var(--bg-1);border:1px solid var(--line);padding:var(--s-4);border-radius:var(--r-3);color:var(--ink-1);overflow-x:auto}.doc .rule{background:var(--line);height:1px;margin:var(--s-12) 0;border:0}.mockup{border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-0);box-shadow:var(--sh-2);margin-top:var(--s-4);overflow:hidden}.mockup-caption{align-items:baseline;gap:var(--s-3);padding-top:var(--s-2);display:flex}.mockup-caption .num{font-family:var(--t-mono);font-size:var(--fs-11);color:var(--amber);letter-spacing:.14em}.mockup-caption .ttl{font-family:var(--t-display);font-style:italic;font-size:var(--fs-20);color:var(--ink-0)}.mockup-caption .note{font-size:var(--fs-12);color:var(--ink-2);margin-left:auto}.app{font-family:var(--t-ui);background:var(--bg-0);color:var(--ink-0);position:relative}.app-topbar{align-items:center;gap:var(--s-4);padding:10px var(--s-5);border-bottom:1px solid var(--line);background:var(--bg-0);display:flex}.app-brand{font-family:var(--t-display);font-style:italic;font-size:var(--fs-17);letter-spacing:.01em;color:var(--ink-0);font-weight:500}.app-brand:before{content:"◗";color:var(--amber);margin-right:8px;font-style:normal}.app-nav{margin-left:var(--s-6);gap:2px;display:flex}.app-nav a{font-size:var(--fs-13);color:var(--ink-2);border-radius:var(--r-2);letter-spacing:.01em;white-space:nowrap;padding:6px 10px}.app-nav a.is-active{color:var(--ink-0);background:var(--bg-2)}.app-nav a:hover{color:var(--ink-0)}.app-spacer{flex:1}.app-meta{align-items:center;gap:var(--s-3);font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-2);display:flex}.app-meta .dot{background:var(--green);border-radius:50%;width:6px;height:6px;display:inline-block}.user-chip{font-size:var(--fs-12);color:var(--ink-1);border-radius:var(--r-pill);border:1px solid var(--line);align-items:center;gap:8px;padding:4px 8px 4px 4px;display:inline-flex}.user-chip .av{background:linear-gradient(135deg, var(--amber), var(--rose));border-radius:50%;width:22px;height:22px}.btn{background:var(--bg-2);border:1px solid var(--line);height:30px;color:var(--ink-0);border-radius:var(--r-2);font-family:var(--t-ui);font-size:var(--fs-13);cursor:pointer;transition:background var(--motion-fast), border-color var(--motion-fast);align-items:center;gap:8px;padding:0 12px;display:inline-flex}.btn:hover{background:var(--bg-3);border-color:var(--line-2)}.btn--primary{background:var(--amber);color:oklch(18% .04 70);border-color:#0000;font-weight:500}.btn--primary:hover{background:oklch(85% .14 75)}.btn--ghost{color:var(--ink-1);background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--bg-2);color:var(--ink-0)}.btn--danger{color:var(--rose)}.btn--danger:hover{border-color:var(--rose);background:oklch(30% .1 25/.25)}.btn--sm{height:24px;font-size:var(--fs-12);padding:0 8px}.btn--lg{height:38px;font-size:var(--fs-14);padding:0 16px}.btn .kbd{font-family:var(--t-mono);color:var(--ink-2);border:1px solid var(--line);border-radius:3px;padding:1px 4px;font-size:10px}.input{background:var(--bg-0);border:1px solid var(--line);border-radius:var(--r-2);height:30px;color:var(--ink-0);font-family:var(--t-ui);font-size:var(--fs-13);transition:border-color var(--motion-fast);outline:none;padding:0 10px}.input:focus{border-color:var(--amber)}.select{appearance:none;background:var(--bg-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 6'><path fill='%23a8a39c' d='M0 0h8L4 6z'/></svg>") no-repeat right 10px center;background-size:8px;padding-right:28px}.seg{border:1px solid var(--line);border-radius:var(--r-2);background:var(--bg-1);display:inline-flex;overflow:hidden}.seg button{color:var(--ink-2);font:500 var(--fs-12)/1 var(--t-ui);cursor:pointer;border:0;border-right:1px solid var(--line);background:0 0;padding:7px 10px}.seg button:last-child{border-right:0}.seg button.is-on{background:var(--bg-3);color:var(--ink-0)}.pill{font-size:var(--fs-12);border-radius:var(--r-pill);border:1px solid var(--line);color:var(--ink-1);background:var(--bg-1);align-items:center;gap:6px;padding:3px 9px;display:inline-flex}.pill .swatch{border-radius:50%;width:8px;height:8px}.pill--key{font-family:var(--t-roman);font-style:italic;font-size:var(--fs-13);padding:2px 10px}.pill--confidence{font-family:var(--t-mono);background:0 0;padding:2px 6px;font-size:10px}.pill--status-fresh{color:var(--green);border-color:oklch(50% .13 145/.6)}.pill--status-stale{color:var(--amber);border-color:oklch(55% .1 75/.6)}.badge{font-family:var(--t-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--r-1);color:var(--ink-2);border:1px solid;padding:2px 6px;font-size:10px}.badge.b-new{color:var(--amber)}.badge.b-stub{color:var(--ink-3)}.badge.b-edited{color:var(--ink-blue)}table.tbl{border-collapse:collapse;width:100%}table.tbl th,table.tbl td{text-align:left;padding:10px var(--s-3);border-bottom:1px solid var(--line);font-size:var(--fs-13)}table.tbl th{font-weight:500;font-size:var(--fs-11);color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em;padding-top:var(--s-3);padding-bottom:var(--s-3)}table.tbl tr:hover td{background:var(--bg-1)}table.tbl td.t-mono,table.tbl td .t-mono{font-family:var(--t-mono);font-size:var(--fs-12);color:var(--ink-2)}table.tbl td.t-title{font-family:var(--t-display);font-size:var(--fs-17);color:var(--ink-0);font-style:italic}table.tbl td.t-composer{color:var(--ink-2)}.chord-grid{background:var(--line);border:1px solid var(--line);border-radius:var(--r-2);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.chord-grid--8{grid-template-columns:repeat(8,1fr)}.chord-cell{background:var(--bg-1);padding:var(--s-3) var(--s-4) var(--s-4);cursor:text;min-height:92px;transition:background var(--motion-fast);flex-direction:column;display:flex;position:relative}.chord-cell:hover{background:var(--bg-2)}.chord-cell .meas{font-family:var(--t-mono);color:var(--ink-3);letter-spacing:.12em;font-size:10px}.chord-cell .key-strip{width:3px;position:absolute;top:0;bottom:0;left:0}.chord-cell .sym{font-family:var(--t-chord);color:var(--ink-0);letter-spacing:-.005em;margin-top:2px;font-size:28px;line-height:1.1}.chord-cell .roman{font-family:var(--t-roman);font-style:italic;font-size:var(--fs-15);color:var(--ink-1);margin-top:2px}.chord-cell .roman.minor{text-transform:lowercase}.chord-cell .roman.major{text-transform:uppercase}.chord-cell .func{font-family:var(--t-mono);color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;margin-top:auto;font-size:10px}.chord-cell .voicing{font-family:var(--t-mono);color:var(--ink-blue);letter-spacing:.04em;margin-top:2px;font-size:10px}.chord-cell.is-edited .sym{color:var(--ink-0)}.chord-cell.is-edited:after{content:"edited";font-family:var(--t-mono);color:var(--ink-blue);letter-spacing:.08em;text-transform:uppercase;font-size:9px;position:absolute;top:6px;right:8px}.chord-cell.has-comment:before{content:"";background:var(--amber);border-radius:50%;width:4px;height:4px;position:absolute;top:8px;right:10px}.chord-cell.is-inferred .sym{opacity:.6;-webkit-text-decoration:underline dotted var(--ink-3);text-decoration:underline dotted var(--ink-3);text-underline-offset:4px;font-style:italic}.chord-cell.is-inferred .sym:before{content:"·";color:var(--ink-blue);opacity:.8;margin-right:4px;font-style:normal}.chord-cell.is-inferred .roman{opacity:.55;font-style:italic}.chord-cell.is-selected{background:var(--bg-3);outline:1px solid var(--amber);outline-offset:-1px;z-index:1}.chord-cell.is-editing{background:var(--bg-2);outline:1px solid var(--amber)}.k-C .key-strip{background:var(--k-C)}.k-G .key-strip{background:var(--k-G)}.k-D .key-strip{background:var(--k-D)}.k-A .key-strip{background:var(--k-A)}.k-E .key-strip{background:var(--k-E)}.k-B .key-strip{background:var(--k-B)}.k-Fs .key-strip{background:var(--k-Fs)}.k-F .key-strip{background:var(--k-F)}.k-Bb .key-strip{background:var(--k-Bb)}.k-Eb .key-strip{background:var(--k-Eb)}.k-Ab .key-strip{background:var(--k-Ab)}.k-Db .key-strip{background:var(--k-Db)}.chord-grid.tinted .k-C{background:color-mix(in oklch, var(--k-C) 10%, var(--bg-1))}.chord-grid.tinted .k-G{background:color-mix(in oklch, var(--k-G) 10%, var(--bg-1))}.chord-grid.tinted .k-D{background:color-mix(in oklch, var(--k-D) 10%, var(--bg-1))}.chord-grid.tinted .k-A{background:color-mix(in oklch, var(--k-A) 10%, var(--bg-1))}.chord-grid.tinted .k-E{background:color-mix(in oklch, var(--k-E) 10%, var(--bg-1))}.chord-grid.tinted .k-B{background:color-mix(in oklch, var(--k-B) 10%, var(--bg-1))}.chord-grid.tinted .k-Fs{background:color-mix(in oklch, var(--k-Fs) 10%, var(--bg-1))}.chord-grid.tinted .k-F{background:color-mix(in oklch, var(--k-F) 10%, var(--bg-1))}.chord-grid.tinted .k-Bb{background:color-mix(in oklch, var(--k-Bb) 10%, var(--bg-1))}.chord-grid.tinted .k-Eb{background:color-mix(in oklch, var(--k-Eb) 10%, var(--bg-1))}.chord-grid.tinted .k-Ab{background:color-mix(in oklch, var(--k-Ab) 10%, var(--bg-1))}.chord-grid.tinted .k-Db{background:color-mix(in oklch, var(--k-Db) 10%, var(--bg-1))}.section-banner{align-items:baseline;gap:var(--s-3);padding:var(--s-3) var(--s-4);background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-2) var(--r-2) 0 0;font-family:var(--t-display);font-size:var(--fs-20);border-bottom:0;font-style:italic;display:flex}.section-banner .label{font-family:var(--t-mono);font-style:normal;font-size:var(--fs-11);letter-spacing:.14em;color:var(--amber);border:1px solid var(--amber);border-radius:var(--r-1);padding:1px 6px;display:inline-block}.section-banner .meas-range{font-family:var(--t-mono);font-style:normal;font-size:var(--fs-12);color:var(--ink-3);margin-left:auto}.notation-pane{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden}.notation-head{align-items:center;gap:var(--s-3);padding:10px var(--s-4);border-bottom:1px solid var(--line);font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-2);letter-spacing:.08em;text-transform:uppercase;display:flex}.notation-head .right{gap:var(--s-2);margin-left:auto;display:flex}.notation-body{padding:var(--s-5) var(--s-5);background:radial-gradient(ellipse at top, oklch(20% .005 70/.4), transparent 60%), var(--bg-1)}.notation-body svg{width:100%;height:auto;display:block}.popover{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-3);box-shadow:var(--sh-3);padding:var(--s-3);z-index:10;width:320px;position:absolute}.popover:before{content:"";background:var(--bg-2);border-left:1px solid var(--line-2);border-top:1px solid var(--line-2);width:12px;height:12px;position:absolute;top:-7px;left:24px;transform:rotate(45deg)}.popover .row{align-items:center;gap:var(--s-2);grid-template-columns:80px 1fr;margin-bottom:6px;display:grid}.popover .row label{font-family:var(--t-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);font-size:10px}.popover .row .input{width:100%;height:26px;font-size:var(--fs-13)}.popover .actions{gap:var(--s-2);margin-top:var(--s-3);justify-content:flex-end;display:flex}.popover .quickpicks{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.popover .quickpicks button{background:var(--bg-1);border:1px solid var(--line);color:var(--ink-1);font-family:var(--t-chord);font-size:var(--fs-13);border-radius:var(--r-2);cursor:pointer;padding:2px 8px}.popover .quickpicks button:hover{background:var(--bg-3);color:var(--ink-0)}.drawer{background:var(--bg-1);border-left:1px solid var(--line);flex-direction:column;width:360px;height:100%;display:flex}.drawer-head{align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);display:flex}.drawer-head .ttl{font-family:var(--t-display);font-style:italic;font-size:var(--fs-17)}.drawer-body{padding:var(--s-4);flex:1;overflow:auto}.drawer-section{margin-bottom:var(--s-5)}.drawer-section h5{font-family:var(--t-mono);font-size:var(--fs-11);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 var(--s-2)}.meta-strip{gap:var(--s-4);padding:var(--s-3) var(--s-5);border-bottom:1px solid var(--line);background:var(--bg-0);font-size:var(--fs-13);align-items:center;display:flex}.meta-strip .item{align-items:baseline;gap:6px;display:flex}.meta-strip .item .lbl{font-family:var(--t-mono);font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3)}.meta-strip .item .val{color:var(--ink-0);font-size:var(--fs-14)}.tabs{border-bottom:1px solid var(--line);padding:0 var(--s-5);align-items:flex-end;gap:2px;display:flex}.tabs .tab{padding:10px var(--s-3);font-size:var(--fs-13);color:var(--ink-2);cursor:pointer;letter-spacing:.01em;border-bottom:2px solid #0000;font-weight:500}.tabs .tab.is-on{color:var(--ink-0);border-bottom-color:var(--amber)}.tabs .tab .count{font-family:var(--t-mono);color:var(--ink-3);margin-left:4px;font-size:10px}.float-toast{border:1px solid var(--line-2);border-radius:var(--r-3);font-size:var(--fs-13);box-shadow:var(--sh-3);background:oklch(22% .006 70);align-items:center;gap:8px;padding:8px 14px;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.float-toast .dot{background:var(--green);border-radius:50%;width:6px;height:6px}.matrix{border-collapse:collapse;width:100%;font-size:var(--fs-12)}.matrix th,.matrix td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:8px 10px}.matrix th{font-weight:500;font-family:var(--t-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3);background:var(--bg-1);font-size:10px;position:sticky;top:0}.matrix td.element{color:var(--ink-0);font-weight:500}.matrix .status{font-family:var(--t-mono);border-radius:var(--r-1);letter-spacing:.08em;text-transform:uppercase;border:1px solid;padding:2px 6px;font-size:10px;display:inline-block}.matrix .status.s-existing{color:var(--green)}.matrix .status.s-schema{color:var(--ink-blue)}.matrix .status.s-new{color:var(--amber)}.matrix code{color:var(--ink-1)}.ia-diagram{padding:var(--s-6)}.ia-node{border:1px solid var(--line);border-radius:var(--r-3);padding:var(--s-3) var(--s-4);background:var(--bg-1)}.ia-node .ttl{font-family:var(--t-display);font-style:italic;font-size:var(--fs-17);color:var(--ink-0)}.ia-node .sub{font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-3);margin-top:2px}.ia-node .children{margin-top:var(--s-3);flex-direction:column;gap:4px;display:flex}.ia-node .child{font-size:var(--fs-12);color:var(--ink-1);border-left:2px solid var(--line);padding:4px 8px}.ia-node .child.stub{color:var(--ink-3);border-left-color:var(--ink-3)}.ia-node .child.new{color:var(--amber);border-left-color:var(--amber)}.ia-node .child.new:after{content:" · new";font-family:var(--t-mono);letter-spacing:.12em;font-size:9px}.swatch-grid{gap:var(--s-3);grid-template-columns:repeat(6,1fr);display:grid}.swatch{border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-1);overflow:hidden}.swatch .chip{height:56px}.swatch .meta{padding:8px 10px}.swatch .name{font-size:var(--fs-12);color:var(--ink-0)}.swatch .val{font-family:var(--t-mono);color:var(--ink-3);font-size:10px}.type-spec{gap:var(--s-4);padding:var(--s-3) 0;border-bottom:1px solid var(--line);grid-template-columns:200px 1fr;display:grid}.type-spec .label{font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em}.type-spec .sample{color:var(--ink-0)}.comp-grid{gap:var(--s-4);grid-template-columns:1fr 1fr;display:grid}.comp-card{border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-1);padding:var(--s-4)}.comp-card h4{margin:0 0 var(--s-2);font-size:var(--fs-13);color:var(--ink-1);font-weight:500}.comp-card .row{align-items:center;gap:var(--s-2);margin-bottom:var(--s-2);flex-wrap:wrap;display:flex}.steps{gap:var(--s-3);margin-top:var(--s-4);grid-template-columns:repeat(4,1fr);display:grid}.step{border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-1);padding:var(--s-4);position:relative}.step .n{font-family:var(--t-mono);letter-spacing:.14em;color:var(--amber);text-transform:uppercase;font-size:10px}.step h5{font-family:var(--t-display);font-style:italic;font-size:var(--fs-17);margin:4px 0 var(--s-2);color:var(--ink-0);font-weight:500}.step p{font-size:var(--fs-13);color:var(--ink-1);margin:0}.step .endpoint{font-family:var(--t-mono);color:var(--ink-3);margin-top:var(--s-2);word-break:break-all;font-size:10px}.mini{border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-1);overflow:hidden}.mini-head{padding:6px var(--s-3);border-bottom:1px solid var(--line);font-family:var(--t-mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:6px;font-size:10px;display:flex}.dots{gap:4px;display:inline-flex}.dots i{background:var(--bg-3);border-radius:50%;width:8px;height:8px;display:block}.flex{display:flex}.flex-1{flex:1}.gap-1{gap:var(--s-1)}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.col{flex-direction:column;display:flex}.muted{color:var(--ink-2)}.tiny{font-family:var(--t-mono);color:var(--ink-3);letter-spacing:.08em;font-size:10px}.upper{text-transform:uppercase;letter-spacing:.12em}.hl-score-toolbar{align-items:center;gap:var(--s-3);padding:10px var(--s-5);border-bottom:1px solid var(--line);background:var(--bg-0);display:flex}.hl-selection-bar{z-index:25;align-items:center;gap:var(--s-3);padding:10px var(--s-5);background:var(--bg-2);border-bottom:1px solid var(--amber);box-shadow:var(--sh-2);flex-wrap:wrap;display:flex;position:sticky;top:0}.hl-score{grid-template-columns:1fr;display:grid}.hl-score.has-rail{grid-template-columns:1fr 360px}.hl-score-body{padding:var(--s-5) var(--s-6) var(--s-12);min-width:0}.hl-system{min-width:0}.hl-section-banner{align-items:baseline;gap:var(--s-3);margin-bottom:8px;display:flex}.hl-section-label{font-family:var(--t-mono);font-size:var(--fs-11);letter-spacing:.14em;color:var(--amber);border:1px solid var(--amber);border-radius:var(--r-1);padding:1px 6px}.hl-section-subtitle{font-family:var(--t-display);font-style:italic;font-size:var(--fs-17);color:var(--ink-0)}.hl-section-range{font-family:var(--t-mono);font-size:var(--fs-11);color:var(--ink-3);margin-left:auto}.hl-keyband{height:18px;margin-bottom:-2px}.hl-keyband-seg{border-radius:var(--r-1) var(--r-1) 0 0;background:oklch(22% .005 70);align-items:center;display:flex;position:relative}.hl-keyband-seg.k-C{background:color-mix(in oklch, var(--k-C) 20%, var(--bg-0))}.hl-keyband-seg.k-G{background:color-mix(in oklch, var(--k-G) 20%, var(--bg-0))}.hl-keyband-seg.k-D{background:color-mix(in oklch, var(--k-D) 20%, var(--bg-0))}.hl-keyband-seg.k-A{background:color-mix(in oklch, var(--k-A) 20%, var(--bg-0))}.hl-keyband-seg.k-E{background:color-mix(in oklch, var(--k-E) 20%, var(--bg-0))}.hl-keyband-seg.k-B{background:color-mix(in oklch, var(--k-B) 20%, var(--bg-0))}.hl-keyband-seg.k-Fs{background:color-mix(in oklch, var(--k-Fs) 20%, var(--bg-0))}.hl-keyband-seg.k-F{background:color-mix(in oklch, var(--k-F) 20%, var(--bg-0))}.hl-keyband-seg.k-Bb{background:color-mix(in oklch, var(--k-Bb) 20%, var(--bg-0))}.hl-keyband-seg.k-Eb{background:color-mix(in oklch, var(--k-Eb) 20%, var(--bg-0))}.hl-keyband-seg.k-Ab{background:color-mix(in oklch, var(--k-Ab) 20%, var(--bg-0))}.hl-keyband-seg.k-Db{background:color-mix(in oklch, var(--k-Db) 20%, var(--bg-0))}.hl-keyband-label{font-family:var(--t-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-0);opacity:.85;padding:0 8px;font-size:9px}.hl-chordrow{align-items:end;padding-top:6px}.hl-measure-chordcell{border-left:1px solid #0000;flex-wrap:wrap;align-items:baseline;gap:12px;min-height:36px;padding:0 8px;display:flex}.hl-chordsym{border-radius:var(--r-1);cursor:pointer;transition:background var(--motion-fast);-webkit-user-select:none;user-select:none;padding:2px 6px;position:relative}.hl-chordsym:hover{background:var(--bg-2)}.hl-chordsym .hl-sym{font-family:var(--t-chord);color:var(--ink-0);letter-spacing:-.005em;font-size:22px;line-height:1}.hl-chordsym.is-inferred .hl-sym{color:var(--ink-3);-webkit-text-decoration:underline dotted var(--ink-3);text-decoration:underline dotted var(--ink-3);text-underline-offset:4px;font-style:italic}.hl-chordsym.is-edited:after{content:"";background:var(--ink-blue);border-radius:1px;height:2px;position:absolute;bottom:-2px;left:4px;right:4px}.hl-chordsym.is-selected{outline:1px solid var(--amber);outline-offset:-1px;background:oklch(79% .13 75/.18)}.hl-chordsym.is-selected .hl-sym{color:var(--ink-0)}.hl-chordsym.is-editing{outline:1px solid var(--amber);background:oklch(79% .13 75/.25)}.hl-chordsym .hl-voicing{font-family:var(--t-mono);color:var(--ink-blue);letter-spacing:.04em;white-space:nowrap;margin-top:2px;font-size:9px;display:block}.hl-comment-dot{background:var(--amber);width:6px;height:6px;box-shadow:0 0 0 2px var(--bg-0);border-radius:50%;position:absolute;top:-4px;right:-4px}.hl-staff-wrap{border-radius:0 0 var(--r-2) var(--r-2);background:linear-gradient(oklch(15.5% .005 70) 0,oklch(14% .006 70) 100%);padding:2px 0 6px}.hl-synth-staff{border-top:1px dashed var(--line-2);border-bottom:1px dashed var(--line-2);height:56px;position:relative}.hl-synth-measure{border-right:1px solid var(--line);position:relative}.hl-synth-measure:last-child{border-right:1.5px solid var(--line-2)}.hl-synth-line{opacity:.35;background:oklch(30% .005 80);height:1px;position:absolute;top:50%;left:0;right:0}.hl-synth-num{font-family:var(--t-mono);color:var(--ink-3);font-size:9px;position:absolute;top:2px;left:4px}.hl-romanrow{padding:6px 0 0}.hl-measure-romancell{flex-wrap:wrap;align-items:baseline;gap:14px;padding:0 8px;display:flex}.hl-roman{font-family:var(--t-roman);font-style:italic;font-size:var(--fs-15);color:var(--ink-1);line-height:1}.hl-roman.major{text-transform:uppercase}.hl-roman.minor{text-transform:lowercase}.hl-roman.is-inferred{opacity:.55}.hl-funcrow{padding:4px 0 0}.hl-measure-funccell{flex-wrap:wrap;align-items:baseline;gap:14px;padding:0 8px;display:flex}.hl-func{font-family:var(--t-mono);color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.hl-bottom-analysis{margin-top:var(--s-8);padding-top:var(--s-5);border-top:1px solid var(--line);gap:var(--s-4);grid-template-columns:1.4fr 1fr 1fr;display:grid}.hl-ba-card{border:1px solid var(--line);background:var(--bg-1);border-radius:var(--r-3);padding:14px 16px}.hl-rail{border-left:1px solid var(--line);background:var(--bg-1);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.hl-rail-head{align-items:center;gap:var(--s-2);padding:12px var(--s-4);border-bottom:1px solid var(--line);display:flex}.hl-rail-tabs{border-bottom:1px solid var(--line);padding:0 var(--s-4);gap:0;display:flex}.hl-rail-tabs button{color:var(--ink-2);font:500 var(--fs-12)/1 var(--t-ui);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 12px}.hl-rail-tabs button.is-on{color:var(--ink-0);border-bottom-color:var(--amber)}.hl-rail-tabs .tiny{color:var(--ink-3);margin-left:4px}.hl-rail-body{flex:1;overflow:auto}.hl-rail-item{border-bottom:1px solid var(--line);cursor:pointer;transition:background var(--motion-fast);padding:10px 16px}.hl-rail-item:hover{background:var(--bg-2)}.hl-rail-item-head{align-items:baseline;gap:8px;display:flex}
