@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;1,300&family=Chakra+Petch:wght@500;600&display=swap";*,:before,:after{box-sizing:border-box}:root{--bg:#0c0d0f;--panel:#0a0b0ee0;--border:#191c22;--border-mid:#22262f;--t3:#384055;--t2:#6e7a94;--t1:#b0b9cc;--t0:#dde3ef;--amber:#e8a53c;--amber-lo:#e8a53c12;--amber-border:#e8a53c38;--blue:#4d80ff;--blue-lo:#4d80ff14;--green:#5fba6f;--red:#e05c5c;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Code", monospace;--display:"Chakra Petch", system-ui, sans-serif}html,body{background:var(--bg);width:100%;height:100%;color:var(--t2);font-family:var(--mono);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:11.5px;line-height:1.6;overflow:hidden}#root{width:100%;height:100%;overflow:hidden}.app-root{width:100%;height:100%;position:relative}.viewport-fill{position:absolute;inset:0}.hud{pointer-events:none;z-index:10;position:absolute;inset:0}.hud>*{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(18px)saturate(1.5)}.hud-header{align-items:stretch;height:34px;display:flex;position:absolute;top:16px;left:16px}.wordmark{font-family:var(--display);letter-spacing:.26em;text-transform:uppercase;color:var(--amber);border-right:1px solid var(--border-mid);-webkit-user-select:none;user-select:none;white-space:nowrap;cursor:default;background:0 0;border-top:none;border-bottom:none;border-left:none;align-items:center;padding:0 16px;font-size:11.5px;font-weight:600;transition:color .12s,background .12s;display:flex}.wordmark.wordmark-link{cursor:pointer}.wordmark.wordmark-link:hover{color:var(--t1);background:var(--amber-lo)}.open-btn{border:none;border-right:1px solid var(--border-mid);color:var(--t2);font-family:var(--mono);cursor:pointer;letter-spacing:.04em;white-space:nowrap;background:0 0;height:100%;padding:0 16px;font-size:11px;transition:color .12s,background .12s}.open-btn:hover:not(:disabled){color:var(--amber);background:var(--amber-lo)}.open-btn:disabled{opacity:.4;cursor:default}.open-btn.loading{animation:1.1s ease-in-out infinite pulse-opacity}@keyframes pulse-opacity{0%,to{opacity:.4}50%{opacity:.8}}.error-msg{color:var(--red);text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border-mid);align-items:center;max-width:280px;padding:0 12px;font-size:10.5px;display:flex;overflow:hidden}.hud-toolbar{align-items:stretch;gap:0;height:34px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%)}.toolbar-group{align-items:stretch;display:flex}.toolbar-btn{border:none;border-right:1px solid var(--border-mid);color:var(--t2);font-family:var(--mono);letter-spacing:.04em;cursor:pointer;white-space:nowrap;background:0 0;justify-content:center;align-items:center;height:100%;padding:0 12px;font-size:11px;transition:color .12s,background .12s;display:flex}.toolbar-btn:hover:not(:disabled){color:var(--t1);background:#ffffff0a}.toolbar-btn.active{background:var(--amber-lo);border-color:var(--amber-border);color:var(--amber)}.toolbar-sep{background:var(--border-mid);width:1px}.hud-sidebar{scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent;width:318px;max-height:calc(100dvh - 146px);font-size:12.5px;line-height:1.55;position:absolute;top:62px;left:16px;overflow:hidden auto}.hud-sidebar::-webkit-scrollbar{width:3px}.hud-sidebar::-webkit-scrollbar-track{background:0 0}.hud-sidebar::-webkit-scrollbar-thumb{background:var(--border-mid)}.timeline{border-top:1px solid var(--border);z-index:12;border-bottom:none;border-left:none;border-right:none;border-radius:0;align-items:center;gap:12px;height:48px;padding:0 14px;display:flex;position:absolute;bottom:0;left:0;right:0}.timeline-controls{flex-shrink:0;align-items:center;gap:10px;display:flex}.timeline-play-btn{border:1px solid var(--border-mid);width:28px;height:28px;color:var(--amber);cursor:pointer;background:#ffffff0a;justify-content:center;align-items:center;padding:0;transition:border-color .12s,background .12s;display:flex}.timeline-play-btn:hover{border-color:var(--amber-border);background:var(--amber-lo)}.timeline-time{font-variant-numeric:tabular-nums;color:var(--t1);min-width:52px;font-size:11px}.timeline-track{cursor:pointer;touch-action:none;flex:1;align-items:center;height:32px;display:flex}.timeline-track-inner{border:1px solid var(--border-mid);background:#ffffff0d;border-radius:2px;width:100%;height:8px;position:relative}.timeline-playhead{background:var(--amber);pointer-events:none;z-index:2;border-radius:1px;width:2px;height:20px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 6px #e8a53c59}.timeline-kf-marker{z-index:1;pointer-events:none;background:#e0d9c8eb;border:1px solid #e8a53ca6;width:7px;height:7px;position:absolute;top:50%;transform:translate(-50%,-50%)rotate(45deg);box-shadow:0 0 0 1px #00000059}.timeline-end-label{color:var(--t3);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0;min-width:40px;font-size:10.5px}.hud-bottom-stack{flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;bottom:72px;right:16px}.hud-reset-cam-btn{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(18px)saturate(1.5);width:30px;height:30px;color:var(--t2);cursor:pointer;border-radius:0;justify-content:center;align-items:center;padding:5px;transition:color .12s,border-color .12s;display:flex}.hud-reset-cam-btn:hover{color:var(--amber);border-color:var(--amber-border)}.hud-stats{letter-spacing:.04em;align-items:center;gap:7px;height:26px;padding:0 13px;font-size:10.5px;display:flex}.stat-tag{letter-spacing:.06em;font-weight:500}.stat-ctx{color:var(--blue)}.stat-lyr{color:var(--amber)}.stat-sep{color:var(--t3)}.stat-num{color:var(--t2)}.stat-dir{color:var(--t3);text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.landing{z-index:5;background:var(--bg);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.landing-grid{background-image:radial-gradient(circle, var(--border) 1px, transparent 1px);opacity:.4;pointer-events:none;background-size:32px 32px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(60% 50%,#000 20%,#0000 70%);mask-image:radial-gradient(60% 50%,#000 20%,#0000 70%)}.landing-content{flex-direction:column;align-items:center;gap:40px;width:100%;max-width:800px;animation:.5s ease-out landing-fade-in;display:flex;position:relative}@keyframes landing-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.landing-brand{text-align:center;-webkit-user-select:none;user-select:none}.landing-wordmark{font-family:var(--display);letter-spacing:.35em;text-transform:uppercase;color:var(--amber);text-indent:.35em;opacity:.85;font-size:44px;font-weight:600;line-height:1}.landing-tagline{letter-spacing:.22em;text-transform:uppercase;color:var(--t3);text-indent:.22em;margin-top:10px;font-size:10px}.landing-columns{gap:28px;width:100%;display:flex}.landing-section{flex:1;min-width:0}.landing-section-head{font-family:var(--display);letter-spacing:.28em;text-transform:uppercase;color:var(--t3);border-bottom:1px solid var(--border);margin-bottom:6px;padding-bottom:10px;font-size:8.5px;font-weight:600}.landing-action{cursor:pointer;width:100%;font-family:var(--mono);text-align:left;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:12px;margin-top:4px;padding:10px 12px;transition:background .15s,border-color .15s;display:flex}.landing-action:hover:not(:disabled){background:var(--amber-lo);border-color:var(--amber-border)}.landing-action:disabled{opacity:.5;cursor:default}.landing-action-icon{border:1px solid var(--border-mid);width:32px;height:32px;color:var(--amber);background:#ffffff08;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .15s;display:flex}.landing-action:hover:not(:disabled) .landing-action-icon{border-color:var(--amber-border)}.landing-action-body{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.landing-action-title{color:var(--t0);letter-spacing:.02em;font-size:11.5px;font-weight:400}.landing-action-desc{color:var(--t3);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.landing-action-keys{flex-shrink:0}.landing-action-keys kbd{font-family:var(--mono);letter-spacing:.06em;color:var(--t3);border:1px solid var(--border);background:#ffffff08;border-radius:3px;padding:2px 6px;font-size:9px}.landing-recents{flex-direction:column;gap:1px;display:flex}.landing-recent-row{border:1px solid #0000;border-radius:3px;align-items:center;transition:background .12s,border-color .12s;display:flex;position:relative}:is(.landing-recent-row:has(.landing-recent:hover:not(:disabled)),.landing-recent-row:has(.landing-recent-remove:hover)){border-color:var(--border-mid);background:#ffffff06}.landing-recent{cursor:pointer;min-width:0;font-family:var(--mono);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:8px 10px;display:flex}.landing-recent:disabled{opacity:.5;cursor:default}.landing-recent.loading{animation:1.1s ease-in-out infinite pulse-opacity}.landing-recent-icon{color:var(--t3);flex-shrink:0;align-items:center;transition:color .12s;display:flex}.landing-recent-row:has(.landing-recent:hover:not(:disabled)) .landing-recent-icon{color:var(--amber)}.landing-recent-name{color:var(--t1);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px;overflow:hidden}.landing-recent-time{color:var(--t3);letter-spacing:.02em;flex-shrink:0;font-size:9.5px}.landing-recent-remove{color:var(--t3);opacity:0;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:4px 8px;font-family:inherit;font-size:14px;line-height:1;transition:opacity .12s,color .12s}.landing-recent-row:hover .landing-recent-remove{opacity:1}.landing-recent-remove:hover{color:var(--red)}.landing-footer{color:var(--t3);letter-spacing:.03em;opacity:.6;text-align:center;font-size:10px}.landing-footer-hl{color:var(--t2);letter-spacing:.05em}.inspector-section-head{font-family:var(--display);letter-spacing:.28em;text-transform:uppercase;color:var(--t3);border-bottom:1px solid var(--border);padding:9px 14px 6px;font-size:8.5px;font-weight:600}.properties-section .inspector-section-head{border-bottom:none;padding-bottom:0}.camera-block{border-bottom:1px solid var(--border);padding:8px 14px 10px}.kv-table{flex-direction:column;gap:4px;display:flex}.kv-row{grid-template-columns:40px 1fr;gap:0 6px;line-height:1.7;display:grid}.kv-key{color:var(--t3);letter-spacing:.03em;font-size:10.5px}.kv-val{color:var(--t1);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.layer-card{border-bottom:1px solid var(--border)}.layer-summary{cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;font:inherit;text-align:left;color:inherit;min-height:var(--inspector-row-min-h,34px);background:0 0;border:none;align-items:center;gap:9px;margin:0;padding:9px 14px;transition:background .1s;display:flex}.layer-summary:hover{background:#ffffff0a}.layer-chevron-icon{color:var(--t2);flex-shrink:0;transition:transform .16s}.layer-summary[data-state=open] .layer-chevron-icon{transform:rotate(90deg)}.layer-tag{letter-spacing:.1em;border:1px solid;flex-shrink:0;padding:2px 6px;font-size:9.5px;font-weight:500;line-height:1.45}.layer-tag-ctx{color:var(--blue);background:var(--blue-lo);border-color:#4d80ff4d}.layer-tag-lyr{color:var(--amber);border-color:var(--amber-border);background:var(--amber-lo)}.layer-name{color:var(--t1);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12.5px;overflow:hidden}.layer-counts{color:var(--t3);white-space:nowrap;flex-shrink:0;font-size:11px}.layer-body{padding:4px 14px 12px 32px}.layer-sub-head{letter-spacing:.18em;text-transform:uppercase;color:var(--t3);margin:10px 0 5px;font-size:9.5px}.data-row{color:var(--t2);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:1.65;transition:color .1s;overflow:hidden}.hud-sidebar .data-row{min-height:var(--inspector-row-min-h,32px);font-size:12px;line-height:1.55}button.data-row{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;margin:0;display:block}.data-row:hover{color:var(--t1)}.data-name{color:var(--t1);font-weight:500}.data-type{color:var(--t3)}.render-row{color:var(--t2);flex-wrap:wrap;gap:2px 14px;font-size:10.5px;display:flex}.render-kv{white-space:nowrap}.render-k{color:var(--t3)}.data-row-clickable{cursor:pointer;border-radius:2px;margin:0 -4px;padding:1px 4px;transition:background .1s,color .1s}.hud-sidebar .data-row-clickable{border-radius:4px;margin:0 -6px;padding:6px 8px}.data-row-clickable:hover{color:var(--t0);background:#e8a53c0f}.hud-sidebar .data-row-clickable:hover{background:#e8a53c14}.data-row-selected{color:#f0d9a8;border-left:3px solid var(--amber);background:#e8a53c33;padding-left:10px;box-shadow:inset 0 0 0 1px #e8a53c40}.data-row-selected:hover{color:#f5e6c8;background:#e8a53c42}.scene-tree-details{margin-bottom:2px}.scene-tree-summary{min-height:var(--inspector-row-min-h,34px);align-items:center;gap:6px;padding:3px 0;display:flex}.scene-tree-expand{width:30px;height:30px;color:var(--t2);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;transition:background .12s,color .12s;display:inline-flex}.scene-tree-expand:hover{color:var(--t1);background:#ffffff0f}.scene-tree-expand:focus-visible{outline:2px solid var(--amber);outline-offset:1px}.scene-tree-expand-icon{transition:transform .16s}.scene-tree-expand[data-state=open] .scene-tree-expand-icon{transform:rotate(90deg)}.scene-tree-row{flex-wrap:wrap;flex:1;align-items:center;gap:4px 6px;min-width:0;display:flex}.scene-tree-leaf .scene-tree-row{width:100%}.scene-tree-children{border-left:1px solid #ffffff0f;margin-left:13px;padding-left:4px}.scene-tree-leaf{margin-bottom:2px}.scene-tree-leaf-spacer{flex-shrink:0;width:22px;display:inline-block}.scene-tree-add{min-width:28px;min-height:28px;font-size:16px;line-height:1}.hud-sidebar .inspector{--inspector-row-min-h:34px}.hud-sidebar .inspector-section-head{letter-spacing:.22em;padding:11px 14px 8px;font-size:9.5px}.hud-sidebar .camera-block{padding:10px 14px 12px}.hud-sidebar .kv-key{font-size:11px}.hud-sidebar .kv-val{font-size:12px}.hud-properties{scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent;width:284px;max-height:calc(100dvh - 146px);position:absolute;top:62px;right:16px;overflow:hidden auto}.hud-properties::-webkit-scrollbar{width:3px}.hud-properties::-webkit-scrollbar-track{background:0 0}.hud-properties::-webkit-scrollbar-thumb{background:var(--border-mid)}.properties-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:9px 14px;display:flex}.properties-title{font-family:var(--display);letter-spacing:.1em;color:var(--t0);font-size:11px;font-weight:600}.properties-layer{color:var(--t3);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:10px;overflow:hidden}.properties-section{border-bottom:1px solid var(--border)}.properties-body{padding:10px 14px 14px}.num-input{border:1px solid var(--border-mid);color:var(--t0);font-family:var(--mono);font-variant-numeric:tabular-nums;background:#ffffff0a;border-radius:2px;outline:none;width:100%;padding:2px 5px;font-size:11px;transition:border-color .12s}.num-input:focus{border-color:var(--amber-border)}.num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input{appearance:textfield}.num-label{cursor:ew-resize;-webkit-user-select:none;user-select:none;transition:color .1s}.num-label:hover{color:var(--t1)}.num-label:active{color:var(--amber)}.vec3-row{grid-template-columns:40px 1fr 1fr 1fr;align-items:center;gap:0 6px;min-height:1.7lh;display:grid}.vec3-cell{border:1px solid var(--border-mid);background:#ffffff0a;border-radius:2px;flex-direction:row;align-items:stretch;display:flex;overflow:hidden}.vec3-cell .num-input{background:0 0;border:none;border-radius:0;padding:2px 4px}.vec3-component{color:var(--t2);text-transform:uppercase;letter-spacing:.06em;border-right:1px solid var(--border-mid);background:#0000002e;flex-shrink:0;justify-content:center;align-items:center;min-width:18px;padding:0 5px;font-size:9px;font-weight:500;line-height:1;display:flex}.vec3-row>.vec3-cell:nth-child(2) .vec3-component{color:var(--red)}.vec3-row>.vec3-cell:nth-child(3) .vec3-component{color:var(--green)}.vec3-row>.vec3-cell:nth-child(4) .vec3-component{color:var(--blue)}.mat-select{border:1px solid var(--border-mid);color:var(--t0);font-family:var(--mono);cursor:pointer;appearance:none;background:#ffffff0a;border-radius:2px;outline:none;width:100%;padding:2px 5px;font-size:11px;transition:border-color .12s}.mat-select:focus{border-color:var(--amber-border)}.mat-select option{background:var(--bg);color:var(--t0)}.text-input{border:1px solid var(--border-mid);color:var(--t0);font-family:var(--mono);background:#ffffff0a;border-radius:2px;outline:none;width:100%;padding:2px 5px;font-size:11px;transition:border-color .12s}.text-input:focus{border-color:var(--amber-border)}.text-input::placeholder{color:var(--t3)}.toggle-btn{border:1px solid var(--border-mid);color:var(--t3);font-family:var(--mono);letter-spacing:.06em;cursor:pointer;text-align:left;background:#ffffff0a;border-radius:2px;padding:1px 10px;font-size:10px;transition:background .12s,color .12s,border-color .12s}.toggle-btn:hover{color:var(--t1)}.toggle-btn.active{background:var(--amber-lo);border-color:var(--amber-border);color:var(--amber)}.layer-sub-head-action{justify-content:space-between;align-items:center;display:flex}.layer-add-btn{color:var(--t3);font-family:var(--mono);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:14px;line-height:1;transition:color .1s}.layer-add-btn:hover{color:var(--amber)}.hud-sidebar .layer-add-btn{border-radius:4px;justify-content:center;align-items:center;min-width:28px;min-height:28px;padding:0 4px;font-size:17px;display:inline-flex}.hud-sidebar .layer-add-btn:hover{color:var(--amber);background:#e8a53c14}.dialog-overlay{z-index:200;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--bg);border:1px solid var(--border-mid);flex-direction:column;width:300px;max-height:80vh;display:flex;overflow-y:auto}.dialog-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:10px 14px;display:flex}.dialog-title{font-family:var(--display);letter-spacing:.1em;color:var(--t0);font-size:11px;font-weight:600}.dialog-body{flex:1;padding:14px;overflow-y:auto}.dialog-type-row{margin-bottom:10px}.dialog-fields{gap:6px}.dialog-hint{color:var(--t3);letter-spacing:.02em;margin-top:8px;font-size:10px}.dialog-hint-error{color:var(--red)}.dialog-footer{border-top:1px solid var(--border);flex-shrink:0;gap:0;display:flex}.dialog-btn{font-family:var(--mono);letter-spacing:.04em;cursor:pointer;background:0 0;border:none;flex:1;padding:9px 0;font-size:11px;transition:background .12s,color .12s}.dialog-btn-cancel{color:var(--t3);border-right:1px solid var(--border)}.dialog-btn-cancel:hover{color:var(--t1);background:#ffffff08}.dialog-btn-confirm{color:var(--amber)}.dialog-btn-confirm:hover:not(:disabled){background:var(--amber-lo)}.dialog-btn-confirm:disabled{color:var(--t3);cursor:default;opacity:.5}.delete-obj-btn{border:1px solid var(--border-mid);width:100%;color:var(--t3);font-family:var(--mono);letter-spacing:.04em;cursor:pointer;background:0 0;border-radius:2px;margin-top:10px;padding:4px 0;font-size:10.5px;transition:color .12s,border-color .12s,background .12s}.delete-obj-btn:hover{color:var(--red);background:#e05c5c0f;border-color:#e05c5c66}.obj-file-row{align-items:center;gap:6px;min-width:0;display:flex}.obj-file-name{color:var(--t1);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10.5px;overflow:hidden}.obj-file-empty{color:var(--t3);font-style:italic}.obj-browse-btn{border:1px solid var(--border-mid);color:var(--t2);font-family:var(--mono);letter-spacing:.04em;cursor:pointer;white-space:nowrap;background:#ffffff0a;border-radius:2px;flex-shrink:0;padding:2px 8px;font-size:10px;transition:color .12s,border-color .12s,background .12s}.obj-browse-btn:hover{color:var(--amber);border-color:var(--amber-border);background:var(--amber-lo)}.kf-list{scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent;flex-direction:column;gap:2px;max-height:140px;margin-bottom:8px;display:flex;overflow-y:auto}.kf-row{width:100%;font:inherit;text-align:left;color:var(--t2);border:1px solid var(--border-mid);cursor:pointer;background:#ffffff08;border-radius:2px;align-items:center;gap:8px;margin:0;padding:5px 8px;font-size:10.5px;transition:background .1s,border-color .1s;display:flex}.kf-row:hover{color:var(--t1);background:#ffffff0d}.kf-row-selected{background:var(--amber-lo);border-color:var(--amber-border);color:var(--t0)}.kf-row-time{font-variant-numeric:tabular-nums;color:var(--amber);flex-shrink:0;min-width:44px}.kf-row-sum{text-overflow:ellipsis;white-space:nowrap;color:inherit;overflow:hidden}.kf-curve-row{margin-top:4px}.kf-curve-select{margin-top:0}.kf-bezier-grid{grid-template-columns:1fr 1fr;gap:4px 8px;margin-bottom:6px;display:grid}.kf-actions{flex-direction:column;gap:6px;margin-top:10px;display:flex}.kf-action-btn{margin-top:0}
