.canvas-curtain{z-index:50;pointer-events:none;position:fixed;inset:0;overflow:hidden}@media (min-width:769px){.canvas-curtain{left:340px}}.canvas-curtain-half{background:var(--bg-primary);will-change:transform;width:100%;height:50%;position:absolute;left:0}.canvas-curtain-top{height:calc(50% + 1px);animation:.8s cubic-bezier(.76,0,.24,1) .15s forwards curtain-slide-up;top:0}.canvas-curtain-bottom{animation:.8s cubic-bezier(.76,0,.24,1) .15s forwards curtain-slide-down;bottom:0}@keyframes curtain-slide-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes curtain-slide-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}.progress-bar-container{background:#ffffff0f;border-radius:2px;height:3px;margin-bottom:6px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--accent-blue), var(--accent-purple));border-radius:2px;width:0%;height:100%;transition:width .3s}.loader-phase{color:var(--text-muted);font-size:.68rem;font-family:var(--font-mono)}.perf-compact{font-family:var(--font-mono);background:var(--bg-panel);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--border-color);border-radius:var(--radius-md);-webkit-user-select:none;user-select:none;overflow:hidden}.perf-compact-header{color:var(--text-secondary);font-family:var(--font-mono);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:5px 10px;font-size:.62rem;display:flex}.perf-compact-header:hover{background:#ffffff0a}.perf-compact-fps{font-size:.75rem;font-weight:700}.perf-compact-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.5rem;font-weight:600}.perf-compact-stat{color:var(--text-primary);font-size:.62rem;font-weight:600}.perf-compact-sep{background:var(--border-color);width:1px;height:10px;margin:0 3px}.perf-compact-chevron{color:var(--text-muted);margin-left:4px;font-size:.45rem;transition:transform .2s}.perf-compact-chevron.open{transform:rotate(180deg)}.perf-compact-body{border-top:1px solid var(--border-color);flex-direction:column;gap:8px;max-width:220px;padding:8px 10px;display:flex}.perf-section-compact{flex-direction:column;gap:2px;display:flex}.perf-section-title-compact{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:2px;font-size:.55rem;font-weight:600}.perf-gpu-name-compact{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.55rem;overflow:hidden}.perf-stats-row{color:var(--text-secondary);flex-wrap:wrap;gap:6px;font-size:.58rem;display:flex}.perf-tris-breakdown{border-top:1px solid #ffffff0f;margin-top:4px;padding-top:4px}.perf-asset-row-compact{color:var(--text-secondary);justify-content:space-between;padding:1px 0;font-size:.6rem;display:flex}.perf-measured{color:var(--accent-green);font-weight:600}.perf-quality-badge{letter-spacing:.04em;background:#ffffff0f;border:1px solid #ffffff14;border-radius:3px;padding:1px 4px;font-size:.55rem;font-weight:700}.perf-adaptive-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.perf-adaptive-level{letter-spacing:.05em;font-size:.7rem;font-weight:700}.perf-adaptive-toggle{color:var(--text-muted);cursor:pointer;align-items:center;gap:4px;font-size:.58rem;display:flex}.perf-adaptive-toggle input[type=checkbox]{cursor:pointer;width:12px;height:12px;accent-color:var(--accent-blue)}.perf-adaptive-hint{color:var(--text-muted);margin-top:2px;font-size:.5rem;line-height:1.4}.perf-stat-highlight{color:var(--accent-green);font-weight:600}.loader-progress-bar{background:#ffffff0f;border-radius:2px;width:200px;height:3px;margin:12px auto 8px;overflow:hidden}.loader-progress-fill{background:linear-gradient(90deg, var(--accent-blue), var(--accent-purple,#a855f7));border-radius:2px;width:0%;height:100%;transition:width .3s;box-shadow:0 0 8px #48f6}.viewer-canvas-container{z-index:0;width:100%;height:100%;position:fixed;inset:0}@media (min-width:769px){.viewer-canvas-container{width:calc(100% - 340px);left:340px}}.viewer-canvas-container canvas{width:100%;height:100%;display:block}@media (max-width:768px){.viewer-canvas-container{height:calc(100dvh - var(--mobile-panel-h,0px));bottom:auto}}.canvas-blackout{z-index:1;pointer-events:none;opacity:0;background:#08080e;transition:opacity .22s;position:fixed;inset:0}:root.canvas-resizing .canvas-blackout{opacity:1;transition:opacity 50ms}.orbit-crosshair{pointer-events:none;z-index:100;width:16px;height:16px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}@media (min-width:769px){.orbit-crosshair{left:calc(50% + 170px)}}.orbit-crosshair:before,.orbit-crosshair:after{content:"";mix-blend-mode:difference;background:#ffffff80;position:absolute}.orbit-crosshair:before{width:1px;height:100%;top:0;left:50%;transform:translate(-50%)}.orbit-crosshair:after{width:100%;height:1px;top:50%;left:0;transform:translateY(-50%)}.bottom-right-bar{z-index:300;pointer-events:none;align-items:flex-end;gap:14px;display:flex;position:fixed;bottom:22px;right:26px}.bottom-right-bar>*{pointer-events:auto}.camera-info-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--border-color);border-radius:var(--radius-md);font-family:var(--font-mono);color:var(--text-secondary);-webkit-user-select:none;user-select:none;gap:12px;padding:6px 12px;font-size:.65rem;display:flex}.camera-info-item{align-items:center;gap:5px;display:flex}.camera-info-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.55rem;font-weight:600}.gizmo-toolbar{background:var(--bg-panel);-webkit-backdrop-filter:blur(20px)saturate(1.4);border:1px solid var(--border-color);border-radius:var(--radius-lg);gap:4px;padding:4px;display:flex}.viewcube-wrap{justify-content:center;align-self:center;align-items:center;display:flex}.viewcube-scene{perspective:140px;-webkit-user-select:none;user-select:none;touch-action:none;width:40px;height:40px}.viewcube{width:100%;height:100%;transform-style:preserve-3d;position:relative;transform:rotateX(-25deg)rotateY(-35deg)}.viewcube-face{text-transform:uppercase;letter-spacing:.05em;color:#fff6;cursor:pointer;-webkit-user-select:none;user-select:none;backface-visibility:visible;background:#14141ea6;border:1px solid #ffffff14;justify-content:center;align-items:center;width:40px;height:40px;font-size:.55rem;font-weight:700;transition:background .15s,color .15s,border-color .15s;display:flex;position:absolute}.viewcube-face.hovered{color:#ffffffe6;background:#48f3;border-color:#48f6}.viewcube-face.active{color:#fff;background:#4488ff4d;border-color:#48f9}.viewcube-front{transform:translateZ(20px)}.viewcube-back{transform:rotateY(180deg)translateZ(20px)}.viewcube-right{transform:rotateY(-90deg)translateZ(20px)}.viewcube-left{transform:rotateY(90deg)translateZ(20px)}.viewcube-top{transform:rotateX(90deg)translateZ(20px)}.viewcube-bottom{transform:rotateX(-90deg)translateZ(20px)}.gizmo-btn{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.gizmo-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.gizmo-btn.active{color:var(--accent-blue);background:#4488ff26;border-color:#4488ff4d}.asset-accordion-actions{align-items:center;gap:6px;display:flex}.asset-eye-btn{border-radius:var(--radius-sm);color:#ffffff8c;cursor:pointer;width:24px;height:24px;transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.asset-eye-btn:hover{color:#ffffffd9;background:var(--bg-hover)}.asset-eye-btn.hidden-asset{color:#fff3}.asset-eye-btn.hidden-asset:hover{color:#fff6}.compass{-webkit-backdrop-filter:blur(16px)saturate(1.4);-webkit-user-select:none;user-select:none;pointer-events:auto;background:#14141ea6;border:1px solid #ffffff14;border-radius:50%;flex-shrink:0;width:52px;height:52px;position:relative;box-shadow:inset 0 0 16px #00000059}.compass-rose{transition:transform .12s linear;position:absolute;inset:0}.compass-mark{letter-spacing:.04em;color:#ffffff80;-webkit-user-select:none;user-select:none;font-size:.6rem;font-weight:700;line-height:1;position:absolute}.compass-mark-n{color:var(--accent-red);top:4px;left:50%;transform:translate(-50%)}.compass-mark-e{top:50%;right:5px;transform:translateY(-50%)}.compass-mark-s{bottom:4px;left:50%;transform:translate(-50%)}.compass-mark-o{top:50%;left:5px;transform:translateY(-50%)}.compass-tick{background:#ffffff2e;position:absolute}.compass-tick-n,.compass-tick-s{width:1px;height:6px;left:50%;transform:translate(-50%)}.compass-tick-n{background:var(--accent-red);top:2px}.compass-tick-s{bottom:2px}.compass-tick-e,.compass-tick-o{width:6px;height:1px;top:50%;transform:translateY(-50%)}.compass-tick-e{right:2px}.compass-tick-o{left:2px}.compass-center{background:#ffffff8c;border-radius:50%;width:5px;height:5px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
.login-container{background:var(--bg-primary);justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:relative;overflow:hidden}.version-badge{font-size:.65rem;font-family:var(--font-mono,"SF Mono", "Fira Code", monospace);color:var(--text-muted,#ffffff4d);letter-spacing:.5px;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:9;opacity:.6;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:20px;padding:2px 8px;transition:opacity .3s;position:fixed;bottom:12px;right:14px}.version-badge:hover{opacity:1}.login-bg-glow{filter:blur(120px);opacity:.15;pointer-events:none;border-radius:50%;position:absolute}.login-bg-glow-1{background:var(--accent-blue);width:500px;height:500px;animation:8s ease-in-out infinite alternate loginGlow1;top:-120px;left:-80px}.login-bg-glow-2{background:var(--accent-purple);width:400px;height:400px;animation:10s ease-in-out infinite alternate loginGlow2;bottom:-100px;right:-60px}@keyframes loginGlow1{0%{transform:translate(0)scale(1)}to{transform:translate(60px,40px)scale(1.15)}}@keyframes loginGlow2{0%{transform:translate(0)scale(1)}to{transform:translate(-40px,-30px)scale(1.1)}}.login-card{z-index:1;background:var(--bg-panel);-webkit-backdrop-filter:blur(24px)saturate(1.5);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-panel), 0 0 60px #4488ff0a;width:380px;max-width:calc(100vw - 32px);position:relative;overflow:hidden}.login-header{text-align:center;border-bottom:1px solid var(--border-color);padding:32px 28px 20px}.login-logo{justify-content:center;align-items:center;margin-bottom:16px;display:flex}.login-header h1{background:linear-gradient(135deg, var(--accent-blue), var(--accent-purple));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:6px;font-size:1.3rem;font-weight:700}.login-header p{color:var(--text-muted);font-size:.78rem}.login-body{flex-direction:column;gap:16px;padding:24px 28px 28px;display:flex}.login-field{flex-direction:column;gap:6px;display:flex}.login-field label{color:var(--text-secondary);letter-spacing:.03em;text-transform:uppercase;font-size:.72rem;font-weight:600}.login-field input{background:var(--bg-input);border:1px solid var(--border-input);border-radius:var(--radius-md);color:var(--text-primary);font-size:.88rem;font-family:var(--font-sans);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:11px 14px}.login-field input::placeholder{color:var(--text-muted);letter-spacing:.15em}.login-field input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px #4488ff1f}.login-field input:disabled{opacity:.5}.login-error{border-radius:var(--radius-md);color:var(--accent-red);background:#ff446614;border:1px solid #f463;align-items:center;gap:8px;padding:10px 14px;font-size:.78rem;font-weight:500;animation:.2s fadeIn;display:flex}.login-error-icon{flex-shrink:0;font-size:.85rem}.login-btn{background:linear-gradient(135deg, var(--accent-blue), #5a6fff);border-radius:var(--radius-md);color:#fff;width:100%;font-size:.85rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;min-height:44px;padding:12px;display:flex;position:relative;overflow:hidden}.login-btn:before{content:"";opacity:0;transition:opacity var(--transition-fast);background:linear-gradient(135deg,#0000,#ffffff1a);position:absolute;inset:0}.login-btn:hover:not(:disabled):before{opacity:1}.login-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 20px #4488ff4d}.login-btn:active:not(:disabled){transform:translateY(0)}.login-btn:disabled{opacity:.4;cursor:not-allowed}.login-btn-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.6s linear infinite loginSpin}@keyframes loginSpin{to{transform:rotate(360deg)}}@keyframes loginShake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.login-shake{animation:.4s loginShake}
.mat-panel{z-index:200;width:310px;max-height:60vh;animation:.3s slideInRight;position:fixed;bottom:16px;right:16px}.mat-panel.collapsed{max-height:44px}.mat-count-badge{min-width:18px;height:18px;color:var(--accent-blue);background:#4488ff26;border-radius:9px;justify-content:center;align-items:center;margin-left:4px;padding:0 5px;font-size:.6rem;font-weight:700;display:inline-flex}.mat-header-actions{align-items:center;gap:6px;display:flex}.mat-refresh-btn{border:1px solid var(--border-input);background:var(--bg-input);width:22px;height:22px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);border-radius:4px;justify-content:center;align-items:center;font-size:.8rem;display:flex}.mat-refresh-btn:hover{color:var(--accent-blue);background:#4488ff1a;border-color:#4488ff4d}.mat-refresh-btn-inline{border:1px solid var(--border-input);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;color:var(--text-muted);font-size:.68rem;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);text-align:center;margin-bottom:8px;padding:5px 10px;display:block}.mat-refresh-btn-inline:hover{color:var(--accent-blue);background:#4488ff1a;border-color:#4488ff4d}.mat-accordion{border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast);margin-bottom:5px;overflow:hidden}.mat-accordion:last-child{margin-bottom:0}.mat-accordion.open{border-color:#48f3}.mat-accordion-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--bg-input);transition:background var(--transition-fast);align-items:center;gap:6px;padding:8px 10px;display:flex}.mat-accordion-header:hover{background:var(--bg-hover)}.mat-accordion-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;align-items:center;gap:7px;min-width:0;font-size:.7rem;font-weight:600;display:flex;overflow:hidden}.mat-type-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.mat-accordion-badge{font-size:.55rem;font-weight:600;font-family:var(--font-mono);letter-spacing:.02em;opacity:.7;white-space:nowrap;flex-shrink:0}.mat-accordion-chevron{color:var(--text-muted);transition:transform var(--transition);flex-shrink:0;font-size:.45rem}.mat-accordion:not(.open) .mat-accordion-chevron{transform:rotate(-90deg)}.mat-accordion-body{border-top:1px solid var(--border-color);padding:8px 10px 10px}.mat-section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-top:1px solid var(--border-color);margin-top:8px;margin-bottom:5px;padding-top:6px;font-size:.55rem;font-weight:700}.mat-section-title:first-child{border-top:none;margin-top:0;padding-top:0}.mat-param-row{align-items:center;gap:6px;min-height:24px;margin-bottom:4px;display:flex}.mat-param-label{width:70px;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:.65rem;font-weight:500;overflow:hidden}.mat-param-row input[type=range]{appearance:none;background:#ffffff1a;border-radius:2px;outline:none;flex:1;min-width:0;height:3px}.mat-param-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-blue);cursor:pointer;border:2px solid #fff3;border-radius:50%;width:10px;height:10px}.mat-param-row input[type=number]{background:var(--bg-input);border:1px solid var(--border-input);width:50px;color:var(--text-primary);font-size:.65rem;font-family:var(--font-mono);text-align:right;border-radius:4px;outline:none;flex-shrink:0;padding:2px 4px}.mat-param-row input[type=number]:focus{border-color:var(--accent-blue)}.mat-color-input{border:1px solid var(--border-input);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;width:24px;height:24px;padding:1px}.mat-color-input::-webkit-color-swatch-wrapper{padding:0}.mat-color-input::-webkit-color-swatch{border:none;border-radius:2px}.mat-param-hex{font-size:.6rem;font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0}.mat-toggle{flex-shrink:0;width:28px;height:16px;display:inline-block;position:relative}.mat-toggle input{opacity:0;width:0;height:0}.mat-toggle-slider{cursor:pointer;transition:background var(--transition-fast);background:#ffffff1a;border-radius:8px;position:absolute;inset:0}.mat-toggle-slider:before{content:"";background:var(--text-muted);width:12px;height:12px;transition:transform var(--transition-fast), background var(--transition-fast);border-radius:50%;position:absolute;top:2px;left:2px}.mat-toggle input:checked+.mat-toggle-slider{background:#4488ff4d}.mat-toggle input:checked+.mat-toggle-slider:before{background:var(--accent-blue);transform:translate(12px)}.mat-param-value-label{color:var(--text-muted);font-size:.6rem;font-family:var(--font-mono)}.mat-select{background:var(--bg-input);border:1px solid var(--border-input);color:var(--text-primary);font-size:.65rem;font-family:var(--font-sans);cursor:pointer;border-radius:4px;outline:none;flex:1;min-width:0;padding:3px 6px}.mat-select:focus{border-color:var(--accent-blue)}.mat-select option{background:var(--bg-secondary);color:var(--text-primary)}.mat-maps-list{flex-wrap:wrap;gap:4px;display:flex}.mat-map-badge{border:1px solid var(--border-color);font-size:.55rem;font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.02em;background:#ffffff0d;border-radius:4px;padding:2px 6px;display:inline-block}.mat-dilate-row{align-items:center;gap:6px;margin-top:8px;display:flex}.mat-dilate-row input[type=number]{width:48px}.mat-dilate-btn{border:1px solid var(--border-color);color:var(--text-color,#e6e6e6);font-size:.6rem;font-family:var(--font-mono);cursor:pointer;background:#ffffff0f;border-radius:4px;padding:3px 10px}.mat-dilate-btn:hover{background:#ffffff1f}.mat-dilate-status{font-size:.55rem;font-family:var(--font-mono);margin-top:5px}.mat-dilate-status.ok{color:#51cf66}.mat-dilate-status.err{color:#ff6b6b}.mat-preset-row{border-bottom:1px solid var(--border-color);align-items:center;gap:8px;margin-bottom:6px;padding:6px 0;display:flex}.mat-preset-select{flex:1}.presets-panel-body{padding:4px 0}.presets-list{flex-direction:column;gap:2px;display:flex}.preset-item{border-radius:var(--radius-md);align-items:center;gap:8px;padding:6px 8px;transition:background .15s;display:flex}.preset-item:hover{background:var(--bg-elevated)}.preset-color-dot{border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;width:12px;height:12px}.preset-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.preset-action-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px;transition:background .15s}.preset-action-btn:hover{background:var(--bg-elevated)}.preset-delete-confirm{color:var(--accent-red)}.preset-editor{flex-direction:column;gap:10px;padding:4px 0;display:flex}.preset-editor-field{align-items:center;gap:8px;display:flex}.preset-editor-field label{color:var(--text-secondary);flex-shrink:0;width:70px;font-size:11px}.preset-editor-field input[type=text]{border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-input);color:var(--text-primary);flex:1;padding:4px 8px;font-size:12px}.preset-editor-field input[type=range]{flex:1}.preset-editor-field input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:28px;height:24px}.preset-editor-value{color:var(--text-muted);font-size:11px;font-family:var(--font-mono);text-align:right;width:35px}.preset-editor-actions{gap:8px;padding-top:4px;display:flex}.presets-templates{border-top:1px solid var(--border-color);margin-top:12px;padding-top:10px}.presets-templates-title{color:var(--text-muted);margin-bottom:8px;font-size:11px}.presets-templates-grid{flex-wrap:wrap;gap:4px;display:flex}.preset-template-btn{border-radius:var(--radius-md);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;background:0 0;align-items:center;gap:4px;padding:4px 8px;font-size:11px;transition:background .15s,border-color .15s;display:flex}.preset-template-btn:hover{background:var(--bg-elevated);border-color:var(--text-muted)}.preset-template-btn .preset-color-dot{width:8px;height:8px}
.poweredby-img,img[src*=poweredby i]{display:none!important}@keyframes xrs-ar-spin{to{transform:rotate(360deg)}}.xrs-ar-spinner{border:2px solid #fff3;border-top-color:#ab8869;border-radius:9999px;width:40px;height:40px;animation:.8s linear infinite xrs-ar-spin}.xrs-ar-btn{cursor:pointer;font-family:var(--font-sans);border:none}
