:root{--color-void: #151412;--color-paper: #151412;--color-paper-2: #1d1b18;--color-paper-3: #262320;--color-lift: #2a2723;--color-hover: #2e2a26;--color-ink: #f6f4f1;--color-ink-2: #c9c3bb;--color-muted: #9c958d;--color-placeholder: #6f6962;--color-rule: #3a3530;--color-rule-strong: #4a453f;--color-rule-hover: #5a544d;--color-accent: #8b8680;--color-accent-hot: #9a948e;--color-accent-active: #a6a099;--color-accent-dim: rgba(139, 134, 128, .16);--color-accent-border: #4a453f;--color-accent-ink: #ffffff;--color-cyan: #9a948e;--color-cyan-dim: rgba(154, 148, 142, .14);--color-focus: #9a948e;--color-danger: #c65746;--color-danger-soft: rgba(198, 87, 70, .18);--color-success: #10b981;--shot-bg: #191714;--shot-border: #4a443d;--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .3);--shadow-md: 0 10px 15px -3px rgb(0 0 0 / .3);--font-body: "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.25rem;--radius-sm: 7px;--radius-md: 10px;--radius-lg: 14px;--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-short: .14s;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}html{overflow-x:clip}body{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased}.app{min-height:100%;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--color-lift) 0%,var(--color-paper) 100%)}.glass-bar{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--color-paper) 78%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-rule);padding:var(--space-2xs) var(--space-md);display:flex;flex-direction:column;gap:var(--space-2xs)}.glass-bar-spacer{display:none}.mast{display:flex;align-items:baseline;gap:var(--space-xs)}.mast h1{margin:0;font-size:var(--text-md);letter-spacing:.02em}.mast-sub{color:var(--color-muted);font-size:var(--text-xs);font-family:var(--font-mono);letter-spacing:.08em}.tool-row{display:flex;align-items:center;gap:var(--space-2xs);flex-wrap:wrap}.btn{appearance:none;border:1px solid var(--color-rule-strong);background:var(--color-paper-2);color:var(--color-ink);font:inherit;font-size:var(--text-sm);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-sm);transition:background var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.btn:hover:not(:disabled){border-color:var(--color-accent);box-shadow:var(--shadow-md)}.btn:disabled{opacity:.4;cursor:not-allowed}.lock-toggle{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-paper-2);color:var(--color-muted);font-size:var(--text-xs);cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.lock-toggle:hover{border-color:var(--color-accent);color:var(--color-ink)}.lock-toggle input{width:14px;height:14px;accent-color:var(--color-accent);cursor:pointer}.lock-toggle input:checked+span{color:var(--color-ink);font-weight:500}.btn-accent{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink);font-weight:600}.btn-accent:hover:not(:disabled){background:var(--color-accent-hot);border-color:var(--color-accent-hot)}.file-input{position:relative;overflow:hidden}.file-input input{position:absolute;inset:0;opacity:0;cursor:pointer}.warn{margin:0;color:var(--color-danger);font-size:var(--text-xs)}.fx-reroll-row{display:none}.download-hint{color:var(--color-ink-2)}.desk{flex:1;min-height:0;display:grid;grid-template-columns:minmax(240px,40%) 1fr;grid-template-rows:minmax(0,1fr);gap:var(--space-md);padding:var(--space-md);max-width:1280px;width:100%;margin:0 auto}.bay{min-width:0}.bay-params{display:flex;flex-direction:column;gap:var(--space-xs);background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-xs);box-shadow:var(--shadow-sm)}.bay-params>*{flex-shrink:0}.fx-list{display:flex;flex-direction:column;gap:2px;padding:var(--space-2xs)}.fx-item{display:flex;align-items:center;gap:var(--space-2xs);padding:4px 6px 4px var(--space-xs);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-short) var(--ease-out)}.fx-item:hover{background:var(--color-paper-3)}.fx-item.is-active{background:var(--color-accent-dim)}.fx-item.is-off{opacity:.55}.fx-toggle{display:flex;align-items:center;cursor:pointer}.fx-toggle input{width:14px;height:14px;accent-color:var(--color-accent);cursor:pointer}.fx-item-name{flex:1;font-size:var(--text-sm);font-weight:500}.fx-item-actions{display:flex;align-items:center;gap:var(--space-3xs);opacity:.6;transition:opacity var(--dur-short) var(--ease-out)}.fx-item:hover .fx-item-actions,.fx-item.is-active .fx-item-actions{opacity:1}.fx-item-actions .btn-text{font-size:var(--text-sm);line-height:1;padding:var(--space-2xs);border-radius:var(--radius-sm)}.fx-item-actions .btn-text:hover:not(:disabled){background:var(--color-accent-dim);color:var(--color-accent-hot)}.fx-item-actions .btn-text:disabled{opacity:.3;cursor:not-allowed}.fx-reroll{color:var(--color-cyan)}.param-panel{background:var(--color-lift);border:1px solid var(--color-rule);border-radius:var(--radius-md);overflow:hidden}.param-panel-head{display:flex;align-items:baseline;justify-content:space-between;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-rule);background:var(--color-paper-2)}.param-title{margin:0;font-size:var(--text-sm);font-weight:600}.param-state{font-size:var(--text-xs);color:var(--color-success);font-family:var(--font-mono)}.param-state.is-off{color:var(--color-muted)}.param-panel-body{padding:var(--space-xs);display:grid;grid-template-columns:1fr 1fr;gap:var(--space-xs) var(--space-sm);align-items:start}.param-panel-body.is-curve{grid-template-columns:1fr}.param-panel-body .span-full,.param-panel-body .blend-row{grid-column:1 / -1}.range-row{display:flex;flex-direction:column;gap:var(--space-3xs)}.range-head{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--text-sm);color:var(--color-ink-2)}.range-head strong{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-accent)}.range-row input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:20px;background:transparent;cursor:pointer}.range-row input[type=range]::-webkit-slider-runnable-track{height:3px;background:var(--color-rule-strong);border-radius:2px}.range-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5.5px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-lift);box-shadow:var(--shadow-sm);transition:transform var(--dur-short) var(--ease-out)}.range-row input[type=range]:hover::-webkit-slider-thumb,.range-row input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}.range-row input[type=range]::-moz-range-track{height:3px;background:var(--color-rule-strong);border-radius:2px}.range-row input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-lift)}.curve-editor{display:flex;flex-direction:column;gap:var(--space-2xs)}.curve-stage{display:flex;gap:var(--space-sm);align-items:stretch}.curve-stage canvas{flex:1 1 0;min-width:0;height:190px;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--color-rule);background:var(--color-paper)}.curve-controls{width:132px;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.curve-controls .btn-text{align-self:flex-start}.curve-channels{display:flex;flex-direction:column;gap:var(--space-3xs)}.curve-channels button{appearance:none;border:1px solid var(--color-rule-strong);background:var(--color-paper-2);color:var(--color-ink-2);font:inherit;font-size:var(--text-xs);padding:3px var(--space-xs);border-radius:var(--radius-sm);cursor:pointer;text-align:left;line-height:1.3;transition:background var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out)}.curve-channels button.is-active{background:var(--color-accent-dim);color:var(--color-accent-hot);border-color:var(--color-accent-border);font-weight:600}.curve-channels button:hover:not(.is-active){color:var(--color-ink)}.blend-row{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm)}.blend-label{color:var(--color-muted);min-width:2.5em}.segmented{display:flex;border:1px solid var(--color-rule-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-paper-3)}.segmented button{appearance:none;border:none;background:transparent;color:var(--color-ink-2);font:inherit;font-size:var(--text-xs);padding:var(--space-2xs) var(--space-sm);cursor:pointer;transition:background var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.segmented button+button{border-left:1px solid var(--color-rule)}.segmented button.is-active{background:var(--color-lift);color:var(--color-accent);font-weight:600}.segmented button:hover:not(.is-active){color:var(--color-ink)}.film-strip{border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper-3);padding:var(--space-xs);display:flex;flex-direction:column;gap:var(--space-2xs)}.film-head{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted)}.btn-text{appearance:none;border:none;background:none;color:var(--color-accent);font:inherit;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;padding:var(--space-3xs) var(--space-2xs);border-radius:var(--radius-sm)}.btn-text:hover{color:var(--color-accent-hot);background:var(--color-accent-dim)}.film-track{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.film-cell{position:relative}.film-hit{appearance:none;border:1px solid var(--color-rule-strong);background:var(--color-lift);border-radius:var(--radius-sm);padding:0;cursor:pointer;overflow:hidden;display:block;box-shadow:var(--shadow-sm);transition:border-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}.film-hit:hover{border-color:var(--color-accent);transform:translateY(-1px)}.film-hit canvas{display:block;width:80px;height:48px}.film-hit canvas.is-empty{background:var(--shot-bg)}.film-num{position:absolute;left:var(--space-2xs);bottom:var(--space-3xs);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-2);text-shadow:0 1px 2px var(--color-lift)}.film-x{position:absolute;top:var(--space-3xs);right:var(--space-3xs);appearance:none;border:none;width:18px;height:18px;border-radius:50%;background:var(--color-danger-soft);color:var(--color-danger);font-size:var(--text-xs);line-height:1;cursor:pointer;opacity:0;transition:opacity var(--dur-short) var(--ease-out)}.film-cell:hover .film-x{opacity:1}.film-x:hover{background:var(--color-danger);color:var(--color-lift)}.film-empty{margin:0;color:var(--color-muted);font-size:var(--text-xs)}.bay-shots{display:flex;flex-direction:column;gap:var(--space-md);min-height:0;height:100%}.shot{margin:0;min-width:0;min-height:0;flex:1 1 0;display:flex;flex-direction:column}.shot figcaption{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted);padding:0 0 var(--space-2xs)}.shot-well{position:relative;flex:1 1 auto;min-height:0;border:1px solid var(--shot-border);border-radius:var(--radius-md);background:var(--shot-bg);overflow:hidden}.shot-well canvas{display:block;width:100%;height:auto}.shot-well canvas.is-empty{visibility:hidden}.shot-ph{position:absolute;inset:0;margin:0;display:flex;align-items:center;justify-content:center;color:var(--color-muted);font-size:var(--text-sm);font-family:var(--font-mono)}@media(min-width:761px){.app{height:100dvh;overflow:hidden}.bay-params{overflow-y:auto;max-height:100%;padding-right:var(--space-2xs)}.shot-well canvas{height:100%;object-fit:contain}}@media(max-width:760px){.desk{grid-template-columns:1fr}.shot{flex:none}.shot-well{flex:none;height:auto}.fx-reroll-row{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.fx-reroll-chip{appearance:none;border:1px solid var(--color-rule-strong);background:var(--color-paper-2);color:var(--color-ink-2);font:inherit;font-size:var(--text-xs);padding:3px var(--space-xs);border-radius:var(--radius-sm);cursor:pointer;line-height:1.3}.fx-reroll-chip:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent-hot)}.fx-reroll-chip:disabled{opacity:.4}}
