/* Architectural cutaway: geometry, material and readable local context. */
:root {
  --room-floor:#15283a;--scope-floor:#236f85;--idle-floor:#172536;
  --scope-wall-front:#3a7b8d;--scope-wall-side:#225c72;--scope-wall-top:#8ed9e9;
  --wall-top:#6c8c9e;--wall-front:#3b576b;--wall-side:#294456;--wall-outline:#a9c1cf28;
  --slab-front:#284254;--slab-side:#1b3143;--slab-outline:#6a8eaa60;
  --label-paper:#13283bee;--label-line:#92bcd642;--label-ink:#dceef7;--label-sub:#92b6c8;
  --desk-top:#929e9e;--desk-front:#4e6775;--desk-side:#3e5666;
  --screen:#60929f;--screen-edge:#344d5b;--seat:#5b7b86;
  --core-floor:#283e50;--core-portal:#5d7e8e;--core-side:#3e5e70;
  --shaft-glass:#70b7ce12;--shaft-side:#70b7ce1c;--shaft-back:#6eaac31d;
  --shaft-metal:#94b9c9;--stair-top:#adc0c7;--stair-front:#668495;--stair-side:#3b5a6d;
  --car-top:#a8bcc6;--car-front:#7393a2;--car-side:#496b7f;
  --tile-line:#91aec513;--corridor:#253e4c;--corridor-guide:#8ab6c44a;
}
:root[data-theme=light] {
  --bg:#eef2f6;--map-slab-a:#fbfcfd;--map-slab-b:#e0e8ed;
  --room-floor:#f1f3f3;--scope-floor:#72c8db;--idle-floor:#e8ecef;
  --scope-wall-front:#b3dce8;--scope-wall-side:#679eb7;--scope-wall-top:#d3f0fa;
  --wall-top:#fff;--wall-front:#d6e0e5;--wall-side:#b5c4cf;--wall-outline:#66849b35;
  --slab-front:#bacbd7;--slab-side:#9db3c4;--slab-outline:#809fb670;
  --label-paper:#ffffffed;--label-line:#a0b7c94d;--label-ink:#294c62;--label-sub:#56778d;
  --desk-top:#e8dfcb;--desk-front:#c8c0b0;--desk-side:#b6b4a9;
  --screen:#668496;--screen-edge:#3e5b70;--seat:#9fb8bf;
  --core-floor:#e5edef;--core-portal:#e5edf0;--core-side:#bdcdd5;
  --shaft-glass:#a2d5df18;--shaft-side:#78b8c62b;--shaft-back:#a0c6d520;
  --shaft-metal:#7097ab;--stair-top:#f4f7f8;--stair-front:#becfd8;--stair-side:#8ca6b6;
  --car-top:#eff6f8;--car-front:#b8d0db;--car-side:#88adbf;
  --tile-line:#667f9214;--corridor:#e0e9e8;--corridor-guide:#6d979938;
}
.relay-workspace { background:radial-gradient(ellipse at 45% 46%,var(--scene-glow),transparent 64%),var(--bg); }
.relay-workspace:before { opacity:.07; }
.ambient-orbit { opacity:.35; }
.ground-grid { opacity:.22; }
.mode-4 .layer-4,.mode-5 .layer-5 { transform:translate(0,160px) scale(1.08); }
.scene-shadow { opacity:.18; }
.slab-front { fill:var(--slab-front); stroke:var(--slab-outline); stroke-width:.6; }
.slab-side { fill:var(--slab-side); stroke:var(--slab-outline); stroke-width:.6; }
.slab-top { stroke:var(--slab-outline); stroke-width:.8; }
.slab-edge { stroke:#d5e7f0; stroke-width:2; stroke-opacity:.7; }
.architectural-tile { fill:none; stroke:var(--tile-line); stroke-width:.6; }
.corridor-track { stroke:var(--corridor); stroke-width:17; }
.corridor-flow { stroke:var(--corridor-guide); stroke-width:1; stroke-dasharray:2 5; animation:none; }
.floor-tag rect { fill:var(--label-paper); stroke:var(--label-line); stroke-width:1; }
.floor-tag>text { fill:var(--label-ink); font-size:21px; font-weight:550; letter-spacing:-.03em; }
.room-foot-shadow { fill:#1d3a4b; opacity:.16; }
.room-unit .room-roof { fill:var(--room-floor); stroke:var(--wall-outline); stroke-width:.8; }
.room-unit.assigned .room-roof,.room-unit.own .room-roof { fill:var(--scope-floor); stroke:var(--accent); stroke-width:1.4; }
.room-unit.selected .room-roof { fill:var(--scope-floor); stroke:var(--accent); stroke-width:1.5; filter:none; }
.room-unit.idle-room .room-roof { fill:var(--idle-floor); stroke:var(--wall-outline); }
.room-shell polygon { stroke:var(--wall-outline); stroke-width:.35; stroke-linejoin:round; }
.room-shell .face-top { fill:var(--wall-top); }
.room-shell .face-front { fill:var(--wall-front); }
.room-shell .face-side { fill:var(--wall-side); }
.room-unit.assigned .room-shell .face-front,.room-unit.own .room-shell .face-front { fill:var(--scope-wall-front); }
.room-unit.assigned .room-shell .face-side,.room-unit.own .room-shell .face-side { fill:var(--scope-wall-side); }
.room-unit.assigned .room-shell .face-top,.room-unit.own .room-shell .face-top { fill:var(--scope-wall-top); }
.room-scope-rim { stroke:transparent; stroke-width:2.2; fill:none; stroke-linecap:round; }
.room-unit.assigned .room-scope-rim,.room-unit.own .room-scope-rim { stroke:var(--accent); stroke-width:3; stroke-opacity:1; }
.room-unit.selected .room-scope-rim { stroke:var(--accent); stroke-width:4; stroke-opacity:1; }
.room-label { pointer-events:auto; cursor:pointer; }
.room-label .room-number { fill:var(--label-ink); font-size:18px; font-weight:650; letter-spacing:.01em; }
.room-label .room-sub { fill:var(--label-sub); font-size:9px; font-weight:450; }
.room-label.selected .room-label-plate,.room-label:hover .room-label-plate { stroke:var(--accent); stroke-width:1.3; }
.room-label.idle-label { pointer-events:none; opacity:.7; }
.room-label-plate { fill:var(--label-paper); stroke:var(--label-line); stroke-width:.6; }
.room-label.assigned .room-label-plate { stroke:var(--accent); stroke-width:1.25; }
.room-label.selected .room-label-plate { stroke:var(--accent); stroke-width:2; }
.room-unit .room-number,.room-unit.assigned .room-number,.room-unit.selected .room-number { fill:var(--label-ink); font-size:14px; font-weight:600; letter-spacing:.01em; }
.room-unit .room-sub,.room-unit.assigned .room-sub,.room-unit.selected .room-sub { fill:var(--label-sub); font-size:7.5px; font-weight:450; }
.room-unit.selected .room-label-plate { stroke:var(--accent); stroke-width:1.3; }
.room-unit.exam:hover .room-label-plate { stroke:var(--accent); stroke-width:1.2; }
.idle-room .room-label-plate { fill:var(--room-floor); stroke:none; }
.idle-room .room-number { opacity:.65; }
.idle-room .room-sub { opacity:.7; }
.computer-desk .face-top { fill:var(--desk-top); }
.computer-desk .face-front { fill:var(--desk-front); }
.computer-desk .face-side { fill:var(--desk-side); }
.computer-screen .face-top,.computer-screen .face-side { fill:var(--screen-edge); }
.computer-screen .face-front { fill:var(--screen); stroke:#d2e7e74a; stroke-width:.25; }
.computer-seat .face-top { fill:var(--seat); }
.computer-seat .face-front,.computer-seat .face-side { fill:var(--desk-side); }
.core-floor .core-footprint { fill:var(--core-floor); stroke:var(--shaft-metal); stroke-width:.6; }
.lift-portal .face-top { fill:var(--wall-top); stroke:var(--shaft-metal); stroke-width:.7; }
.lift-portal .face-front { fill:var(--core-portal); stroke:var(--shaft-metal); stroke-width:.6; }
.lift-portal .face-side { fill:var(--core-side); stroke:var(--shaft-metal); stroke-width:.6; }
.portal-light { fill:none; stroke:var(--accent); stroke-width:1.5; }
.facility-marker rect { fill:var(--label-paper); stroke:var(--label-line); stroke-width:.6; }
.facility-marker path { fill:none; stroke:var(--label-sub); stroke-width:1.25; stroke-linecap:round; stroke-linejoin:round; }
.shaft-back { fill:var(--shaft-back); stroke:none; }
.shaft-glass .face-top { fill:var(--shaft-glass); stroke:var(--shaft-metal); stroke-width:.6; }
.shaft-glass .face-front { fill:var(--shaft-glass); stroke:none; }
.shaft-glass .face-side { fill:var(--shaft-side); stroke:none; }
.lift-guide { stroke:var(--shaft-metal); stroke-width:.65; stroke-opacity:.45; fill:none; }
.shaft-mullion { stroke:var(--shaft-metal); stroke-width:.9; stroke-opacity:.7; fill:none; }
.shaft-collar { stroke:var(--shaft-metal); stroke-width:2; fill:none; stroke-linejoin:round; }
.cabin-model .face-top { fill:var(--car-top); stroke:var(--shaft-metal); stroke-width:.5; }
.cabin-model .face-front { fill:var(--car-front); stroke:var(--shaft-metal); stroke-width:.5; }
.cabin-model .face-side { fill:var(--car-side); stroke:var(--shaft-metal); stroke-width:.5; }
.cabin-door-line { fill:none; stroke:var(--shaft-metal); stroke-width:1; }
.stair-back-glass { fill:var(--shaft-back); stroke:var(--shaft-metal); stroke-width:.5; stroke-opacity:.3; }
.stair-stringer { fill:var(--stair-side); stroke:var(--shaft-metal); stroke-width:.4; }
.stair-tread .face-top,.stair-landing .face-top { fill:var(--stair-top); stroke:var(--shaft-metal); stroke-width:.35; }
.stair-tread .face-front,.stair-landing .face-front { fill:var(--stair-front); }
.stair-tread .face-side,.stair-landing .face-side { fill:var(--stair-side); }
.stair-handrail { stroke:var(--shaft-metal); stroke-width:1.7; fill:none; stroke-linejoin:round; stroke-linecap:round; }
.rail-post { stroke:var(--shaft-metal); stroke-width:.7; fill:none; }
.mode-all .floor-stair-preview { opacity:0; }
.utility-room .face-top { fill:var(--core-floor); }
.utility-room .face-front { fill:var(--wall-front); }
.utility-room .face-side { fill:var(--wall-side); }
:root[data-theme=light] .room-unit.assigned .room-number,:root[data-theme=light] .room-unit.selected .room-number { fill:var(--label-ink); }
:root[data-theme=light] .room-unit.assigned .room-sub,:root[data-theme=light] .room-unit.selected .room-sub { fill:var(--label-sub); }
:root[data-theme=light] .room-unit.selected .room-roof { filter:none; }
:root[data-theme=light] .corridor-track { stroke:var(--corridor); }
:root[data-theme=light] .corridor-flow { stroke:var(--corridor-guide); }
.facility-label { pointer-events:none; writing-mode:horizontal-tb; letter-spacing:0; }
.facility-label-wire { fill:none; stroke:var(--shaft-metal); stroke-width:.8; opacity:.65; }
.facility-label-plate { fill:var(--label-paper); stroke:var(--shaft-metal); stroke-width:.65; }
.facility-symbol { fill:none; stroke:var(--label-ink); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.facility-label-text { fill:var(--label-ink); font-size:14px; font-weight:550; writing-mode:horizontal-tb; letter-spacing:0; }
.wc-symbol { fill:var(--label-ink); font-size:10px; font-weight:650; writing-mode:horizontal-tb; letter-spacing:0; }
.wc-divider { stroke:var(--label-line); stroke-width:.7; }
