:root{--pad: 10px;--gap: 20px;--edge: 3px;--hair: 1px;--h-header: 38px;--h-dock: 132px;--rail: 28px;--w-left: 240px;--w-right: 280px;--w-min: 180px;--w-max: 400px;--hit: 6px;--bar: 8px;--pop-max: 280px;--t-label: .6875rem;--t-plate: .8125rem;--t-mark: 1.0625rem;--lh-label: 1.2;--lh-plate: 1.45;--ls-label: .08em;--ls-mark: .14em;--dur: .14s;--ease: cubic-bezier(.16, 1, .3, 1);--plate: oklch(.13 .014 155);--plate-text: oklch(.93 .038 155);--plate-dim: oklch(.6 .03 155);--plate-rule: oklch(.24 .018 155)}:root,:root[data-theme=dark]{color-scheme:dark;--chassis: oklch(.21 .008 72);--chassis-raised: oklch(.26 .008 72);--chassis-inset: oklch(.16 .008 72);--seam: oklch(.34 .01 72);--seam-lit: oklch(.46 .014 72);--label: oklch(.6 .012 72);--label-strong: oklch(.8 .012 72);--role-chord: oklch(.8 .165 72);--role-char: oklch(.68 .23 340);--role-color: oklch(.78 .135 210);--role-out: oklch(.45 .01 72);--shade: oklch(0 0 0 / .35);--shade-deep: oklch(0 0 0 / .45)}:root[data-theme=light]{color-scheme:light;--chassis: oklch(.86 .012 72);--chassis-raised: oklch(.91 .01 72);--chassis-inset: oklch(.79 .014 72);--seam: oklch(.68 .016 72);--seam-lit: oklch(.55 .02 72);--label: oklch(.4 .02 72);--label-strong: oklch(.24 .024 72);--role-chord: oklch(.62 .15 65);--role-char: oklch(.52 .21 340);--role-color: oklch(.56 .12 215);--role-out: oklch(.62 .01 72);--shade: oklch(.3 .01 72 / .18);--shade-deep: oklch(.3 .01 72 / .26)}*{box-sizing:border-box;min-width:0;min-height:0}html,body{height:100%;margin:0;overflow:hidden;overscroll-behavior:none;background:var(--chassis);color:var(--label)}button,input,select{font:inherit;color:inherit}:focus-visible{outline:var(--hair) solid var(--role-color);outline-offset:var(--hair)}@font-face{font-family:Michroma;src:url(/fonts/michroma.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Chakra Petch;src:url(/fonts/chakra-petch-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:block}@font-face{font-family:Chakra Petch;src:url(/fonts/chakra-petch-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:block}@font-face{font-family:Departure Mono;src:url(/fonts/departure-mono.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block}:root{--font-mark: "Michroma", ui-sans-serif, system-ui, sans-serif;--font-panel: "Chakra Petch", ui-sans-serif, system-ui, sans-serif;--font-plate: "Departure Mono", ui-monospace, "Cascadia Mono", Menlo, monospace}body{font-family:var(--font-panel);font-size:var(--t-label);line-height:var(--lh-label);-webkit-font-smoothing:antialiased}.mark{font-family:var(--font-mark);font-size:var(--t-mark);letter-spacing:var(--ls-mark);color:var(--label-strong);text-transform:uppercase}.label{font-family:var(--font-panel);font-size:var(--t-label);font-weight:500;line-height:var(--lh-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--label)}.label-strong{color:var(--label-strong);font-weight:600}.mono{font-family:var(--font-plate);font-size:var(--t-plate);line-height:var(--lh-plate);letter-spacing:0;text-transform:none}.raised{background:var(--chassis-raised);border:var(--hair) solid var(--seam);border-radius:var(--edge);box-shadow:inset 0 1px 0 var(--seam-lit),0 1px 0 var(--shade)}.well{background:var(--chassis-inset);border:var(--hair) solid var(--seam);border-radius:var(--edge);box-shadow:inset 0 1px 2px var(--shade-deep)}.lit{box-shadow:0 0 0 var(--hair) currentColor,0 0 10px -2px currentColor}.scroll{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--seam-lit) transparent}.scroll::-webkit-scrollbar{width:var(--bar)}.scroll::-webkit-scrollbar-track{background:transparent}.scroll::-webkit-scrollbar-thumb{background:var(--seam-lit);border-radius:var(--edge)}.role-chord-tone{color:var(--role-chord)}.role-characteristic{color:var(--role-char)}.role-color{color:var(--role-color)}.role-outside{color:var(--role-out)}.dot{display:inline-block;width:var(--hit);height:var(--hit);border-radius:50%;background:currentColor;flex:none}.dot-lit{box-shadow:0 0 6px -1px currentColor}.stack{display:flex;flex-direction:column;gap:var(--pad);min-height:0}.row{display:flex;align-items:center;gap:var(--pad);min-width:0}.grow{flex:1 1 auto;min-width:0;min-height:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.panel{display:flex;flex-direction:column;min-height:0}.panel-head{display:flex;align-items:center;gap:var(--pad);padding:var(--pad);border-bottom:var(--hair) solid var(--seam);flex:none;cursor:pointer;user-select:none;background:none;border-left:none;border-right:none;border-top:none;width:100%;text-align:left}.panel-head:hover{color:var(--label-strong)}.panel-chevron{margin-left:auto;color:var(--seam-lit);transition:transform var(--dur) var(--ease)}.panel[data-collapsed=true] .panel-chevron{transform:rotate(-90deg)}.panel[data-collapsed=true] .panel-head{border-bottom:none}.panel-body{padding:var(--pad);display:flex;flex-direction:column;gap:var(--pad);min-height:0}.plate{background:var(--plate);border:var(--hair) solid var(--plate-rule);border-radius:var(--edge);box-shadow:inset 0 1px 3px #0009;padding:var(--pad);font-family:var(--font-plate);font-size:var(--t-plate);line-height:var(--lh-plate);color:var(--plate-text);min-height:0}.plate-dim{color:var(--plate-dim)}.plate-row{display:flex;gap:var(--pad);white-space:pre}.plate-key{color:var(--plate-dim);flex:none;width:8ch}.plate-val{color:var(--plate-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--pad);padding:var(--pad);border:var(--hair) solid var(--seam);border-radius:var(--edge);background:var(--chassis-raised);box-shadow:inset 0 1px 0 var(--seam-lit),0 1px 0 var(--shade);color:var(--label);font-family:var(--font-panel);font-size:var(--t-label);font-weight:500;letter-spacing:var(--ls-label);text-transform:uppercase;line-height:var(--lh-label);cursor:pointer;white-space:nowrap;transition:color var(--dur) var(--ease),transform var(--dur) var(--ease)}.btn:hover:not(:disabled){color:var(--label-strong)}.btn:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 1px 3px var(--shade-deep)}.btn:disabled{color:var(--role-out);cursor:default}.btn[data-armed=true]{color:var(--role-chord);box-shadow:inset 0 1px 0 var(--seam-lit),0 0 0 var(--hair) currentColor,0 0 10px -2px currentColor}.btn-square{padding:var(--pad);aspect-ratio:1}.toggle{display:inline-flex;align-items:center;gap:var(--pad);cursor:pointer;background:none;border:none;padding:0;color:var(--label);font:inherit;letter-spacing:var(--ls-label);text-transform:uppercase}.toggle:hover{color:var(--label-strong)}.toggle-track{width:var(--rail);height:calc(var(--rail) / 2);border-radius:var(--edge);border:var(--hair) solid var(--seam);background:var(--chassis-inset);box-shadow:inset 0 1px 2px var(--shade-deep);position:relative;flex:none}.toggle-thumb{position:absolute;inset:var(--hair) auto var(--hair) var(--hair);width:calc(var(--rail) / 2 - var(--hair) * 4);border-radius:var(--edge);background:var(--seam-lit);transition:transform var(--dur) var(--ease)}.toggle[aria-pressed=true] .toggle-thumb{transform:translate(calc(var(--rail) / 2));background:var(--role-chord);box-shadow:0 0 8px -1px var(--role-chord)}.listbox{position:relative}.listbox-trigger{display:flex;align-items:center;gap:var(--pad);width:100%;padding:var(--pad);border:var(--hair) solid var(--seam);border-radius:var(--edge);background:var(--chassis-inset);box-shadow:inset 0 1px 2px var(--shade-deep);color:var(--label-strong);font-family:var(--font-plate);font-size:var(--t-plate);text-transform:none;letter-spacing:0;cursor:pointer;text-align:left}.listbox-trigger:hover{border-color:var(--seam-lit)}.listbox-caret{margin-left:auto;color:var(--seam-lit);flex:none}.listbox-popover{position:absolute;z-index:20;top:calc(100% + var(--hair));left:0;right:0;max-height:var(--pop-max);display:flex;flex-direction:column;background:var(--chassis-raised);border:var(--hair) solid var(--seam-lit);border-radius:var(--edge);box-shadow:0 6px 20px -6px #0009;overflow:hidden}.listbox-filter{padding:var(--pad);border:none;border-bottom:var(--hair) solid var(--seam);background:var(--plate);color:var(--plate-text);font-family:var(--font-plate);font-size:var(--t-plate);outline:none;flex:none}.listbox-filter::placeholder{color:var(--plate-dim)}.listbox-list{list-style:none;margin:0;padding:0;min-height:0}.listbox-option{display:flex;align-items:center;gap:var(--pad);padding:var(--pad);font-family:var(--font-plate);font-size:var(--t-plate);color:var(--label);cursor:pointer;white-space:nowrap}.listbox-option[data-active=true]{background:var(--chassis-inset);color:var(--label-strong)}.listbox-option[data-selected=true]{color:var(--role-chord)}.listbox-empty{padding:var(--pad);font-family:var(--font-plate);font-size:var(--t-plate);color:var(--plate-dim)}.listbox-group{padding:var(--pad);color:var(--seam-lit);border-top:var(--hair) solid var(--seam)}.listbox-group:first-child{border-top:none}.meter{display:flex;gap:2px;height:var(--bar);align-items:stretch}.meter-seg{flex:1 1 0;border-radius:var(--edge);background:var(--chassis-inset);box-shadow:inset 0 0 0 var(--hair) var(--seam)}.meter-seg[data-on=true]{background:currentColor;box-shadow:0 0 6px -2px currentColor}.meter-row{display:grid;grid-template-columns:11ch 1fr 5ch;gap:var(--pad);align-items:center}.meter-label{font-family:var(--font-plate);font-size:var(--t-plate);color:var(--plate-dim);overflow:hidden;text-overflow:ellipsis}.meter-value{font-family:var(--font-plate);font-size:var(--t-plate);color:var(--plate-text);text-align:right}#app{height:100dvh;padding:var(--gap);gap:var(--gap);display:grid;grid-template-areas:"header header header" "left   stage  right" "dock   dock   dock";grid-template-rows:var(--h-header) minmax(0,1fr) var(--row-dock);grid-template-columns:var(--col-left) minmax(0,1fr) var(--col-right);--col-left: var(--w-left);--col-right: var(--w-right);--row-dock: var(--h-dock)}#app[data-left=collapsed]{--col-left: var(--rail)}#app[data-right=collapsed]{--col-right: var(--rail)}#app[data-dock=collapsed]{--row-dock: var(--rail)}#app[data-dragging=true]{cursor:col-resize;user-select:none}.header{grid-area:header;display:flex;align-items:center;gap:var(--gap);padding:0 var(--pad)}.header-links{display:flex;gap:var(--gap);margin-left:auto}.header-link{background:none;border:none;padding:0;color:var(--label);font:inherit;letter-spacing:var(--ls-label);text-transform:uppercase;cursor:pointer}.header-link:hover{color:var(--label-strong)}.zone{position:relative;display:flex;flex-direction:column;gap:var(--gap);min-height:0;min-width:0}.zone-left{grid-area:left}.zone-right{grid-area:right}.zone-dock{grid-area:dock;flex-direction:row}.zone-scroll{display:flex;flex-direction:column;gap:var(--gap);min-height:0}.seam{position:absolute;z-index:10;background:none;border:none;padding:0;display:flex;align-items:center;justify-content:center}.seam-v{top:0;bottom:0;width:var(--hit);cursor:col-resize}.seam-left{right:calc((var(--gap) + var(--hit)) / -2)}.seam-right{left:calc((var(--gap) + var(--hit)) / -2)}.seam-h{left:0;right:0;height:var(--hit);top:calc((var(--gap) + var(--hit)) / -2);cursor:row-resize}.seam-line{background:var(--seam);transition:background var(--dur) var(--ease)}.seam-v .seam-line{width:var(--hair);height:100%}.seam-h .seam-line{height:var(--hair);width:100%}.seam:hover .seam-line,.seam:focus-visible .seam-line{background:var(--role-chord);box-shadow:0 0 8px -2px var(--role-chord)}.rail{display:flex;align-items:center;justify-content:center;cursor:pointer;background:var(--chassis-raised);border:var(--hair) solid var(--seam);border-radius:var(--edge);box-shadow:inset 0 1px 0 var(--seam-lit),0 1px 0 var(--shade);color:var(--label);padding:var(--pad)}.rail:hover{color:var(--label-strong)}.rail-v{writing-mode:vertical-rl;letter-spacing:var(--ls-label);text-transform:uppercase;height:100%}.rail-h{width:100%;letter-spacing:var(--ls-label);text-transform:uppercase}.stage{grid-area:stage;display:flex;flex-direction:column;gap:var(--gap);min-height:0;min-width:0}.stage-switch{display:flex;gap:var(--hair);flex:none;padding:var(--hair);border:var(--hair) solid var(--seam);border-radius:var(--edge);background:var(--chassis-inset);box-shadow:inset 0 1px 2px var(--shade-deep);align-self:flex-start}.stage-switch-btn{padding:var(--pad);border:none;border-radius:var(--edge);background:none;color:var(--label);font-family:var(--font-panel);font-size:var(--t-label);font-weight:500;letter-spacing:var(--ls-label);text-transform:uppercase;cursor:pointer;transition:color var(--dur) var(--ease)}.stage-switch-btn:hover{color:var(--label-strong)}.stage-switch-btn[aria-pressed=true]{background:var(--chassis-raised);color:var(--role-chord);box-shadow:inset 0 1px 0 var(--seam-lit),0 0 8px -3px var(--role-chord)}.dock-group{display:flex;flex-direction:column;gap:var(--pad);min-width:0}.tonic-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--hair)}.tonic-btn{padding:var(--pad);border:var(--hair) solid var(--seam);border-radius:var(--edge);background:var(--chassis-raised);box-shadow:inset 0 1px 0 var(--seam-lit);color:var(--label);font-family:var(--font-plate);font-size:var(--t-plate);cursor:pointer;text-align:center}.tonic-btn:hover{color:var(--label-strong)}.tonic-btn[aria-pressed=true]{color:var(--role-chord);box-shadow:inset 0 1px 0 var(--seam-lit),0 0 0 var(--hair) currentColor,0 0 10px -3px currentColor}.list-rows{display:flex;flex-direction:column;min-height:0}.list-row{display:flex;align-items:center;gap:var(--pad);font-family:var(--font-plate);font-size:var(--t-plate);line-height:var(--lh-plate);color:var(--plate-text);white-space:nowrap}.list-row-dim{color:var(--plate-dim)}.list-row-num{margin-left:auto;color:var(--plate-dim);flex:none}.evidence-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--pad);min-height:0}.stage-frame{display:flex;flex-direction:column;gap:var(--gap);min-height:0;min-width:0}.idle-face{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0;padding:var(--gap)}.idle-mount{position:absolute;inset:var(--gap);border:var(--hair) solid var(--seam);border-radius:var(--edge);box-shadow:inset 0 1px 2px var(--shade-deep);background:var(--chassis-inset)}.idle-screw{position:absolute;width:var(--hit);height:var(--hit);border-radius:50%;background:var(--chassis);box-shadow:inset 0 1px 1px var(--shade-deep),0 0 0 var(--hair) var(--seam)}.idle-screw-tl{top:var(--pad);left:var(--pad)}.idle-screw-tr{top:var(--pad);right:var(--pad)}.idle-screw-bl{bottom:var(--pad);left:var(--pad)}.idle-screw-br{bottom:var(--pad);right:var(--pad)}.idle-plate{position:relative;z-index:1;min-width:0;max-width:48ch}
