:root{--bg:#f6f1e8;--surface:#fffcf6;--ink:#1f1b16;--muted:#6e665b;--line:#e2d9ca;--accent:#8c2f1f;--accent-soft:#f3e1d9;--shadow:0 1px 2px #3c28140f, 0 4px 16px #3c28140f;--woodwinds:#2d7a57;--brass:#a8740d;--strings:#9c3a24;--keyboards:#34446a;--percussion:#5a6870;--voices:#6e4b90;--ensembles:#1f6280;--other:#6e665b;--serif:"Fraunces", "Iowan Old Style", Georgia, serif;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#14120f;--surface:#1d1a16;--ink:#eee7db;--muted:#a39a8c;--line:#36312a;--accent:#e8896f;--accent-soft:#3a2620;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040;--woodwinds:#6cc39a;--brass:#e0b04f;--strings:#e08467;--keyboards:#93a6d6;--percussion:#9fb0b8;--voices:#b89ad8;--ensembles:#6fb6d6;--other:#a39a8c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent)}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.page{max-width:1120px;margin:0 auto;padding:40px 16px 64px}.masthead h1{font:600 clamp(2.2rem, 5vw, 3.4rem) / 1.05 var(--serif);letter-spacing:-.02em;margin:0}.masthead h1 em{color:var(--accent);font-weight:400}.tagline{color:var(--muted);max-width:52ch;margin:8px 0 28px;font-size:1.05rem}.eyebrow,.family-name{font:600 .72rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}.muted{color:var(--muted);font-weight:400}.small{font-size:.875rem}.link-button{color:var(--accent);text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.notice{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:12px;align-items:center;gap:12px;padding:24px;display:flex}.notice.error,.error-text{color:var(--accent)}.spinner{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.presets{scroll-snap-type:x proximity;scrollbar-width:thin;gap:10px;margin:0 -2px 8px;padding:2px 2px 14px;display:flex;overflow-x:auto}.preset{scroll-snap-align:start;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;flex:none;gap:4px;width:172px;padding:14px;transition:border-color .15s,transform .15s;display:flex}.preset:hover{border-color:var(--muted);transform:translateY(-1px)}.preset.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.preset-name{font:600 1.02rem/1.2 var(--serif)}.preset-desc{color:var(--muted);flex:1;font-size:.78rem;line-height:1.35}.preset-count{color:var(--accent);font-size:.78rem;font-weight:600}.stage{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;grid-template-columns:1fr auto;gap:16px 32px;margin-bottom:28px;padding:24px;display:grid}.stage-empty{color:var(--muted);margin:0}.chips{flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;list-style:none;display:flex}.chip{--c:var(--other);background:color-mix(in srgb, var(--c) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--c) 35%, transparent);border-radius:999px;align-items:center;gap:8px;padding:4px 4px 4px 12px;display:inline-flex}.chip-label{font-weight:500}.stepper{background:var(--surface);border:1px solid color-mix(in srgb, var(--c) 25%, transparent);border-radius:999px;align-items:center;display:inline-flex}.stepper button{width:26px;height:26px;color:var(--c);background:0 0;border:0;border-radius:50%;font-weight:600}.stepper button:hover:not(:disabled){background:color-mix(in srgb, var(--c) 14%, transparent)}.stepper button:disabled{opacity:.3}.stepper-n{text-align:center;font-variant-numeric:tabular-nums;min-width:14px;font-weight:600}.stage-total{text-align:right;flex-direction:column;align-items:flex-end;min-width:180px;display:flex}.total-n{font:600 3rem/1 var(--serif);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.total-label{color:var(--muted);margin:4px 0 12px;font-size:.85rem}.toggle{cursor:pointer;align-items:center;gap:8px;font-size:.875rem;display:inline-flex}.toggle input{accent-color:var(--accent);width:16px;height:16px}.suggestions{color:var(--muted);border-top:1px dashed var(--line);grid-column:1/-1;padding-top:14px;font-size:.9rem}.palette{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px 32px;margin-bottom:40px;display:grid}.family{--c:var(--other)}.family-name{align-items:center;gap:8px;display:flex}.family-name:before{content:"";background:var(--c);border-radius:50%;width:8px;height:8px}[data-family=woodwinds]{--c:var(--woodwinds)}[data-family=brass]{--c:var(--brass)}[data-family=strings]{--c:var(--strings)}[data-family=keyboards]{--c:var(--keyboards)}[data-family=percussion]{--c:var(--percussion)}[data-family=voices]{--c:var(--voices)}[data-family=ensembles]{--c:var(--ensembles)}.family-instruments{flex-wrap:wrap;gap:6px;display:flex}.instrument{border:1px solid var(--line);background:var(--surface);border-radius:8px;align-items:baseline;gap:6px;padding:6px 10px;transition:border-color .12s,background .12s;display:inline-flex}.instrument:hover:not(:disabled){border-color:var(--c);background:color-mix(in srgb, var(--c) 8%, var(--surface))}.instrument.selected{border-color:color-mix(in srgb, var(--c) 60%, transparent);background:color-mix(in srgb, var(--c) 12%, var(--surface))}.instrument.empty:not(.selected){opacity:.5}.instrument:disabled{opacity:.6}.instrument-have{color:var(--c);font-size:.8rem;font-weight:700}.instrument-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.72rem}.results{border-top:1px solid var(--line);padding-top:28px}.results-head{flex-wrap:wrap;align-items:baseline;gap:8px 16px;margin-bottom:16px;display:flex}.results-head h2{font:600 1.6rem/1.1 var(--serif);margin:0}.results-head h2 .muted{font:400 1rem var(--sans)}.progress{background:var(--line);border-radius:2px;flex:120px;align-self:center;max-width:220px;height:4px;overflow:hidden}.progress-bar{background:var(--accent);height:100%;transition:width .3s}.filters{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.era-chips{flex-wrap:wrap;gap:6px;display:flex}.era-chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:.875rem}.era-chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.era-count{opacity:.6;font-variant-numeric:tabular-nums;margin-left:2px}.filter-row{flex-wrap:wrap;gap:8px;display:flex}.filter-row input,.filter-row select{font:inherit;color:inherit;border:1px solid var(--line);background:var(--surface);border-radius:8px;min-width:0;padding:8px 12px}.filter-row input{flex:220px}.filter-row select{flex:0 260px}.works{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.work{border-bottom:1px solid var(--line);padding:12px 4px}.work-title{font:400 1.08rem/1.3 var(--serif);color:var(--ink);text-decoration:none}.work-title:hover{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.work-meta{flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:3px;font-size:.85rem;display:flex}.composer{background:0 0;border:0;padding:0;font-weight:500}.composer:hover{color:var(--accent);text-decoration:underline}.wiki{font-size:.8rem}.badge{background:var(--bg);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:1px 8px;font-size:.72rem}.badge-arr{background:var(--accent-soft);color:var(--accent);border-color:#0000}.more{border:1px solid var(--line);background:var(--surface);border-radius:999px;margin:20px auto 0;padding:10px 20px;display:block}.more:hover{border-color:var(--muted)}.footer{border-top:1px solid var(--line);color:var(--muted);margin-top:64px;padding-top:20px;font-size:.8rem}.footer a{color:inherit}@media (width<=640px){.page{padding-top:24px}.stage{grid-template-columns:1fr;padding:18px}.stage-total{text-align:left;align-items:flex-start}.palette{grid-template-columns:1fr}.filter-row select{flex:100%}}
