:root{--bg: #0e0d0b;--bg-raised: #171512;--bg-input: #100f0c;--bg-plot: #141210;--line: rgba(244, 239, 230, .12);--line-strong: rgba(244, 239, 230, .45);--text: #f4efe6;--muted: #b3aa9c;--faint: #8f877c;--accent: #e2b657;--accent-ink: #221b0c;--danger: #f0b4a8;--warn: #e7c98a;--ok: #c5d7c4;--shadow: 0 18px 50px rgba(0, 0, 0, .35);--radius: 16px;--sans: "Avenir Next", "Segoe UI", "Helvetica Neue", "DejaVu Sans", Arial, sans-serif;--serif: Georgia, "Liberation Serif", "DejaVu Serif", "Times New Roman", serif;--mono: ui-monospace, "DejaVu Sans Mono", "Cascadia Mono", Menlo, Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:radial-gradient(1200px 500px at 10% -10%,rgba(226,182,87,.08),transparent 55%),var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:#e2b65759;color:var(--text)}.app{min-height:100%;display:flex;flex-direction:column;gap:18px;padding:22px 24px 24px}.masthead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:12px 32px}.brand{grid-column:1;grid-row:1}.lede{grid-column:2;grid-row:1;justify-self:end;align-self:end}.mast-tools{grid-column:3;grid-row:1;align-self:center;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.mast-tools:not(:has(#install-app:not([hidden]),#install-hint:not([hidden]))){display:none}#install-app{border-radius:999px;border:1px solid transparent;background:var(--accent);color:var(--accent-ink);font-weight:650;padding:8px 14px;white-space:nowrap}#install-app:hover:not(:disabled){background:#ebc56e}#install-app:disabled{opacity:.45;cursor:default}.install-hint{margin:0;max-width:16rem;color:var(--muted);font-size:.86rem}.brand{display:flex;align-items:center;gap:14px}.mark{width:42px;height:42px;flex:none}.eyebrow{margin:0;color:var(--accent);font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase}h1,h2{font-family:var(--serif);font-weight:500}h1{margin:0;font-size:2rem;letter-spacing:-.02em;line-height:1.1}.about-jump{display:inline-block;margin-top:6px;color:var(--accent);font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;text-decoration:none;border-bottom:1px solid rgba(226,182,87,.45)}.about-jump:hover{border-bottom-color:var(--accent)}h2{margin:0 0 10px;font-size:1.15rem}.lede{margin:0;max-width:46rem;color:var(--muted)}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:18px}.panel{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 20px;display:flex;flex-direction:column;gap:22px}.field{display:flex;flex-direction:column;gap:6px}label{font-size:.92rem}.hint,.plot-note,.legend-empty,.about p,.lede{color:var(--muted)}.hint,.plot-note,.legend-empty{margin:0;font-size:.86rem}textarea,input[type=number]{width:100%;background:var(--bg-input);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-family:var(--mono);font-size:.95rem}textarea{resize:vertical;min-height:76px}.examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.examples button,.actions button{border-radius:999px;border:1px solid var(--line);background:transparent;padding:8px 12px}.examples button{font-family:var(--mono);font-size:.82rem;color:var(--text)}.examples button:hover,.actions button:hover{border-color:#e2b6578c}.check{display:flex;align-items:center;gap:10px;margin-top:14px}.check input{width:1.05rem;height:1.05rem;accent-color:var(--accent)}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.actions .primary{flex:1 1 100%;background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:650;padding:10px 14px}.actions .primary:hover{background:#ebc56e}.actions #fit{flex:1 1 100%}.actions button:not(.primary){flex:1}button:disabled{opacity:.45;cursor:not-allowed}input:disabled{color:var(--faint);background:#0c0b09;border-color:transparent;cursor:not-allowed}.field:has(input:disabled)>label{color:var(--faint)}.message{margin-top:12px;display:grid;gap:6px}.message p{margin:0;font-size:.9rem}.message p[data-kind=ok]{color:var(--ok)}.message p[data-kind=warn]{color:var(--warn)}.message p[data-kind=error]{color:var(--danger)}.fit-block,.patterns-block{display:grid;gap:10px}.common-block{display:grid;gap:6px}.fit-block[hidden],.patterns-block[hidden],.common-block[hidden]{display:none}.common-value{margin:0;font-family:var(--mono);font-size:1.35rem;line-height:1.2;color:var(--accent)}.patterns{display:grid;gap:12px}.pattern-seeds{margin:0;font-size:.86rem}.pattern-seed{font-family:var(--mono);font-weight:650}.fit-results{display:grid;gap:12px}.fit-card{display:grid;gap:4px;padding-bottom:12px;border-bottom:1px solid var(--line)}.fit-card:last-child{border-bottom:0;padding-bottom:0}.fit-head{display:flex;align-items:center;gap:8px}.fit-head .swatch{margin-top:0}.fit-expr,.fit-sub{margin:0;font-family:var(--mono);font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}.fit-sub,.fit-summary,.fit-note{margin:0;color:var(--muted);font-size:.82rem}.fit-note{color:var(--faint)}.fit-kicker{margin:8px 0 0;color:var(--accent);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.fit-kicker.quiet{color:var(--faint)}.fit-terms{margin-top:2px}.fit-terms summary{cursor:pointer;color:var(--muted);font-size:.82rem}.fit-term-list{margin:6px 0 0;max-height:180px;overflow:auto;padding:8px 10px;border-radius:10px;background:var(--bg-input);border:1px solid var(--line);color:var(--muted);font-family:var(--mono);font-size:.75rem;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.explore{display:grid;gap:6px;padding-top:2px}.explore h3{margin:0;font-family:var(--serif);font-size:1.05rem;font-weight:500}.explore-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.explore-list li{margin:0;font-family:var(--mono);font-size:.78rem;line-height:1.4;overflow-wrap:anywhere}.legend{display:grid;gap:10px}.legend-row{display:grid;grid-template-columns:14px 1fr;gap:10px;align-items:start;padding-bottom:10px;border-bottom:1px solid var(--line)}.legend-row:last-child{border-bottom:0;padding-bottom:0}.legend-row.is-muted{opacity:.38}.legend-row.is-heard .legend-seed{color:var(--accent)}.swatch{width:14px;height:4px;margin-top:8px;border-radius:999px}.legend-seed,.legend-meta,.legend-state{margin:0}.legend-seed{font-family:var(--mono);font-size:.95rem;word-break:break-all}.legend-meta,.legend-state{font-size:.84rem;color:var(--muted)}.legend-state[data-state=done]{color:var(--ok)}.legend-state[data-state=warn]{color:var(--warn)}.about p{margin:0 0 10px;font-size:.92rem}.about p:last-child{margin-bottom:0}.about a{color:var(--accent)}.notes{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px 8px;scroll-margin:12px}.notes-head{margin-bottom:4px}.notes-lead{margin:0 0 8px;max-width:44rem;color:var(--muted)}.note{border-top:1px solid var(--line)}.note summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;padding:12px 0;font-family:var(--serif);font-size:1.15rem;font-weight:500;list-style:none}.note summary::-webkit-details-marker{display:none}.note summary::marker{content:""}.note summary:before{content:"";width:.45rem;height:.45rem;border-right:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform:rotate(-45deg);flex:none;align-self:center}.note[open] summary:before{transform:rotate(45deg)}.note-tag{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--warn)}.note-body{max-width:44rem;padding:0 0 16px 1.15rem;font-weight:400}.note-body p,.note-body li{color:var(--muted);font-weight:400}.note-body p{margin:0 0 10px}.note-body h3{margin:16px 0 6px;font-family:var(--serif);font-size:1.02rem;font-weight:400;color:var(--text)}.note-body h3:first-of-type{margin-top:4px}.note-body ul{margin:0 0 10px;padding-left:1.15rem}.note-body li{margin:0 0 4px}.note-body code{font-family:var(--mono);font-size:.88em;color:var(--accent)}.note-body strong,.note-body b{color:inherit;font-weight:400}.note-body a{color:var(--accent)}.note-kicker{color:var(--faint);font-size:.86rem}.note-body.credo p{color:var(--text);font-family:var(--serif);font-size:1.06rem;line-height:1.6}.stage{min-width:0;min-height:520px;display:flex}.plot-card{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0;background:var(--bg-plot);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 12px 14px}.plot-frame{position:relative;flex:1;min-height:440px}.player{display:flex;flex-direction:column;gap:8px}.player-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.player-row button,.player-range button{border-radius:999px;border:1px solid var(--line);background:transparent;padding:8px 14px;color:var(--text)}.player-row button:hover:not(:disabled),.player-range button:hover:not(:disabled){border-color:#e2b6578c}.player-row button:disabled,.player-range button:disabled{opacity:.45}.player-range{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.player-range .hint{flex:1;min-width:12rem}#play:not(:disabled){border-color:#e2b657b3;color:var(--accent, #e2b657)}.player-field{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:.86rem}.player-field.instrument select{min-width:8.75rem}.player-field input,.player-field select{width:auto;min-width:4.5rem;background:var(--bg-input);border:1px solid var(--line);border-radius:8px;color:var(--text);font-family:var(--mono);font-size:.86rem;padding:6px 8px}.player .check{margin-top:0}.meter{height:4px;border-radius:999px;background:#f4efe614;overflow:hidden}#level{display:block;height:100%;width:0;background:#e2b657}.empty,.plot-host{position:absolute;inset:0}.empty{z-index:2;display:grid;align-content:center;justify-items:start;max-width:28rem;margin:auto;padding:24px}.empty[hidden]{display:none}.empty-title{margin:0 0 6px;font-family:var(--serif);font-size:1.6rem}.empty p:last-child{margin:0;color:var(--muted)}.plot-host{z-index:1;cursor:crosshair;touch-action:none}.plot-host.is-brushing{cursor:ew-resize}.plot-host.is-beat{cursor:pointer}.copy-toast{position:absolute;z-index:4;left:50%;bottom:16px;transform:translate(-50%);max-width:calc(100% - 32px);margin:0;padding:6px 12px;border-radius:999px;border:1px solid rgba(226,182,87,.55);background:#1c1914f0;color:var(--text);font-family:var(--mono);font-size:.86rem;pointer-events:none;overflow-wrap:anywhere}.copy-toast[hidden]{display:none}.selection-band{fill:#e2b65729;stroke:#e2b657b8;stroke-width:1;pointer-events:none}.plot-host:empty{cursor:default}.chart{width:100%;height:100%;display:block;-webkit-user-select:none;user-select:none}.plot-frame-line{fill:none;stroke:var(--line-strong)}.grid-major{stroke:#f4efe61a;stroke-width:1}.grid-minor{stroke:#f4efe60d;stroke-width:1}.tick-label{fill:var(--muted);font-size:12px;font-family:var(--mono)}.axis-title{fill:#ebe4d8;font-size:13px;font-family:var(--sans)}.series-line,.series-glow{fill:none;stroke-linecap:round;stroke-linejoin:round}.series-line{stroke-width:2.25}.series-glow{stroke-width:7;stroke-opacity:.22}.chart-many .series-line{stroke-width:1.15;stroke-opacity:.55}.chart-many .series-glow{stroke-width:2.5;stroke-opacity:.08}.chart.is-solo [data-series].is-muted{visibility:hidden}.legend-summary{margin:0;font-family:var(--serif);font-size:1.35rem}.sample-dot,.peak-dot{stroke:#141210;stroke-width:1}.peak-dot{stroke-width:1.5}.beat-dot{fill:none;stroke-width:1.75}.beat-playhead{pointer-events:none}.beat-playhead-pulse,.beat-playhead-halo,.beat-playhead-ring{fill:none}.beat-playhead-pulse{stroke-width:2;transform-box:fill-box;transform-origin:center;animation:beat-pulse 1.05s ease-out infinite}.beat-playhead-halo{stroke-width:2.5}.beat-playhead-ring{stroke-width:3.25}.beat-playhead-core{stroke:#f4efe6;stroke-width:1.25}@keyframes beat-pulse{0%{transform:scale(.85);opacity:.85}to{transform:scale(1.85);opacity:0}}@media(prefers-reduced-motion:reduce){.beat-playhead-pulse{animation:none;opacity:.55}}.hover-guide{stroke:#f4efe666;stroke-dasharray:3 4}.hover-dot{stroke:#f4efe6;stroke-width:1.5}.fit-halo,.fit-line,.fit-stitch{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.fit-halo{stroke:var(--bg-plot);stroke-width:6.5}.fit-line,.fit-stitch{stroke-width:2.2;stroke-dasharray:7 7}.fit-stitch{stroke:#f4efe6;stroke-dashoffset:7}.tooltip{position:absolute;z-index:3;min-width:180px;max-width:280px;padding:10px 12px;border-radius:12px;background:#1c1915f5;border:1px solid rgba(244,239,230,.16);box-shadow:0 12px 40px #00000073;pointer-events:none}.tooltip[hidden]{display:none}.tip-step{margin:0 0 8px;color:var(--accent);font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.tooltip ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.tooltip li{display:grid;grid-template-columns:12px minmax(0,auto) minmax(0,1fr);gap:8px;align-items:baseline;font-size:.92rem}.tooltip .swatch{margin-top:0;align-self:center}.tip-seed{font-family:var(--mono);word-break:break-all}.tip-value{font-family:var(--mono);text-align:right;word-break:break-all}.tip-peak{color:var(--accent);font-family:var(--sans);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}@media(min-width:960px){.app{height:100vh;overflow:auto}.workspace{flex:none;height:calc(100vh - 8.5rem);min-height:520px}.panel{overflow:auto}}@media(max-width:860px){.app{height:auto;padding:16px}.workspace,.masthead{grid-template-columns:1fr}.brand,.lede,.mast-tools{grid-column:1;grid-row:auto;justify-self:start}.stage,.plot-frame{min-height:70vw}h1{font-size:1.7rem}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
