.viewer-shell{--viewer-panel-gap:14px;--viewer-left-width:clamp(236px, 16vw, 276px);--viewer-right-width:clamp(232px, 18vw, 288px);isolation:isolate;height:calc(100dvh - var(--header-height));min-height:var(--workspace-min-height);background:var(--scene-bg);position:relative;overflow:hidden}.viewer-rail{top:var(--viewer-panel-gap);bottom:var(--viewer-panel-gap);z-index:10;border:1px solid var(--glass-border);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 94%, transparent);min-width:0;min-height:0;box-shadow:var(--shadow-glass);scrollbar-width:thin;backdrop-filter:blur(16px);position:absolute;overflow:auto}.viewer-rail::-webkit-scrollbar{width:8px;height:8px}.viewer-rail::-webkit-scrollbar-thumb{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--text-muted) 34%, transparent);background-clip:padding-box;border:2px solid #0000}.viewer-left-rail{left:var(--viewer-panel-gap);width:var(--viewer-left-width);max-height:calc(100% - (var(--viewer-panel-gap) * 2));transition:opacity .18s,transform .18s;bottom:auto}.viewer-right-rail{right:var(--viewer-panel-gap);width:var(--viewer-right-width);max-height:calc(100% - (var(--viewer-panel-gap) * 2));transition:opacity .18s,transform .18s;bottom:auto;overflow-x:hidden}:is(.viewer-shell[data-left-collapsed=true],:root[data-viewer-left-collapsed=true] .viewer-shell[data-left-collapsed=auto]) .viewer-left-rail{opacity:0;pointer-events:none;transform:translateX(calc(-1 * (var(--viewer-left-width) + (var(--viewer-panel-gap) * 2))))}:is(.viewer-shell[data-right-collapsed=true],:root[data-viewer-right-collapsed=true] .viewer-shell[data-right-collapsed=auto]) .viewer-right-rail{opacity:0;pointer-events:none;transform:translateX(calc(var(--viewer-right-width) + (var(--viewer-panel-gap) * 2)))}.viewer-left-toggle,.viewer-right-toggle{top:var(--viewer-panel-gap);z-index:15;border:1px solid var(--scene-panel-border);border-radius:var(--radius-sm);background:var(--scene-panel-bg-soft);width:36px;height:36px;color:var(--scene-text);opacity:0;pointer-events:none;box-shadow:var(--shadow-scene);cursor:pointer;backdrop-filter:blur(14px);place-items:center;padding:0;transition:background .16s,border-color .16s,color .16s,opacity .16s,transform .18s,left .18s,right .18s;display:inline-grid;position:absolute}.viewer-left-toggle{left:var(--viewer-panel-gap)}.viewer-right-toggle{right:var(--viewer-panel-gap)}.viewer-left-toggle:hover,.viewer-right-toggle:hover{border-color:color-mix(in srgb, var(--primary) 48%, var(--scene-panel-border));background:var(--scene-panel-bg-strong);color:var(--color-white)}:is(.viewer-shell[data-left-collapsed=true],:root[data-viewer-left-collapsed=true] .viewer-shell[data-left-collapsed=auto]) .viewer-left-toggle,:is(.viewer-shell[data-right-collapsed=true],:root[data-viewer-right-collapsed=true] .viewer-shell[data-right-collapsed=auto]) .viewer-right-toggle{opacity:1;pointer-events:auto}.viewer-collapse-icon{border-top:2px solid;border-right:2px solid;width:9px;height:9px;transform:rotate(-135deg)}:is(.viewer-shell[data-left-collapsed=true],:root[data-viewer-left-collapsed=true] .viewer-shell[data-left-collapsed=auto]) .viewer-collapse-icon{transform:rotate(45deg)}.viewer-settings-icon{width:16px;height:14px;display:block;position:relative}.viewer-settings-icon:before{content:"";background:linear-gradient(currentColor 0 0) 0 1px/16px 2px no-repeat,linear-gradient(currentColor 0 0) 0 6px/16px 2px no-repeat,linear-gradient(currentColor 0 0) 0 11px/16px 2px no-repeat;position:absolute;inset:1px 0}.viewer-settings-icon:after{content:"";border-radius:var(--radius-pill);background:currentColor;width:4px;height:4px;position:absolute;top:0;left:3px;box-shadow:8px 5px,3px 10px}:is(.viewer-shell[data-left-collapsed=true],:root[data-viewer-left-collapsed=true] .viewer-shell[data-left-collapsed=auto]) .viewer-status{left:50%;transform:translate(-50%)}.viewer-left-header{border-bottom:1px solid var(--border-subtle);justify-content:flex-end;min-height:38px;padding:5px 7px;display:flex}.viewer-left-close,.viewer-right-close{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;padding:0;display:inline-grid}.viewer-left-close:hover{border-color:var(--border);background:var(--surface-subtle);color:var(--text)}.viewer-right-close{z-index:2;border-color:var(--scene-panel-border);background:var(--scene-panel-bg-soft);width:24px;height:24px;color:var(--scene-text);box-shadow:var(--shadow-scene);position:absolute;top:6px;right:6px}.viewer-right-close:hover{border-color:color-mix(in srgb, var(--primary) 48%, var(--scene-panel-border));background:var(--scene-panel-bg-strong);color:var(--color-white)}.viewer-close-icon{width:12px;height:12px;display:block;position:relative}.viewer-close-icon:before,.viewer-close-icon:after{content:"";border-radius:var(--radius-pill);background:currentColor;width:12px;height:2px;position:absolute;top:5px;left:0}.viewer-close-icon:before{transform:rotate(45deg)}.viewer-close-icon:after{transform:rotate(-45deg)}.viewer-panel-section{border-bottom:1px solid var(--border-subtle);gap:12px;padding:12px;display:grid}.viewer-panel-section:last-child{border-bottom:0}.viewer-section-header h2{color:var(--text);letter-spacing:0;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:820;line-height:1.2}.viewer-camera-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.viewer-field{gap:7px;min-width:0;display:grid}.viewer-field label{color:var(--text-muted);font-size:.76rem;font-weight:760}.viewer-field input,.viewer-field select,.viewer-field textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-subtle);width:100%;min-width:0;color:var(--text);font:inherit;font-size:.88rem}.viewer-field input,.viewer-field select{min-height:34px;padding:0 9px}.viewer-field textarea{resize:vertical;min-height:62px;max-height:130px;padding:9px;line-height:1.4}.viewer-field input:focus-visible,.viewer-field select:focus-visible,.viewer-field textarea:focus-visible,.viewer-file-picker:focus-within,.viewer-panel-section button:focus-visible,.viewer-left-close:focus-visible,.viewer-right-close:focus-visible,.viewer-left-toggle:focus-visible,.viewer-right-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.viewer-field-grid{grid-template-columns:minmax(0,1fr) minmax(86px,.56fr);gap:8px;min-width:0;display:grid}.viewer-check-field{cursor:pointer;justify-self:start;align-items:center;gap:5px;min-width:0;min-height:18px;padding:0;display:inline-flex;position:relative}.viewer-check-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-camera-header .viewer-check-label{color:var(--text-muted);font-size:.76rem;font-weight:760;line-height:1}.viewer-check-field input{opacity:0;pointer-events:none;width:1px;height:1px;margin:0;position:absolute}.viewer-check-field:hover .viewer-toggle-switch{border-color:color-mix(in srgb, var(--border) 58%, var(--text))}.viewer-toggle-switch{border:1px solid color-mix(in srgb, var(--border) 82%, var(--text-muted));border-radius:var(--radius-pill);background:color-mix(in srgb, var(--surface-muted) 84%, var(--scene-bg));flex:none;width:26px;height:16px;transition:border-color .14s,background .14s;position:relative;box-shadow:inset 0 1px 2px #0206172e}.viewer-toggle-switch:before{content:"";background:var(--text-muted);border-radius:50%;width:10px;height:10px;transition:background .14s,transform .14s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #02061752}.viewer-check-field input:checked+.viewer-toggle-switch{border-color:color-mix(in srgb, var(--primary) 78%, var(--primary-strong));background:color-mix(in srgb, var(--primary) 62%, var(--scene-panel-bg-strong))}.viewer-check-field input:checked+.viewer-toggle-switch:before{background:var(--primary-contrast);transform:translate(10px)}.viewer-check-field:focus-within .viewer-toggle-switch{outline:2px solid var(--focus);outline-offset:2px}.viewer-button-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.viewer-import-section{gap:10px}.viewer-url-form{gap:8px}.viewer-url-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.viewer-url-actions button{overflow-wrap:anywhere;min-width:0;padding-left:8px;padding-right:8px}.viewer-camera-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.viewer-camera-actions button{min-height:32px;padding:0 7px;font-size:.78rem}.viewer-camera-actions button.secondary{grid-column:1/-1}.viewer-panel-section button:not(.viewer-file-delete),.viewer-file-picker{border:1px solid var(--primary-strong);border-radius:var(--radius-sm);background:var(--primary-strong);min-height:34px;color:var(--primary-contrast);cursor:pointer;text-align:center;justify-content:center;align-items:center;padding:0 11px;font-size:.84rem;font-weight:760;line-height:1.2;display:inline-flex}.viewer-panel-section button:not(.viewer-file-delete):hover{background:var(--primary-hover);border-color:var(--primary-hover)}.viewer-panel-section button.secondary{border-color:var(--border);background:var(--surface-muted);color:var(--text)}.viewer-panel-section button.secondary:hover{border-color:color-mix(in srgb, var(--border) 76%, var(--text));background:color-mix(in srgb, var(--surface-muted) 82%, var(--text))}.viewer-file-picker{border-style:dashed;border-color:color-mix(in srgb, var(--primary-strong) 38%, var(--border));background:color-mix(in srgb, var(--surface-muted) 58%, transparent);width:100%;min-height:72px;color:var(--text);align-content:center;justify-items:center;gap:4px;padding:11px;display:grid;position:relative;overflow:hidden}.viewer-file-picker:hover{border-color:color-mix(in srgb, var(--primary-strong) 66%, var(--border));background:color-mix(in srgb, var(--primary-soft) 34%, var(--surface))}.viewer-file-picker input{opacity:0;cursor:pointer;position:absolute;inset:0}.viewer-file-picker span{pointer-events:none;min-width:0}.viewer-file-picker-copy{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.viewer-file-picker-meta{max-width:100%;color:var(--text-muted);font-family:var(--font-mono);overflow-wrap:anywhere;text-align:center;font-size:.66rem;font-weight:650;line-height:1.25}.viewer-file-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.viewer-empty-file,.viewer-file-item{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface-subtle)}.viewer-empty-file{color:var(--text-muted);padding:11px;font-size:.86rem}.viewer-file-item{min-width:0;min-height:42px;padding:9px 10px;display:block}.viewer-file-item-header{grid-template-columns:minmax(0,1fr) 10px 24px;align-items:center;gap:8px;min-width:0;min-height:24px;display:grid}.viewer-file-info{align-items:baseline;gap:7px;min-width:0;display:flex}.viewer-file-info strong,.viewer-file-info span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.viewer-file-info strong{color:var(--text);flex:auto;font-size:.88rem}.viewer-file-info span{color:var(--text-muted);font-family:var(--font-mono);flex:none;font-size:.72rem}.viewer-file-state{border-radius:var(--radius-pill);background:var(--accent);width:8px;height:8px;display:block}.viewer-file-state[data-state=ready]{background:var(--primary-strong)}.viewer-file-state[data-state=error]{background:var(--danger)}.viewer-file-delete{border-radius:var(--radius-sm);width:24px;height:24px;min-height:24px;color:var(--danger);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;padding:0;display:inline-grid}.viewer-file-delete:hover{color:color-mix(in srgb, var(--danger) 82%, var(--text))}.viewer-delete-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:16px;height:16px;display:block}.viewer-file-item[data-state=error]{border-color:color-mix(in srgb, var(--danger) 42%, var(--border))}.viewer-stage{z-index:1;background:var(--scene-bg);min-width:0;min-height:0;position:absolute;inset:0;overflow:hidden}.viewer-render-surface{touch-action:none;position:absolute;inset:0;overflow:hidden}.viewer-render-surface canvas{width:100%;height:100%;display:block}.viewer-status{z-index:5;border:1px solid var(--scene-panel-border);border-radius:var(--radius-sm);background:var(--scene-panel-bg-soft);max-width:min(480px,100% - 32px);color:var(--scene-text);text-align:center;backdrop-filter:blur(12px);pointer-events:none;padding:8px 11px;font-size:.8rem;font-weight:760;line-height:1.35;position:absolute;top:52px;left:50%;transform:translate(-50%)}.viewer-status[data-state=ready],.viewer-status[data-state=loading]{display:none}.viewer-status[data-state=error]{border-color:color-mix(in srgb, var(--danger) 62%, var(--scene-panel-border));color:var(--danger-on-scene)}.viewer-stats{top:var(--viewer-panel-gap);z-index:5;border:1px solid var(--scene-panel-border);border-radius:var(--radius-sm);background:var(--scene-panel-bg-strong);min-width:42px;min-height:30px;color:var(--color-white);font-family:var(--font-mono);text-align:center;backdrop-filter:blur(14px);place-items:center;margin:0;padding:4px 9px;font-size:.95rem;font-weight:780;line-height:1;display:inline-grid;position:absolute;left:50%;transform:translate(-50%)}.viewer-config-panel{--tool-panel-label-width:90px;box-shadow:none;background:0 0;border:0}.viewer-drag-overlay{z-index:80;padding:var(--viewer-panel-gap);background:color-mix(in srgb, var(--scene-bg) 92%, transparent);color:var(--scene-text);opacity:0;pointer-events:none;backdrop-filter:blur(12px)brightness(.72);border:0;place-items:center;transition:opacity .14s,transform .16s;display:grid;position:absolute;inset:0;overflow:hidden;transform:scale(.992)}.viewer-drag-overlay:before{content:"";inset:var(--viewer-panel-gap);border-radius:calc(var(--radius) + 8px);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 78%, transparent);pointer-events:none;position:absolute}.viewer-shell[data-file-dragging=true] .viewer-drag-overlay{opacity:1;transform:scale(1)}.viewer-shell[data-file-dragging=true] .viewer-left-rail,.viewer-shell[data-file-dragging=true] .viewer-left-toggle,.viewer-shell[data-file-dragging=true] .viewer-right-toggle,.viewer-shell[data-file-dragging=true] .viewer-right-rail{opacity:0;pointer-events:none}.viewer-drag-overlay-panel{z-index:1;text-align:center;justify-items:center;gap:12px;max-width:min(420px,100% - 40px);display:grid;position:relative}.viewer-drag-overlay-panel strong{color:var(--color-white);letter-spacing:0;font-size:clamp(1.35rem,3vw,2rem);font-weight:820;line-height:1.15}.viewer-drag-overlay-panel span{color:var(--scene-text-muted);font-size:.95rem;font-weight:700}.viewer-drag-overlay-icon{border:4px solid color-mix(in srgb, var(--primary) 88%, var(--color-white));width:68px;height:68px;color:color-mix(in srgb, var(--primary) 88%, var(--color-white));border-radius:12px;position:relative}.viewer-drag-overlay-icon:before{content:"";border-bottom:4px solid;border-right:4px solid;width:26px;height:26px;position:absolute;bottom:14px;right:14px}.viewer-drag-overlay-icon:after{content:"";border-radius:var(--radius-pill);transform-origin:100%;background:currentColor;width:32px;height:4px;position:absolute;bottom:28px;right:15px;transform:rotate(135deg)}:root[data-workspace-fullscreen=true] .viewer-shell{height:100dvh;min-height:100dvh}:root[data-workspace-fullscreen=true] .viewer-left-rail,:root[data-workspace-fullscreen=true] .viewer-left-toggle,:root[data-workspace-fullscreen=true] .viewer-right-toggle,:root[data-workspace-fullscreen=true] .viewer-right-rail{display:none}@media (width<=1180px){.viewer-shell{--viewer-left-width:min(264px, calc(100vw - 28px));--viewer-right-width:min(272px, calc(100vw - 28px))}}@media (width<=900px){.viewer-shell{--viewer-panel-gap:10px;--viewer-left-width:min(260px, calc(100vw - 20px));--viewer-right-width:min(264px, calc(100vw - 20px));height:calc(100dvh - var(--header-height-compact));min-height:540px}.viewer-button-row:not(.viewer-camera-actions){grid-template-columns:1fr}.viewer-status{top:48px}}@media (width<=720px){.viewer-left-rail{top:54px;right:var(--viewer-panel-gap);width:auto;max-height:calc(62% - 76px);bottom:auto}.viewer-right-rail{top:54px;right:var(--viewer-panel-gap);width:var(--viewer-right-width);max-height:calc(100% - 64px);bottom:auto;left:auto}.viewer-shell:is([data-left-collapsed=auto],[data-left-collapsed=true]) .viewer-left-rail{opacity:0;pointer-events:none;transform:translateY(calc(-100% - 66px))}:root[data-viewer-left-collapsed=false] .viewer-shell[data-left-collapsed=auto] .viewer-left-rail{opacity:1;pointer-events:auto;transform:none}:root[data-viewer-left-collapsed=false] .viewer-shell[data-left-collapsed=auto] .viewer-left-toggle,:root[data-viewer-right-collapsed=false] .viewer-shell[data-right-collapsed=auto] .viewer-right-toggle{opacity:0;pointer-events:none}.viewer-shell:is([data-left-collapsed=auto],[data-left-collapsed=true]) .viewer-collapse-icon{transform:rotate(45deg)}:root[data-viewer-left-collapsed=false] .viewer-shell[data-left-collapsed=auto] .viewer-collapse-icon{transform:rotate(-135deg)}.viewer-status{top:48px;right:var(--viewer-panel-gap);left:var(--viewer-panel-gap);max-width:none;transform:none}.viewer-shell:is([data-left-collapsed=auto],[data-left-collapsed=true]) .viewer-status{left:var(--viewer-panel-gap);transform:none}}
