/* Architectural model surfaces. All depths are paint-only; saved plan units,
   editor targets, opening gaps, rotation and business state remain authoritative. */
.shell .floor-panel .map-scroll{background:#eae6df}
.shell.view-editor .map-scroll.editing{background:#eae6df}
.floor-map{--model-ink:#544b3f;--model-muted:#81796b;background:#eae6df}
.floor-map [data-canvas-background]{fill:#eae6df}
.floor-map .model-floor{fill:#f4f0e8;stroke:none;pointer-events:none;filter:drop-shadow(2px 8px 8px #6c5c4320)}
.floor-map .zone-shape>rect{fill:#e9e3d7;fill-opacity:.68;stroke:none;rx:3}
.floor-map .zone-shape:nth-of-type(even)>rect{fill:#e6e1d9}
.floor-map .zone-shape.selected-zone>rect{stroke:#8a769b;stroke-width:1.6;stroke-dasharray:6 4;fill:#ebe5dd}
.floor-map .zone-name{fill:#6f6557;font-size:18px;font-weight:550;letter-spacing:1px;paint-order:stroke;stroke:#f4f0e8;stroke-width:3px;stroke-linejoin:round}
.floor-map .zone-count{fill:#948a7c;font-size:12px;font-weight:450;paint-order:stroke;stroke:#f4f0e8;stroke-width:2px}
.floor-map .model-wall-volume{filter:url(#model-wall-shadow)}
.floor-map .model-wall-side{fill:url(#model-wall-side);stroke:#baae9e;stroke-width:.35;stroke-linejoin:round}
.floor-map .wall-line{stroke:url(#model-wall-top);stroke-width:12;filter:none}
.floor-map .model-wall-rim{stroke:#fffef8;stroke-width:1.2;stroke-opacity:.9}
.floor-map .wall-line.selected-wall{stroke:#d5c8df;stroke-width:12}
.shell.view-editor .floor-map .wall-endpoint-dot{fill:#faf8f2;stroke:#ab9d89;stroke-width:1.4;r:3}
.shell.view-editor .floor-map .wall-endpoint-target:hover+.wall-endpoint-dot{stroke:#8a769b;fill:#fff;stroke-width:2.5;r:4.5}
.floor-map .seat-model{filter:url(#model-contact);pointer-events:none}
.floor-map .seat-hit{fill:transparent;stroke:none;pointer-events:all}
.floor-map .seat-main{fill:url(#model-table-top);stroke:#d7cfc0;stroke-width:.75;filter:none;stroke-dasharray:none}
.floor-map .seat-depth{fill:url(#model-furniture-side);stroke:#cbbda8;stroke-width:.6}
.floor-map .chair-depth{fill:#c6b89f;stroke:#c3b398;stroke-width:.6}
.floor-map .seat-topcoat{fill:url(#space-sheen);stroke:#fffdf5;stroke-width:.7}
.shell .floor-map .seat-shape .seat-back{fill:url(#model-chair-top);stroke:#cbbca4;stroke-width:.8;filter:none}
.floor-map .seat-back-rim{fill:none;stroke:#fffaf0;stroke-width:1.1;pointer-events:none}
.shell .floor-map .seat-shape .seat-number{fill:#534b3e;font-size:10px;font-weight:650;letter-spacing:0;pointer-events:none}
.shell .floor-map .seat-shape .seat-label,.shell .floor-map .seat-shape .countdown-label{fill:#817768;font-size:8px;font-weight:450;letter-spacing:0;pointer-events:none}
.shell .floor-map .seat-shape .seat-label.countdown-label{font-size:7.5px;font-weight:650;letter-spacing:-.2px}
.floor-map .seat-substatus{fill:#817768;font-size:6.5px;pointer-events:none}
.floor-map .seat-status-pill{fill:transparent;stroke:none;pointer-events:none}
.floor-map .seat-status-dot{fill:#9aab98;stroke:#fbf7ef;stroke-width:1.2;pointer-events:none}
.floor-map .seat-status-symbol{display:none}
.floor-map .seat-shape.active .seat-status-pill{fill:#e0e8df}
.floor-map .seat-shape.active .seat-status-dot{fill:#6b947b}
.shell .floor-map .seat-shape.active .seat-label{fill:#547561}
.floor-map .seat-shape.reserved .seat-status-pill{fill:#e7e0ed}
.floor-map .seat-shape.reserved .seat-status-dot{fill:#9a83aa}
.shell .floor-map .seat-shape.reserved .seat-label{fill:#806b8d}
.floor-map .seat-shape.repair .seat-status-pill{fill:#e2e0db}
.floor-map .seat-shape.repair .seat-status-dot{fill:#929089}
.floor-map .seat-shape.is-soon .seat-status-pill{fill:#f1e6cf}
.floor-map .seat-shape.is-soon .seat-status-dot{fill:#b99a62}
.shell .floor-map .seat-shape.is-soon .seat-label{fill:#937637}
.floor-map .seat-shape.is-overdue .seat-status-pill{fill:#efdfda}
.floor-map .seat-shape.is-overdue .seat-status-dot{fill:#bb8372}
.shell .floor-map .seat-shape.is-overdue .seat-label,.shell .floor-map .seat-shape.is-overdue .seat-substatus{fill:#a26958}
.floor-map .seat-shape.needs-cleaning .seat-status-pill{fill:#eadfe0}
.floor-map .seat-shape.needs-cleaning .seat-status-dot{fill:#b38b90}
.shell .floor-map .seat-shape.needs-cleaning .seat-label{fill:#976f77}
.floor-map .seat-shape.is-paused .seat-status-pill{fill:#e8e0df}
.floor-map .seat-shape.is-paused .seat-status-dot{fill:#a09090}
.shell .floor-map .seat-shape.is-paused .seat-label{fill:#827270}
.shell .floor-map .seat-shape:is(.active,.reserved,.repair,.is-overdue,.is-soon,.needs-cleaning,.is-paused) .seat-main{fill:url(#model-table-top);stroke:#d7cfc0;stroke-width:.75;stroke-dasharray:none}
.shell .floor-map .seat-shape>.seat-visual,.shell .floor-map .seat-shape .seat-main{animation:none}
.shell .map-scroll:not(.editing) .floor-map .seat-shape.is-overdue.needs-reminder:not(.is-paused)>.seat-visual{transform-box:fill-box;transform-origin:center;animation:seat-notice-shake 1.65s ease-in-out infinite}
.shell .floor-map .seat-shape:is(.is-selected,.selected,:focus-visible) .seat-main{fill:url(#model-table-top);stroke:#8b70a4;stroke-width:2.1;filter:none}
.floor-map .seat-shape.is-selected .seat-status-pill{stroke:#a58bb9;stroke-width:.7}
.floor-map .seat-shape:hover .seat-main{stroke:#b4a085;stroke-width:1.3}
.floor-map .seat-shape.is-selected:hover .seat-main{stroke:#8b70a4;stroke-width:2.1}
.floor-map .note-indicator{fill:#bfa885}
.floor-map .model-choice{fill:#8b70a4;stroke:#fffaf3;stroke-width:1.4;pointer-events:none}
.floor-map .facility-shape:is(.counter,.counter-l,.beads){filter:url(#model-contact)}
.floor-map .facility-shape .space-depth{fill:url(#model-furniture-side);stroke:#bcae99;stroke-width:.6}
.floor-map .facility-shape .space-base{fill:url(#space-wood);stroke:#d4c6b0;stroke-width:.9}
.floor-map .facility-shape.beads .space-base{fill:url(#space-ceramic);stroke:#d0cabc}
.floor-map .facility-shape .space-sheen{fill:url(#space-sheen);stroke:#fffcf5;stroke-width:.8}
.floor-map .facility-shape .space-grain{fill:url(#space-grain);stroke:none}
.floor-map .facility-shape .space-tray{stroke:#f9f5ed;stroke-width:1.1;filter:drop-shadow(0 1px 1px #8e7e6530)}
.floor-map .facility-shape.selected-facility .space-base{stroke:#8b70a4;stroke-width:2}
.floor-map .facility-shape.entrance rect{fill:#e4e6dc;stroke:#bec2b2;stroke-width:.8;rx:3}
.floor-map .facility-shape.entrance text{fill:#79806d;font-size:14px;font-weight:500;letter-spacing:2px}
.floor-map .facility-shape.custom text{fill:#8b806f;font-weight:500}
.floor-map .architecture.column{filter:url(#model-contact)}
.floor-map .architecture .column-depth{fill:url(#model-furniture-side);stroke:none;pointer-events:none}
.floor-map .architecture .column-body{fill:url(#model-wall-top);stroke:#d0c5b3;stroke-width:1}
.floor-map .architecture .glass-body{fill:#c6d2ce;stroke:#9caeaa;stroke-width:1}
.floor-map .architecture .glass-lines{stroke:#fefcf7;stroke-width:1.5}
.floor-map .architecture .door-leaf{stroke:#d0c1aa;stroke-width:5;filter:drop-shadow(1px 2px 1px #6f614a24)}
.floor-map .architecture .door-arc{stroke:#b7af9e;stroke-width:1;stroke-dasharray:3 4;fill:none;opacity:.8}
.floor-map .architecture .door-hinge{fill:#a69b87;stroke:#fcf8ef;stroke-width:1}
.floor-map .architecture.selected-facility :is(.column-body,.glass-body,.door-leaf){stroke:#8b70a4;stroke-width:2}
.floor-map .selection-outline{fill:#8b70a408;stroke:#9a83af;stroke-width:1.5;stroke-dasharray:5 4}
.floor-map .edit-handle{fill:#fffaf4;stroke:#8b70a4;stroke-width:2}
.floor-map .rotate-handle{fill:#8b70a4;stroke:#fffaf4}
.floor-map .counter-handle-label{fill:#79628e;stroke:#faf6ee;font-size:11px}
.floor-map .zone-shape.copy-preview>rect{fill:#eee7f2;stroke:#a78bb9;stroke-width:1.6;stroke-dasharray:6 4}
.floor-map .zone-name:hover{fill:#79628e}
.floor-panel .map-controls{background:#faf7f0e6;border:1px solid #d8cebd;box-shadow:0 3px 12px #6e5f4520;backdrop-filter:blur(8px);color:#766953}
.shell .floor-panel .legend .status-dot.free{background:#9aab98;border:0}
.shell .floor-panel .legend .status-dot.active{background:#6b947b}
.shell .floor-panel .legend .status-dot.reserved{background:#9a83aa}
.shell .floor-panel .legend .status-dot.repair{background:#929089}
.shell .floor-panel .legend .soon-dot{background:#b99a62;border:0}
.shell .floor-panel .legend .expired-dot{background:#bb8372}
.shell .floor-panel .legend .cleaning-dot{background:#b38b90;border:0}
@media(prefers-reduced-motion:reduce){.floor-map .seat-visual{animation:none!important}}
