:root{--surface: #101114;--panel: #17181c;--panel-2: #1c1e23;--hairline: #26282e;--text: #c9ccd4;--text-muted: #7d8290;--accent: #ffb454;--accent-dim: #7a5828;--danger: #e5484d;--confirm: #46a758;--radius: 6px;--gap: 8px;--font-ui: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", monospace;--t-fast: .12s;color-scheme:dark}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--surface);color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.4;-webkit-font-smoothing:antialiased}.num,input[type=number],.tabular{font-family:var(--font-mono);font-variant-numeric:tabular-nums}button{font-family:inherit;font-size:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--hairline);border-radius:var(--radius);padding:5px 10px;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}button:hover:not(:disabled){border-color:var(--accent-dim)}button:disabled{opacity:.4;cursor:default}button.primary{color:var(--accent)}input,select{font-family:inherit;font-size:inherit;color:var(--text);background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:4px 8px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.app{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;height:100%;min-width:1024px}.footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 14px;background:var(--panel);border-top:1px solid var(--hairline);color:var(--text-muted);font-size:12px}.footer code{color:var(--text)}.footer-links{display:flex;gap:14px}.footer-links a{color:var(--accent);text-decoration:none}.footer-links a:hover{text-decoration:underline}.topbar{display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--hairline)}.topbar .doc-name{font-weight:600;min-width:160px}.topbar .spacer{margin-left:auto}.topbar label{color:var(--text-muted);margin-right:4px}.mid{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;min-height:0}.layer-panel{width:var(--layer-w, 220px);min-width:180px;max-width:420px;background:var(--panel);border-right:1px solid var(--hairline);overflow-y:auto;padding:8px}.preview-wrap{position:relative;min-height:0;overflow:hidden}.preview-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.preview-canvas canvas{display:block;width:100%;height:100%}.view-controls{position:absolute;right:12px;bottom:12px;z-index:2;display:flex;align-items:center;gap:4px;padding:4px;background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--hairline);border-radius:var(--radius);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.view-controls button{min-width:30px;height:26px;padding:0 8px}.view-controls .zoom-readout{min-width:48px;color:var(--text-muted)}.view-controls .zoom-readout:not(:disabled):hover{color:var(--accent)}.bg-black{background:#000}.bg-white{background:#fff}.bg-checker{background-color:#3a3d44;background-image:linear-gradient(45deg,#2a2c31 25%,transparent 25%),linear-gradient(-45deg,#2a2c31 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2c31 75%),linear-gradient(-45deg,transparent 75%,#2a2c31 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0}.transport{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--panel);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.scrub-wrap{position:relative;flex:1}.transport .scrub-wrap .scrub{width:100%;position:relative;z-index:1}.burst-ticks{position:absolute;top:8px;right:0;bottom:8px;left:0;pointer-events:none;z-index:0}.burst-tick{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.6;transform:translate(-50%)}.transport .readout{color:var(--text-muted);min-width:210px;text-align:right}.transport button.icon{min-width:40px}.transport .motion-ctl{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.transport .motion-ctl .k-label{color:var(--text-muted)}.inspector{width:var(--inspector-w, 340px);min-width:280px;max-width:560px;overflow-y:auto;padding:10px 14px;background:var(--panel);border-left:1px solid var(--hairline)}.panel-resizer{width:5px;align-self:stretch;background:var(--hairline);cursor:col-resize;touch-action:none}.panel-resizer:hover{background:var(--accent-dim)}.panel-resizer:active{background:var(--accent)}.empty-state{color:var(--text-muted);padding:16px}input[type=range]{accent-color:var(--accent)}.layer-head{display:flex;align-items:center;justify-content:space-between;color:var(--text-muted);padding:2px 4px 8px}.layer-head button{padding:3px 8px}.layer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;position:relative}.layer-list.dragging-list{-webkit-user-select:none;user-select:none}.layer-row.dragging{opacity:.45}.drop-line{position:absolute;left:4px;right:4px;height:2px;background:var(--accent);pointer-events:none;z-index:1}.layer-row{display:flex;align-items:center;gap:6px;width:100%;background:transparent;border:1px solid transparent;border-radius:var(--radius);padding:4px 6px}.layer-row:hover{background:var(--panel-2)}.layer-row.selected{background:var(--panel-2);border-color:var(--accent-dim)}.layer-row.selected .layer-name{color:var(--accent)}.layer-row.primary{border-color:var(--accent)}.layer-name,.layer-row .rename{flex:1;min-width:0;text-align:left;background:transparent;border:none;padding:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-row .rename{background:var(--surface);border:1px solid var(--accent-dim)}.layer-count{color:var(--text-muted);font-size:11px;flex:none}.capped-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}.layer-actions{display:none;gap:2px}.layer-row:hover .layer-actions,.layer-row.selected .layer-actions{display:flex}.layer-actions button{padding:2px 5px;min-width:22px;font-size:11px}.layer-actions .danger{color:var(--danger);border-color:var(--danger)}.inspector-body{display:flex;flex-direction:column;gap:8px}.multi-edit-banner{padding:6px 8px;font-size:12px;color:var(--text);background:color-mix(in srgb,var(--accent) 14%,var(--panel-2));border:1px solid var(--accent-dim);border-radius:var(--radius)}.multi-edit-banner strong{color:var(--accent);font-weight:600}.module{border:1px solid var(--hairline);border-radius:var(--radius);background:var(--panel-2)}.module-head{width:100%;text-align:left;background:transparent;border:none;border-radius:var(--radius);padding:7px 10px;font-weight:600;color:var(--text)}.module-head .caret{color:var(--text-muted);margin-right:6px}.module-head-row{display:flex;align-items:center;gap:6px}.module-head-row .module-head-title{flex:1;text-align:left;background:transparent;border:none;padding:0;font-weight:600;color:var(--text)}.module-title-off{color:var(--text-muted)}.module-body{padding:6px 10px 10px;display:flex;flex-direction:column;gap:6px}.field{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px}.field-label{color:var(--text-muted)}.field-control{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.field-note{margin:2px 0 0;color:var(--text-muted);font-size:11px;line-height:1.4}.scalar-control{display:flex;align-items:center;gap:6px}.scalar-control .mode{padding:3px 6px}.range-sep,.k-label{color:var(--text-muted)}.k-label{font-size:11px}.numfield{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:3px 8px;text-align:right;cursor:ew-resize;-webkit-user-select:none;user-select:none}.numfield:hover{border-color:var(--accent-dim)}.numfield-input{text-align:right}.numfield-disabled{cursor:default;opacity:.4}.numfield-disabled:hover{border-color:var(--hairline)}.field-note{color:var(--text-muted);font-size:11px;opacity:.8}.scalar-track{display:flex;flex-direction:column;gap:6px;width:100%}.two-curves{display:flex;flex-direction:column;gap:4px}.curve-editor{display:flex;flex-direction:column;gap:6px;width:260px}.curve-svg{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);touch-action:none}.curve-svg:focus-visible{border-color:var(--accent)}.curve-grid{fill:transparent}.curve-line{fill:none;stroke:var(--accent);stroke-width:1.5}.curve-key{fill:var(--accent);stroke:#1a1206;stroke-width:1;cursor:grab;filter:drop-shadow(0 0 3px rgba(255,180,84,.6))}.curve-key.sel{fill:#ffd9a0;filter:drop-shadow(0 0 5px rgba(255,180,84,.9))}.curve-controls{display:flex;flex-direction:column;gap:5px}.ease-chips,.curve-presets{display:flex;gap:3px;flex-wrap:wrap}.ease-chips button,.curve-presets button{padding:2px 7px;font-size:11px}.curve-expand-btn{margin-left:auto}.curve-key-row,.burst-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sub-inherit{display:inline-flex;align-items:center;gap:2px;font-size:11px;color:var(--text-muted);white-space:nowrap}.curve-expand-panel{position:fixed;top:15vh;right:calc(var(--inspector-w, 340px) + 24px);z-index:40;background:var(--panel);border:1px solid var(--hairline);border-radius:10px;padding:14px 16px;box-shadow:0 8px 32px #00000080}.curve-expand-panel .curve-editor{width:auto}.curve-expand-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.curve-expand-head h2{font-size:15px;margin:0}.curve-axis-label{font-family:var(--font-mono);font-size:10px;fill:var(--text-muted)}.curve-grid-line{stroke:var(--hairline);stroke-width:1}.gradient-editor{display:flex;flex-direction:column;gap:8px;width:100%;max-width:320px}.gradient-bar-wrap{position:relative;height:28px;padding-bottom:12px}.gradient-checker,.gradient-bar{position:absolute;top:0;right:0;bottom:12px;left:0;border-radius:var(--radius)}.gradient-checker{background-color:#2a2c31;background-image:linear-gradient(45deg,#3a3d44 25%,transparent 25%),linear-gradient(-45deg,#3a3d44 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#3a3d44 75%),linear-gradient(-45deg,transparent 75%,#3a3d44 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0}.gradient-bar{border:1px solid var(--hairline);cursor:copy}.gradient-stops{position:absolute;inset:auto 0 0 0;height:12px}.gradient-stop{position:absolute;transform:translate(-50%);width:12px;height:12px;padding:0;border:1px solid var(--text);border-radius:3px;cursor:grab}.gradient-stop.sel{border-color:var(--accent);box-shadow:0 0 4px #ffb454cc}.gradient-controls{display:flex;align-items:center;gap:8px}.gradient-controls input[type=color]{width:34px;height:26px;padding:0;border:1px solid var(--hairline);background:none}.alpha-label{color:var(--text-muted)}.optional-track{display:flex;flex-direction:column;gap:6px;width:100%}.opt-toggle{display:flex;align-items:center;gap:6px;color:var(--text-muted)}.tex-grid{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.tex-swatch{padding:3px;line-height:0;background-color:#2a2c31;background-image:linear-gradient(45deg,#3a3d44 25%,transparent 25%),linear-gradient(-45deg,#3a3d44 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#3a3d44 75%),linear-gradient(-45deg,transparent 75%,#3a3d44 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0}.tex-swatch.sel{border-color:var(--accent);box-shadow:0 0 4px #ffb454b3}.tex-thumb-canvas{width:28px;height:28px;display:block}.tex-current{color:var(--text-muted);font-size:12px;margin-bottom:4px}.tex-imported{margin-bottom:8px}.tex-section-label{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.tex-swatch-wrap{position:relative;line-height:0}.tex-thumb-img{width:28px;height:28px;display:block;object-fit:contain}.tex-del{position:absolute;top:-6px;right:-6px;width:16px;height:16px;padding:0;line-height:1;font-size:12px;border-radius:50%;background:var(--panel);color:var(--text-muted)}.tex-del:not(:disabled):hover{color:var(--danger);border-color:var(--danger)}.tex-name-input{width:100%}.tex-warn{color:var(--warn, var(--text-muted));font-size:12px;margin-bottom:4px}.warning-toast{position:absolute;left:12px;bottom:12px;right:12px;max-width:520px;display:flex;align-items:flex-start;gap:10px;padding:8px 10px;background:#2a1e12;border:1px solid var(--accent-dim);border-radius:var(--radius);color:#f2d3a0}.warning-list{flex:1;display:flex;flex-direction:column;gap:2px;font-size:12px}.warning-toast button{background:transparent;border:none;color:inherit}.bg-control{display:inline-flex;align-items:center;gap:6px}.bg-control input[type=color]{width:30px;height:26px;padding:0;border:1px solid var(--hairline);background:none}.preset-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060709cc;display:flex;align-items:center;justify-content:center;z-index:50}.preset-panel{background:var(--panel);border:1px solid var(--hairline);border-radius:10px;width:min(760px,92vw);max-height:82vh;overflow:auto;padding:16px 18px}.preset-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.preset-head h2{font-size:15px;margin:0}.preset-search{flex:1;max-width:240px;margin-left:auto;margin-right:10px}.preset-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.preset-chips button{padding:3px 10px;font-size:12px}.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}.preset-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;background:var(--panel-2)}.preset-card:hover{border-color:var(--accent-dim)}.preset-thumb{width:120px;height:120px;border-radius:var(--radius);background:#000}.preset-name{color:var(--text)}.shortcut-panel{width:min(520px,92vw)}.shortcut-group{margin-bottom:12px}.shortcut-group:last-child{margin-bottom:0}.shortcut-group-title{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.shortcut-keys{display:flex;gap:4px}.kbd{font-family:var(--font-mono);font-size:11px;color:var(--text);background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:1px 6px}.restore-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel);border:1px solid var(--accent-dim);border-radius:var(--radius);box-shadow:0 4px 16px #00000080}.bursts{border-top:1px solid var(--hairline);padding-top:8px;display:flex;flex-direction:column;gap:5px}.bursts-head{display:flex;align-items:center;justify-content:space-between;color:var(--text-muted)}.params-panel{margin-top:10px;padding-top:8px;border-top:1px solid var(--hairline)}.params-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.param-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.param-row .param-name{flex:1 1 70px;min-width:60px;background:var(--panel-2);color:var(--accent);border:1px solid var(--hairline);border-radius:var(--radius);padding:3px 6px;font:inherit}.param-row .k-label{margin-left:2px}.param-row input[type=color]{width:30px;height:24px;padding:0;border:1px solid var(--hairline);border-radius:var(--radius);background:none;flex:0 0 auto}.param-add{display:inline-flex;gap:4px}.bind-chip{flex:0 0 auto;max-width:96px;margin-left:4px;background:transparent;color:var(--text-muted);border:1px solid transparent;border-radius:var(--radius);padding:1px 2px;font:inherit;font-size:12px;cursor:pointer}.bind-chip:hover{border-color:var(--hairline);color:var(--text)}.bind-chip.bound{color:var(--accent);border-color:var(--accent-dim);background:var(--panel-2)}.preview-params{position:absolute;left:12px;top:12px;z-index:2;display:flex;flex-direction:column;gap:6px;padding:8px 10px;max-width:260px;background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--hairline);border-radius:var(--radius);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.preview-params .pp-row{display:flex;align-items:center;gap:8px}.preview-params .pp-name{color:var(--accent);min-width:56px;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-params input[type=range]{flex:1;accent-color:var(--accent);min-width:90px}.preview-params input[type=color]{width:28px;height:22px;padding:0;border:1px solid var(--hairline);border-radius:var(--radius);background:none;flex:0 0 auto}.preview-params .pp-val{color:var(--text-muted);min-width:40px;text-align:right}.preview-params .pp-reset{align-self:flex-end;padding:2px 10px;font-size:12px;color:var(--text-muted)}
