/* 2D furnished plan view (plan-2d-view.mjs). Paper #f4f1e8 · ink #234759 · brass #d8bd85. */
.p2d{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:#f4f1e8;color:#234759;font-family:Arial,'Liberation Sans',sans-serif}
.p2d [hidden]{display:none!important}
.p2d-body{position:relative;flex:1;min-height:0;display:flex}
.p2d-main{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column}
.p2d-view{position:relative;flex:1;min-width:0;min-height:0;display:flex}
.p2d-scroll{position:relative;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;display:flex;outline:none}
.p2d-scroll:focus-visible{box-shadow:inset 0 0 0 2px #d8bd85}
.p2d-sheet{position:relative;margin:auto;flex:0 0 auto}
.p2d-canvas{display:block}
.p2d-labels{position:absolute;inset:0;pointer-events:none}
.p2d-room{position:absolute;transform:translate(-50%,-50%);min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center;padding:0;margin:0;border:0;background:none;font:inherit;color:inherit;pointer-events:auto;cursor:default}
button.p2d-room{cursor:pointer}
.p2d-pill{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 8px 5px;border-radius:9px;background:rgba(255,254,250,.84);box-shadow:0 1px 6px rgba(20,36,44,.16);white-space:nowrap;line-height:1.1;backdrop-filter:blur(2px)}
.p2d-pill b{font-size:12px;font-weight:700;letter-spacing:.01em;color:#1f3340}
.p2d-pill small{font-size:11px;color:#4f6570;font-variant-numeric:tabular-nums}
.p2d-room.is-small .p2d-pill{padding:2px 6px}
.p2d-room.is-small .p2d-pill b{font-size:10.5px}
.p2d-room.is-small .p2d-pill small{font-size:9.5px}
.p2d-room.is-dot .p2d-pill{padding:0;width:12px;height:12px;border-radius:50%;background:#fffefa;border:2px solid #234759}
.p2d-room.is-dot .p2d-pill>*{display:none}
button.p2d-room:hover .p2d-pill,button.p2d-room:focus-visible .p2d-pill,.p2d-room.is-on .p2d-pill{background:#234759;box-shadow:0 2px 10px rgba(20,36,44,.3)}
button.p2d-room:hover .p2d-pill b,button.p2d-room:focus-visible .p2d-pill b,.p2d-room.is-on .p2d-pill b{color:#f4f1e8}
button.p2d-room:hover .p2d-pill small,button.p2d-room:focus-visible .p2d-pill small,.p2d-room.is-on .p2d-pill small{color:#d8bd85}
button.p2d-room:focus-visible{outline:none}
.p2d-hud{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;align-items:center;gap:2px;pointer-events:none;font-size:10px;letter-spacing:.04em;color:#4f6570;text-transform:uppercase}
.p2d-north{width:44px;height:44px}
.p2d-scale{position:absolute;left:12px;bottom:10px;display:flex;flex-direction:column;gap:3px;font-size:11px;color:#234759;pointer-events:none}
.p2d-scale i{display:block;height:6px;border:1px solid #234759;background:repeating-linear-gradient(90deg,#234759 0 20%,#fffefa 20% 40%)}
.p2d-zoom{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:6px}
.p2d-zoom button,.p2d-bar button{min-width:48px;min-height:48px;border:1px solid #23475933;border-radius:12px;background:rgba(255,254,250,.94);color:#234759;font:600 14px Arial,sans-serif;cursor:pointer;padding:0 12px}
.p2d-zoom button{font-size:20px;padding:0}
.p2d-zoom [data-p2d-fit]{font-size:12px}
.p2d-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-top:1px solid #23475922;background:#f4f1e8;flex-wrap:wrap}
.p2d-collections{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.p2d-collections button{display:inline-flex;align-items:center;gap:7px}
.p2d-collections button[aria-pressed="true"]{background:#234759;color:#f4f1e8;border-color:#234759}
.p2d-collections i{width:16px;height:16px;border-radius:50%;border:1px solid #23475955}
.p2d-collections i[data-c="warm"]{background:linear-gradient(135deg,#c9a57a 50%,#efe6d6 50%)}
.p2d-collections i[data-c="noir"]{background:linear-gradient(135deg,#5b4636 50%,#77756d 50%)}
.p2d-collections i[data-c="contemporary"]{background:linear-gradient(135deg,#e2d6c1 50%,#f1f1e9 50%)}
.p2d-collections i[data-c="atelier"]{background:linear-gradient(135deg,#b89b6c 50%,#adb9a7 50%)}
.p2d-bar.no-collections .p2d-collections{display:none}
.p2d-note{margin:0;padding:6px 12px 8px;font-size:11.5px;line-height:1.35;color:#4f6570;background:#f4f1e8}
.p2d-status{margin:0;font-size:12px;color:#8d7446;padding:0 12px}
.p2d-status:empty{display:none}
.p2d.is-compact .p2d-note{font-size:10.5px;padding:4px 10px 6px}
@media (max-width:560px){.p2d-bar{padding:6px 8px;gap:6px}.p2d-collections button{padding:0 9px;font-size:13px}.p2d-export{flex:1 0 100%}.p2d-hud span{display:none}.p2d-north{width:36px;height:36px}}
.p2d.is-tiny .p2d-pill{padding:2px 6px;border-radius:7px}
.p2d.is-tiny .p2d-pill b{font-size:10.5px}
.p2d.is-tiny .p2d-pill small{display:none}

/* room areas panel — side column next to the plan on desktop, below it on phones */
.p2d-hit{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.p2d-poly{fill:transparent;stroke:transparent;stroke-width:0;pointer-events:all;cursor:pointer;transition:fill .16s,stroke .16s}
.p2d-labels.has-focus .p2d-poly{fill:rgba(244,241,232,.5)}
.p2d-labels.has-focus .p2d-poly.is-on{fill:rgba(255,226,150,.16);stroke:#d8a83c;stroke-width:3.5;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(35,71,89,.85))}
.p2d-rooms{flex:0 0 clamp(250px,24%,320px);min-width:0;display:flex;flex-direction:column;border-left:1px solid #23475922;background:#fbf9f3;color:#234759}
.p2d-rooms-head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:12px 14px 10px;border:0;border-bottom:1px solid #23475918;background:transparent;font:inherit;color:inherit;text-align:left;cursor:default}
.p2d-rooms-head small{display:block;font-size:10.5px;letter-spacing:.16em;color:#8d7446}
.p2d-rooms-head b{display:block;margin-top:3px;font:400 15px Georgia,'Times New Roman',serif;font-variant-numeric:tabular-nums}
.p2d-rooms-head i{display:none;width:9px;height:9px;border-right:2px solid #234759;border-bottom:2px solid #234759;transform:rotate(45deg);transition:transform .2s}
.p2d-rooms-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px 8px 12px;font-size:13px}
.p2d-rlist{list-style:none;margin:0;padding:0}
.p2d-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:48px;padding:7px 8px;border:0;border-radius:9px;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer}
.p2d-row:hover,.p2d-row.is-on{background:#234759;color:#f4f1e8}
.p2d-row:focus-visible{outline:2px solid #d8bd85;outline-offset:-2px}
.p2d-row.is-on .p2d-rarea,.p2d-row:hover .p2d-rarea{color:#d8bd85}
.p2d-dot{width:10px;height:10px;border-radius:50%;background:#9db2a8;border:1px solid #23475955}
.p2d-row[data-kind=living] .p2d-dot{background:#d8bd85}.p2d-row[data-kind=bedroom] .p2d-dot{background:#b9a3c4}.p2d-row[data-kind=kitchen] .p2d-dot{background:#e0a58a}.p2d-row[data-kind=wet] .p2d-dot{background:#8fc0cc}.p2d-row[data-kind=outdoor] .p2d-dot{background:#a7c58b}.p2d-row[data-kind=circulation] .p2d-dot{background:#cfc9bb}
.p2d-rname{min-width:0;overflow-wrap:anywhere;line-height:1.25}
.p2d-rarea{font-variant-numeric:tabular-nums;color:#4f6570;white-space:nowrap}
.p2d-total{display:flex;justify-content:space-between;gap:10px;margin:6px 8px 4px;padding:10px 0 4px;border-top:2px solid #234759;font-weight:700}
.p2d-total b{font-variant-numeric:tabular-nums;white-space:nowrap}
.p2d-rooms h4{margin:14px 8px 4px;font:600 10.5px Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8d7446}
.p2d-facts{margin:0 8px;display:grid;gap:5px}.p2d-facts div{display:flex;justify-content:space-between;gap:10px;padding-bottom:5px;border-bottom:1px solid #23475914}
.p2d-facts dt{color:#4f6570}.p2d-facts dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.p2d-rnote{margin:12px 8px 0;font-size:11.5px;line-height:1.4;color:#4f6570}
@media (max-width:899px){
 .p2d-body{flex-direction:column}
 .p2d-main{flex:1 1 0;min-height:min(58%,360px)}
 .p2d-rooms{flex:0 1 auto;max-height:42%;border-left:0;border-top:1px solid #23475922}
 .p2d-rooms-head{cursor:pointer;padding:9px 12px}.p2d-rooms-head i{display:block}
 .p2d-rooms[data-open=true] .p2d-rooms-head i{transform:rotate(-135deg)}
 .p2d-rooms[data-open=false] .p2d-rooms-body{display:none}
 .p2d-rooms-body{padding:4px 6px 10px}
 .p2d-rlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:6px}
}
@media (max-width:420px){.p2d-rlist{grid-template-columns:1fr}}

/* room labels: on/off (plan-controls button, room-labels-pref.mjs), fade when zoomed in, dim under the pointer.
   Hidden = the white bubbles only; the polygons (hover / click outline) and the room-areas list keep working. */
.p2d-room{opacity:var(--p2d-lbl-op,1);transition:opacity .22s}
.p2d-room.is-on{opacity:1}
.p2d-pill{transition:opacity .16s,background .16s}
@media (hover:hover){.p2d-room:hover .p2d-pill{opacity:.15}}
.p2d[data-labels=off] .p2d-room{visibility:hidden;pointer-events:none}
.p2d[data-labels=off] .p2d-labels.has-focus .p2d-poly.is-on{fill:rgba(255,226,150,.28);stroke-width:4}
.p2d-lbl-btn{position:relative;display:grid;place-items:center;color:#234759}
.p2d-lbl-btn svg{display:block}
.p2d-lbl-btn .lbl-slash{display:none}
.p2d-lbl-btn[aria-pressed=true]{background:#234759;color:#f4f1e8;border-color:#234759}
.p2d-lbl-btn[aria-pressed=false] .lbl-slash{display:block}
.p2d-lbl-btn:focus-visible,.p2d-zoom button:focus-visible,.p2d-bar button:focus-visible{outline:2px solid #d8bd85;outline-offset:2px}
.p2d-lbl-btn::after{content:attr(data-tip);position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);padding:5px 9px;border-radius:8px;background:#1f3340;color:#f4f1e8;font:12px Arial,sans-serif;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;box-shadow:0 2px 8px rgba(20,36,44,.3)}
.p2d-lbl-btn:hover::after,.p2d-lbl-btn:focus-visible::after{opacity:1}
@media (prefers-reduced-motion:reduce){.p2d-room,.p2d-pill,.p2d-lbl-btn::after{transition:none}}
