.viewer-root{position:relative;width:100%;height:100%;overflow:hidden;background:var(--bg);user-select:none}.viewer-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;outline:none;cursor:crosshair}.viewer-canvas.orbit{cursor:grab}.hud{position:absolute;inset:0;pointer-events:none}.hud>*{pointer-events:auto}.hud-top{position:absolute;top:12px;left:12px;right:12px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.hud-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.hud-title{padding:8px 12px;font-weight:var(--font-weight-control);white-space:nowrap}.hud-title{display:flex;align-items:center;gap:10px}.hud-title .brand-wordmark{margin-right:2px}.hud-title .product{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding-right:10px;border-right:1px solid var(--panel-border)}.segmented{display:inline-flex;padding:3px;gap:2px}.segmented button{padding:6px 12px;border-radius:7px;border:none;background:transparent;color:var(--muted);font-weight:var(--font-weight-control);text-transform:uppercase;letter-spacing:.025em;font-size:13px;cursor:pointer}.segmented button.active{background:var(--accent);color:var(--accent-foreground)}.segmented button:hover:not(.active){background:hsl(var(--muted));color:var(--text)}.segmented.quality{align-items:center}.segmented.quality button{padding:6px 9px}.quality-caption{padding:0 4px 0 8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:var(--font-weight-control)}.fov-note{margin:-4px 0 12px;font-size:12px}.icon-btn{padding:7px 11px;border-radius:8px;border:1px solid var(--panel-border);background:var(--panel);font-weight:var(--font-weight-control);text-transform:uppercase;letter-spacing:.025em;font-size:13px;cursor:pointer;backdrop-filter:blur(12px)}.icon-btn.active{border-color:var(--accent);color:var(--accent-strong)}.icon-btn kbd{margin-left:6px;opacity:.6}.side-panel{position:absolute;top:60px;right:12px;bottom:60px;width:320px;display:flex;flex-direction:column;overflow:hidden}.side-panel header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--panel-border);font-weight:var(--font-weight-heading);text-transform:uppercase;letter-spacing:.02em;font-size:13px}.side-panel header .close{background:none;border:none;color:var(--muted);cursor:pointer;font-size:16px}.side-panel .body{padding:12px 14px;overflow:auto;flex:1}.side-panel .actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.slider{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;margin-bottom:10px}.slider label{color:var(--muted);font-size:12px}.slider output{font-variant-numeric:tabular-nums;font-size:12px;color:var(--muted)}.slider input[type=range]{grid-column:1 / -1;width:100%;accent-color:var(--accent)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0}.toggle-row select{padding:4px 8px;border-radius:6px;border:1px solid hsl(var(--input));background:hsl(var(--background))}.layer-tree{list-style:none;margin:0;padding:0}.layer-tree ul{list-style:none;margin:0;padding-left:16px}.layer-row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:6px}.layer-row:hover{background:hsl(var(--muted) / .7)}.layer-row .caret{width:16px;text-align:center;color:var(--muted);cursor:pointer;user-select:none;font-size:10px}.layer-row .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.layer-row .name.hidden{color:var(--muted);text-decoration:line-through}.layer-row .count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.layer-row .isolate{opacity:0;font-size:11px;padding:1px 6px}.layer-row:hover .isolate{opacity:1}.layer-model{margin:8px 0 4px;font-size:11px;font-weight:var(--font-weight-heading);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.saved-list{list-style:none;margin:0 0 14px;padding:0}.saved-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer}.saved-item:hover{background:hsl(var(--muted) / .7)}.saved-item .meta{flex:1;min-width:0}.saved-item .meta .name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-item .meta .by{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--muted)}.saved-item .remove{background:none;border:none;color:var(--muted);cursor:pointer;opacity:0}.saved-item:hover .remove{opacity:1}.saved-item .swatch{width:10px;height:10px;border-radius:50%;flex-shrink:0}.section-title{margin:8px 0 6px;font-size:11px;font-weight:var(--font-weight-heading);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.hud>.hud-bottom{pointer-events:none}.hud-bottom{position:absolute;left:12px;right:12px;bottom:12px;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:12px}.hud-slot{display:flex;min-width:0;pointer-events:none}.hud-slot.left{justify-content:flex-start}.hud-slot.center{justify-content:center}.hud-slot.right{justify-content:flex-end}.hud-slot>*{pointer-events:auto}.hud-hint{text-align:center}.hud-stats{text-align:right}.status-chip{padding:7px 11px;font-size:12px;color:var(--muted)}.status-chip strong{color:var(--text);font-weight:var(--font-weight-control)}.toast{position:absolute;left:50%;bottom:70px;transform:translate(-50%);padding:9px 14px;font-size:13px;animation:toast-in .16s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.crosshair{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:hsl(var(--primary-foreground) / .85);box-shadow:0 0 0 1px hsl(var(--primary) / .9);pointer-events:none}.loading-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(400px,90%);padding:18px 22px}.loading-card h3{margin:0 0 6px;font-size:15px}.loading-card .model{margin:10px 0}.loading-card .model .label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:4px}.progress{height:6px;border-radius:3px;background:hsl(var(--muted));overflow:hidden}.progress>div{height:100%;background:var(--accent);transition:width .16s ease}.progress.error>div{background:var(--danger)}.help-overlay{position:absolute;inset:0;display:grid;place-items:center;background:hsl(var(--background) / .6)}.help-card{width:min(560px,92%);padding:22px 26px}.help-card h2{margin:0 0 4px;font-size:18px}.help-card p.lead{color:var(--muted);margin:0 0 16px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin-bottom:18px}@media(max-width:560px){.help-grid{grid-template-columns:1fr}}.help-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--panel-border);font-size:13px}.help-row>span:first-child{flex:1}.help-row .keys{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.help-card .foot{display:flex;justify-content:space-between;align-items:center;gap:12px}.camera-lead{font-size:12px;margin:0 0 8px}.camera-notes{resize:vertical;min-height:64px;font:inherit}.viewfinder{position:absolute;inset:0;pointer-events:none}.vf-shade{position:absolute;background:#0000009e}.vf-gate{position:absolute;box-shadow:inset 0 0 0 1px #ffffffeb}.vf-corner{position:absolute;width:22px;height:22px;border:0 solid #f2c14e}.vf-corner.tl{top:8px;left:8px;border-top-width:2px;border-left-width:2px}.vf-corner.tr{top:8px;right:8px;border-top-width:2px;border-right-width:2px}.vf-corner.bl{bottom:8px;left:8px;border-bottom-width:2px;border-left-width:2px}.vf-corner.br{bottom:8px;right:8px;border-bottom-width:2px;border-right-width:2px}.vf-thirds i{position:absolute;background:#ffffff80}.vf-thirds i.v{top:0;bottom:0;width:1px}.vf-thirds i.h{left:0;right:0;height:1px}.vf-centre i{position:absolute;background:#ffffffeb}.vf-centre{position:absolute;left:50%;top:50%;width:0;height:0}.vf-centre i.h{height:1px;width:10px;top:0}.vf-centre i.v{width:1px;height:10px;left:0}.vf-centre i.left{right:4px}.vf-centre i.right{left:4px}.vf-centre i.up{bottom:4px}.vf-centre i.down{top:4px}.vf-safe{position:absolute;border:1px solid rgba(255,255,255,.55)}.vf-safe.action{inset:5%}.vf-safe.title{inset:10%;border-style:dashed}.vf-read{position:absolute;left:14px;right:14px;display:flex;justify-content:space-between;gap:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#f4f1ea;text-shadow:0 1px 2px rgba(0,0,0,.85)}.vf-read.top{top:36px}.vf-read.bottom{bottom:36px;align-items:flex-end}.vf-read .iris,.vf-read .focus{color:#f2c14e}.vf-read .focus{position:absolute;left:50%;transform:translate(-50%);font-size:14px;letter-spacing:.14em}.map-dock{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.map-toggle{width:36px;height:36px;display:grid;place-items:center;padding:0;border-radius:8px;border:1px solid var(--panel-border);background:var(--panel);color:var(--text);cursor:pointer;backdrop-filter:blur(12px)}.map-toggle:hover{border-color:hsl(var(--muted-foreground) / .5)}.map-toggle.active{color:var(--accent-strong);border-color:var(--accent)}.map-surface{position:relative}.map-surface.mini{width:200px;height:200px;cursor:pointer}.map-surface.full{width:100%;height:100%}.map-frame,.map-markers{position:absolute;inset:0}.map-frame{overflow:hidden;border-radius:6px;background:#171b14;box-shadow:0 0 0 1px #ffffff47,0 10px 28px #00000059;cursor:crosshair}.map-surface.mini .map-frame{cursor:pointer}.map-surface.panning,.map-surface.panning .map-frame{cursor:grabbing}.map-surface.full .map-frame{border-radius:0;box-shadow:none;background:#12140f}.map-frame canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.map-markers{overflow:visible;pointer-events:none}.map-compass{position:absolute;transform:translate(-50%);font-size:11px;font-weight:var(--font-weight-heading);letter-spacing:.08em;color:#fff;text-shadow:0 1px 2px #000;pointer-events:none}.map-scale{position:absolute;right:8px;bottom:6px;font-size:10px;letter-spacing:.06em;color:#fff;text-shadow:0 1px 2px #000;pointer-events:none}.map-marker{position:absolute;width:22px;height:22px;margin:-11px 0 0 -11px;pointer-events:auto}.map-marker svg{display:block;width:22px;height:22px;overflow:visible;filter:drop-shadow(0 1px 1px rgba(0,0,0,.85))}.map-name{position:absolute;left:50%;top:22px;transform:translate(-50%);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#fff;text-shadow:0 1px 2px #000;pointer-events:none}.map-card{position:absolute;top:20px;left:18px;width:176px;padding:8px 10px;z-index:3;pointer-events:auto}.map-card.flip{left:auto;right:18px}.map-card .name{display:block;font-weight:var(--font-weight-control)}.map-card .by{display:block;margin:1px 0 8px;font-size:11px;color:var(--muted)}.map-card-actions{display:flex;gap:6px}.map-screen{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:hsl(var(--background) / .72);pointer-events:auto}.map-sheet{width:min(960px,92vw);height:min(780px,86vh);display:flex;flex-direction:column;overflow:hidden}.map-sheet-head{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--panel-border)}.map-sheet-head strong{font-weight:var(--font-weight-heading);text-transform:uppercase;letter-spacing:.04em;font-size:13px}.map-sheet-head .muted{flex:1;font-size:12px}.map-pan-tip{font-size:12px;color:var(--muted);cursor:help;border-bottom:1px dotted var(--muted)}.map-zoom{display:inline-flex;gap:4px}.map-zoom button{width:28px;height:28px;padding:0;border-radius:6px;border:1px solid var(--panel-border);background:hsl(var(--secondary));color:var(--text);font-size:16px;line-height:1;cursor:pointer}.map-zoom button:disabled{opacity:.4;cursor:default}.map-stage{position:relative;flex:1;min-height:0}@media(max-width:720px){.map-surface.mini{width:140px;height:140px}}.rt-people-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}.rt-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:var(--font-weight-control);color:var(--muted);white-space:nowrap}.rt-status:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--muted)}.rt-status.connected:before{background:var(--ok)}.rt-status.connecting:before,.rt-status.reconnecting:before{background:#f59e0b;animation:rt-pulse 1s ease-in-out infinite}.rt-status.closed:before{background:var(--danger)}.rt-closed{margin:0 0 10px;color:var(--danger);font-size:12px}.rt-follow{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:0 0 12px}.rt-follow p{margin:0}.rt-notices{position:absolute;top:60px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;max-width:min(520px,50vw);z-index:2}@media(max-width:1600px){.rt-notices{top:108px}}@media(max-width:720px){.rt-notices{top:156px}}.rt-notice{padding:7px 12px;font-size:13px;border-left:3px solid var(--muted);animation:rt-slide-in .16s ease-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.rt-notice.command{border-left-color:var(--accent)}.rt-notice.presence{border-left-color:#3b82f6}.rt-notice.saved{border-left-color:var(--ok)}.rt-notice.connection{border-left-color:#f59e0b}@keyframes rt-slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes rt-pulse{0%,to{opacity:1}50%{opacity:.35}}
