@font-face{font-family:Camera Plain Variable;src:url(/pulse-studio/assets/CameraPlainVariable-BhPypTEq.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:block}@font-face{font-family:Geist Mono;src:url(/pulse-studio/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2");font-weight:100 900;font-display:swap}:root{--bg-base: oklch(20.42% .002 107);--bg-surface: oklch(23% .002 107);--bg-elevated: oklch(24.74% .002 107);--bg-field: oklch(27.2% .002 107);--bg-hover: oklch(30% .002 107);--bg-active: oklch(32.8% .002 107);--border: oklch(37.2% .004 107 / .4);--border-subtle: oklch(34.74% .004 107 / .4);--border-focus: oklch(70.62% .1391 264.41);--border-field: oklch(55% .002 107 / .16);--text-primary: oklch(100% 0 0);--text-secondary: oklch(90.95% .002 107);--text-muted: oklch(72.34% .002 107);--text-dim: oklch(72.34% .002 107);--accent: oklch(52.43% .2396 264.41);--accent-hover: color-mix(in oklch, var(--accent), white 8%);--accent-muted: oklch(52.43% .2396 264.41 / .2);--accent-subtle: oklch(52.43% .2396 264.41 / .08);--text-accent: oklch(70.62% .1391 264.41);--focus-ring: var(--text-accent);--error: oklch(76.15% .1564 26.56);--error-muted: oklch(58.53% .2203 26.56 / .2);--success: oklch(72.92% .155 138.23);--sidebar-width: 340px;--header-height: 52px;--font-ui: "Camera Plain Variable", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "Geist Mono", "SF Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 15px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-field: 7px}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}::selection{background:var(--accent);color:#fff}#app{width:100%;height:100%;display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--header-height) 1fr;transition:grid-template-columns .25s ease}#app.sidebar-closed{grid-template-columns:0px 1fr}#app.sidebar-closed .sidebar{opacity:0;pointer-events:none}.header{grid-column:1 / -1;grid-row:1;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:10}.header-left{display:flex;align-items:center;gap:var(--space-4)}.header-logo{font-family:var(--font-mono);font-weight:600;font-size:var(--text-lg);color:var(--text-primary);letter-spacing:.02em;display:flex;align-items:center;gap:6px}.header-logo span{color:var(--accent);font-size:var(--text-sm)}.sidebar-name-field{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4) var(--space-5)}.sidebar-name-label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.sidebar-shader-name{width:100%;font-size:var(--text-sm);font-family:var(--font-ui);font-weight:400;color:var(--text-secondary);background:var(--bg-field);border:1px solid var(--border-field);border-radius:var(--radius-field);padding:8px 12px;outline:none;transition:border-color .2s,color .2s,background .2s;box-sizing:border-box}.sidebar-shader-name:focus{border-color:var(--accent);color:var(--text-primary);background:var(--bg-elevated)}.header-center,.header-right{display:flex;align-items:center;gap:var(--space-2)}.sidebar{grid-column:1;grid-row:2;background:var(--bg-surface);border-right:1px solid var(--border);overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;transition:opacity .2s ease}.sidebar::-webkit-scrollbar{width:5px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.main-area{grid-column:2;grid-row:2;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}.preview-container{flex:1;position:relative;min-height:0;background:#000;overflow:hidden}.preview-container canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.preview-error{position:absolute;bottom:var(--space-4);left:var(--space-4);right:var(--space-4);padding:var(--space-3) var(--space-4);background:#100c0cd9;border:1px solid var(--error);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--error);white-space:pre-wrap;max-height:120px;overflow-y:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.preview-onboarding{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1;animation:onboarding-fade-in .6s ease 1s both}@keyframes onboarding-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.preview-onboarding-icon{font-size:28px;color:var(--accent);opacity:.6;line-height:1}.preview-onboarding-heading{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:480;color:var(--text-secondary);letter-spacing:.02em}.preview-onboarding-text{font-size:var(--text-sm);color:var(--text-muted);text-align:center;line-height:1.6}.editor-container{position:relative;background:var(--bg-surface);border-top:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.editor-drag-handle{height:4px;cursor:ns-resize;background:transparent;position:absolute;top:0;left:0;right:0;z-index:5}.editor-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.editor-header-label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.editor-content{flex:1;min-height:0;overflow:hidden}.editor-content .cm-editor{height:100%}.editor-content .cm-scroller{font-family:var(--font-mono)!important;font-size:var(--text-sm)!important;line-height:1.6!important}.sidebar-section{border-bottom:1px solid var(--border-subtle)}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-5);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.sidebar-section-title{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.sidebar-section-chevron{width:12px;height:12px;color:var(--text-muted)}.sidebar-section-content{overflow:hidden}.sidebar-section-content-inner{padding:var(--space-1) var(--space-5) var(--space-4) var(--space-7)}.control-group{display:flex;flex-direction:column;gap:6px}.control{display:flex;flex-direction:column;gap:0;background:var(--bg-field);border:1px solid var(--border-field);border-radius:var(--radius-field);padding:8px 12px;transition:border-color .15s}.control-label{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-xs);color:var(--text-muted);margin-bottom:4px}.control-label-text{font-weight:480;font-size:var(--text-xs);letter-spacing:.01em}.control-value{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;font-variant-numeric:tabular-nums;color:var(--text-secondary);min-width:36px;text-align:right}.control-row{display:flex;align-items:center;gap:var(--space-2)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:3px;background:var(--bg-active);border-radius:2px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--text-primary);border:none;cursor:pointer;transition:transform .1s,box-shadow .15s;box-shadow:0 1px 4px #0000004d}input[type=range]:active::-webkit-slider-thumb{transform:scale(.95);box-shadow:0 0 0 4px var(--accent-muted)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--text-primary);border:none;cursor:pointer}.color-control{display:flex;align-items:center;gap:var(--space-2)}.color-swatch{width:24px;height:24px;border-radius:6px;border:1px solid rgba(255,255,255,.08);cursor:pointer;flex-shrink:0;box-shadow:0 1px 3px #0003}.color-picker-popover{z-index:100;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px;box-shadow:0 8px 24px #00000080}.color-picker-popover .react-colorful{width:200px;height:auto}.color-picker-popover .react-colorful__saturation{height:160px;border-radius:var(--radius-sm);border-bottom:none}.color-picker-popover .react-colorful__hue{height:10px;border-radius:5px;margin-top:8px}.color-picker-popover .react-colorful__pointer{width:16px;height:16px;border:2px solid #fff;box-shadow:0 1px 4px #0006}.color-hex-input{flex:1;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;background:transparent;border:none;padding:0;color:var(--text-secondary);outline:none;transition:color .15s}.color-hex-input:focus{color:var(--text-primary)}.gradient-bar-container{position:relative;padding:0 6px 14px;margin-bottom:var(--space-2);touch-action:none}.gradient-bar{height:20px;border-radius:99px;border:1px solid var(--border)}.gradient-handles{position:relative;height:14px}.gradient-handle{position:absolute;top:2px;width:12px;height:12px;border-radius:50%;border:none;transform:translate(-50%);cursor:grab;box-shadow:0 0 0 2px var(--bg-surface),0 1px 3px #0006;transition:transform .1s ease}.gradient-handle:hover{transform:translate(-50%) scale(1.2)}.gradient-handle:active,.gradient-handle.active{cursor:grabbing;transform:translate(-50%) scale(1.3)}.color-row{display:flex;flex-direction:row;align-items:center;gap:var(--space-2)}.color-row .control-label{margin-bottom:0}.color-row .color-control{flex:1}.color-drag-handle{display:flex;align-items:center;justify-content:center;width:14px;height:18px;cursor:grab;color:var(--text-muted);flex-shrink:0;opacity:.7;transition:opacity .15s,color .1s;-webkit-user-select:none;user-select:none;touch-action:none}.color-drag-handle:active{cursor:grabbing}.color-remove-btn{flex-shrink:0;opacity:.35;transition:opacity .15s;position:absolute;right:8px;top:0;bottom:0;margin:auto 0;height:fit-content}.color-row{position:relative}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px 14px;font-family:var(--font-ui);font-size:var(--text-sm);font-weight:480;border:1px solid var(--border-field);border-radius:var(--radius-field);background:var(--bg-field);color:var(--text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap;height:32px;-webkit-user-select:none;user-select:none}.btn:active{background:var(--bg-active);transform:scale(.98)}.btn-primary{background:var(--accent);border-color:transparent;color:#fff}.btn-icon{width:32px;padding:0}.btn-ghost{background:transparent;border-color:transparent}.control-reset{width:16px;height:16px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-muted);cursor:pointer;border-radius:50%;opacity:0;transition:opacity .1s,color .1s,transform .1s;flex-shrink:0}.control-reset:active{transform:scale(.85)}.preset-list{display:flex;flex-direction:column}.random-shader-btn,.add-color-btn{width:100%;padding:8px 0;margin-top:var(--space-2);border-style:dashed;border-color:var(--border-field);background:transparent;color:var(--text-dim);font-size:var(--text-xs);letter-spacing:.04em}.preset-row{display:flex;align-items:center;gap:var(--space-3);padding:7px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background .1s;-webkit-user-select:none;user-select:none}.preset-row:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.parameter-slider:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:8px}.preset-row.active{background:var(--accent-subtle)}.preset-row.active .preset-row-name{color:var(--text-accent)}.preset-row-thumb{width:36px;height:24px;border-radius:4px;background:#0a0a0c;overflow:hidden;flex-shrink:0;border:1px solid var(--border-subtle)}.preset-row-thumb img{width:100%;height:100%;display:block;object-fit:cover}.preset-row-info{display:flex;flex-direction:column;min-width:0}.preset-row-name{font-size:var(--text-sm);font-weight:480;color:var(--text-primary);line-height:1.3}.preset-row-desc{font-size:var(--text-xs);color:var(--text-dim);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.palette-picker{background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:12px}.palette-picker-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;-webkit-user-select:none;user-select:none}.palette-picker-label{font-size:var(--text-xs);font-weight:480;color:var(--text-secondary);letter-spacing:.01em}.palette-picker-chevron{color:var(--text-dim);flex-shrink:0}.preset-palettes{display:flex;gap:8px;padding:10px 0 4px}.preset-palette-swatch{width:24px;height:24px;border-radius:99px;border:none;padding:0;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff14;transition:transform .15s,box-shadow .15s}.preset-palette-swatch:hover{transform:scale(1.2);box-shadow:inset 0 0 0 1px #ffffff1f,0 0 0 2px var(--border-focus)}.saved-list{display:flex;flex-direction:column}.saved-item{display:flex;align-items:center;gap:var(--space-3);padding:9px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:background .1s;-webkit-user-select:none;user-select:none}.saved-item:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.saved-item-name{font-size:var(--text-sm);font-weight:480;color:var(--text-primary)}.saved-item-date{font-size:var(--text-xs);color:var(--text-dim);font-family:var(--font-mono);font-weight:300}.saved-item-actions{display:flex;gap:var(--space-1);opacity:.35;transition:opacity .1s}.saved-item-swatch{width:36px;height:24px;border-radius:4px;flex-shrink:0;border:1px solid var(--border-subtle);background:var(--bg-field)}.saved-item-info{min-width:0;flex:1}.saved-item-rename-input{font-family:var(--font-ui);font-size:var(--text-sm);background:var(--bg-field);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:2px 6px;color:var(--text-primary);outline:none;width:100%}.btn-ghost.copied{color:var(--success)}.control-select{width:100%;font-family:var(--font-ui);font-size:var(--text-sm);background:transparent;border:none;padding:0;color:var(--text-secondary);outline:none;cursor:pointer}.control-select option{background:var(--bg-elevated);color:var(--text-primary)}.select{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;background:var(--bg-field);border:1px solid var(--border-field);border-radius:var(--radius-field);padding:4px 8px;color:var(--text-secondary);outline:none;cursor:pointer;transition:border-color .15s;height:28px}.select:focus{border-color:var(--accent)}.time-controls{display:flex;align-items:center;gap:4px}.time-display{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:300;font-variant-numeric:tabular-nums;color:var(--text-muted);min-width:48px;text-align:right;letter-spacing:.02em}.export-panel{display:flex;flex-direction:column;gap:var(--space-3)}.export-fn-input{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:400;background:transparent;border:none;padding:0;color:var(--text-primary);outline:none;width:100%}.export-fn-input::placeholder{color:var(--text-dim)}.export-buttons{display:flex;gap:6px}.export-buttons .btn{flex:1}.effects-list{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-3)}.effect-item{background:var(--bg-field);border:1px solid var(--border-field);border-radius:var(--radius-md);overflow:hidden;transition:border-color .15s,opacity .2s}.effect-item.expanded{overflow:visible;position:relative;z-index:1}.effect-item.disabled{opacity:.4}.effect-item-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px}.effect-item-left{display:flex;align-items:center;gap:6px;min-width:0}.effect-drag-handle{display:flex;align-items:center;justify-content:center;width:14px;height:18px;cursor:grab;color:var(--text-muted);flex-shrink:0;opacity:.7;transition:opacity .15s,color .1s;-webkit-user-select:none;user-select:none;touch-action:none}.effect-drag-handle:active{cursor:grabbing}.effect-item-right{display:flex;align-items:center;gap:2px}.effect-item-name{font-size:var(--text-sm);font-weight:480;color:var(--text-primary)}.effect-chevron{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--text-muted);transition:color .15s}.effect-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:16px;background:var(--bg-active);border-radius:8px;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0;border:none;outline:none;-webkit-user-select:none;user-select:none}.effect-toggle:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-muted);transition:transform .2s,background .2s}.effect-toggle:checked{background:var(--accent)}.effect-toggle:checked:after{transform:translate(12px);background:#fff}.effect-category-header{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:6px 2px 4px}.effect-category-header:not(:first-child){margin-top:8px}.category-add-btn{display:inline-flex;align-items:center;gap:3px;height:22px;padding:0 8px 0 6px;font-family:var(--font-ui);font-size:var(--text-xs);font-weight:480;color:var(--text-muted);background:transparent;border:none;border-radius:99px;cursor:pointer;transition:color .15s}.category-add-btn:hover{color:var(--text-secondary)}.category-add-btn:active{transform:scale(.96)}.category-add-btn.open{color:var(--text-secondary)}.category-add-btn svg{width:9px;height:9px}.category-dropdown{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:8px}.category-dropdown-inner{padding:4px 0}.effect-remove-btn{opacity:.35;transition:opacity .1s;width:24px;height:24px}.effect-item-controls{padding:2px 10px 10px;border-top:1px solid var(--border-subtle)}.effect-item-controls .dialkit-param-controls,.effect-item-controls .dialkit-vec2{display:flex;flex-direction:column;gap:4px}.effect-item-controls .control{background:transparent;border:none;border-radius:0;padding:4px 0}.effect-catalog-item{padding:6px 12px;cursor:pointer;transition:background .1s;border-radius:0}.effect-catalog-item-name{font-size:var(--text-sm);font-weight:480;color:var(--text-primary)}.effect-catalog-item-desc{font-size:var(--text-xs);color:var(--text-dim);line-height:1.3}.inline-confirm{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--error);white-space:nowrap}.inline-confirm-label{font-weight:480}.inline-confirm-yes{color:var(--error);font-weight:600}.inline-confirm-no{color:var(--text-secondary)}.mono{font-family:var(--font-mono)}.text-muted{color:var(--text-muted)}.empty-state{padding:var(--space-4);text-align:center;color:var(--text-dim);font-size:var(--text-xs);font-family:var(--font-mono);letter-spacing:.02em}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(8px);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 16px;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--text-primary);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:1000;box-shadow:0 4px 12px #0000004d}.toast-visible{opacity:1;transform:translate(-50%) translateY(0)}.separator{height:1px;background:var(--border-subtle);margin:var(--space-2) 0}@media(hover:hover){.sidebar-shader-name:hover{border-color:var(--border-focus);color:var(--text-primary)}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.editor-drag-handle:hover{background:var(--accent-muted)}.sidebar-section-header:hover{background:var(--bg-hover)}.control:hover{border-color:var(--border-focus)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}.color-row:hover .color-drag-handle{opacity:1}.color-drag-handle:hover{color:var(--text-secondary)}.color-row:hover .color-remove-btn{opacity:.7}.color-remove-btn:hover{opacity:1!important}.btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-focus)}.btn-primary:hover{background:var(--accent-hover);border-color:transparent;color:#fff}.btn-ghost:hover{background:var(--bg-hover);border-color:transparent}.control:hover .control-reset{opacity:1}.control-reset:hover{color:var(--text-primary);transform:scale(1.2)}.preset-row:hover,.saved-item:hover{background:var(--bg-hover)}.saved-item:hover .saved-item-actions{opacity:1}.select:hover{border-color:var(--border-focus)}.effect-item:hover .effect-drag-handle{opacity:1}.effect-drag-handle:hover,.effect-item-header:hover .effect-chevron{color:var(--text-secondary)}.effect-item:hover .effect-remove-btn{opacity:.7}.effect-remove-btn:hover{opacity:1!important}.effect-item-controls .control:hover{border-color:transparent}.effect-catalog-item:hover{background:var(--bg-hover)}}.sidebar-toolbar,.sidebar-backdrop{display:none}@media(max-width:768px){#app{grid-template-columns:1fr;transition:none}#app.sidebar-closed{grid-template-columns:1fr}.main-area{grid-column:1}.sidebar{position:fixed;top:var(--header-height);left:0;bottom:0;width:min(var(--sidebar-width),85vw);z-index:30;transform:translate(0);transition:transform .25s ease,opacity .25s ease;opacity:1;box-shadow:4px 0 24px #0006;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch}#app.sidebar-closed .sidebar{transform:translate(-100%);opacity:1;pointer-events:none;box-shadow:none}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:#00000080}.sidebar-toolbar{display:flex;align-items:center;gap:2px;padding:var(--space-2) var(--space-3);background:var(--bg-surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1;flex-shrink:0}.sidebar-toolbar-separator{width:1px;height:24px;background:var(--border);margin:0 var(--space-1);flex-shrink:0}.sidebar-toolbar .time-controls{gap:2px}.btn{min-height:44px;min-width:44px;padding:8px 16px}.btn-icon{width:44px;min-width:44px}.effect-drag-handle,.color-drag-handle{width:28px;height:44px;margin:-8px 0}.effect-toggle{width:36px;height:20px;min-width:36px;min-height:20px}.effect-toggle:after{width:16px;height:16px}.effect-toggle:checked:after{transform:translate(16px)}.effect-item-header{min-height:44px}.effect-remove-btn,.color-remove-btn{width:44px;min-width:44px;min-height:44px}.color-row{min-height:44px;align-items:center}.category-add-btn{min-height:44px;padding:8px 12px}.gradient-handle{width:18px;height:18px;top:-1px}.header{padding:0 var(--space-3)}.header-right,.header-center{gap:2px}}button,input,select{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.header{padding-inline:16px}.header-left{gap:14px}.header-logo{gap:9px;font-family:var(--font-ui)}.header-brand-mark{display:block;width:23px;height:24px;flex:none}.header-logo .wordmark{color:var(--text-primary);font-size:19px;letter-spacing:-.45px;font-weight:480}.header-logo .wordmark-studio{color:var(--text-muted);font-size:13px;font-weight:400;letter-spacing:-.15px;margin-left:5px}.header-center{margin-left:auto;margin-right:auto}.header-right{gap:7px}.header .btn{border-radius:6px}.btn:disabled{cursor:default}.btn-ghost.selected{background:var(--bg-hover);color:var(--text-primary)}.sidebar-name-field{gap:7px;padding:20px 20px 16px}.sidebar-name-label{font-family:var(--font-ui);text-transform:none;letter-spacing:0}.sidebar-shader-name{color:var(--text-primary);background:transparent;font-size:15px;padding:8px 10px;border-color:var(--border)}.sidebar-section-header{width:100%;background:transparent;border:0;min-height:48px;margin:0;text-align:left}.sidebar-section-title{font-family:var(--font-ui);font-weight:480;text-transform:none;letter-spacing:0;color:var(--text-secondary);font-size:13px}.sidebar-section-header:hover{background:#ffffff06}.sidebar-section-content-inner{padding:2px 20px 20px}.effect-category-header{font-family:var(--font-ui);font-size:12px;letter-spacing:0;text-transform:none;color:var(--text-muted);padding-top:3px;margin-top:8px}.effect-item{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;box-shadow:none}.effect-item-header{min-height:43px;padding:6px 8px}.effect-item-left{flex:1;min-width:0;gap:7px}.effect-drag-handle{background:transparent;border:0;padding:0;width:16px;height:26px;color:var(--text-muted)}.effect-expand-button{display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0;gap:8px;color:var(--text-primary);background:none;border:0;padding:4px 0;cursor:pointer;text-align:left}.effect-expand-button>span:last-child{color:var(--text-muted);font-size:14px;font-weight:400}.effect-item-name{font-size:13px;font-weight:480}.effect-chevron{display:none}.effect-remove-btn{opacity:.65;width:24px;height:26px;min-width:24px}.effect-item-controls{padding:14px 12px;border-color:var(--border)}.effect-item.disabled{opacity:.7}.effect-item.disabled .effect-item-controls{opacity:.65}.category-add-btn{border-radius:5px;color:var(--text-secondary)}.category-dropdown-inner{max-height:270px;overflow-y:auto;overscroll-behavior:contain;padding:4px}.effect-catalog-item{display:block;width:100%;padding:10px 8px;border:0;border-radius:4px;text-align:left;background:transparent;color:var(--text-primary)}.effect-catalog-item-desc{margin-top:3px;color:var(--text-muted);line-height:1.45}.parameter-controls{display:flex;flex-direction:column;gap:16px}.parameter-group{display:flex;flex-direction:column;gap:10px}.parameter-group+.parameter-group{border-top:1px solid var(--border);padding-top:13px}.parameter-group-label{margin:0 0 2px;font-size:12px;font-weight:480;color:var(--text-secondary)}.parameter-number{min-width:0}.parameter-number-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.parameter-number-heading label{font-size:12px;color:var(--text-secondary);cursor:default}.parameter-value{width:64px;max-width:42%;padding:3px 5px;border:1px solid transparent;border-radius:4px;color:var(--text-primary);background:transparent;text-align:right;font:12px var(--font-mono);font-variant-numeric:tabular-nums;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.parameter-value::-webkit-inner-spin-button,.parameter-value::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.parameter-value:hover{border-color:var(--border-field);background:var(--bg-field)}.parameter-value:focus{border-color:var(--border-focus);background:var(--bg-field);outline-offset:0}.parameter-range{display:block;width:100%;height:16px;padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:ew-resize;touch-action:pan-y}.parameter-range::-webkit-slider-runnable-track{height:2px;border-radius:2px;background:linear-gradient(to right,#a4a0be var(--range-fill),#3a3b44 var(--range-fill))}.parameter-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:9px;height:9px;border-radius:50%;margin-top:-3.5px;background:#ceced8;border:0;box-shadow:0 0 0 3px var(--bg-elevated)}.parameter-range::-moz-range-track{height:2px;border-radius:2px;background:#3a3b44}.parameter-range::-moz-range-progress{height:2px;background:#a4a0be}.parameter-range::-moz-range-thumb{width:9px;height:9px;border-radius:50%;background:#ceced8;border:0}.parameter-range:hover::-webkit-slider-thumb,.parameter-range:focus-visible::-webkit-slider-thumb{background:#fff}.parameter-range:focus-visible{outline:1px solid var(--focus-ring);outline-offset:3px;border-radius:3px}.parameter-vector{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:15px}.parameter-select,.parameter-toggle,.parameter-colour{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px;font-size:12px;color:var(--text-secondary)}.parameter-select select{min-width:100px;max-width:64%;height:31px;padding:4px 25px 4px 9px;font-size:12px;color:var(--text-primary);border:1px solid var(--border-field);border-radius:5px;background:var(--bg-field);color-scheme:dark}.parameter-toggle input{width:15px;height:15px;accent-color:var(--accent)}.parameter-colour .color-swatch{width:26px;height:26px;border-radius:5px}.preview-container{background:var(--bg-base)}.preview-onboarding{pointer-events:auto;padding:32px;animation:none;gap:12px;background:radial-gradient(ellipse at 50% 35%,#23212e 0%,var(--bg-base) 65%)}.preview-onboarding-eyebrow{color:var(--text-muted);font:12px var(--font-mono)}.preview-onboarding h1{font-size:clamp(26px,3vw,40px);line-height:1.15;font-weight:480;letter-spacing:-1.1px;margin-bottom:1px}.preview-onboarding p{font-size:14px;color:var(--text-secondary);text-align:center;max-width:330px;line-height:1.6}.starter-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:min(100%,390px);margin-top:20px}.starter-choice{display:block;overflow:hidden;padding:0;border:1px solid var(--border);border-radius:9px;color:var(--text-primary);background:var(--bg-elevated);cursor:pointer}.starter-choice img{width:100%;aspect-ratio:1.25;object-fit:cover;display:block}.starter-choice span{display:block;padding:10px;text-align:left;font-size:12px}.starter-choice:hover{border-color:var(--border-focus)}.preview-onboarding-footnote{font-size:12px;color:var(--text-muted);margin-top:13px;text-align:center}.preview-error{background:#1b1418f7;max-height:35%;color:var(--text-primary);z-index:3}.preview-error-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-ui);font-size:13px}.preview-error summary{cursor:pointer;color:var(--text-secondary);margin-top:9px;font-size:12px}.preview-error pre{white-space:pre-wrap;margin-top:8px}.editor-loading{padding:16px;background:var(--bg-surface);font-size:13px;color:var(--text-secondary)}.editor-container{max-height:65%}.sidebar-close{margin-left:auto;font-size:22px;font-weight:300}@media(max-width:768px){.header-left{gap:7px}.header-logo .wordmark{font-size:18px}.header-logo .wordmark-studio{display:none}.header-brand-mark{width:20px;height:21px}.parameter-range{height:26px}.parameter-value{min-height:32px}.parameter-select select{height:38px}.effect-expand-button,.effect-drag-handle,.effect-remove-btn{min-height:36px}.preview-onboarding{padding:22px}.starter-choices{gap:8px}.preview-onboarding-footnote{max-width:260px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.preset-search{width:100%;height:32px;margin:0 0 12px;padding:0 10px;border:1px solid var(--border-field);border-radius:6px;background:var(--bg-field);color:var(--text-primary);font:12px var(--font-ui)}.preset-search::placeholder{color:var(--text-secondary)}.preset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 8px}.preset-card{min-width:0;padding:0;border:0;border-radius:6px;background:none;color:var(--text-secondary);text-align:left;cursor:pointer;font:inherit}.preset-card-thumb{display:block;aspect-ratio:1.6;overflow:hidden;border-radius:5px;background:var(--bg-field);outline:1px solid var(--border-subtle);outline-offset:-1px}.preset-card-thumb img{width:100%;height:100%;display:block;object-fit:cover}.preset-card-name{display:block;margin-top:5px;font-size:12px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preset-card.active{color:var(--text-primary)}.preset-card.active .preset-card-thumb{outline:2px solid var(--focus-ring);outline-offset:2px}.preset-card.active .preset-card-name{font-weight:600}.preset-actions{display:flex;gap:8px;margin-top:14px}.preset-actions .btn{flex:1;font-size:12px}.palette-options{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.palette-option{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:4px 7px;background:none;border:1px solid var(--border-subtle);border-radius:5px;color:var(--text-secondary);font:12px var(--font-ui);cursor:pointer}.palette-option-preview{display:block;width:22px;height:14px;border-radius:3px;box-shadow:inset 0 0 0 1px #0000001a}.palette-option.active{border-color:var(--border-focus);color:var(--text-primary);background:var(--bg-elevated)}.color-row.control{display:flex;flex-direction:row;align-items:center;gap:8px;min-height:34px;padding:2px 5px 2px 0;background:none;border:0;border-radius:4px}.color-row .color-control{flex:1;gap:10px;min-width:0}.color-row .color-swatch{flex:0 0 24px;width:24px;height:24px;border-radius:5px;padding:0;border:1px solid var(--border-field)}.color-row .color-hex-input{min-width:0;flex:1;width:auto;height:28px;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--text-primary);font:12px var(--font-mono)}.color-row .color-hex-input:focus{border-color:var(--border-focus);background:var(--bg-field)}.color-row .color-hex-input[aria-invalid=true]{border-color:var(--error)}.color-drag-handle{flex:0 0 18px;width:18px;min-width:18px;height:28px;padding:0;border:0;background:none;color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:grab}.color-remove-btn{flex:0 0 24px;width:24px;min-width:24px;height:28px;padding:0;color:var(--text-secondary)}.gradient-bar-container{margin-bottom:12px}.gradient-handle{padding:0;cursor:ew-resize;touch-action:none}.gradient-stop-readout{min-height:16px;margin-top:4px;color:var(--text-secondary);font:12px var(--font-mono)}.color-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-2px 0 8px;color:var(--text-secondary);font:12px var(--font-ui)}.color-picker-close{display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;padding:0;border:0;border-radius:4px;background:none;color:var(--text-primary);font-size:18px;cursor:pointer}.preset-search:focus-visible,.preset-card:focus-visible,.palette-option:focus-visible,.color-swatch:focus-visible,.color-drag-handle:focus-visible,.gradient-handle:focus-visible,.color-picker-close:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}@media(hover:hover){.preset-card:hover{color:var(--text-primary)}.preset-card:hover .preset-card-thumb{outline:1px solid var(--border-focus);outline-offset:1px}.palette-option:hover{background:var(--bg-elevated)}}@media(max-width:768px){.color-row.control{min-height:42px}.color-row .color-swatch{width:28px;height:28px;flex-basis:28px}.color-drag-handle{height:40px}.color-remove-btn{height:40px;min-height:40px}.palette-option{min-height:36px}}.saved-item-load{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.saved-item-load:focus-visible{outline:1px solid var(--border-focus);outline-offset:4px;border-radius:2px}.saved-item-edit{flex:1;min-width:0}.saved-item:focus-within .saved-item-actions{opacity:1}.toast{max-width:min(480px,calc(100vw - 32px));white-space:normal;line-height:1.45;text-align:center}.toast[data-tone=error]{font-weight:480}@media(prefers-reduced-motion:reduce){.toast{transition:none}}.saved-item-info .saved-item-name,.saved-item-info .saved-item-date{display:block}.preset-grid{max-height:306px;overflow-y:auto;overscroll-behavior:contain;padding:3px;margin:-3px;scrollbar-width:thin;scrollbar-color:var(--border-focus) transparent}.color-row .color-remove-btn{position:static;margin:0}.color-picker-popover{z-index:100}@media(max-width:768px){.color-row.control,.palette-option,.color-remove-btn,.color-drag-handle{min-height:44px}.color-drag-handle{margin:0}.effect-drag-handle,.effect-expand-button,.effect-remove-btn{min-height:44px}}.export-image{display:flex;flex-direction:column;gap:var(--space-2);border-top:1px solid var(--border-subtle);padding-top:var(--space-3)}.export-image-dimensions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3)}.export-image-dimensions label{display:flex;min-width:0;flex-direction:column;gap:6px}.export-size-input{min-width:0;width:100%;padding:7px 8px;border:1px solid var(--border-field);border-radius:var(--radius-sm);background:var(--bg-field);color:var(--text-primary);font:400 12px var(--font-mono)}.export-fn-input:focus-visible,.export-size-input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.export-fn-input[aria-invalid=true],.export-size-input[aria-invalid=true]{color:var(--error)}.export-image-button{width:100%}.export-hint,.export-status,.export-error{margin:0;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.export-hint,.export-status{color:var(--text-muted)}.export-status:empty{display:none}.export-error{color:var(--error)}@media(hover:hover){.preset-card.active:hover .preset-card-thumb{outline:2px solid var(--focus-ring);outline-offset:2px}}@media(max-width:768px){.color-row .color-remove-btn{width:44px;min-width:44px;flex-basis:44px;height:44px;min-height:44px}}.editor-drag-handle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px;background:var(--accent)}.parameter-unit{color:var(--text-muted)}
