:root{--ink:#16243a;--muted:#718096;--line:#dce5ef;--panel:#fff;--bg:#f5f8fc;--accent:#1769d2;--soft:#eef5ff;--green:#247a52}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.topbar{display:flex;gap:24px;align-items:flex-end;justify-content:space-between;padding:24px 32px;background:#fff;border-bottom:1px solid var(--line)}h1{margin:2px 0 4px;font-size:30px}.topbar p{margin:0;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:800;color:#7aa2d8}.top-actions{display:flex;gap:14px;align-items:end}.top-actions label{display:grid;gap:5px;font-size:12px;font-weight:700}.top-actions select{min-width:250px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff}.top-actions a{padding:9px 13px;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--ink);background:#fff}main{padding:20px 28px 36px}.toolbar{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.view-buttons,.tool-buttons{display:flex;gap:7px;align-items:center;flex-wrap:wrap}button{border:1px solid #cad6e4;background:white;border-radius:8px;padding:8px 11px;font-weight:700;color:var(--ink);cursor:pointer}button.active{background:var(--ink);color:#fff}.check{font-size:13px;color:#4b5d73;margin-left:5px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px}.viewport-card,.inspector,.phase-note{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 8px 28px rgba(34,62,96,.06)}.viewport-card{position:relative;min-height:650px;overflow:hidden}.status{position:absolute;z-index:4;top:12px;left:12px;padding:7px 10px;border-radius:8px;background:rgba(255,255,255,.92);border:1px solid var(--line);font-size:12px;color:var(--muted)}#scene{width:100%;height:650px;display:block;touch-action:none;background:linear-gradient(#fbfdff,#f4f8fc)}.hint{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);font-size:12px;color:#8290a3;background:rgba(255,255,255,.88);padding:5px 9px;border-radius:99px;white-space:nowrap}.inspector{padding:18px;overflow:auto;max-height:650px}.inspector h2{margin:4px 0 8px}.meta{font-size:12px;color:var(--muted);padding-bottom:13px;border-bottom:1px solid var(--line)}.section-title{margin-top:16px}.tree-building{margin:10px 0;border:1px solid var(--line);border-radius:10px;overflow:hidden}.tree-building>strong{display:block;padding:9px 10px;background:#f7f9fc}.tree-floor{display:flex;justify-content:space-between;gap:8px;padding:7px 10px;border-top:1px solid #edf1f6;font-size:12px;cursor:pointer}.tree-floor:hover{background:var(--soft)}.tree-floor span:last-child{color:var(--muted)}.selection{margin-top:16px;padding:12px;border-radius:10px;background:var(--soft);min-height:88px}.selection p{margin:5px 0;font-size:13px}.phase-note{margin-top:16px;padding:15px 18px;color:#506177}.face{stroke:#526a86;stroke-width:.8;vector-effect:non-scaling-stroke;cursor:pointer}.face:hover{filter:brightness(.97)}.face.selected{stroke:#0b57b7;stroke-width:2.3}.floor-label{font-size:10px;font-weight:800;fill:#213552;pointer-events:none;text-anchor:middle}.building-label{font-size:12px;font-weight:900;fill:#15263d;pointer-events:none;text-anchor:middle}.ground{fill:#e8eef5;stroke:#cbd7e4;stroke-width:1}.axis{stroke-width:1.5;vector-effect:non-scaling-stroke}.axis-label{font-size:11px;font-weight:800}@media(max-width:900px){.topbar{align-items:stretch;flex-direction:column}.top-actions{align-items:stretch;flex-wrap:wrap}.top-actions label{flex:1}.top-actions select{min-width:0;width:100%}.workspace{grid-template-columns:1fr}.inspector{max-height:none}.viewport-card,#scene{min-height:520px;height:520px}.hint{white-space:normal;width:90%;text-align:center}}

/* Phase 1C — scene scope and context */
.tool-buttons button.scope-active{background:#10223d;color:#fff;border-color:#10223d}
.tool-buttons button:disabled{opacity:.42;cursor:not-allowed}
.tree-building-title{display:block;cursor:pointer;padding:11px 12px 7px}
.tree-building-title:hover{background:#eef6ff}
.context-face{fill:#dfe8f2;stroke:#8ea4ba;stroke-width:1.2;stroke-dasharray:5 4;opacity:.16;pointer-events:none}
.campus-key-swatch{stroke:#738aa2;stroke-width:1}
.campus-key-label{font:600 13px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#26384d;dominant-baseline:middle}

/* Phase 2A — floor-plan extrusion */
.detail-face{vector-effect:non-scaling-stroke;cursor:pointer}
.detail-face:hover{filter:brightness(.96);stroke-width:1.7}
.object-label{
  font:600 10px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  fill:#26384d;text-anchor:middle;pointer-events:none;
  paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round
}
#zoomInBtn,#zoomOutBtn{min-width:38px;font-size:18px;font-weight:800;line-height:1}

/* Phase 2B — architectural shell */
.arch-wall{
  fill:#f5f7fa;
  stroke:#5d7085;
  stroke-width:1.15;
  opacity:.88;
  vector-effect:non-scaling-stroke;
  cursor:pointer
}
.arch-wall:hover{fill:#fff;stroke-width:1.8}
.arch-slab{
  fill:#d8dee6;
  stroke:#718296;
  stroke-width:.8;
  opacity:.55;
  vector-effect:non-scaling-stroke;
  pointer-events:none
}
.opening-marker{cursor:pointer}
.opening-marker circle{fill:#fff;stroke:#2b73c8;stroke-width:2}
.opening-marker text{
  font:800 9px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  text-anchor:middle;fill:#2b73c8;pointer-events:none
}

/* Phase 2C — vertical circulation and storey visibility */
.vertical-lift{
  fill:#b9dcff;stroke:#286aa8;stroke-width:1.2;opacity:.82;
  vector-effect:non-scaling-stroke;cursor:pointer
}
.vertical-stair{
  fill:#ffe59a;stroke:#9b6b00;stroke-width:1.2;opacity:.84;
  vector-effect:non-scaling-stroke;cursor:pointer
}
.vertical-lift:hover,.vertical-stair:hover{opacity:1;stroke-width:1.9}
.ghost-storey{
  fill:#dbe4ee;stroke:#8da0b5;stroke-width:.75;opacity:.075;
  vector-effect:non-scaling-stroke;pointer-events:none
}

/* Phase 2D — live XYZ route */
.route-panel{
  display:grid;grid-template-columns:minmax(190px,1fr) 42px minmax(190px,1fr) auto auto auto auto minmax(220px,1.25fr);
  gap:10px;align-items:end;margin:0 0 12px;padding:12px 14px;background:#fff;border:1px solid #dce5ef;border-radius:14px
}
.route-field label{display:block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#60758d;margin-bottom:5px}
.route-field select{width:100%;min-height:38px;border:1px solid #cad7e5;border-radius:9px;background:#fff;padding:0 9px;color:#17283c}
.route-swap button,.route-panel button{min-height:38px;border:1px solid #cad7e5;border-radius:9px;background:#fff;padding:0 12px;font-weight:700;color:#24374d;cursor:pointer}
.route-panel .route-primary{background:#10223d;color:#fff;border-color:#10223d}
.route-accessible{align-self:center;white-space:nowrap}
.route-summary{font-size:12px;color:#4f647a;align-self:center;padding:8px 10px;background:#f6f9fc;border-radius:9px;min-height:38px}
.route-summary.error{color:#9a2730;background:#fff2f3}
.route-halo{stroke:#fff;stroke-width:8;stroke-linecap:round;opacity:.88;pointer-events:none}
.route-segment{fill:none;stroke:#126fe5;stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.route-segment.campus{stroke:#23a35a;stroke-width:5}
.route-segment.gateway{stroke:#7e57c2;stroke-dasharray:7 5}
.route-segment.stairs{stroke:#d89b00;stroke-width:5}
.route-segment.elevator{stroke:#2178c7;stroke-width:5;stroke-dasharray:4 4}
.route-start{fill:#fff;stroke:#146fd1;stroke-width:3}
.route-end{fill:#fff;stroke:#d52f46;stroke-width:3}
.route-point-label{font:800 10px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#20344a;paint-order:stroke;stroke:#fff;stroke-width:4px}
@media(max-width:1050px){.route-panel{grid-template-columns:1fr 42px 1fr}.route-accessible,.route-primary,#clearRouteBtn,#walkRouteBtn,.route-summary{grid-column:1/-1}}

/* Phase 2D.1 — exact indoor XYZ route mapping */
.route-node-dot{
  fill:#fff;
  stroke:#126fe5;
  stroke-width:1.8;
  vector-effect:non-scaling-stroke;
  pointer-events:none
}

/* Phase 2D.2 — exact floor-local route polyline */
.route-segment.floor-local{
  stroke:#006fe6;
  stroke-width:6.2;
}
.route-segment.vertical-link{
  stroke-width:5.3;
}
.route-node-dot.floor-route-node{
  fill:#fff;
  stroke:#006fe6;
  stroke-width:2.2;
}

/* Phase 2D.3 — exact 2D/3D coordinate parity */
.route-segment.floor-local{stroke-width:6.6}

/* Phase 3A.3 — metric architectural interior */
.arch-ceiling{
  fill:#f7fafc;
  stroke:#8796a8;
  stroke-width:.7;
  opacity:.16;
  vector-effect:non-scaling-stroke;
  pointer-events:none
}
.door-label{
  font:800 9px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  fill:#1f4f80;
  text-anchor:middle;
  paint-order:stroke;
  stroke:#fff;
  stroke-width:3px;
  stroke-linejoin:round;
  pointer-events:none
}


/* Phase 3B.1 — true perspective first-person Walk Mode */
.walk-route-btn{background:#0e5d4a!important;color:#fff!important;border-color:#0e5d4a!important}
.walk-route-btn:disabled{background:#eef2f5!important;color:#8a98a8!important;border-color:#d3dde7!important}
.walk-panel{margin:0 0 12px;padding:13px 15px;background:#f8fbff;border:1px solid #cfe0f2;border-radius:14px;box-shadow:0 7px 22px rgba(34,62,96,.05)}
.walk-panel[hidden]{display:none!important}.walk-panel-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.walk-panel-head strong{font-size:15px}.walk-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:10px}.walk-controls button{min-height:36px}.walk-separator{width:1px;height:28px;background:#d4deea;margin:0 3px}.walk-readout{display:flex;gap:16px;flex-wrap:wrap;margin-top:9px;font-size:12px;color:#5f7186}.walk-readout span:first-child{font-weight:800;color:#1f405f}
body.walk-mode .view-buttons,body.walk-mode .tool-buttons{opacity:.38;pointer-events:none}body.walk-mode .route-panel{opacity:.58}body.walk-mode #routeStagePanel{display:none!important}body.walk-mode .inspector{opacity:.6}
.walk-floor{stroke:#aab7c5;stroke-width:.7;vector-effect:non-scaling-stroke}.walk-finish{stroke:#c0cad5;stroke-width:.55;opacity:.96;vector-effect:non-scaling-stroke}.walk-ceiling{stroke:#d5dde6;stroke-width:.7;opacity:.92;vector-effect:non-scaling-stroke}.walk-wall{stroke:#66798e;stroke-width:.85;opacity:1;vector-effect:non-scaling-stroke}.walk-wall.perimeter{stroke:#52677d}.walk-door-label{font:800 15px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#183c60;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:5px;stroke-linejoin:round}.walk-route-halo{stroke:#fff;stroke-width:10;stroke-linecap:round;opacity:.95;vector-effect:non-scaling-stroke}.walk-route-line{stroke:#0877e8;stroke-width:4.5;stroke-linecap:round;opacity:.92;vector-effect:non-scaling-stroke}.walk-crosshair{stroke:#153958;stroke-width:1.5;opacity:.55;vector-effect:non-scaling-stroke}
body.walk-mode #scene{cursor:grab;background:linear-gradient(#edf5fb 0 49%,#eef1f4 49% 100%)}body.walk-mode #scene:active{cursor:grabbing}
@media(max-width:1050px){.walk-controls{align-items:stretch}.walk-controls button{flex:1 1 130px}.walk-separator{display:none}.walk-readout{gap:8px 14px}}

.walk-arrival rect{fill:rgba(255,255,255,.96);stroke:#8db79e;stroke-width:2;filter:drop-shadow(0 8px 22px rgba(28,67,47,.18))}.walk-arrival-title{font:800 25px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#0e5d4a;text-anchor:middle}.walk-arrival-sub{font:700 15px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#334e68;text-anchor:middle}


/* Phase 3B.3 — richer realistic navigation */
.walk-lock{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:#e4f4eb;color:#0e5d4a!important;font-weight:800}
.walk-door{stroke:#704625;stroke-width:.8;opacity:.98;vector-effect:non-scaling-stroke}
.walk-light{stroke:#e4d071;stroke-width:.7;opacity:.98;filter:url(#walkLightGlow);vector-effect:non-scaling-stroke}
.walk-room-sign{fill:#173a5d;stroke:#fff;stroke-width:1.5;opacity:.96;filter:drop-shadow(0 3px 5px rgba(18,47,75,.16))}
.walk-door-label{fill:#fff;stroke:none;paint-order:normal;font-size:13px;letter-spacing:.1px}
.walk-env-hud rect{fill:rgba(11,34,54,.84);stroke:rgba(255,255,255,.55);stroke-width:1.2}.walk-env-title{font:800 13px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#fff;letter-spacing:.8px}.walk-env-sub{font:600 12px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#d7e7f5}
.walk-route-line{filter:drop-shadow(0 2px 2px rgba(0,83,170,.22))}
body.walk-mode #scene{background:linear-gradient(#dceaf5 0 46%,#eef2f4 46% 100%)}

/* Phase 3B.3.1 — adjustable guided-walk speed */
.walk-speed-control{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 8px;border:1px solid #cfdbe7;border-radius:9px;background:#fff;color:#36516a;font-size:12px;font-weight:800}
.walk-speed-control select{height:30px;border:0;background:transparent;color:#173a5d;font:800 13px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;outline:none;cursor:pointer}
body.walk-mode .walk-speed-control{pointer-events:auto;opacity:1}
@media(max-width:1050px){.walk-speed-control{flex:1 1 120px;justify-content:center}}

/* Phase 3B.3.2 — professional floor-bound route guidance */
.walk-chevron-halo{fill:#fff;opacity:.94;stroke:#fff;stroke-width:7;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.walk-chevron{fill:#1479e9;stroke:#075fb9;stroke-width:1.2;stroke-linejoin:round;opacity:.96;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 3px rgba(0,76,153,.22));pointer-events:none}
.walk-destination-ring{fill:rgba(255,255,255,.9);stroke:#e02f4f;stroke-width:3;vector-effect:non-scaling-stroke;pointer-events:none}
.walk-destination-dot{fill:#e02f4f;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:none}
.walk-nav-hud rect{fill:rgba(255,255,255,.94);stroke:#c9d8e7;stroke-width:1.3;filter:drop-shadow(0 5px 12px rgba(24,55,84,.12))}
.walk-nav-kicker{font:800 10px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:1.25px;fill:#7295bd}
.walk-nav-title{font:800 16px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#173a5d}
.walk-nav-distance{font:800 15px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#1479e9;text-anchor:end}

/* Phase 3B.3.3 — route-aware automatic doors */
.walk-door-frame{stroke:#202932;stroke-width:.75;opacity:1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 2px rgba(17,28,38,.18))}
.walk-door.auto-open{filter:drop-shadow(0 3px 4px rgba(76,45,22,.22))}
.walk-env-door{font:800 10px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#9fe4be;letter-spacing:.65px}

/* Phase 3C.2 — metric first-person stair navigation */
.walk-stair-tread{stroke:#7e8d9c;stroke-width:.7;vector-effect:non-scaling-stroke}
.walk-stair-riser{stroke:#778695;stroke-width:.7;vector-effect:non-scaling-stroke}
.walk-stair-landing{stroke:#71808f;stroke-width:.8;vector-effect:non-scaling-stroke}
.walk-stair-wall{stroke:#8c99a6;stroke-width:.8;opacity:.98;vector-effect:non-scaling-stroke}
.walk-stair-rail{stroke:#596b7c;stroke-width:5;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 2px rgba(24,46,66,.18))}
.walk-stair-guide{stroke:#1479e9;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 3px rgba(0,76,153,.22))}
.walk-stair-hud rect{fill:rgba(12,37,59,.91);stroke:rgba(255,255,255,.65);stroke-width:1.2;filter:drop-shadow(0 6px 14px rgba(19,43,64,.20))}
.walk-stair-hud-title{font:800 11px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:1.3px;fill:#8fd0ff}
.walk-stair-hud-main{font:800 17px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#fff}
.walk-stair-hud-sub{font:650 11px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#d6e5f2}


/* ==========================================================
   7DNAV_3D_FULLSCREEN_V1
   Presentation layer only — Core v038 untouched.
   ========================================================== */

body.viewer-fullscreen {
  overflow:hidden;
}

body.viewer-fullscreen .topbar,
body.viewer-fullscreen .route-panel,
body.viewer-fullscreen .route-stage-panel,
body.viewer-fullscreen .phase-note,
body.viewer-fullscreen .selection-card,
body.viewer-fullscreen .tree-card,
body.viewer-fullscreen .hint {
  display:none !important;
}

body.viewer-fullscreen main {
  padding:0;
}

body.viewer-fullscreen .workspace {
  display:block;
}

body.viewer-fullscreen .viewport-card {
  position:fixed;
  inset:0;
  width:100vw;
  height:100dvh;
  max-width:none;
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  z-index:9000;
  background:#eef3f8;
}

body.viewer-fullscreen #scene {
  display:block;
  width:100%;
  height:100%;
  min-height:100%;
}

body.viewer-fullscreen .toolbar {
  position:fixed;
  left:10px;
  top:10px;
  right:10px;
  z-index:9010;
  margin:0;
  padding:8px;
  border:1px solid rgba(203,213,225,.9);
  border-radius:12px;
  background:rgba(255,255,255,.92);
  box-shadow:0 3px 14px rgba(15,23,42,.16);
}

body.viewer-fullscreen .toolbar .check,
body.viewer-fullscreen #fitSelectionBtn,
body.viewer-fullscreen #isolateBtn,
body.viewer-fullscreen #contextBtn {
  display:none;
}

body.viewer-fullscreen #mechanicalPocControls {
  z-index:9020 !important;
}

@media(max-width:700px) {
  body.viewer-fullscreen .toolbar {
    left:6px;
    top:6px;
    right:6px;
    padding:6px;
    gap:5px;
    max-height:42vh;
    overflow:auto;
  }

  body.viewer-fullscreen .view-buttons,
  body.viewer-fullscreen .tool-buttons {
    gap:4px;
  }

  body.viewer-fullscreen .toolbar button {
    padding:7px 9px;
    font-size:12px;
  }

  body.viewer-fullscreen #fullscreen3dBtn {
    position:sticky;
    right:0;
  }
}

/* Walk controls remain available above the full-screen viewport. */
body.viewer-fullscreen.walk-mode .walk-panel {
  display:block !important;
  position:fixed;
  left:8px;
  right:8px;
  bottom:8px;
  z-index:9030;
  max-height:34vh;
  overflow:auto;
  margin:0;
  background:rgba(255,255,255,.94);
  box-shadow:0 3px 14px rgba(15,23,42,.18);
}


/* ==========================================================
   7DNAV_3D_FULLSCREEN_ROUTE_CONTROLS_V2
   Fullscreen route/walk controls.
   Core viewer3d.js v038 remains untouched.
   ========================================================== */

/*
 * V1 hides the normal route form and route-stage panel.
 * V2 deliberately restores ONLY route-stage inspection
 * when an actual route has made the panel visible.
 */
body.viewer-fullscreen .route-stage-panel:not([hidden]) {
  display:block !important;
  position:fixed;
  left:10px;
  right:10px;
  bottom:10px;
  z-index:9030;
  margin:0;
  padding:9px 11px;
  max-height:28vh;
  overflow:auto;
  background:rgba(255,255,255,.94);
  border:1px solid rgba(203,213,225,.92);
  border-radius:12px;
  box-shadow:0 3px 14px rgba(15,23,42,.18);
}

/* Keep stage navigation compact in fullscreen. */
body.viewer-fullscreen .route-stage-head {
  gap:8px;
}

body.viewer-fullscreen .route-stage-actions {
  display:flex;
  gap:6px;
  flex-wrap:wrap;
}

/*
 * The normal route form remains hidden, but Walk route is
 * promoted into a small floating action once Core enables it.
 */
body.viewer-fullscreen #walkRouteBtn:not(:disabled) {
  display:block !important;
  position:fixed;
  right:10px;
  bottom:92px;
  z-index:9040;
  width:auto;
  min-height:40px;
  padding:0 14px;
  border-radius:10px;
  background:#0e5d4a !important;
  color:#fff !important;
  border:1px solid #0e5d4a !important;
  box-shadow:0 3px 14px rgba(15,23,42,.18);
}

/* Once walking, the route-stage inspection is no longer needed. */
body.viewer-fullscreen.walk-mode .route-stage-panel {
  display:none !important;
}

/* Existing Walk panel becomes the compact navigation console. */
body.viewer-fullscreen.walk-mode .walk-panel:not([hidden]) {
  display:block !important;
  position:fixed;
  left:8px;
  right:8px;
  bottom:8px;
  z-index:9050;
  max-height:34vh;
  overflow:auto;
  margin:0;
  padding:9px 11px;
  background:rgba(255,255,255,.94);
  border-radius:12px;
  box-shadow:0 3px 14px rgba(15,23,42,.18);
}

/* Walk button is unnecessary after Walk Mode has started. */
body.viewer-fullscreen.walk-mode #walkRouteBtn {
  display:none !important;
}

@media(max-width:700px) {
  body.viewer-fullscreen .route-stage-panel:not([hidden]) {
    left:6px;
    right:6px;
    bottom:6px;
    padding:7px;
    max-height:24vh;
  }

  body.viewer-fullscreen .route-stage-head {
    align-items:stretch;
    flex-direction:column;
  }

  body.viewer-fullscreen .route-stage-actions {
    display:grid;
    grid-template-columns:repeat(3,1fr);
  }

  body.viewer-fullscreen .route-stage-actions button {
    min-width:0;
    padding:7px 5px;
    font-size:11px;
  }

  body.viewer-fullscreen #routeStageList {
    display:none;
  }

  body.viewer-fullscreen #walkRouteBtn:not(:disabled) {
    right:6px;
    bottom:82px;
    min-height:38px;
    padding:0 11px;
    font-size:12px;
  }

  body.viewer-fullscreen.walk-mode .walk-panel:not([hidden]) {
    left:6px;
    right:6px;
    bottom:6px;
    padding:7px;
    max-height:38vh;
  }

  body.viewer-fullscreen.walk-mode .walk-readout {
    display:none;
  }
}


/* ==========================================================
   7DNAV_3D_FULLSCREEN_WALK_ROUTE_V3
   ========================================================== */

#fullscreenWalkRouteDock {
  display:none;
}

body.viewer-fullscreen #fullscreenWalkRouteDock:not([hidden]) {
  display:block;
  position:fixed;
  right:14px;
  bottom:100px;
  z-index:9060;
}

body.viewer-fullscreen #fullscreenWalkRouteDock #walkRouteBtn {
  display:block !important;
  position:static !important;
  width:auto;
  min-width:120px;
  min-height:42px;
  margin:0;
  padding:0 16px;
  border-radius:10px;
  background:#0e5d4a !important;
  color:#fff !important;
  border:1px solid #0e5d4a !important;
  box-shadow:0 3px 14px rgba(15,23,42,.20);
  font-weight:700;
}

body.viewer-fullscreen.walk-mode #fullscreenWalkRouteDock {
  display:none !important;
}

@media(max-width:700px) {
  body.viewer-fullscreen #fullscreenWalkRouteDock:not([hidden]) {
    right:8px;
    bottom:88px;
  }

  body.viewer-fullscreen #fullscreenWalkRouteDock #walkRouteBtn {
    min-width:105px;
    min-height:40px;
    padding:0 12px;
    font-size:12px;
  }
}


/* ==========================================================
   7DNAV_3D_FULLSCREEN_WALK_POSITION_V31
   Keep Walk Route independent of bottom route-stage height.
   Presentation only — Core v038 untouched.
   ========================================================== */

body.viewer-fullscreen #fullscreenWalkRouteDock:not([hidden]) {
  right:14px;
  top:50%;
  bottom:auto;
  transform:translateY(-50%);
  z-index:9070;
}

body.viewer-fullscreen #fullscreenWalkRouteDock #walkRouteBtn {
  opacity:1 !important;
  visibility:visible !important;
}

/* Keep the floating Walk action clear of Mechanical controls. */
body.viewer-fullscreen #mechanicalPocControls {
  right:14px !important;
  bottom:14px !important;
}

@media(max-width:700px) {
  body.viewer-fullscreen #fullscreenWalkRouteDock:not([hidden]) {
    right:7px;
    top:52%;
    bottom:auto;
    transform:translateY(-50%);
  }

  body.viewer-fullscreen #fullscreenWalkRouteDock #walkRouteBtn {
    min-width:96px;
    min-height:40px;
    padding:0 10px;
  }
}

/* ==========================================================
   7DNAV_3D_WALK_MINIMIZE_V21
   Presentation only — Core v038 untouched.
   ========================================================== */

.walk-panel-toggle {
  display:none;
}

@media(max-width:700px) {

  body.viewer-fullscreen.walk-mode
  #walkPanel:not([hidden])
  .walk-panel-toggle {
    display:inline-flex;
    align-items:center;
    justify-content:center;

    width:40px;
    min-width:40px;
    height:40px;
    min-height:40px;

    padding:0;
    border-radius:9px;

    font-size:22px;
    font-weight:800;
    line-height:1;
  }

  /*
   * Minimized state:
   * keep the ORIGINAL panel and header.
   * Hide only the large control/readout areas.
   */
  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized:not([hidden]) {
    left:7px;
    right:7px;
    bottom:7px;

    max-height:none;
    overflow:hidden;

    padding:6px 7px;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  .walk-controls,

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  .walk-readout {
    display:none !important;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  .walk-panel-head {
    min-height:40px;
    gap:7px;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  .walk-panel-head > div:first-child {
    flex:1 1 auto;
    min-width:0;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  .walk-panel-head .eyebrow {
    display:none;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  #walkTitle {
    display:block;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  body.viewer-fullscreen.walk-mode
  #walkPanel.walk-panel-minimized
  #walkExitBtn {
    min-height:40px;
    padding:0 10px;
  }
}

/* ==========================================================
   7DNAV_3D_WALK_MINIMIZE_V21

   Makes the existing V2 minimize/expand control available
   on desktop/tablet as well as mobile.

   Presentation only — Core v038 untouched.
   ========================================================== */

/* Show the existing +/- toggle at every viewport width
   while fullscreen Walk Mode is active. */
body.viewer-fullscreen.walk-mode
#walkPanel:not([hidden])
.walk-panel-toggle {
  display:inline-flex;
  align-items:center;
  justify-content:center;

  width:40px;
  min-width:40px;
  height:40px;
  min-height:40px;

  padding:0;
  border-radius:9px;

  font-size:22px;
  font-weight:800;
  line-height:1;
}

/* Collapsed panel — all screen sizes. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized:not([hidden]) {
  left:8px;
  right:8px;
  bottom:8px;

  max-height:none;
  overflow:hidden;

  padding:6px 8px;
}

/* Hide only the large Walk control/readout areas. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
.walk-controls,

body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
.walk-readout {
  display:none !important;
}

/* Keep a compact header visible. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
.walk-panel-head {
  min-height:40px;
  gap:8px;
}

/* Allow the title area to use remaining width. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
.walk-panel-head > div:first-child {
  flex:1 1 auto;
  min-width:0;
}

/* The eyebrow is unnecessary in collapsed mode. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
.walk-panel-head .eyebrow {
  display:none;
}

body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
#walkTitle {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* Preserve the existing Exit Walk action. */
body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized
#walkExitBtn {
  min-height:40px;
  padding:0 10px;
}


/*
 * 7DNAV_XYZ_GIZMO_V1
 * TEST COPY ONLY.
 * CAD-style XYZ orientation control.
 */

.xyz-gizmo-host {
  position:relative;
}

.xyz-gizmo {
  position:absolute;
  top:14px;
  right:14px;
  z-index:8500;
  width:142px;
  height:158px;
  border:1px solid rgba(30,41,59,.22);
  border-radius:14px;
  background:rgba(255,255,255,.90);
  box-shadow:0 8px 24px rgba(15,23,42,.15);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  user-select:none;
  touch-action:manipulation;
}

.xyz-gizmo-walk-hidden {
  display:none !important;
}

.xyz-gizmo-caption {
  position:absolute;
  top:7px;
  left:9px;
  font-size:9px;
  font-weight:800;
  letter-spacing:.12em;
  color:#475569;
}

.xyz-gizmo-body {
  position:absolute;
  left:8px;
  top:23px;
  width:126px;
  height:126px;
}

.xyz-ring {
  position:absolute;
  left:25px;
  top:25px;
  width:74px;
  height:74px;
  border:1px solid rgba(71,85,105,.28);
  border-radius:50%;
  pointer-events:none;
}

.xyz-ring-1 {
  transform:scaleY(.42) rotate(12deg);
}

.xyz-ring-2 {
  transform:scaleX(.42) rotate(-18deg);
}

.xyz-ring-3 {
  border-style:dashed;
  opacity:.55;
}

.xyz-line {
  position:absolute;
  left:63px;
  top:63px;
  width:49px;
  height:2px;
  transform-origin:left center;
  pointer-events:none;
}

.xyz-line-x {
  transform:rotate(-18deg);
  background:#dc2626;
}

.xyz-line-y {
  transform:rotate(142deg);
  background:#16a34a;
}

.xyz-line-z {
  width:50px;
  transform:rotate(-90deg);
  background:#2563eb;
}

.xyz-point,
.xyz-center {
  position:absolute;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  margin:0;
  border:2px solid #fff;
  border-radius:50%;
  color:#fff;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 2px 7px rgba(15,23,42,.22);
}

.xyz-point {
  width:27px;
  height:27px;
  font-size:9px;
}

.xyz-center {
  left:44px;
  top:44px;
  width:39px;
  height:39px;
  background:#172033;
  font-size:9px;
}

.xyz-x-plus {
  right:0;
  top:43px;
  background:#dc2626;
}

.xyz-x-minus {
  left:0;
  top:65px;
  background:#991b1b;
}

.xyz-y-plus {
  left:17px;
  bottom:0;
  background:#16a34a;
}

.xyz-y-minus {
  right:15px;
  bottom:10px;
  background:#166534;
}

.xyz-z-plus {
  left:50px;
  top:0;
  background:#2563eb;
}

.xyz-z-minus {
  left:51px;
  bottom:0;
  background:#1e40af;
}

.xyz-point:hover,
.xyz-center:hover,
.xyz-point:focus-visible,
.xyz-center:focus-visible {
  outline:2px solid rgba(15,23,42,.28);
  outline-offset:2px;
}

.xyz-gizmo-active {
  box-shadow:
    0 0 0 3px rgba(255,255,255,.96),
    0 0 0 5px rgba(15,23,42,.32);
}

/* Fullscreen */
body.viewer-fullscreen .xyz-gizmo {
  position:fixed;
  top:72px;
  right:14px;
  z-index:9100;
}

/* Mobile */
@media (max-width:700px) {
  .xyz-gizmo {
    width:108px;
    height:120px;
    top:7px;
    right:7px;
    border-radius:11px;
  }

  .xyz-gizmo-caption {
    top:5px;
    left:7px;
    font-size:7px;
  }

  .xyz-gizmo-body {
    transform:scale(.72);
    transform-origin:top left;
    left:8px;
    top:18px;
  }

  body.viewer-fullscreen .xyz-gizmo {
    top:57px;
    right:7px;
  }
}

/*
 * 7DNAV_XYZ_GIZMO_V2
 * TEST COPY ONLY.
 * Interactive orbit presentation.
 */

.xyz-gizmo {
  height:174px;
}

.xyz-gizmo-body.xyz-orbit-enabled {
  cursor:grab;
  touch-action:none;
}

.xyz-gizmo.xyz-orbit-dragging .xyz-gizmo-body {
  cursor:grabbing;
}

.xyz-gizmo.xyz-orbit-dragging {
  box-shadow:
    0 10px 30px rgba(15,23,42,.22),
    0 0 0 2px rgba(37,99,235,.18);
}

.xyz-orbit-hint {
  position:absolute;
  left:0;
  right:0;
  bottom:7px;
  text-align:center;
  pointer-events:none;
  font-size:9px;
  line-height:1;
  font-weight:700;
  letter-spacing:.02em;
  color:#64748b;
}

.xyz-gizmo-body.xyz-orbit-enabled .xyz-ring {
  border-width:2px;
}

.xyz-gizmo-body.xyz-orbit-enabled .xyz-ring-1,
.xyz-gizmo-body.xyz-orbit-enabled .xyz-ring-2 {
  opacity:.75;
}

@media (max-width:700px) {
  .xyz-gizmo {
    height:132px;
  }

  .xyz-orbit-hint {
    bottom:5px;
    font-size:7px;
  }
}

/*
 * 7DNAV_XYZ_GIZMO_V21
 * TEST COPY ONLY.
 * Incremental orbit controls.
 */

.xyz-gizmo {
  width:184px;
  height:184px;
}

.xyz-gizmo-body {
  left:29px;
}

.xyz-gizmo-caption {
  left:12px;
}

.xyz-nudge-controls {
  position:absolute;
  inset:0;
  pointer-events:none;
}

.xyz-nudge {
  position:absolute;
  width:28px;
  height:28px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:1px solid rgba(71,85,105,.28);
  border-radius:8px;
  background:rgba(255,255,255,.96);
  color:#172033;
  font-size:16px;
  font-weight:800;
  line-height:1;
  cursor:pointer;
  pointer-events:auto;
  box-shadow:0 2px 6px rgba(15,23,42,.12);
}

.xyz-nudge:hover,
.xyz-nudge:focus-visible {
  background:#f1f5f9;
  outline:2px solid rgba(37,99,235,.22);
  outline-offset:1px;
}

.xyz-nudge:active {
  transform:scale(.94);
}

.xyz-nudge-up {
  top:4px;
  left:78px;
}

.xyz-nudge-down {
  bottom:4px;
  left:78px;
}

.xyz-nudge-left {
  left:4px;
  top:78px;
}

.xyz-nudge-right {
  right:4px;
  top:78px;
}

.xyz-orbit-hint {
  bottom:8px;
}

@media (max-width:700px) {
  .xyz-gizmo {
    width:142px;
    height:145px;
  }

  .xyz-gizmo-body {
    left:13px;
  }

  .xyz-nudge {
    width:25px;
    height:25px;
    font-size:14px;
  }

  .xyz-nudge-up {
    top:2px;
    left:59px;
  }

  .xyz-nudge-down {
    bottom:2px;
    left:59px;
  }

  .xyz-nudge-left {
    left:2px;
    top:60px;
  }

  .xyz-nudge-right {
    right:2px;
    top:60px;
  }
}

/*
 * 7DNAV_XYZ_GIZMO_V22
 * TEST COPY ONLY.
 *
 * CAD visual refinement.
 * CSS ONLY — no behavior changes.
 */

.xyz-gizmo {
  width:166px;
  height:174px;
  border-radius:16px;
  background:rgba(255,255,255,.93);
  border:1px solid rgba(100,116,139,.25);
  box-shadow:
    0 8px 26px rgba(15,23,42,.14),
    inset 0 1px 0 rgba(255,255,255,.9);
}

.xyz-gizmo-caption {
  top:9px;
  left:12px;
  font-size:9px;
  letter-spacing:.16em;
}

.xyz-gizmo-body {
  left:20px;
  top:22px;
  width:126px;
  height:126px;
}

/*
 * Make the engineering sphere/rings visually stronger.
 */
.xyz-ring {
  left:19px;
  top:19px;
  width:86px;
  height:86px;
  border-color:rgba(71,85,105,.34);
}

.xyz-ring-1 {
  transform:scaleY(.46) rotate(12deg);
}

.xyz-ring-2 {
  transform:scaleX(.46) rotate(-18deg);
}

.xyz-ring-3 {
  opacity:.42;
}

/*
 * Longer XYZ axes.
 */
.xyz-line {
  left:63px;
  top:63px;
  width:54px;
  height:2px;
}

.xyz-line-z {
  width:55px;
}

/*
 * Slightly larger axis endpoints.
 */
.xyz-point {
  width:29px;
  height:29px;
  font-size:9px;
}

.xyz-center {
  left:43px;
  top:43px;
  width:41px;
  height:41px;
  font-size:9px;
}

/*
 * Refine XYZ endpoint positions around the sphere.
 */
.xyz-x-plus {
  right:-3px;
  top:43px;
}

.xyz-x-minus {
  left:-3px;
  top:65px;
}

.xyz-y-plus {
  left:14px;
  bottom:-2px;
}

.xyz-y-minus {
  right:12px;
  bottom:8px;
}

.xyz-z-plus {
  left:49px;
  top:-3px;
}

.xyz-z-minus {
  left:50px;
  bottom:-3px;
}

/*
 * Integrate incremental orbit controls more tightly with
 * the gizmo rather than making them look like a large D-pad.
 */
.xyz-nudge {
  width:24px;
  height:24px;
  border-radius:50%;
  font-size:14px;
  background:rgba(248,250,252,.98);
  border:1px solid rgba(100,116,139,.30);
  box-shadow:0 2px 5px rgba(15,23,42,.13);
}

.xyz-nudge-up {
  top:3px;
  left:71px;
}

.xyz-nudge-down {
  bottom:3px;
  left:71px;
}

.xyz-nudge-left {
  left:3px;
  top:73px;
}

.xyz-nudge-right {
  right:3px;
  top:73px;
}

.xyz-nudge:hover,
.xyz-nudge:focus-visible {
  background:#fff;
  box-shadow:
    0 2px 7px rgba(15,23,42,.16),
    0 0 0 2px rgba(37,99,235,.13);
}

/*
 * Clear dedicated hint area.
 */
.xyz-orbit-hint {
  bottom:8px;
  font-size:8px;
  font-weight:700;
  color:#64748b;
  letter-spacing:.03em;
}

/*
 * During interaction make the CAD control subtly respond.
 */
.xyz-gizmo.xyz-orbit-dragging {
  border-color:rgba(37,99,235,.38);
  box-shadow:
    0 10px 30px rgba(15,23,42,.18),
    0 0 0 2px rgba(37,99,235,.12);
}

/*
 * Mobile: preserve all controls but keep the widget compact.
 */
@media (max-width:700px) {
  .xyz-gizmo {
    width:138px;
    height:145px;
  }

  .xyz-gizmo-body {
    left:6px;
    top:16px;
    transform:scale(.78);
    transform-origin:top left;
  }

  .xyz-gizmo-caption {
    top:6px;
    left:8px;
    font-size:7px;
  }

  .xyz-nudge {
    width:23px;
    height:23px;
    font-size:13px;
  }

  .xyz-nudge-up {
    top:2px;
    left:58px;
  }

  .xyz-nudge-down {
    bottom:2px;
    left:58px;
  }

  .xyz-nudge-left {
    left:2px;
    top:59px;
  }

  .xyz-nudge-right {
    right:2px;
    top:59px;
  }

  .xyz-orbit-hint {
    bottom:5px;
    font-size:7px;
  }
}

/*
 * 7DNAV_XYZ_GIZMO_V23B
 * TEST COPY ONLY.
 *
 * WALK VISIBILITY ONLY.
 *
 * The original gizmo logic adds .xyz-gizmo-walk-hidden
 * while first-person Walk Mode is active.
 *
 * This CSS override keeps the accepted V2.2 gizmo visible,
 * but makes it display-only during Walk Mode.
 *
 * No JavaScript changes.
 * No Walk-camera changes.
 * No Core changes.
 */

/*
 * Override V1's display:none while actual Walk Mode is active.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo.xyz-gizmo-walk-hidden {
  display:block !important;
}

/*
 * Keep it safely in the upper-right area, away from
 * the bottom Walk console.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo {
  position:fixed !important;
  top:76px !important;
  right:16px !important;
  z-index:9200 !important;
}

/*
 * DISPLAY ONLY during Walk.
 *
 * This is deliberate for the first test:
 * all clicks/drags pass through to the viewer and the existing
 * Walk controls remain completely authoritative.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo {
  pointer-events:none !important;
}

/*
 * Make its display-only state visually obvious.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo {
  opacity:.78;
}

body.viewer-fullscreen.walk-mode
.xyz-orbit-hint {
  visibility:hidden;
}

/*
 * Mobile placement.
 */
@media (max-width:700px) {
  body.viewer-fullscreen.walk-mode
  .xyz-gizmo {
    top:58px !important;
    right:7px !important;
  }
}

/*
 * 7DNAV_XYZ_GIZMO_V24
 * TEST COPY ONLY.
 *
 * V2.3B made the whole gizmo display-only during Walk.
 * V2.4 enables pointer interaction ONLY on the four
 * incremental arrow buttons.
 *
 * XYZ endpoints, center and drag surface remain inactive.
 */

body.viewer-fullscreen.walk-mode
.xyz-gizmo {
  pointer-events:none !important;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-nudge {
  pointer-events:auto !important;
  cursor:pointer !important;
  opacity:1 !important;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-nudge:hover {
  filter:brightness(.97);
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-nudge:active {
  transform:scale(.94);
}

/*
 * Keep the other controls visibly secondary because
 * they are intentionally inactive in Walk Mode.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-point,
body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-center {
  pointer-events:none !important;
  opacity:.38 !important;
}

/*
 * 7DNAV_XYZ_GIZMO_V25
 * TEST COPY ONLY.
 *
 * Walk Mode:
 * - gizmo background/ring can receive drag gestures
 * - four nudge arrows remain interactive
 * - center 3D becomes Center view
 * - XYZ endpoints remain orientation-only
 */

body.viewer-fullscreen.walk-mode
.xyz-gizmo {
  pointer-events:auto !important;
  touch-action:none;
  user-select:none;
  cursor:grab;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo:active {
  cursor:grabbing;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-nudge {
  pointer-events:auto !important;
  cursor:pointer !important;
  opacity:1 !important;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-center {
  pointer-events:auto !important;
  cursor:pointer !important;
  opacity:1 !important;
}

body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-point {
  pointer-events:none !important;
  opacity:.48 !important;
}

/*
 * Keep the engineering axes visible during walking.
 * They now act as spatial-orientation indicators.
 */
body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-axis,
body.viewer-fullscreen.walk-mode
.xyz-gizmo .xyz-ring {
  opacity:.72 !important;
}

/*
 * 7DNAV_FLOATING_ZOOM_V1
 *
 * Distinct floating zoom control.
 * Magnifier + minus/plus deliberately differentiates these
 * controls from panel collapse/expand buttons.
 */

.floating-zoom-control {
  position: fixed;
  left: 14px;
  bottom: 14px;
  z-index: 2147482500;

  display: none;
  align-items: center;
  gap: 7px;

  padding: 6px;

  background: rgba(255,255,255,.94);
  border: 1px solid rgba(40,65,90,.18);
  border-radius: 14px;

  box-shadow:
    0 5px 18px rgba(25,45,70,.16);
}

body.viewer-fullscreen .floating-zoom-control {
  display: flex;
}

/*
 * During Walk Mode the existing Walk console occupies the bottom.
 * Move zoom controls safely above it rather than hiding them.
 */
body.viewer-fullscreen.walk-mode .floating-zoom-control {
  bottom: 128px;
}

body.viewer-fullscreen.walk-mode
#walkPanel.walk-panel-minimized:not([hidden])
~ .floating-zoom-control {
  bottom: 72px;
}

.floating-zoom-btn {
  width: 48px;
  height: 44px;

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 1px;

  padding: 0;

  background: #fff;
  border: 1px solid rgba(35,60,85,.24);
  border-radius: 10px;

  box-shadow: 0 2px 7px rgba(25,45,70,.10);

  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.floating-zoom-btn:hover {
  transform: translateY(-1px);
}

.floating-zoom-btn:active {
  transform: translateY(0);
}

.floating-zoom-glass {
  font-size: 24px;
  line-height: 1;
}

.floating-zoom-sign {
  min-width: 12px;
  font-size: 20px;
  line-height: 1;
  font-weight: 900;
}

@media(max-width:700px) {
  .floating-zoom-control {
    left: 8px;
    bottom: 8px;
  }

  body.viewer-fullscreen.walk-mode .floating-zoom-control {
    bottom: 132px;
  }

  .floating-zoom-btn {
    width: 46px;
    height: 42px;
  }
}
