:root{color-scheme:light dark;font-family:-apple-system,Helvetica Neue,system-ui,sans-serif;--bg: #fafaf8;--fg: #1a1a1a;--muted: #6b6b6b;--accent: #d97757;--accent-fg: #fff;--curve: #d97757;--curve-b: #4a8fbf;--panel: #fff;--input-bg: #fff;--input-border: #e2dccd;--grid: #e2dccd;--danger: #e53935;--fs-eyebrow: .7rem;--fs-label: .85rem;--fs-value: .85rem;--fs-body: .85rem;--fs-help: .78rem;--fs-h1: 1.5rem;--fs-panel-title: .95rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--r-sm: 4px;--r-md: 6px;--r-lg: 10px;--r-pill: 999px;--ls-eyebrow: .08em}@media (prefers-color-scheme: dark){:root{--bg: #1a1a1a;--fg: #ededed;--muted: #999;--grid: #333;--panel: #222;--input-bg: #2a2a2a;--input-border: #3a3a3a;--curve-b: #6ba8d8}}body[data-active-slot=B]{--accent: var(--curve-b)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);min-height:100vh;font-size:var(--fs-body);line-height:1.4}main{max-width:1600px;margin:0 auto;padding:var(--space-4) var(--space-5) var(--space-5)}header{display:flex;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap}h1{font-size:var(--fs-h1);margin:0;letter-spacing:-.01em;font-weight:700}.tagline{margin:0;color:var(--muted);font-size:var(--fs-help)}.tagline a{color:var(--accent)}#status{position:fixed;top:var(--space-4);right:var(--space-4);display:flex;align-items:center;gap:var(--space-2);padding:.45rem .75rem;background:var(--panel);border:1px solid var(--grid);border-radius:var(--r-pill);font-size:var(--fs-help);color:var(--muted);box-shadow:0 4px 14px #0000000f;z-index:50;transition:opacity .4s,transform .4s}#status.hidden{opacity:0;pointer-events:none;transform:translateY(-4px)}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:pulse 1.5s ease-in-out infinite}.status-dot[data-state=ready]{background:#4caf50;animation:none}.status-dot[data-state=error]{background:var(--danger);animation:none}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}#app{display:grid;grid-template-columns:320px minmax(0,1fr) 300px;gap:var(--space-4);align-items:start}@media (width <= 1280px){#app{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"recipe plot" "recipe output"}.panel-recipe{grid-area:recipe}.plot-wrap{grid-area:plot}.panel-output{grid-area:output}}@media (width <= 920px){#app{grid-template-columns:1fr;grid-template-areas:"recipe" "plot" "output"}main{padding:var(--space-4) var(--space-3) var(--space-5)}h1{font-size:1.25rem}}.panel{background:var(--panel);border:1px solid var(--grid);border-radius:var(--r-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:0}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding-bottom:var(--space-3);margin-bottom:var(--space-4);border-bottom:1px solid var(--grid)}.panel-header-left{display:flex;align-items:center;gap:var(--space-3)}.panel-header-actions{display:flex;align-items:center;gap:2px}.header-action{width:1.6rem;height:1.6rem;background:transparent;border:none;border-radius:var(--r-sm);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .12s,background .12s}.header-action:hover{color:var(--fg);background:color-mix(in srgb,var(--accent) 8%,transparent)}.panel>.field-group+.field-group{padding-top:var(--space-4);margin-top:var(--space-4);border-top:1px solid var(--grid)}.panel-title{font-size:var(--fs-panel-title);font-weight:700;letter-spacing:-.005em}.field-group{display:flex;flex-direction:column;gap:var(--space-3)}.field-group .controls-grid{row-gap:.6rem}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.eyebrow{font-size:var(--fs-eyebrow);font-weight:700;letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--muted)}.slot-toggle{display:inline-flex;padding:2px;background:var(--bg);border:1px solid var(--input-border);border-radius:var(--r-md)}.slot-btn{width:1.85rem;height:1.6rem;border-radius:var(--r-sm);border:none;background:transparent;color:var(--muted);font-size:.78rem;font-weight:700;cursor:pointer;font-family:ui-monospace,SF Mono,monospace;transition:background .12s,color .12s}.slot-btn:hover{color:var(--fg)}.slot-btn[data-slot=A].active{background:var(--curve);color:var(--accent-fg)}.slot-btn[data-slot=B].active{background:var(--curve-b);color:var(--accent-fg)}.row-grid>input:not([type=range],[type=checkbox]),.range-row>input,.bp-input,.curve-trigger,.upload-meta+button{background:var(--input-bg);color:var(--fg);border:1px solid var(--input-border);border-radius:var(--r-md);padding:.45rem .6rem;font-size:var(--fs-body);font-family:inherit;width:100%;transition:border-color .12s}:where(.row-grid>input:not([type=range],[type=checkbox]),.range-row>input,.bp-input,.curve-trigger):hover{border-color:var(--muted)}:where(.row-grid>input,.range-row>input,.bp-input):focus-visible{outline:none;border-color:var(--accent)}.segmented{display:inline-flex;padding:2px;background:var(--bg);border:1px solid var(--input-border);border-radius:var(--r-md);width:100%}.seg{flex:1;height:1.75rem;border:none;background:transparent;color:var(--muted);font-size:var(--fs-help);font-weight:600;cursor:pointer;font-family:inherit;border-radius:var(--r-sm);transition:background .12s,color .12s;padding:0 .55rem}.seg:hover:not(:disabled){color:var(--fg)}.seg:disabled{opacity:.35;cursor:not-allowed}.seg.active{background:var(--panel);color:var(--fg);box-shadow:0 1px 2px #00000014}.enum-segmented{width:auto}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:20px;background:transparent;cursor:pointer;margin:0;padding:0}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{height:6px;background:var(--input-border);border-radius:3px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);margin-top:-5px;box-shadow:0 1px 3px #0003;border:2px solid var(--panel);transition:transform .08s}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus-visible::-webkit-slider-thumb{transform:scale(1.15)}input[type=range]::-moz-range-track{height:6px;background:var(--input-border);border-radius:3px}input[type=range]::-moz-range-progress{height:6px;background:var(--accent);border-radius:3px}input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);box-shadow:0 1px 3px #0003;cursor:pointer}input[type=range].cf-filled::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--accent) 0 var(--cf-fill, 0%),var(--input-border) var(--cf-fill, 0%) 100%)}.curve-trigger-wrap{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.curve-trigger{display:inline-flex;align-items:center;gap:.5rem;width:auto;padding:.4rem .55rem .4rem .5rem;cursor:pointer;font-size:var(--fs-label);font-weight:600;transition:border-color .12s,background .12s}.curve-trigger[aria-expanded=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--input-bg));color:var(--accent)}.trigger-spark{width:32px;height:14px;opacity:.65;flex-shrink:0}.curve-trigger[aria-expanded=true] .trigger-spark{opacity:1}.trigger-caret{color:var(--muted);flex-shrink:0}.menu-curves{left:auto;right:0;top:calc(100% + 4px);min-width:180px}.menu-curves .menu-item{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:var(--space-2);padding:.32rem .5rem}.menu-curves .menu-item-title{font-weight:500}.menu-curves .menu-item.active .menu-item-title{font-weight:600}.menu-curves .menu-item.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.menu-item-spark{width:100%;height:14px;opacity:.55}.menu-curves .menu-item.active .menu-item-spark{opacity:1}.add-transform-wrap{position:relative}.add-btn{width:1.75rem;height:1.75rem;border:1px solid var(--input-border);background:var(--input-bg)}.add-btn[aria-expanded=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.menu{position:absolute;top:calc(100% + 4px);right:0;z-index:20;background:var(--panel);border:1px solid var(--input-border);border-radius:var(--r-md);box-shadow:0 6px 20px #0000001f;padding:4px;min-width:200px;display:flex;flex-direction:column}.menu[hidden]{display:none}.menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:.4rem .55rem;background:transparent;border:none;border-radius:var(--r-sm);cursor:pointer;font-family:inherit;color:var(--fg);text-align:left}.menu-item+.menu-item{margin-top:1px}.menu-item:hover,.menu-item:focus-visible{background:color-mix(in srgb,var(--accent) 12%,transparent);outline:none}.menu-item-title{font-size:var(--fs-label);font-weight:600;line-height:1.25}.menu-item-desc{font-size:var(--fs-help);color:var(--muted);line-height:1.35}.field-help{margin:0;color:var(--muted);font-size:var(--fs-help);line-height:1.5}.controls-grid{display:grid;grid-template-columns:minmax(8ch,max-content) minmax(0,1fr) minmax(6ch,max-content);gap:.55rem var(--space-3);align-items:center}.slider-row{display:contents}.slider-row>label{font-size:var(--fs-label);font-weight:500;color:var(--fg);cursor:help;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slider-row>output{font-family:ui-monospace,SF Mono,monospace;font-size:var(--fs-value);font-weight:600;text-align:right;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.breakpoints-table{display:flex;flex-direction:column;gap:var(--space-1);border:1px solid var(--input-border);border-radius:var(--r-md);padding:var(--space-2);background:var(--bg);grid-column:1 / -1}.bp-header,.bp-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:var(--space-2);align-items:center}.bp-header{font-size:var(--fs-eyebrow);font-weight:700;letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--muted);padding:0 var(--space-1)}.bp-col{text-align:center}.bp-input{border-radius:var(--r-sm);padding:.3rem .4rem;font-size:var(--fs-help);font-family:ui-monospace,monospace;text-align:right}.bp-add{background:transparent;border:1px dashed var(--input-border);border-radius:var(--r-sm);padding:.4rem;color:var(--muted);cursor:pointer;font-size:var(--fs-help);font-family:inherit;margin-top:var(--space-1)}.bp-add:hover{color:var(--fg);border-color:var(--muted)}.transforms-list{display:flex;flex-direction:column;gap:var(--space-2)}.no-transforms{color:var(--muted);font-size:var(--fs-help);font-style:italic;margin:0}.transform-card{background:var(--bg);border:1px solid var(--input-border);border-radius:var(--r-md);padding:var(--space-2) var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.transform-header{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-label);font-weight:600}.transform-actions{display:flex;gap:.15rem}.icon-btn{background:transparent;border:1px solid transparent;border-radius:var(--r-sm);width:1.5rem;height:1.5rem;cursor:pointer;color:var(--muted);font-size:.9rem;line-height:1;padding:0;display:inline-flex;align-items:center;justify-content:center;transition:color .12s,border-color .12s,background .12s}.icon-btn:hover:not(:disabled){color:var(--fg);background:var(--input-bg);border-color:var(--input-border)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn.delete:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}.transport{display:flex;align-items:stretch;gap:var(--space-2);height:2.4rem}.transport>.btn-primary{flex:1;height:100%;padding:0 1rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.transport .play-icon{font-size:.85em}.icon-toggle{background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--r-md);color:var(--muted);cursor:pointer;width:2.4rem;height:100%;display:inline-flex;align-items:center;justify-content:center;transition:color .12s,background .12s,border-color .12s}.icon-toggle:hover{color:var(--fg);border-color:var(--muted)}.icon-toggle[aria-pressed=true]{background:var(--fg);color:var(--panel);border-color:var(--fg)}.icon-toggle[aria-pressed=true]:after{content:""}.volume-row{display:grid;grid-template-columns:5.5rem minmax(0,1fr) 4ch;align-items:center;gap:var(--space-3);margin-top:var(--space-1)}.volume-icon{color:var(--muted);flex-shrink:0;justify-self:start}.volume-row>output{font-family:ui-monospace,SF Mono,monospace;font-size:var(--fs-value);font-weight:600;color:var(--accent);text-align:right;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.btn-primary svg,.btn-primary .play-icon{flex-shrink:0}.upload-meta{margin:0;padding-left:5.5rem;font-size:var(--fs-help);color:var(--muted);font-style:italic;line-height:1.4}.upload-meta.error{color:var(--danger);font-style:normal}.row-grid{display:grid;grid-template-columns:5.5rem minmax(0,1fr);align-items:center;gap:var(--space-3);font-size:var(--fs-label);color:var(--fg)}.row-grid>span:first-child{font-size:var(--fs-label);font-weight:500;color:var(--fg)}.row-grid.checkbox-row{grid-template-columns:auto 1fr}.row-grid input[type=range]{padding:0;border:none}.range-row{display:flex;align-items:center;gap:var(--space-2);min-width:0}.range-row>input{padding:.4rem .5rem;font-family:ui-monospace,SF Mono,monospace;font-variant-numeric:tabular-nums;text-align:right;flex:1 1 0;-moz-appearance:textfield}.range-row>input::-webkit-outer-spin-button,.range-row>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.range-sep,.range-unit{font-size:var(--fs-help);color:var(--muted)}.btn-primary{background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--r-md);padding:.6rem 1rem;font-size:var(--fs-body);font-weight:600;cursor:pointer;font-family:inherit;transition:opacity .12s,transform .04s}.btn-primary:hover:not(:disabled){opacity:.92}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.download-btn{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;margin-top:var(--space-1)}.citation-summary{cursor:pointer;display:flex;align-items:center;gap:var(--space-2);-webkit-user-select:none;user-select:none;list-style:none}.citation-summary::-webkit-details-marker{display:none}.citation-hint{font-size:.7rem;color:var(--muted);font-style:italic}.citation-wrap[open] .citation-hint{display:none}.citation{margin:var(--space-2) 0 0;font-size:var(--fs-help);color:var(--muted);line-height:1.55}.plot-wrap{position:sticky;top:var(--space-4);background:var(--panel);border:1px solid var(--grid);border-radius:var(--r-lg);padding:var(--space-3) var(--space-4) var(--space-2)}@media (width <= 920px){.plot-wrap{position:static}}.plot-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}.plot-shortcuts{font-size:.7rem;color:var(--muted);display:inline-flex;align-items:center;gap:.3rem}.plot-shortcuts kbd{display:inline-block;background:var(--bg);border:1px solid var(--input-border);border-bottom-width:2px;border-radius:var(--r-sm);padding:.05rem .35rem;font-family:ui-monospace,SF Mono,monospace;font-size:.7rem;font-weight:600;color:var(--fg)}#plot{width:100%;height:auto;display:block;aspect-ratio:16 / 9}.engine-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000000d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;font-size:var(--fs-body);z-index:10}@media (prefers-color-scheme: dark){.engine-overlay{background:#00000059}}.engine-overlay[hidden]{display:none}.engine-overlay-inner{display:flex;align-items:center;gap:var(--space-3);background:var(--panel);padding:.85rem 1.25rem;border-radius:var(--r-md);border:1px solid var(--grid);box-shadow:0 6px 24px #00000014;max-width:80%}.engine-title{margin:0 0 var(--space-1);font-size:var(--fs-body);font-weight:500}.engine-sub{margin:0;font-size:var(--fs-help);color:var(--muted);line-height:1.4}.spinner{width:18px;height:18px;border:2px solid var(--grid);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}
