/* The same complete 8:3 scene is shared by rooms, sidebars and decoration preview. */
.room-overview{--room-text:#e4ebf4;box-sizing:border-box;position:relative;flex:0 0 auto;aspect-ratio:8/3;width:min(100%,50.666666vh);width:min(100%,50.666666svh);max-height:19vh;max-height:19svh;margin:0 auto;background:#0b111a;color:var(--room-text);border:1px solid var(--room-accent,#29364a);border-radius:10px;overflow:hidden;isolation:isolate;touch-action:pan-y;container-type:inline-size;outline-offset:-2px}
.room-overview[hidden]{display:none!important}.room-overview *{box-sizing:border-box}.room-scene-shell{position:absolute;inset:0;overflow:hidden}.room-layer{position:absolute;inset:0;pointer-events:none}.room-layer-background{z-index:0}.room-layer-rear-chairs{z-index:1}.room-layer-rear-actors{z-index:2}.room-layer-table{z-index:3}.room-layer-rear-laptops{z-index:4}.room-layer-front-laptops{z-index:5}.room-layer-front-actors{z-index:6}.room-layer-front-chairs{z-index:7}.room-layer-lighting{z-index:8}.room-layer-overlay{z-index:9}.room-raster-background{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}.room-shared-table{position:absolute;left:var(--furniture-left,13%);top:var(--furniture-top,30%);width:var(--furniture-width,74%);height:var(--furniture-height,74%);object-fit:contain;pointer-events:none;user-select:none}
/* Split laptops use the same table coordinate frame in every theme. */
.room-seat-laptop{position:absolute;display:block;object-fit:contain;pointer-events:none;user-select:none}
/* Each chair has independent alpha and depth. Empty seats stay quiet at their same floor anchor. */
.room-furniture-chair{position:absolute;left:var(--chair-x);top:55%;width:9.529%;height:30%;overflow:hidden;transform:translate(-50%,-50%);pointer-events:none;user-select:none}.room-furniture-chair[data-row=front]{top:76%;width:11.973%;height:31%}.room-chair-image{position:absolute;max-width:none;object-fit:fill;pointer-events:none;user-select:none}.room-furniture-chair[data-occupancy=empty]{top:59.2%;width:6.861%;height:21.6%;opacity:.24}.room-furniture-chair[data-row=front][data-occupancy=empty]{top:80.34%;width:8.621%;height:22.32%}.room-furniture-chair[data-occupancy=pending]{opacity:.4}.room-furniture-chair[data-occupancy=reserved]{opacity:.55}
.room-plaque{position:absolute;z-index:40;left:2.3%;top:3%;width:24%;padding:.7% 1.3%;border:1px solid var(--room-accent,#48617b);border-radius:5px;background:#091523df;pointer-events:auto;overflow:hidden}.room-plaque-name{display:block;padding-right:10px;font-size:clamp(8px,2.5cqw,13px);font-weight:650;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-plaque-code{display:block;margin-top:2px;font-size:clamp(6px,1.85cqw,10px);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em;color:#93b3d1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-plaque:after{content:'⌄';position:absolute;right:6px;top:2px;color:#91afc9;font-size:12px;pointer-events:none}.room-fast-select{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;min-width:0;color:#e4ebf4;background:#131d2b}.room-plaque:focus-within{outline:2px solid #97cafa;outline-offset:1px}.room-fast-select:disabled{cursor:default}
.room-scene-controls{position:absolute;z-index:40;right:2.2%;top:4%;display:flex;gap:5px;pointer-events:auto}.room-overview button{font:inherit;color:inherit;border:0;margin:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.room-overview button:disabled{cursor:default;opacity:.65}.room-overview button:focus-visible{outline:2px solid #aad4ff;outline-offset:1px}.room-overview .room-scene-control{display:grid;place-items:center;width:clamp(22px,6.2cqw,29px);height:clamp(22px,6.2cqw,29px);padding:0;background:#101c2be6;border:1px solid #425a74;border-radius:6px;font-size:clamp(13px,3.9cqw,18px);line-height:1}.room-overview .room-house-panel{color:#d8eafa}.room-house-panel svg{display:block;width:72%;height:72%;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.room-overview .room-house-panel:hover{background:#233b53;border-color:#8aabc9}.room-overview .room-invite{width:auto;min-width:44px;padding:0 8px;font-size:clamp(10px,2.8cqw,12px);font-weight:600;white-space:nowrap}.room-overview .room-invite[hidden]{display:none!important}
/* Actors are cropped from real directional sheets. The table is never duplicated per seat. */
.room-seat{position:absolute;left:var(--seat-x);top:var(--seat-y);width:13.22%;height:47%;transform:translate(-50%,-50%);pointer-events:none}.room-seat[data-row=rear]{width:12.375%;height:44%}.room-overview .room-actor{position:absolute;inset:0;width:100%;height:100%;padding:0;background:transparent;pointer-events:auto;border-radius:8px;overflow:visible}.room-actor-frame{display:block;position:relative;width:100%;height:100%;overflow:hidden;transform-origin:50% 65%}.room-actor-sprite{position:absolute;left:var(--sprite-left);top:var(--sprite-top);width:var(--sprite-width);height:var(--sprite-height);max-width:none;object-fit:fill;pointer-events:none;user-select:none;filter:hue-rotate(var(--coat-hue,0deg))}.room-actor[data-visual=datou-ragdoll] .room-actor-sprite{filter:none!important}.room-overview .room-offline-seat{position:absolute;inset:0;width:100%;height:100%;padding:0;background:transparent;pointer-events:auto;border-radius:8px}.room-seat[data-kind=empty]{pointer-events:none}.room-seat-label[data-presence=offline]{color:#8597aa}
.room-member-labels{position:absolute;inset:0;pointer-events:none}.room-seat-label{position:absolute;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px;max-width:14.5%;padding:1px 3px;background:#09121de3;border-radius:3px;font-size:clamp(6px,1.75cqw,10px);line-height:1.15;white-space:nowrap;overflow:hidden;color:#d3e0ec;z-index:30;pointer-events:none}.room-member-name{overflow:hidden;text-overflow:ellipsis}.room-presence-dot{display:inline-block;width:clamp(4px,1.2cqw,7px);height:clamp(4px,1.2cqw,7px);flex:0 0 auto;border-radius:50%;background:#53d68c;box-shadow:0 0 0 1px #123e28}.room-activity-label{display:block;flex-basis:100%;text-align:center;color:#b3d4e7;font-size:.88em;line-height:1.1;overflow:hidden;text-overflow:ellipsis}
/* Pending silhouettes are owner-only review affordances, never members or presence. */
.room-overview .room-pending-actor{opacity:.36;border:1px dashed #a6bacb;border-radius:10px}.room-overview .room-pending-actor:hover,.room-overview .room-pending-actor:focus-visible{opacity:.58}.room-pending-label{color:#bac7d3;border:1px dashed #6b8499;background:#0c1824db}.room-pending-status{flex-basis:100%;text-align:center;font-size:.85em;color:#92a5b6}
.room-signature{position:absolute;left:39%;top:8%;max-width:29%;background:transparent!important;padding:1px 4px!important;font-size:clamp(6px,1.75cqw,10px)!important;font-style:italic!important;line-height:1.1!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px #09111c;color:#95aac0!important;pointer-events:auto;opacity:.8}.room-signature[data-placeholder=true]{display:none}.room-signature:disabled{pointer-events:none}.room-scene-counts{position:absolute;left:2.4%;bottom:2.1%;display:flex;gap:7px;align-items:center;font-size:clamp(7px,1.9cqw,10px);line-height:1.2;font-variant-numeric:tabular-nums;color:#b6cada}.room-human-count,.room-agent-count{white-space:nowrap}.room-online-count[hidden]{display:none!important}.room-pagination{position:absolute;left:50%;bottom:.8%;transform:translateX(-50%);display:flex;align-items:center;gap:4px;pointer-events:auto}.room-page-dots{display:flex;align-items:center;gap:5px}.room-overview .room-page-dot{position:relative;width:clamp(9px,2.5cqw,13px);height:clamp(13px,3.4cqw,18px);padding:0;background:none}.room-page-dot:before{content:'';position:absolute;top:50%;left:50%;width:4px;height:4px;transform:translate(-50%,-50%);border:1px solid #7095b7;background:#354963;border-radius:50%}.room-page-dot[aria-current=page]:before{width:5px;height:5px;border-color:#a6d1f4;background:#acd7f8}.room-overview .room-page-arrow{width:clamp(14px,3.4cqw,19px);height:clamp(15px,3.6cqw,20px);padding:0;background:transparent;color:#a9c4dc;font-size:17px;line-height:1}.room-overflow{position:absolute;right:2.4%;bottom:3%;font-size:clamp(7px,2cqw,10px);color:#e1b59f}.room-overview-sr{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* Signboards accept only server-enumerated materials and literal bounded text. */
.room-signboards{position:absolute;inset:0;pointer-events:none}.room-overview .room-signboard{position:absolute;transform:translate(-50%,-50%);max-width:30%;max-height:32%;overflow:hidden;overflow-wrap:anywhere;white-space:pre-wrap;text-align:center;font:600 clamp(7px,2cqw,12px)/1.25 system-ui,sans-serif;padding:1.2% 1.8%;border:1px solid #9c7854;border-radius:4px;background:#65472e;color:#f9e8c8;box-shadow:0 2px 4px #0006;pointer-events:auto}.room-signboard[data-style=chalk]{background:#203b33;border-color:#607971;color:#edf1df;font-family:ui-monospace,monospace}.room-signboard[data-style=paper]{background:#dfd8bf;border-color:#b8ac8d;color:#40372f;box-shadow:0 2px 5px #0004}.room-signboard[data-style=metal]{background:linear-gradient(135deg,#5b6c7b,#303d49);border-color:#8c9dab;color:#e1eaf2}.room-overview[data-interactive=false] .room-signboard{pointer-events:none}.room-overview[data-editor-preview=true] .room-scene-controls,.room-overview[data-editor-preview=true] .room-pagination,.room-overview[data-editor-preview=true] .room-signature{display:none}
/* Motion is decorative or backed by an expiring verified action, never inferred presence. */
.room-actor[data-animation=reading] .room-actor-frame,.room-actor[data-animation=ambient-working] .room-actor-frame{animation:room-raster-read 2.8s ease-in-out infinite}.room-actor[data-animation=speaking] .room-actor-frame{animation:room-raster-speak 2.6s ease-in-out infinite}.room-actor[data-animation=ambient-idle] .room-actor-frame,.room-actor[data-animation=ambient-waiting] .room-actor-frame{animation:room-raster-idle 5s ease-in-out infinite}.room-actor[data-animation=ambient-sleeping] .room-actor-frame{animation:room-raster-sleep 5s ease-in-out infinite}.room-actor[data-animation=ambient-playful] .room-actor-frame{animation:room-raster-play 4.5s ease-in-out infinite}.room-actor[data-animation=none] *:not(.room-cat-sequence-image){animation:none!important}.room-sleep-mark,.room-play-mark,.room-ambient-mark{position:absolute;right:0;top:10%;color:#b4ccdb;font-size:clamp(7px,2cqw,11px);pointer-events:none}.room-ambient-mark{left:0;right:auto;color:#b0a5c4}
@keyframes room-raster-read{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(1px) rotate(-1deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(1px) rotate(1deg)}}@keyframes room-raster-speak{0%,100%{transform:translateY(0)}33%{transform:translateY(-1px)}66%{transform:translateY(0)}}@keyframes room-raster-idle{0%,100%{transform:rotate(0)}33%{transform:rotate(-1deg)}66%{transform:rotate(1deg)}}@keyframes room-raster-sleep{0%,100%{transform:translateY(1px) scaleY(.98)}50%{transform:translateY(0) scaleY(1)}}@keyframes room-raster-play{0%,100%{transform:rotate(0)}20%{transform:rotate(-3deg)}40%{transform:translateY(-2px) rotate(2deg)}60%{transform:rotate(-2deg)}80%{transform:translateY(-1px) rotate(1deg)}}
.room-layer-lighting:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 25%,#b8dfff24,transparent 55%);opacity:.3;animation:room-light-breathe 8s ease-in-out infinite;pointer-events:none}@keyframes room-light-breathe{0%,100%{opacity:.2}50%{opacity:.38}}.room-overview[data-phase=day] .room-layer-lighting:after{background:radial-gradient(ellipse at 50% 25%,#ffe9b326,transparent 55%)}
.room-overview[data-interactive=false]{outline:none}.room-overview[data-interactive=false] .room-scene-controls{display:none}.room-overview[data-interactive=false] .room-plaque:after{display:none}.room-overview[data-interactive=false] .room-pagination{visibility:hidden}.room-overview[data-interactive=false] *,.room-overview[data-visibility=hidden] *{animation-play-state:paused!important}.room-overview[data-interactive=false] .room-layer-lighting:after,.room-overview[data-visibility=hidden] .room-layer-lighting:after{animation-play-state:paused!important}
@container(max-width:260px){.room-overview .room-page-arrow{display:none}.room-scene-counts{gap:4px;font-size:7px}.room-page-dots{gap:2px}.room-overview .room-page-dot{width:8px}.room-plaque{width:27%}.room-seat-label{font-size:5px;padding:1px 2px}.room-activity-label{display:none}}
@media(prefers-reduced-motion:reduce){.room-overview .room-layer-lighting:after{animation:none!important;opacity:.25}.room-overview *, .room-overview *:before,.room-overview *:after{animation:none!important;transition:none!important}}

/* A missing/unsupported room timezone must never look like configured Auto. */
.room-time-warning{position:absolute;z-index:41;right:2.2%;top:25%;max-width:45%;padding:2px 4px;border-radius:3px;background:#172330e8;color:#ffd39b;font-size:9px;line-height:1.3;text-align:right}.room-time-warning[hidden]{display:none!important}

/* Humans always use the same plain mannequin crop; only a bounded palette changes. */
.room-actor[data-visual=human] .room-actor-sprite{filter:var(--human-color-filter,grayscale(1))}
.room-actor[data-human-color=mint]{--human-color-filter:grayscale(1) sepia(1) saturate(2.2) hue-rotate(85deg) brightness(.9)}
.room-actor[data-human-color=blue]{--human-color-filter:grayscale(1) sepia(1) saturate(3) hue-rotate(165deg) brightness(.9)}
.room-actor[data-human-color=rose]{--human-color-filter:grayscale(1) sepia(1) saturate(2.4) hue-rotate(285deg) brightness(.94)}

/* Two real, aligned sprite frames; the short blink never claims agent activity. */
.room-cat-sequence-image{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none;animation:room-cat-eyes-open 3.8s step-end infinite;animation-delay:var(--blink-delay,0s)}
.room-cat-sequence-image[data-pose=blink]{animation-name:room-cat-eyes-blink;visibility:hidden}
@keyframes room-cat-eyes-open{0%,89%,100%{visibility:visible}90%,97%{visibility:hidden}}
@keyframes room-cat-eyes-blink{0%,89%,100%{visibility:hidden}90%,97%{visibility:visible}}
@media(prefers-reduced-motion:reduce){.room-cat-sequence-image[data-pose=open]{visibility:visible!important}.room-cat-sequence-image[data-pose=blink]{visibility:hidden!important}}

.room-actor[data-sprite-breed] .room-actor-sprite{filter:none!important}

.room-cat-rear-image{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none}

/* Themed backgrounds and transient decorative events share the fixed scene frame. */
.room-layer-decorations{z-index:0;pointer-events:none}.room-scene-npc{display:none!important}.room-overview[data-scene-art=themed][data-phase=night] .room-layer-background,.room-overview[data-scene-art=themed][data-phase=night] .room-layer-decorations{filter:brightness(.65) saturate(.8)}
.decoration-themes{margin:8px 0}.decoration-theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.decoration-theme-option{min-width:0;padding:4px;border:1px solid #43516a;border-radius:7px;background:#111c2b;color:inherit;cursor:pointer}.decoration-theme-option img{display:block;width:100%;aspect-ratio:8/3;object-fit:contain;border-radius:3px}.decoration-theme-option span{display:block;font-size:11px;line-height:1.6}.decoration-theme-option[aria-pressed=true]{border-color:#86c8ff;box-shadow:0 0 0 1px #86c8ff}.decoration-theme-option:focus-visible{outline:2px solid #b8e4ff;outline-offset:2px}.decoration-theme-option:disabled{cursor:default;opacity:.7}.decoration-theme-hint{display:block;margin:5px 0;color:#9daec6;font-size:11px}
/* Separate occupancy, room navigation, and connection evidence into bounded lanes. */
.room-scene-footer{position:absolute;left:2.4%;right:2.4%;bottom:1%;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;column-gap:4px;pointer-events:none}
.room-scene-footer .room-scene-counts{position:static;max-width:100%;min-width:0;flex-wrap:wrap;gap:1px 7px}
.room-scene-footer .room-pagination{position:static;transform:none;min-width:0}
.room-connection-summary{min-width:0;text-align:right;font-size:clamp(7px,1.9cqw,10px);line-height:1.2;font-variant-numeric:tabular-nums;color:#b6cada}
.room-online-count{display:block;overflow-wrap:anywhere}.room-scene-footer .room-overflow{position:static;display:block;font-size:inherit}.room-scene-footer .room-overflow[hidden]{display:none!important}
