:root{
  --bg:#05070b;
  --panel:#0b1017;
  --panel2:#101721;
  --line:rgba(255,255,255,.11);
  --text:#f5f7fb;
  --muted:#9aa5b5;
  --blue:#2e73ff;
  --blue2:#66a1ff;
  --purple:#9258ff;
  --shadow:0 20px 60px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;overflow:hidden}
button{font:inherit;color:inherit}
button:focus-visible,.demo-tag:focus-visible{outline:2px solid var(--blue2);outline-offset:2px}
#app-shell{position:relative;width:100vw;height:100vh;background:#020407}
.topbar{position:absolute;inset:0 0 auto 0;height:76px;background:rgba(2,4,7,.96);border-bottom:1px solid var(--line);display:flex;align-items:center;z-index:40;padding:0 24px;gap:28px}
.brand-wrap{width:270px;display:flex;align-items:center;height:100%}
.brand-logo{display:block;width:205px;height:auto;max-height:66px;object-fit:contain;object-position:left center}
.topnav{display:flex;gap:26px;align-items:center;flex:1;justify-content:center}
.nav-link{background:none;border:0;color:#d9dee8;font-size:13px;cursor:pointer;padding:10px 4px}.nav-link:hover{color:#fff}
.top-actions{display:flex;gap:10px;align-items:center}.ghost-button,.primary-outline,.panel-button,.blue-button,.small-primary{border:1px solid var(--line);background:#0a0e14;border-radius:8px;padding:10px 14px;cursor:pointer}.primary-outline{border-color:#2f68ba;color:#bcd4ff}.blue-button,.small-primary{background:linear-gradient(135deg,#225ed7,#357eff);border-color:#3d83ff;color:#fff}.ghost-button:hover,.panel-button:hover{background:#121925}
.left-rail{position:absolute;left:0;top:76px;bottom:112px;width:112px;background:#090d13;border-right:1px solid var(--line);z-index:35;display:flex;flex-direction:column;padding:12px 8px 8px}
.rail-item{height:76px;border:0;background:transparent;border-radius:10px;color:#b6bfcc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;font-size:11px;cursor:pointer}.rail-item:hover{background:#101722;color:#fff}.rail-item.active{background:#101b2b;color:#5e99ff}.rail-icon{font-size:20px;line-height:1}.cube{font-size:31px}
.rail-spacer{flex:1}
.viewer-stage{position:absolute;left:112px;right:340px;top:76px;bottom:112px;background:#05070b;overflow:hidden}
#potree_render_area{position:absolute;inset:0;background:radial-gradient(circle at 48% 42%,#151b24 0,#070a0f 48%,#030507 100%)}
#potree_render_area canvas{outline:none}
.potree-hidden{display:none!important}
.glass{background:rgba(7,11,17,.78);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow)}
.venue-heading{position:absolute;z-index:15;left:22px;top:20px;border-radius:12px;padding:13px 16px 12px;min-width:460px;pointer-events:none}.crumbs{font-size:11px;color:#8d98a7;margin-bottom:6px}.crumbs span{padding:0 6px;color:#526070}.heading-row{display:flex;align-items:flex-end;gap:28px}.heading-row h1{font-size:25px;line-height:1.1;margin:0 0 4px}.subhead{font-size:12px;color:#b9c1cc;margin:0}.pin{color:var(--blue2)}.chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.chips span{font-size:10px;color:#c9d1dc;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);border-radius:999px;padding:5px 8px}
.load-card{position:absolute;z-index:30;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;gap:14px;align-items:center;border-radius:12px;padding:15px 18px;color:#edf4ff;transition:.35s opacity,.35s transform}.load-card.loaded{opacity:0;pointer-events:none;transform:translate(-50%,-45%)}.load-card.error{border-color:#a73d52;background:rgba(46,10,19,.88)}#load-detail{font-size:12px;color:#9dabbe;margin-top:3px}.spinner{width:24px;height:24px;border:2px solid rgba(255,255,255,.18);border-top-color:#4b8cff;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.viewer-actions{position:absolute;z-index:17;left:50%;bottom:24px;transform:translateX(-50%);border-radius:12px;padding:6px;display:flex;gap:2px}.viewer-actions button{min-width:66px;height:53px;border:0;background:transparent;border-radius:8px;color:#d4dae4;cursor:pointer;font-size:19px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.viewer-actions button span{font-size:9px;color:#aeb8c6}.viewer-actions button:hover{background:#172130;color:#fff}.viewer-actions button.active{background:#163264;color:#86b1ff}
.demo-tag{position:absolute;z-index:18;left:57%;top:58%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:7px;cursor:pointer;filter:drop-shadow(0 7px 14px rgba(0,0,0,.45))}.tag-dot{width:17px;height:17px;background:var(--purple);border:3px solid #d7c5ff;border-radius:50%;box-shadow:0 0 0 4px rgba(146,88,255,.18)}.tag-label{font-size:10px;font-weight:700;letter-spacing:.08em;color:#fff;background:#24123f;border:1px solid #8956d7;padding:5px 8px;border-radius:6px}
.tag-popover{position:absolute;z-index:20;width:286px;left:calc(57% - 143px);top:calc(58% + 28px);border-radius:12px;padding:14px;transition:.2s opacity,.2s transform}.hidden{display:none!important}.tag-popover-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:750;margin-bottom:12px}.tag-glyph{color:var(--purple);margin-right:5px}.tag-popover-head button{border:0;background:transparent;font-size:19px;color:#aab4c2;cursor:pointer}.tag-popover dl{margin:0}.tag-popover dl>div{display:flex;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.07);padding:7px 0;font-size:11px}.tag-popover dt{color:#8895a7}.tag-popover dd{margin:0;color:#edf1f7}.tag-popover p{font-size:11px;line-height:1.5;color:#a9b4c2}.small-primary{font-size:11px;width:100%;padding:9px}
.right-panel{position:absolute;right:0;top:76px;bottom:112px;width:340px;background:#090d13;border-left:1px solid var(--line);z-index:35;padding:14px;overflow:auto}.panel-actions{display:grid;grid-template-columns:1fr 70px;gap:8px;margin-bottom:12px}.panel-actions .blue-button{grid-column:1/-1}.panel-button,.blue-button{font-size:11px}.panel-card{background:#0d131c;border:1px solid var(--line);border-radius:10px;padding:13px;margin-bottom:11px}.panel-title{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;margin-bottom:11px}.count{background:#192336;border-radius:999px;color:#8fb5ff;padding:2px 7px;font-size:10px}.tag-list-item{width:100%;display:grid;grid-template-columns:13px 1fr 20px;gap:8px;align-items:center;text-align:left;border:1px solid #6f44ad;background:#1b1230;border-radius:7px;padding:10px;color:#f0eaff;font-size:11px;cursor:pointer}.tag-square{width:10px;height:10px;background:var(--purple);transform:rotate(45deg);border-radius:2px}.eye{text-align:right;color:#b9a5d7}.empty-note{color:#7f8b9b;font-size:10px;line-height:1.5;margin-top:10px}.scan-data{margin:0}.scan-data>div{display:flex;justify-content:space-between;padding:5px 0;font-size:11px}.scan-data dt{color:#8390a1}.scan-data dd{margin:0;color:#dfe5ed}.tips-card p{font-size:10px;color:#8f9bab;margin:7px 0}.tips-card strong{color:#c9d1dc;font-weight:600}
.bottom-strip{position:absolute;left:0;right:0;bottom:0;height:112px;z-index:40;background:#070a0f;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:10px 16px}.view-label{width:125px;height:88px;display:flex;flex-direction:column;justify-content:center;padding:10px;color:#fff}.view-label strong{font-size:12px}.view-label span{font-size:9px;color:#7f8c9c;margin-top:4px}.view-card{width:150px;height:88px;padding:5px;border-radius:9px;border:1px solid var(--line);background:#0b1017;text-align:left;color:#dce2eb;cursor:pointer}.view-card.active{border-color:#4b88ff}.view-thumb{height:55px;border-radius:6px;background:radial-gradient(circle at 50% 50%,#475c78 0,#131c28 35%,#06090d 70%);display:flex;align-items:center;justify-content:center;color:#76a8ff;font-weight:700;letter-spacing:.12em}.view-thumb.alt{background:radial-gradient(circle at 30% 60%,#604b36 0,#1d1b19 33%,#07090c 72%)}.view-thumb.alt2{background:radial-gradient(circle at 60% 30%,#3d5867 0,#151b20 34%,#07090c 72%)}.view-thumb.alt3{background:radial-gradient(circle at 50% 50%,#5d3d86 0,#1f152c 35%,#07090c 72%);color:#c8a6ff}.view-card strong{display:block;font-size:9px;margin:4px 2px}.strip-note{margin-left:auto;max-width:230px;color:#697585;font-size:9px;line-height:1.45;padding-right:8px}
.modal{position:fixed;z-index:100;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;backdrop-filter:blur(8px)}.modal-card{position:relative;width:min(440px,90vw);padding:28px;border-radius:16px;background:#101721;border:1px solid var(--line);box-shadow:var(--shadow)}.modal-close{position:absolute;right:12px;top:10px;border:0;background:none;color:#9aa6b6;font-size:24px;cursor:pointer}.modal-badge{display:inline-block;border:1px solid #315fa8;color:#88b2ff;border-radius:999px;padding:5px 9px;font-size:11px}.modal-card h2{margin:14px 0 8px;font-size:22px}.modal-card p{font-size:12px;line-height:1.6;color:#9da8b8}.modal-card .blue-button{margin-top:8px}
@media(max-width:1100px){.topnav{display:none}.right-panel{width:290px}.viewer-stage{right:290px}.brand-wrap{width:auto}.strip-note{display:none}}
@media(max-width:820px){.right-panel{display:none}.viewer-stage{right:0}.top-actions .ghost-button{display:none}.venue-heading{min-width:0;right:16px}.chips{display:none}.bottom-strip{overflow-x:auto}.left-rail{width:86px}.viewer-stage{left:86px}.rail-item{font-size:9px}.brand-logo{width:180px}.demo-tag{left:61%}.tag-popover{left:auto;right:12px}}

/* v3 measurement interaction */
.measure-help{position:absolute;z-index:19;left:50%;bottom:91px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;border-radius:10px;padding:9px 11px;max-width:min(620px,80%);font-size:11px;color:#dfe8f6}
.measure-help strong{color:#8ab6ff;white-space:nowrap}.measure-help span{color:#b9c5d4}.measure-help button{margin-left:4px;border:1px solid rgba(255,255,255,.15);background:#111925;color:#dce6f5;border-radius:7px;padding:6px 9px;cursor:pointer}.measure-help button:hover{background:#1a2637}
.viewer-stage.measure-mode #potree_render_area canvas{cursor:crosshair!important}

/* v3.3: remove the prototype Get In Door marker from the centre of the 3D view. */
.demo-tag{display:none !important;}

/* v3.9: venue home view + clipping controls */
.status-pill{display:inline-flex;align-items:center;min-height:26px;padding:5px 8px;border-radius:7px;background:#111a25;border:1px solid rgba(255,255,255,.08);color:#9ba8b9;font-size:10px;margin-bottom:10px}
.status-pill.saved{color:#cfe0ff;border-color:#315c9e;background:#10213a}.status-pill.published{color:#cdebd7;border-color:#2d6d47;background:#10271a}
.coord-block{border:1px solid rgba(255,255,255,.07);background:#0a0f16;border-radius:8px;padding:9px;margin-bottom:10px}.coord-title{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#728096;margin:2px 0 6px}.coord-title:not(:first-child){margin-top:9px}.coord-row{display:grid;grid-template-columns:13px 1fr 13px 1fr 13px 1fr;gap:5px;align-items:center;font-size:9px}.coord-row span{color:#6d7b8e}.coord-row strong{font-variant-numeric:tabular-nums;color:#dfe8f5;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.panel-button-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.panel-mini{min-height:34px;border:1px solid rgba(255,255,255,.12);background:#111821;border-radius:7px;padding:7px 8px;color:#c9d2df;font-size:9px;cursor:pointer;line-height:1.2}.panel-mini:hover:not(:disabled){background:#182332;color:#fff}.panel-mini.primary-mini{border-color:#336bc4;background:#112c57;color:#bcd5ff}.panel-mini.danger-mini{border-color:#6f3342;color:#e9b8c1}.panel-mini.wide{grid-column:1/-1}.panel-mini:disabled{opacity:.38;cursor:not-allowed}.panel-divider{height:1px;background:rgba(255,255,255,.07);margin:13px 0}.subsection-title{font-size:10px;font-weight:700;color:#cdd6e2;margin-bottom:8px}.clip-summary{display:grid;grid-template-columns:54px 1fr;gap:5px 8px;font-size:9px;margin-bottom:9px}.clip-summary span{color:#748296}.clip-summary strong{font-weight:600;color:#e2e9f2}.view-clip-card .empty-note{margin-top:9px}.clip-grid{margin-top:7px}
@media(max-width:1100px){.coord-row{grid-template-columns:13px 1fr 13px 1fr}.coord-row span:nth-of-type(3),.coord-row strong:nth-of-type(3){display:none}}
