:root{color-scheme:dark;--bg: #0b0b0f;--panel: #12121a;--panel-2: #16161f;--panel-3: #1c1c26;--line: #262631;--line-soft: #1f1f29;--text: #e7e7ee;--muted: #9a9aab;--dim: #6f6f80;--accent: #7c5cff;--accent-dim: #4c3aa8;--ok: #2ea043;--warn: #d29922;--err: #f85149;--rec: #d5384c;--axis-x: #f87171;--axis-y: #4ade80;--axis-z: #60a5fa;--radius: 7px;--right-width: 316px;--island-gap: 7px;--island-radius: 12px;--island: var(--panel);--island-line: #23232f;--island-shadow: 0 1px 2px rgba(0, 0, 0, .55), 0 12px 28px rgba(0, 0, 0, .34);--desk: #06060a;--rail-tab: 24px;--sash-hit: 11px;--fold-ease: .22s cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--desk);color:var(--text);font:13px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}code,.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.92em}.app{--left-track: var(--left-w);--right-track: var(--right-w);--dock-track: var(--dock-h);display:grid;grid-template-columns:var(--left-track) minmax(0,1fr) var(--right-track);grid-template-rows:minmax(0,1fr) var(--dock-track);grid-template-areas:"left center right" "dock dock   right";height:100%;gap:var(--island-gap);padding:var(--island-gap);background:radial-gradient(120% 70% at 8% -12%,color-mix(in oklab,var(--accent) 9%,transparent),transparent 62%),var(--desk);transition:grid-template-columns var(--fold-ease),grid-template-rows var(--fold-ease)}.app.no-left{--left-track: 0px}.app.no-right{--right-track: 0px}.app.no-dock{--dock-track: 0px}.app.dragging{transition:none}.zone{position:relative;min-width:0;min-height:0}.zone-left{grid-area:left}.zone-center{grid-area:center}.zone-right{grid-area:right}.zone-dock{grid-area:dock}.zone-left,.zone-center,.zone-dock{transition:margin var(--fold-ease)}.no-left .zone-center{margin-left:calc(0px - var(--island-gap))}.no-right .zone-center,.no-right .zone-dock{margin-right:calc(0px - var(--island-gap))}.no-dock .zone-left,.no-dock .zone-center{margin-bottom:calc(0px - var(--island-gap))}.island{height:100%;background:var(--island);border:1px solid var(--island-line);border-radius:var(--island-radius);box-shadow:var(--island-shadow);overflow:hidden;min-width:0;min-height:0}.no-left .zone-left .island,.no-right .zone-right .island,.no-dock .zone-dock .island{opacity:0;pointer-events:none;transition:opacity .12s linear}.left-panel,.right-panel{display:flex}.pane-stack{position:relative;flex:1 1 auto;min-width:0;overflow:hidden}.pane-stack-inner{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column}.left-panel .pane-stack-inner{width:calc(var(--left-w) - 2px)}.right-panel .pane-stack-inner{left:auto;right:0;width:calc(var(--right-w) - 2px);overflow:hidden auto}.viewport-island{position:relative;background:#0e0e14}.viewport-island canvas{display:block}.pane{display:flex;flex-direction:column;min-height:0;overflow:hidden auto}.pane-tree{flex:0 0 var(--split-h)}.pane-preview{flex:1 1 auto}.left-panel .pane:only-child{flex:1 1 auto}.pane-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:6px;padding:7px 11px;background:var(--panel);border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;flex:none}.pane-head>span:first-of-type{flex:1;min-width:0}.pane-btn{flex:none;display:inline-flex;align-items:center;padding:3px 5px;background:transparent;border:1px solid transparent;color:var(--dim)}.pane-btn:hover:not(:disabled){filter:none;color:var(--text);background:var(--panel-3);border-color:var(--line)}.sash{position:absolute;z-index:6;display:flex;align-items:center;justify-content:center}.sash:after{content:"";border-radius:999px;background:transparent;transition:background .12s linear}.sash:hover:after,.sash:focus-visible:after,.sash.busy:after{background:var(--accent)}.sash:focus-visible{outline:none}.sash-x{top:0;bottom:0;width:var(--sash-hit);cursor:ew-resize}.sash-x:after{width:2px;height:100%}.sash-y{left:0;right:0;height:var(--sash-hit);cursor:ns-resize}.sash-y:after{height:2px;width:100%}.sash-left{left:100%;margin-left:calc(var(--island-gap) / 2);transform:translate(-50%)}.sash-right{right:100%;margin-right:calc(var(--island-gap) / 2);transform:translate(50%)}.sash-dock{bottom:100%;margin-bottom:calc(var(--island-gap) / 2);transform:translateY(50%)}.sash-split{position:relative;left:auto;right:auto;flex:none;height:9px;margin:-4px 0}.no-left .sash-left,.no-right .sash-right,.no-dock .sash-dock{display:none}.rail{position:absolute;top:12px;z-index:8;display:flex;flex-direction:column;gap:3px;padding:3px;background:var(--island);border:1px solid var(--island-line);border-radius:9px}.rail-left{left:100%;margin-left:-1px;border-left:none;border-radius:0 9px 9px 0;box-shadow:12px 0 22px #00000057}.rail-right{right:100%;margin-right:-1px;border-right:none;border-radius:9px 0 0 9px;box-shadow:-12px 0 22px #00000057}.no-left .rail-left{margin-left:0}.no-right .rail-right{margin-right:0}.rail-tab{display:flex;align-items:center;justify-content:center;width:var(--rail-tab);height:var(--rail-tab);padding:0;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--dim)}.rail-tab:hover:not(:disabled){filter:none;color:var(--text);background:var(--panel-3)}.rail-tab.active{background:color-mix(in oklab,var(--accent) 26%,var(--panel-3));border-color:var(--accent-dim);color:#cfc4ff}.action-rail{position:absolute;bottom:100%;left:50%;margin-bottom:-1px;transform:translate(-50%);z-index:8;display:flex;align-items:center;gap:8px;padding:3px 8px 4px;background:var(--island);border:1px solid var(--island-line);border-bottom:none;border-radius:var(--island-radius) var(--island-radius) 0 0;box-shadow:0 -12px 22px #00000057}.no-dock .action-rail{margin-bottom:0}.rail-mark{display:flex;align-items:center;gap:2px;padding:2px 3px 2px 5px;background:transparent;border:1px solid transparent;border-radius:6px;font-weight:700;letter-spacing:.14em;font-size:11px;color:#a78bfa}.rail-mark:hover:not(:disabled){filter:none;color:#c9b6ff;background:var(--panel-3);border-color:var(--line)}.rail-group{display:flex;gap:2px}.rail-group+.rail-group{padding-left:8px;border-left:1px solid var(--line)}.rail-btn{display:flex;align-items:center;justify-content:center;width:26px;height:var(--rail-tab);padding:0;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--muted)}.rail-btn:hover:not(:disabled){filter:none;color:var(--text);background:var(--panel-3)}.rail-btn.active{background:var(--accent);border-color:var(--accent-dim);color:#fff}.rail-btn.danger:hover:not(:disabled){color:#ff9d96;border-color:#7f1d1d}.rail-menu{position:relative;display:flex}.rail-pop{position:absolute;bottom:100%;left:50%;margin-bottom:9px;transform:translate(-50%);z-index:12;min-width:208px;padding:5px;background:var(--island);border:1px solid var(--island-line);border-radius:11px;box-shadow:0 1px 2px #0000008c,0 -14px 30px #0006;animation:rail-pop .14s cubic-bezier(.22,1,.36,1)}@keyframes rail-pop{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.rail-pop h4{margin:0;padding:4px 7px 6px;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.rail-pop button{display:flex;align-items:center;gap:8px;width:100%;padding:6px 7px;background:transparent;border:1px solid transparent;border-radius:7px;color:var(--muted);font-size:12px;text-align:left}.rail-pop button:hover:not(:disabled){filter:none;color:var(--text);background:var(--panel-3)}.rail-pop button[aria-checked=true]{color:var(--text)}.rail-pop button[aria-checked=true]>svg:first-child{color:#a78bfa}.rail-pop button>span{flex:1;min-width:0}.rail-pop button>svg:last-child{opacity:0;color:#a78bfa}.rail-pop button[aria-checked=true]>svg:last-child{opacity:1}.rail-pop p{margin:4px 0 2px;padding:6px 7px 0;font-size:10.5px;line-height:1.4;color:var(--dim);border-top:1px solid var(--line-soft)}.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.segmented button{border:none;border-radius:0;background:var(--panel-2);color:var(--muted);padding:5px 11px;font-weight:500}.segmented button+button{border-left:1px solid var(--line)}.segmented button.active{background:var(--accent);color:#fff}button{font:inherit;font-weight:500;padding:5px 11px;border-radius:var(--radius);border:1px solid var(--accent-dim);background:var(--accent);color:#fff;cursor:pointer}button:hover:not(:disabled){filter:brightness(1.1)}button:disabled{opacity:.38;cursor:default}button.ghost{background:var(--panel-2);border-color:var(--line);color:var(--muted);min-width:30px}button.ghost:hover:not(:disabled){color:var(--text);background:var(--panel-3)}button.ghost.danger:hover:not(:disabled){color:#ff9d96;border-color:#7f1d1d}button.small{padding:4px 9px;font-size:12px}button.active{background:var(--accent)}.panel-header{position:sticky;top:0;z-index:2;padding:7px 12px;background:var(--panel);border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.panel-body{padding-bottom:8px}.group{padding:10px 12px;border-bottom:1px solid var(--line-soft)}.group h3{margin:0 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:#b9b9c9}.empty-note{margin:8px 12px;color:var(--dim);font-size:12px;line-height:1.6}.empty-note.small{margin:4px 0;font-size:11.5px}.tree-space{display:flex;align-items:center;gap:6px;padding:6px 12px;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line-soft)}.tree-space.drop{background:#7c5cff22;color:var(--text)}.tree{list-style:none;margin:0;padding:0}.tree-row{display:flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;cursor:default;border-left:2px solid transparent}.tree-row:hover{background:#ffffff08}.tree-row.selected{background:#7c5cff26;border-left-color:var(--accent)}.tree-row.drop{background:#7c5cff33;outline:1px dashed var(--accent)}.tree-row.dragging{opacity:.45}.tree-glyph{color:#9d8cff;font-size:12px;width:13px;flex:none}.tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}.tree-badge{flex:none;min-width:16px;text-align:center;padding:0 4px;border-radius:999px;background:var(--panel-3);border:1px solid var(--line);color:var(--dim);font-size:10px}.tree-rename{flex:1;min-width:0;background:var(--panel-3);border:1px solid var(--accent);border-radius:4px;color:var(--text);font:inherit;padding:1px 4px}.insp-field{display:block;margin-bottom:8px}.insp-label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:3px;color:var(--muted);font-size:11.5px}.insp-label .unit{font-style:normal;color:var(--dim);font-variant-numeric:tabular-nums}.insp-control{display:block}.insp-check{display:flex;align-items:center;gap:7px;padding:4px 0;color:#c7c7d6;font-size:12.5px;cursor:pointer}.insp-check input{accent-color:var(--accent);margin:0}input[type=number],input[type=text],select{width:100%;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:5px;padding:4px 7px;font:inherit;font-variant-numeric:tabular-nums}input[type=range]{width:100%;accent-color:var(--accent)}input[type=color]{width:34px;height:26px;padding:2px;background:var(--panel-2);border:1px solid var(--line);border-radius:5px;flex:none}select:focus-visible,input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.color-row{display:flex;gap:6px;align-items:center}.color-row .hex{font-family:ui-monospace,Menlo,Consolas,monospace}.vec3{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.axis{display:flex;align-items:center;gap:3px;background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding-left:5px}.axis>span{font-size:10px;font-weight:700;flex:none;width:9px}.axis-x>span{color:var(--axis-x)}.axis-y>span{color:var(--axis-y)}.axis-z>span{color:var(--axis-z)}.axis input{border:none;background:none;padding:4px 4px 4px 0;min-width:0}.axis input:focus-visible{outline:none}.axis:focus-within{border-color:var(--accent)}.component{margin-top:8px;padding:8px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius)}.component header{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.component-name{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:#cbb9ff}.insp-field.disabled{opacity:.55}.insp-field.disabled input{cursor:not-allowed}button.link{padding:0;border:none;background:none;color:#cbb9ff;font:inherit;text-decoration:underline;cursor:pointer}button.link:hover{color:var(--text);filter:none}.notice{margin:8px 0;padding:7px 9px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-size:11.5px;line-height:1.55}.notice.error{border-color:color-mix(in oklab,var(--err) 45%,transparent);background:color-mix(in oklab,var(--err) 12%,transparent);color:#ffb4ae}.notice.warn{border-color:color-mix(in oklab,var(--warn) 45%,transparent);background:color-mix(in oklab,var(--warn) 10%,transparent);color:#ecc766}.hint.tiny{font-size:11px;margin-top:7px}.plain-list{margin:6px 0 0;padding-left:16px;color:var(--muted);font-size:11.5px;line-height:1.7}.target{display:flex;gap:9px;padding:8px;margin-top:7px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius)}.target img{width:46px;height:46px;object-fit:cover;border-radius:5px;background:#000;flex:none;border:1px solid var(--line)}.model-glyph{width:46px;height:46px;display:flex;align-items:center;justify-content:center;font-size:20px;color:#cbb9ff;border-radius:5px;background:#1c1633;flex:none;border:1px solid var(--line)}.target-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.target-name{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-meta{color:var(--dim);font-size:10.5px;font-variant-numeric:tabular-nums}.target-actions{display:flex;gap:5px;margin-top:4px}button.tiny{padding:3px 7px;font-size:10.5px}.viewport-hud{position:absolute;left:14px;bottom:12px;display:flex;gap:7px;padding:4px 9px;border-radius:999px;background:#12121acc;border:1px solid var(--line);color:var(--dim);font-size:11px;pointer-events:none;font-variant-numeric:tabular-nums}.viewport-hud .sep{opacity:.5}.floating{position:fixed;z-index:40;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 24px 60px #00000094}.floating-head{flex:none;display:flex;align-items:center;gap:10px;height:36px;padding:0 8px 0 12px;background:var(--panel-2);border-bottom:1px solid var(--line);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.floating-head h2{margin:0;flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.floating-actions{display:flex;gap:3px;flex:none}.floating-btn{padding:2px 7px;line-height:1.2;background:transparent;border-color:transparent;color:var(--muted)}.floating-btn:hover:not(:disabled){background:var(--panel-3);border-color:var(--line);color:var(--text);filter:none}.floating-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.floating.busy .floating-body{pointer-events:none}.preview{display:flex;flex-direction:column;min-height:0;flex:1}.preview-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 9px;padding:7px 10px;border-bottom:1px solid var(--line)}.preview-bar>button{flex:none}.preview-live{display:flex;flex:none;align-items:center;gap:5px;color:var(--muted);font-size:11.5px;white-space:nowrap;cursor:pointer}.preview-live input{accent-color:var(--accent);margin:0}.preview-camera{flex:1 1 9em;min-width:7em;font-size:11.5px;padding:2px 4px}.preview-status{flex:none;margin-left:auto;font-size:11px;color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums}.preview-status.running{color:#7ee08f}.preview-status.error{color:#ff9d96}.preview-status.loading{color:#ecc766}.preview-stage{position:relative;flex:1;min-height:240px;background:#000;display:grid;place-items:center}.preview-stage iframe{width:100%;height:100%;border:0;display:block}.preview-idle{padding:20px;text-align:center;color:var(--muted);font-size:12px;line-height:1.6}.preview-idle p{margin:0 0 12px}.floating .preview-stage{min-height:0}.floating .preview-log{height:clamp(72px,22%,160px)}.preview-log{height:132px;overflow-y:auto;padding:7px 10px;border-top:1px solid var(--line);background:var(--panel-2);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.preview-log .info{color:#c9c9d8}.preview-log .warn{color:#ecc766}.preview-log .error{color:#ff9d96}.preview-log .sys{color:#9d8cff}.code-files{list-style:none;margin:0 0 9px;padding:0}.code-files li{display:flex;align-items:center;gap:6px;padding:3px 4px 3px 8px;border-radius:var(--radius);border:1px solid transparent}.code-files li.active{background:var(--panel-2);border-color:var(--line)}.code-file-name{flex:1;min-width:0;padding:3px 0;border:none;background:none;color:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-files li.active .code-file-name{color:var(--text)}.code-file-name:hover{color:var(--text);filter:none}.code-new{display:flex;gap:6px}.code-new input{flex:1;min-width:0}.code-editor{width:100%;min-height:260px;resize:vertical;padding:9px 10px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;-moz-tab-size:2;tab-size:2;white-space:pre;overflow-wrap:normal;overflow-x:auto}.code-editor:focus{outline:none;border-color:var(--accent-dim)}.notice.ok-notice{border-color:color-mix(in oklab,var(--ok) 45%,transparent);background:color-mix(in oklab,var(--ok) 12%,transparent);color:#86e29b}.modal{margin:auto;padding:0;width:min(560px,calc(100vw - 32px));max-height:min(760px,calc(100vh - 56px));display:flex;flex-direction:column;overflow:hidden;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;box-shadow:0 26px 64px #0009}.modal::backdrop{background:#06060aa3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.modal-close{padding:3px 9px;line-height:1;background:var(--panel-2);border-color:var(--line);color:var(--muted)}.modal-close:hover:not(:disabled){background:var(--panel-3);color:var(--text);filter:none}.modal-body{overflow-y:auto;min-height:0}.modal-body .panel-body{padding-bottom:4px}.modal-body .group:last-child{border-bottom:none}.account{display:flex;align-items:center;gap:9px}.account img{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);object-fit:cover}.account>div{display:flex;flex-direction:column;min-width:0}.account-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-login{color:var(--dim);font-size:11.5px}.account button.link{margin-left:auto;flex:none}.connect-github{display:inline-flex;align-items:center;gap:8px;width:100%;justify-content:center;padding:8px 12px;background:#24292f;border-color:#3d444d}.connect-github:hover:not(:disabled){background:#32383f;filter:none}.connect-github svg{flex:none}.token-toggle{display:block;margin-top:10px;font-size:11.5px}.pages-link{display:block;margin:8px 0 0;padding:7px 9px;border-radius:var(--radius);border:1px solid var(--accent-dim);background:color-mix(in oklab,var(--accent) 16%,transparent);color:#cbb9ff;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;word-break:break-all}.pages-link:hover{color:var(--text)}.hint.progress{color:var(--muted);font-variant-numeric:tabular-nums}.row{display:flex;gap:6px}.row>button{flex:1;min-width:0}.material-list{display:flex;flex-direction:column;gap:6px;margin-top:7px}.material-list>summary{cursor:pointer;font-size:11.5px;color:var(--muted);margin-bottom:2px}.material-list>summary:hover{color:var(--text)}.material-row{display:flex;gap:8px;padding:7px 8px;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--radius)}.material-swatch{width:18px;height:18px;flex:none;border-radius:4px;border:1px solid var(--line);background-image:linear-gradient(45deg,#2a2a36 25%,transparent 25%,transparent 75%,#2a2a36 75%),linear-gradient(45deg,#2a2a36 25%,transparent 25%,transparent 75%,#2a2a36 75%);background-size:8px 8px;background-position:0 0,4px 4px}.material-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.material-name{font-size:11.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-list{list-style:none;margin:3px 0 0;padding:0;display:flex;flex-direction:column;gap:1px}.slot-list li{display:flex;gap:6px;align-items:baseline;font-size:10.5px}.slot-label{color:var(--muted);flex:none}.slot-value{color:var(--dim);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,Consolas,monospace}@media(max-width:1180px){:root{--right-width: 272px}}.marker-scale{margin-top:7px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--panel-2)}.marker-scale summary{cursor:pointer;padding:6px 9px;font-size:11.5px;color:var(--muted);-webkit-user-select:none;user-select:none;list-style-position:inside}.marker-scale summary:hover{color:var(--text)}.marker-scale>*:not(summary){padding:0 9px}.marker-scale>*:last-child{padding-bottom:8px}.unit-label{color:var(--dim);font-size:11px;flex:none;align-self:center}.dropzone-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:color-mix(in oklab,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dropzone-overlay[aria-hidden=true]{pointer-events:none;background:color-mix(in oklab,var(--accent) 6%,transparent);border:2px dashed var(--accent-dim);border-radius:12px;top:10px;right:10px;bottom:10px;left:10px}.dropzone-card{width:min(420px,calc(100vw - 48px));padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:10px;box-shadow:0 24px 80px #000c}.dropzone-card h3{margin:0;font-size:14px}.dropzone-actions{display:flex;flex-direction:column;gap:6px}.dropzone-action{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:9px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);text-align:left}.dropzone-action:hover:not(:disabled){border-color:var(--accent-dim);background:var(--panel-3)}.dropzone-action-label{font-size:12.5px;font-weight:500}.dropzone-action-hint{font-size:11px;color:var(--dim)}.row-tight{display:flex;gap:6px;align-items:center;margin-top:7px}.row-tight select{flex:1;min-width:0}.material-card{cursor:grab}.material-card:active{cursor:grabbing}.material-swatch{position:relative;width:42px;height:42px;flex:none;border-radius:6px;border:1px solid var(--line);overflow:hidden}.material-swatch img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.material-body{margin-top:9px;padding-top:9px;border-top:1px solid var(--line-soft)}.slot-drop{border:1px dashed transparent;border-radius:6px;margin:0 -4px;padding:0 4px}.slot-drop.over{border-color:var(--accent);background:#7c5cff18}.slot-row{display:flex;gap:6px;align-items:center}.slot-row select{flex:1;min-width:0}.slot-thumb{width:26px;height:26px;flex:none;border-radius:4px;border:1px solid var(--line);object-fit:cover;background:var(--panel-3)}.vec3.pair{grid-template-columns:repeat(2,1fr)}.dock{position:relative;display:flex;flex-direction:column}.project{display:flex;flex-direction:column;min-height:0;flex:1}.project-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--line-soft);flex:none}.project-tabs button em{font-style:normal;font-size:10px;color:var(--dim);background:var(--panel-3);border-radius:8px;padding:0 5px}.project-tabs{display:flex;gap:2px;overflow-x:auto;flex:1 1 auto;min-width:240px}.project-bar select{flex:0 1 auto;width:auto;max-width:240px;min-width:0;font-size:12px;padding:3px 6px}.project-tabs button{display:flex;align-items:center;gap:5px;flex:none;background:transparent;border:1px solid transparent;color:var(--muted);padding:3px 9px;font-size:12px}.project-tabs button:hover:not(.active){color:var(--text);filter:none}.project-tabs button.active{background:var(--panel-3);border-color:var(--line);color:var(--text)}.project-search{flex:none;width:150px;background:var(--panel-3);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:inherit;font-size:12px;padding:4px 8px}.project-search::placeholder{color:var(--dim)}.project-error{margin:6px 10px}.project-body{display:flex;min-height:0;flex:1}.project-grid{display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px;padding:10px;overflow-y:auto;min-height:0;flex:1}.asset{display:flex;flex-direction:column;align-items:center;gap:3px;width:92px;padding:7px 5px 6px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);cursor:grab;overflow:hidden}.asset:hover:not(:disabled){border-color:var(--accent-dim);background:var(--panel-3);filter:none}.asset.selected{border-color:var(--accent);background:#7c5cff1f}.asset:active{cursor:grabbing}.asset-thumb{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:62px;border-radius:5px;background:var(--panel-3);overflow:hidden}.asset-thumb img{width:100%;height:100%;object-fit:cover}.asset-thumb em{font-style:normal;font-size:22px;color:#cbb9ff}.asset-name{font-size:11px;line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-meta{font-size:9.5px;color:var(--dim);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-detail-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}.project-detail-head .target-name{flex:1;min-width:0}.asset-preview{display:block;width:100%;max-height:148px;object-fit:contain;background:var(--panel-3);border:1px solid var(--line);border-radius:6px;margin-bottom:9px}.asset-facts{display:grid;grid-template-columns:84px 1fr;gap:2px 8px;margin:0 0 9px;font-size:11.5px}.asset-facts dt{color:var(--dim)}.asset-facts dd{margin:0;overflow-wrap:anywhere}.missing-list{list-style:none;margin:5px 0 8px;padding:0;font-size:11px}.missing-list li{display:flex;justify-content:space-between;gap:8px;padding:2px 0}.missing-list em{font-style:normal;color:var(--dim);flex:none}.error-text{color:#ff9d96}.ok-text{color:#7ee08f}.flip-row{display:flex;gap:14px;align-items:center}.flip-row .insp-check{margin:0}.project-section{width:100%}.project-section h4{margin:2px 0 6px;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--dim)}.project-section-body{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.project-hint{width:100%;margin:0 0 6px;font-size:11.5px;color:var(--muted)}.prefab-asset{width:84px}.prefab-asset .asset-thumb{height:46px}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.menu{position:fixed;min-width:208px;max-width:320px;padding:4px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 32px #000a;display:flex;flex-direction:column;gap:1px}.menu-title{padding:5px 8px 6px;font-size:10.5px;color:var(--dim);border-bottom:1px solid var(--line-soft);margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:5px 8px;background:transparent;border:none;border-radius:5px;color:var(--text);font-weight:400;font-size:12px;text-align:left}.menu-item:hover:not(:disabled){background:var(--accent);filter:none}.menu-item:hover:not(:disabled) em{color:#fffc}.menu-item.danger{color:#ff9d96}.menu-item.danger:hover:not(:disabled){background:#7f1d1d;color:#fff}.menu-item em{font-style:normal;font-size:10.5px;color:var(--dim)}.menu-separator{height:1px;background:var(--line-soft);margin:3px 2px}.normal-fix{margin:4px 0 8px;padding:6px 0 2px 9px;border-left:2px solid var(--line)}.normal-fix .insp-field{margin-bottom:5px}.normal-strength{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--dim)}.normal-strength input{width:58px}.warn-text{color:#ecc766}.mat-channel{margin:0 0 10px;padding-left:9px;border-left:2px solid var(--line)}.mat-channel h5{margin:0 0 5px;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#b9a8ff}.mat-channel .hint.tiny{margin-top:0;margin-bottom:6px}.mat-block{margin:0 0 8px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--panel-2)}.mat-block>summary{cursor:pointer;padding:6px 9px;font-size:11.5px;color:var(--muted)}.mat-block>summary:hover{color:var(--text)}.mat-block[open]>summary{border-bottom:1px solid var(--line-soft);color:var(--text)}.mat-block>*:not(summary){margin-left:9px;margin-right:9px}.mat-block>.mat-channel{margin-top:8px}.mat-block>button{margin-bottom:9px}.texture-fix{margin:0 0 7px}.texture-fix .row-tight{margin-top:0}.modal-actions{display:flex;gap:6px;margin-top:10px}.psd-layers{list-style:none;margin:8px 0 0;padding:0;max-height:190px;overflow-y:auto;border:1px solid var(--line);border-radius:5px}.psd-layers li{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:4px 7px;font-size:11.5px}.psd-layers li+li{border-top:1px solid var(--line-soft)}.psd-layers li.muted{opacity:.5}.psd-layer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.psd-layer-name em{color:var(--muted);font-style:normal}.psd-layer-meta{flex:none;color:var(--muted);font-size:10.5px}.timeline{--tl-label: 214px;--tl-row: 26px;display:flex;flex-direction:column;min-height:0;flex:1}.timeline .project-bar{flex-wrap:wrap;row-gap:4px}.tl-transport,.tl-settings{display:flex;align-items:center;gap:6px;flex:none}.tl-settings{margin-left:auto;flex-wrap:wrap;row-gap:4px}.tl-settings label{display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--muted);margin:0}.tl-settings input[type=number]{width:58px}.tl-settings input[type=range]{width:92px}.tl-settings select{width:auto;font-size:12px;padding:3px 6px}.tl-settings input[type=checkbox]{width:auto}.tl-readout{font-variant-numeric:tabular-nums;font-size:12px;color:var(--text);padding:0 4px}.tl-readout em{font-style:normal;color:var(--dim);margin-left:5px}.tl-readout em:before{content:"/ "}.tl-add{display:flex;align-items:center;flex-wrap:wrap;gap:5px;padding:6px 10px;border-bottom:1px solid var(--line-soft);background:var(--panel-2)}.tl-add strong{font-size:12px;margin-right:4px}.tl-add .muted{font-size:12px}.tl-notes{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--warn);margin-left:4px}.tl-scroll{flex:1;min-height:0;overflow:auto}.tl-sheet{position:relative;min-width:100%;padding-bottom:8px}.tl-row{display:flex;align-items:stretch;height:var(--tl-row)}.tl-label{position:sticky;left:0;z-index:3;width:var(--tl-label);flex:none;display:flex;align-items:center;gap:5px;padding:0 8px 0 6px;background:var(--panel);border-right:1px solid var(--line);border-bottom:1px solid var(--line-soft);font-size:11.5px;overflow:hidden}.tl-lane{position:relative;flex:1;border-bottom:1px solid var(--line-soft)}.tl-ruler{position:sticky;top:0;z-index:4;height:22px;background:var(--panel-2)}.tl-ruler .tl-label{z-index:5;background:var(--panel-2);color:var(--dim)}.tl-ruler .tl-lane{cursor:ew-resize;background:var(--panel-2)}.tl-tick{position:absolute;top:3px;border-left:1px solid var(--line);padding-left:4px;font-size:10px;font-variant-numeric:tabular-nums;color:var(--dim);white-space:nowrap;pointer-events:none;height:16px}.tl-cursor{position:absolute;top:0;bottom:0;z-index:2;width:1px;background:var(--accent);box-shadow:0 0 4px var(--accent);pointer-events:none}.tl-empty{max-width:560px;padding:14px 12px;font-size:12px;line-height:1.6;color:var(--muted)}.tl-item .tl-label,.tl-item .tl-lane{background:var(--panel-3)}.tl-item.active .tl-label{box-shadow:inset 2px 0 0 var(--accent)}.tl-item.active .tl-name{color:var(--text)}.tl-fold,.tl-name,.tl-drop,.tl-loop{background:none;border:none;padding:0;color:var(--muted);font:inherit;cursor:pointer}.tl-fold{width:12px;flex:none;color:var(--dim)}.tl-fold:hover,.tl-name:hover,.tl-drop:hover,.tl-loop:hover{color:var(--text);filter:none}.tl-name{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--text)}.tl-drop{flex:none;color:var(--dim);font-size:11px}.tl-drop:hover{color:#ff9d96}.tl-loop{flex:none;font-size:12px}.tl-loop.active{color:var(--accent);background:none}.tl-track .tl-label,.tl-media .tl-label{padding-left:24px}.tl-track-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.tl-value{flex:none;font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--dim)}.tl-span{position:absolute;top:50%;height:5px;margin-top:-2.5px;border-radius:3px;cursor:pointer;background:var(--accent-dim)}.tl-span:hover{background:var(--accent)}.tl-span.bezier{background:linear-gradient(90deg,#33266e,var(--accent-dim),var(--accent))}.tl-span.hold{background:repeating-linear-gradient(90deg,var(--accent-dim) 0 4px,transparent 4px 8px)}.tl-key{position:absolute;top:50%;left:0;width:9px;height:9px;padding:0;margin:0;border-radius:2px;border:1px solid var(--accent);background:var(--panel);transform:translate(-50%,-50%) rotate(45deg);cursor:ew-resize}.tl-key:hover{background:var(--accent);filter:none}.tl-key.chosen{background:var(--accent);box-shadow:0 0 0 2px #7c5cff44}.tl-key.summary{width:7px;height:7px;border-color:var(--muted);cursor:pointer}.tl-key.summary:hover{background:var(--muted)}.tl-key.hold{border-radius:0;transform:translate(-50%,-50%)}.tl-bar{position:absolute;top:3px;bottom:3px;display:flex;align-items:center;border-radius:4px;border:1px solid #2f6f4a;background:linear-gradient(180deg,#1c4d36,#16351f);color:#b9e6c8;font-size:10.5px;padding:0 6px;overflow:hidden;cursor:grab;-webkit-user-select:none;user-select:none}.tl-bar>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-bar:hover{border-color:#46a06c}.tl-grip{position:absolute;top:0;right:0;bottom:0;width:7px;cursor:ew-resize;background:#ffffff1a}.tl-grip:hover{background:#ffffff40}.tl-key-editor{min-width:0}.tl-key-head{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:8px}.tl-key-head .muted{font-size:11px}.tl-key-head>button:last-child{margin-left:auto}.tl-key-fields{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px}.tl-key-fields label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--muted)}.tl-key-fields input[type=number]{width:96px}.tl-key-fields label em{font-style:normal;color:var(--dim);font-size:10px}.tl-check{flex-direction:row!important;align-items:center;gap:5px!important;font-size:12px!important;color:var(--text)!important;padding-bottom:5px}.tl-check input{width:auto;accent-color:var(--accent);margin:0}.tl-ease{display:flex;gap:3px}.tl-curve{display:flex;align-items:flex-start;gap:14px;margin-top:10px;padding:2px 4px 4px}.tl-curve svg{flex:none;background:var(--panel);border:1px solid var(--line);border-radius:5px}.tl-curve-box{fill:#ffffff06;stroke:var(--line);stroke-width:1}.tl-curve-note{font-size:11.5px;line-height:1.6;max-width:460px}.tl-curve-diag{stroke:var(--line);stroke-dasharray:3 3}.tl-curve-arm{stroke:var(--accent-dim);stroke-width:1}.tl-curve-line{stroke:var(--accent);stroke-width:2;fill:none}.tl-curve-handle{fill:var(--panel-2);stroke:var(--accent);stroke-width:2;cursor:grab}.tl-curve-handle:hover{fill:var(--accent)}.tl-curve-side{display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:300px}.tl-curve-side p{margin:0;font-size:11.5px;line-height:1.6}.tl-autokey{font-variant-numeric:tabular-nums;letter-spacing:.2px}.tl-autokey.active{background:var(--rec);border-color:var(--rec);color:#fff}.tl-rec{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--rec);margin-left:4px;white-space:nowrap}.tl-notes.warn{padding:2px 6px;border:1px solid var(--warn);border-radius:5px;background:color-mix(in oklab,var(--warn) 10%,transparent)}.tl-modes{display:flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:6px}.tl-modes>button{border:none}.tl-graph-label{flex-direction:column;align-items:flex-start;gap:3px;padding:6px 8px;overflow-y:auto}.tl-graph-label>label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--dim);margin-bottom:2px}.tl-graph-label>label input{width:auto;accent-color:var(--accent);margin:0}.tl-curve-pick{display:flex;align-items:center;gap:6px;width:100%;padding:2px 4px;border:none;border-radius:4px;background:none;color:var(--text);font-size:11.5px;text-align:left;cursor:pointer}.tl-curve-pick:hover{background:#ffffff0d}.tl-curve-pick>i{width:9px;height:9px;border-radius:2px;flex:none}.tl-curve-pick.off{color:var(--dim)}.tl-curve-pick.off>i{background:none!important;box-shadow:inset 0 0 0 1px var(--line)}.tl-graph{display:block}.tl-graph-guide{stroke:var(--line-soft);stroke-dasharray:2 4}.tl-graph-line{fill:none;stroke-width:1.6;pointer-events:none}.tl-graph-key{fill:var(--panel);stroke-width:2;cursor:move}.tl-graph-key:hover,.tl-graph-key.chosen{fill:var(--accent)}.tl-arm>.tl-curve-handle{cursor:move}.tl-arm.straight>.tl-curve-arm{stroke:var(--line);stroke-dasharray:2 3}.tl-arm.straight>.tl-curve-handle{fill:var(--panel-3);stroke:var(--line)}.props{display:flex;flex-direction:column}.fold{flex:none;border-bottom:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.fold:last-child{border-bottom:none}.fold-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;background:var(--panel-2);border-bottom:1px solid var(--line-soft)}.fold-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:7px;padding:7px 11px;background:transparent;border:none;border-radius:0;color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.fold-toggle:hover:not(:disabled){filter:none;color:var(--text)}.fold-toggle>span{flex:1;min-width:0;text-align:left}.fold-toggle em{font-style:normal;text-transform:none;letter-spacing:0;font-size:10px;color:var(--dim);background:var(--panel-3);border-radius:8px;padding:0 6px}.fold-chevron{transition:transform var(--fold-ease);flex:none}.fold.folded .fold-chevron{transform:rotate(-90deg)}.fold-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--fold-ease)}.fold.folded .fold-body{grid-template-rows:0fr}.fold-body>div{overflow:hidden;min-height:0}.fold-pad .fold-body>div{padding:9px 11px}.dock-views{display:flex;align-items:center;gap:2px;flex:none}.dock-views button{display:flex;align-items:center;gap:5px;background:transparent;border:1px solid transparent;color:var(--muted);padding:3px 9px;font-size:12px}.dock-views button:hover:not(.active){color:var(--text);filter:none}.dock-views button.active{background:var(--panel-3);border-color:var(--line);color:var(--text)}button.small.icon{display:inline-flex;align-items:center;justify-content:center;width:26px;padding:4px 0}.tl-real-note{margin:2px 0 8px;font-size:11.5px;line-height:1.55}
