:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1c2027;--panel:#262b34;--panel-raised:#323844;--viewport:#1b1f26;--border:#3b4352;--sep:#161a20;--text:#dfe3ea;--muted:#98a1b0;--accent:#4cc2ff;--accent-glow:#4cc2ff59;--select:#4cc2ff38;--font-ui:Inter, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Menlo, monospace;--radius:4px;--ease:.12s ease;--axis-x:#ff5f5f;--axis-y:#5fe58a;--axis-z:#6c9bff}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.4 var(--font-ui);-webkit-font-smoothing:antialiased;overflow:hidden}*{scrollbar-width:thin;scrollbar-color:#444c5b transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#444c5b padding-box content-box;border:2px solid #0000;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#5b6579 padding-box content-box;border:2px solid #0000}::-webkit-scrollbar-corner{background:0 0}.shell{--left-w:236px;--right-w:332px;--console-h:170px;grid-template-columns:var(--left-w) minmax(0, 1fr) var(--right-w);grid-template-rows:38px minmax(0,1fr) 22px;grid-template-areas:"top top top""left center right""status status status";gap:4px;height:100vh;padding:0 4px;display:grid}.shell.left-icons{--left-w:48px}.shell.left-hidden{--left-w:0px}.shell.right-hidden{--right-w:0px}.shell.console-collapsed{--console-h:auto}@media (width<=1360px){.shell{--left-w:204px;--right-w:300px;--console-h:140px}.shell.left-icons{--left-w:48px}.shell.left-hidden{--left-w:0px}.shell.right-hidden{--right-w:0px}}.topbar{grid-area:top;margin:0 -4px}.left-col{flex-direction:column;grid-area:left;gap:4px;min-width:0;min-height:0;display:flex;overflow:hidden}.center-col{flex-direction:column;grid-area:center;min-width:0;min-height:0;display:flex}.inspector{grid-area:right}.statusbar{grid-area:status;margin:0 -4px}.shell.left-hidden .left-col{display:none}.dock{background:var(--panel);border:1px solid var(--sep);border-radius:var(--radius);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.dock-tabs{border-bottom:1px solid var(--sep);background:#1f242c;flex:none;align-items:flex-end;gap:2px;height:28px;padding:0 4px;display:flex}.tab{height:24px;color:var(--muted);background:0 0;border:0;border-radius:4px 4px 0 0;align-items:center;gap:6px;margin:0;padding:0 12px;font-size:12.5px;display:inline-flex}.tab.active{background:var(--panel);color:var(--text)}.tab-button{cursor:pointer}.dock-tabs .icon-button{align-self:center;margin-left:auto}.dock-tabs .tab-button+.icon-button{margin-left:4px}.dock-collapse{margin-left:auto}.dock-version{color:#6c7586;align-self:center;margin-left:auto;padding-right:8px;font-size:11.5px}.topbar{border-bottom:1px solid var(--sep);background:#20252d;align-items:center;gap:6px;padding:0 10px;display:flex;position:relative}.topbar-brand{align-items:center;margin-right:4px;display:flex}.menubar{gap:0;display:flex}.menu{position:relative}.menu-title{color:var(--text);background:0 0;border:0;border-radius:3px;padding:4px 9px}.menu-title:hover:not(:disabled),.menu-title.open{background:var(--panel-raised)}.menu-list{z-index:20;border:1px solid var(--border);background:#2d333e;border-radius:5px;min-width:210px;margin:2px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;box-shadow:0 8px 22px #00000080}.menu-list button{text-align:left;background:0 0;border:0;border-radius:3px;gap:6px;width:100%;padding:4px 10px 4px 4px;display:flex}.menu-list button:hover:not(:disabled){background:var(--select)}.menu-list .check{width:16px;color:var(--accent);text-align:center}.menu-sep{background:var(--border);height:1px;margin:4px 0}.editor-tabs .menu-title{padding:0 9px;font-size:16px;line-height:24px}.editor-tabs .menu-list{left:auto}.workspaces{gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.workspace{color:var(--muted);background:0 0;border:0;border-radius:3px;padding:4px 14px;font-weight:600}.workspace:hover:not(:disabled){background:var(--panel-raised);color:var(--text)}.workspace.active{color:var(--accent);background:#4cc2ff1a}.topbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.transport{gap:2px;display:flex}.transport-button{width:28px;height:26px;color:var(--muted);background:0 0;border:0;place-items:center;padding:0;display:grid}.transport-button:hover:not(:disabled){background:var(--panel-raised);color:var(--text)}.transport-button.play.on{color:#6ee7a0}.transport-button.pause.on{color:#ffcf5c}.renderer-chip{color:var(--accent);background:#4cc2ff12;border:1px solid #4cc2ff59;border-radius:4px;padding:2px 10px;font-size:12px}.topbar-stats{font:12px var(--font-mono);color:var(--muted)}.topbar-stats b{color:var(--text);font-weight:500}.scene-dock{flex:1 1 0}.about-dock{flex:none;max-height:46%}.filter-row{color:var(--muted);border-bottom:1px solid var(--sep);align-items:center;gap:6px;padding:5px 6px;display:flex}.filter-row input{flex:1;min-width:0}.tree{flex:1;margin:0;padding:4px;list-style:none;overflow:auto}.tree-root{color:var(--muted);align-items:center;gap:6px;padding:3px 6px;display:flex}.tree-item{width:100%;color:var(--text);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:8px;padding:4px 6px 4px 20px;display:flex}.tree-item.icon-only{justify-content:center;padding:6px 0}.tree-item:hover:not(:disabled){background:#ffffff0f;border-color:#0000}.tree-item.active,.tree-item.active:hover{background:var(--select);color:#fff;border-color:#4cc2ff8c}.tree-item .tag{color:var(--muted);margin-left:auto;font-size:10.5px}.tree-empty{color:var(--muted);padding:8px}.about-body{padding:8px 10px 10px;overflow:auto}.about-title{font-weight:700}.about-topic{color:var(--accent);margin-bottom:4px;font-size:11.5px}.about-body p{color:var(--muted);margin:0}.editor-tabs{flex:none;align-items:flex-end;gap:2px;min-width:0;height:30px;padding:0 4px;display:flex}.editor-tab{min-width:64px;height:26px;color:var(--muted);border:1px solid var(--sep);background:#20252d;border-bottom:0;border-radius:4px 4px 0 0;flex:0 auto;align-items:center;display:flex;overflow:hidden}.editor-tab.active{background:var(--panel);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.editor-tab-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;height:100%;color:inherit;background:0 0;border:0;border-radius:4px 0 0;align-items:center;gap:6px;padding:0 6px 0 10px;display:flex;overflow:hidden}.editor-tab-name:hover:not(:disabled){color:var(--text);background:0 0}.editor-tab-close{height:100%;color:var(--muted);background:0 0;border:0;flex:none;padding:0 8px 0 2px}.editor-tab-close:hover:not(:disabled){color:#fff;background:0 0}.editor-tabs .maximize{flex:none;align-self:center;margin-left:auto}.editor-tabs .menu{flex:none}.viewport{background:var(--viewport);border:1px solid var(--accent);border-radius:0 var(--radius) 0 0;flex-direction:column;flex:1 1 0;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.viewport-toolbar{background:var(--panel);border-bottom:1px solid var(--sep);height:28px;color:var(--muted);flex:none;align-items:center;padding:0 8px;font-size:12px;display:flex}.view-label{color:var(--text);align-items:center;gap:4px;display:inline-flex}.viewport-stage{background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px);background-position:-1px -1px;background-size:24px 24px;flex:1;min-height:0;padding:14px;display:flex;overflow:auto}.canvas-wrap{flex:none;margin:auto;line-height:0;position:relative}.canvas-wrap canvas{border-radius:3px;max-width:none;box-shadow:0 4px 16px #00000073}.overlay{font:12px/1.5 var(--font-mono);color:#fff;text-shadow:0 0 3px #000,0 0 6px #000;pointer-events:none;white-space:pre;z-index:1;position:absolute;top:8px;left:10px}.gizmo{pointer-events:none;position:absolute;top:36px;right:14px}.stats-strip{border-top:1px solid var(--sep);background:var(--panel);font:12px var(--font-mono);color:var(--muted);flex-wrap:wrap;flex:none;gap:2px 0;padding:4px 10px;display:flex}.stats-strip span+span:before{content:"·";color:#5b6579;margin:0 10px}.bottom-dock{height:var(--console-h);background:var(--panel);border:1px solid var(--sep);border-radius:var(--radius);flex-direction:column;flex:none;margin-top:4px;display:flex;overflow:hidden}.bottom-dock.is-collapsed{height:auto}.bottom-dock .tab-button .dot{background:#6ee7a0;border-radius:50%;width:7px;height:7px}.bottom-dock .tab-button .dot.warn{background:#ff6b6b}.bottom-dock .count{font:10.5px var(--font-mono);color:var(--muted)}.console-body{min-height:0;font:12.5px/1.6 var(--font-ui);background:var(--viewport);flex:1;padding:6px 12px 8px;overflow-y:auto}.console-line{gap:12px;margin-top:5px;display:flex}.console-line:first-child{margin-top:0}.console-line .time{color:#667084;text-align:right;width:52px;font:11px/1.9 var(--font-mono);flex:none}.console-line .text{overflow-wrap:anywhere;flex:1;min-width:0}.console-line.trace .text{color:#c3cad6}.console-line.info .text{color:var(--accent)}.console-line.warn .text{color:#ffcf5c}.console-line.sub{margin-top:1px}.console-line.sub .text{border-left:2px solid var(--border);color:var(--muted);margin-left:4px;padding-left:10px}.console-line.sub.trace .text{color:#aab2c0}.console-math{color:#eaf3fb;background:#4cc2ff1a;border:1px solid #4cc2ff38;border-radius:4px;margin:0 1px;padding:0 7px;font-size:14px;line-height:1.5;display:inline-block}.console-empty{color:#667084}.object-row{background:var(--viewport);border:1px solid var(--border);border-radius:4px;flex:none;align-items:center;gap:8px;margin:6px;padding:4px 8px;display:flex}.object-row svg{color:var(--accent)}.inspector-body{flex:1;min-height:0;padding-bottom:8px;overflow:hidden auto}.section{margin:0 6px 6px}.section-header{width:100%;height:24px;color:var(--text);background:#384051;border:0;border-radius:3px;justify-content:center;align-items:center;font-size:12.5px;font-weight:700;display:flex;position:relative}.section-header svg{color:var(--muted);position:absolute;left:8px}.section-header:hover:not(:disabled){background:#424b5e}.section-body{padding:6px 4px 4px}.row{align-items:center;gap:8px;min-height:24px;margin:4px 0;display:flex}.row-label{width:76px;color:var(--muted);flex:none}.number-row input[type=range]{flex:1;min-width:0}.value-box{text-align:right;min-width:46px;font:12px var(--font-mono);background:var(--viewport);border:1px solid var(--border);border-radius:3px;padding:2px 6px}.vec3-fields{flex:1;gap:4px;min-width:0;display:flex}.vec3-field{flex:1;min-width:0;display:flex}.vec3-field .axis-tag{color:#111;border-radius:3px 0 0 3px;flex:none;place-items:center;width:16px;font-size:10px;font-weight:700;display:grid}.vec3-field.axis-x .axis-tag{background:var(--axis-x)}.vec3-field.axis-y .axis-tag{background:var(--axis-y)}.vec3-field.axis-z .axis-tag{background:var(--axis-z)}.vec3-field .num-field{border-radius:0 3px 3px 0;width:100%;min-width:0}.formula-box{background:var(--viewport);border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:10px;max-height:440px;padding:10px 11px;display:flex;overflow:auto}.eq-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:3px;font-size:10.5px;font-weight:600}.eq-body{color:var(--text);border-left:2px solid var(--accent);overflow-wrap:break-word;background:#ffffff09;border-radius:0 3px 3px 0;padding:3px 10px;font-family:STIX Two Math,Cambria Math,Latin Modern Math,STIXGeneral,Times New Roman,Georgia,serif;font-size:16px;line-height:1.75}.math{font-family:STIX Two Math,Cambria Math,Latin Modern Math,STIXGeneral,Times New Roman,Georgia,serif}.math i{font-style:italic}.math sub,.math sup{font-size:.72em;line-height:0}.frac{vertical-align:middle;text-align:center;flex-direction:column;align-items:center;margin:0 3px;line-height:1.35;display:inline-flex}.frac-top{border-bottom:1px solid;padding:0 4px 1px}.frac-bottom{padding:1px 4px 0}.eq-note{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.numbers{font:11.5px/1.55 var(--font-mono);border:1px solid var(--border);background:#ffffff06;border-radius:3px;padding:5px 8px}.numbers-line{text-indent:-2ch;overflow-wrap:anywhere;white-space:pre-wrap;min-height:1.55em;padding-left:2ch}.statusbar{color:var(--muted);border-top:1px solid var(--sep);background:#1f242c;align-items:center;gap:8px;padding:0 14px;font-size:11.5px;display:flex}.status-light{background:#4ade80;border-radius:50%;width:8px;height:8px;box-shadow:0 0 6px #4ade80}.status-light[data-paused=true]{background:#ffcf5c;box-shadow:0 0 6px #ffcf5c}.status-sep{background:var(--border);width:1px;height:12px}.status-version{color:#6c7586;margin-left:auto}button{font:inherit;color:var(--text);background:var(--panel-raised);border:1px solid var(--border);cursor:pointer;transition:background var(--ease), border-color var(--ease), color var(--ease), transform var(--ease);border-radius:3px;padding:3px 10px}button:hover:not(:disabled){background:#3d4553;border-color:#526074}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow);outline:none}.icon-button{color:var(--muted);background:0 0;border-color:#0000;padding:3px 6px}.icon-button:hover:not(:disabled){background:var(--panel-raised);color:var(--text);border-color:#0000}select,input[type=number],input[type=text],textarea{font:inherit;color:var(--text);background:var(--viewport);border:1px solid var(--border);transition:border-color var(--ease), box-shadow var(--ease);border-radius:3px;padding:3px 6px}select:hover,input[type=number]:hover,input[type=text]:hover,textarea:hover{border-color:#526074}input[type=number]{font-family:var(--font-mono);font-size:12px}.num-field{width:58px;padding:2px 4px}input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:3px;width:30px;height:22px;padding:0}input[type=checkbox],input[type=radio]{accent-color:var(--accent);margin-right:4px}label{cursor:pointer;-webkit-user-select:none;user-select:none}table{border-collapse:collapse}th{font-weight:600}input[type=range]{appearance:none;cursor:pointer;background:#465064;border-radius:2px;outline:none;height:3px;margin:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);width:11px;height:11px;box-shadow:0 0 6px var(--accent-glow);transition:transform var(--ease);border:0;border-radius:50%}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.25)}input[type=range]::-moz-range-thumb{background:var(--accent);width:11px;height:11px;box-shadow:0 0 6px var(--accent-glow);border:0;border-radius:50%}input[type=range]:focus-visible{box-shadow:0 0 0 2px var(--accent-glow)}.compare-title{letter-spacing:.04em;color:var(--muted);text-transform:uppercase;font-size:13px;font-style:italic;font-weight:800;line-height:1.1}.compare-count{letter-spacing:-.01em;font-size:38px;font-style:italic;font-weight:800;line-height:1.05}.compare-count small{letter-spacing:.03em;color:var(--muted);margin-left:6px;font-size:14px;font-weight:700}.scene-tree,.scene-tree ul{margin:0;padding:0;list-style:none}.scene-tree{border-left:1px solid var(--border);margin:2px 0 6px 14px;padding-left:8px}.tree-group,.tree-leaf{width:100%;color:var(--text);text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:6px;padding:2px 6px;font-size:12.5px;display:flex}.tree-group{color:var(--muted);font-weight:600}.tree-group .tag{margin-left:auto;font-size:10.5px}.scene-tree ul{padding-left:14px}.tree-leaf:hover:not(:disabled),.tree-group:hover:not(:disabled){background:#ffffff0f;border-color:#0000}.tree-leaf.active,.tree-leaf.active:hover{background:var(--select);color:#fff;border-color:#4cc2ff8c}.tree-leaf.is-hidden{opacity:.45;text-decoration:line-through}.tree-leaf span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bench-block{margin-top:18px}.bench-block h3{color:var(--accent);margin:0 0 4px;font-size:14px}.bench-empty,.bench-meta,.bench-note{color:var(--muted);font-size:12px}.bench-meta{margin-bottom:6px}.bench-note{margin-top:2px}.bench-summary{color:var(--text);margin-top:4px;font-size:12.5px}.bench-title{margin:6px 0 4px;font-weight:600}.bench-table{width:100%;font:12px var(--font-mono);background:var(--panel);border:1px solid var(--border);border-radius:4px}.bench-table th{text-align:left;background:var(--panel-raised);color:var(--muted);white-space:nowrap;padding:4px 8px;font-weight:600}.bench-table td{border-top:1px solid var(--sep);white-space:nowrap;padding:3px 8px}.bench-table td.num{text-align:right}.bench-table tbody tr:hover{background:#ffffff0a}.bench-progress{appearance:none;background:#3a4150;border:0;border-radius:4px;width:100%;height:8px;margin:8px 0 4px;overflow:hidden}.bench-progress::-webkit-progress-bar{background:#3a4150}.bench-progress::-webkit-progress-value{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:width .1s linear}.bench-progress::-moz-progress-bar{background:var(--accent)}
