.world.room-host{width:calc(100% - 64px);max-width:1280px;padding:0 0 25px;min-height:0;text-align:left}.room-heading{display:flex;align-items:flex-end;justify-content:space-between;margin:4px 0 22px;gap:18px}.room-kicker{font-size:9px;letter-spacing:3px;color:#ab9772;margin:0 0 10px}.room-heading h2,.world .room-heading h2{font-size:27px;line-height:1.2;font-weight:400;letter-spacing:5px;margin:0;color:#dbcfb6}.room-tools{display:flex;align-items:center;gap:20px;font-size:10px;letter-spacing:1px;color:#b0a58a}.room-tools button,.room-tools summary{border:0;background:none;color:inherit;font:inherit;padding:7px 0;cursor:inherit;list-style:none}.room-tools summary::-webkit-details-marker{display:none}.room-tools summary:after{content:' +';opacity:.5}.room-tools details[open] summary:after{content:' −'}.hint-switch[aria-pressed=true]{color:#e0bb7b}.room-tools details{position:relative;z-index:9}.layer-controls,.plan-card{position:absolute;right:0;top:35px;width:235px;background:#1c231dec;border:1px solid #a18d603d;box-shadow:0 20px 60px #0008;padding:20px;color:#bfb297;backdrop-filter:blur(18px)}.layer-controls p,.plan-card p{font-size:10px;line-height:1.8;letter-spacing:1px;margin:0 0 12px}.layer-controls button{display:flex;gap:10px;align-items:center;width:100%;padding:10px 0;border-bottom:1px solid #b19c6c22;font-size:11px}.layer-controls i{width:7px;height:7px;border:1px solid #bd9e62;display:block;transform:rotate(45deg)}.layer-controls button[aria-pressed=true] i{background:#bd9e62}.layer-controls button[aria-pressed=false]{opacity:.4}.plan-card{width:380px}.plan-card svg{width:100%;color:#b39c70}.plan-card p{margin:5px 0 0}.room-frame{position:relative;border:1px solid #b7a07236;box-shadow:0 30px 90px #0006;background:#151b15}.room-viewport{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#8b765344 #111810;overscroll-behavior-x:contain}.room-scene{position:relative;width:100%;min-width:900px;aspect-ratio:16/10;isolation:isolate;overflow:hidden;background:#28271f}.scene-layer{position:absolute;inset:0;pointer-events:none;transition:opacity .35s;opacity:1}.scene-layer.layer-off{opacity:0;visibility:hidden}.shell-layer{z-index:0}.shell-layer>img{width:100%;height:100%;object-fit:cover;display:block;filter:brightness(.86) saturate(.8)}.furniture-layer{z-index:2}.room-rug{position:absolute;left:8%;top:72%;width:78%;transform:rotate(-2deg);opacity:.6;filter:drop-shadow(1px 8px 8px #0005)}.room-rug svg{display:block;width:100%}.room-sofa{position:absolute;width:53%;left:5%;top:33%;filter:brightness(.85) saturate(.8) drop-shadow(5px 14px 8px #0008)}.room-table{position:absolute;width:33%;left:48%;top:61%;filter:brightness(.78) saturate(.8) drop-shadow(4px 12px 7px #0008)}.object-layer{z-index:3}.scene-object{position:absolute;border:0;background:none;padding:0;pointer-events:auto;outline-offset:8px;filter:drop-shadow(1px 3px 2px #0006);transform-origin:center 85%;transition:filter .3s}.scene-object>img,.scene-object>svg{display:block;width:100%;height:auto}.object-book{left:52%;top:71%;width:8%;transform:rotate(-7deg)}.object-album{left:65%;top:72%;width:9%;transform:rotate(5deg)}.object-plush{left:36%;top:57%;width:10%;filter:brightness(.85) saturate(.8) drop-shadow(2px 4px 2px #0006)}.scene-object>span{position:absolute;white-space:nowrap;bottom:-22px;left:50%;transform:translateX(-50%) translateY(4px);font-size:10px;letter-spacing:2px;color:#e5d5b1;background:#151b16d9;border:1px solid #c1a47033;padding:6px 10px;opacity:0;transition:.25s;pointer-events:none}.scene-object:hover>span,.scene-object:focus-visible>span,.show-hints .scene-object>span{opacity:1;transform:translateX(-50%) translateY(0)}.scene-object:hover{filter:drop-shadow(0 0 9px #d0b27d66)}.object-plush.plush-awake{animation:plush-wake 1.5s ease-in-out}.light-layer{z-index:4;mix-blend-mode:screen}.hearth-glow{position:absolute;left:48%;top:36%;width:37%;height:50%;background:radial-gradient(ellipse,#d58e2623,transparent 65%);animation:hearth-light 4s ease-in-out infinite alternate}.hearth-fire{position:absolute;left:64%;top:51%;width:6%;height:13%;filter:blur(.4px);opacity:.75}.hearth-fire i{position:absolute;bottom:0;width:38%;height:80%;left:30%;background:linear-gradient(0deg,#ffd58c,#d98726 55%,transparent);clip-path:polygon(40% 100%,4% 76%,22% 46%,45% 3%,52% 39%,76% 26%,96% 78%,65% 100%);transform-origin:center bottom;animation:fire-dance 2.3s ease-in-out infinite alternate}.hearth-fire i:nth-child(2){left:3%;height:55%;animation-delay:-.7s;animation-duration:1.8s}.hearth-fire i:nth-child(3){left:56%;height:65%;animation-delay:-1.2s;animation-duration:2.7s}.hearth-fire b{position:absolute;bottom:-2%;left:10%;width:75%;height:10%;background:#d48633;filter:blur(7px)}.room-edge-shade{position:absolute;inset:0;background:radial-gradient(ellipse at 55% 60%,transparent 30%,#01060166 100%);mix-blend-mode:multiply}.scene-direction{position:absolute;z-index:5;bottom:19px;left:24px;font-size:8px;letter-spacing:3px;color:#c7b494;opacity:.6;pointer-events:none}.view-arrow{position:absolute;z-index:6;top:45%;height:64px;width:34px;color:#d0bd96;background:#101a1466;border:1px solid #b8a17122;font:36px var(--latin);backdrop-filter:blur(4px);transition:.25s}.view-arrow:hover{background:#101a14bb}.previous-view{left:12px}.next-view{right:12px}.room-toast{position:absolute;z-index:8;bottom:46px;left:50%;transform:translate(-50%,6px);max-width:80%;padding:12px 20px;border:1px solid #c7ae7933;background:#152018e8;backdrop-filter:blur(10px);color:#d4c6a5;font-size:11px;letter-spacing:1px;line-height:1.8;opacity:0;pointer-events:none;transition:.3s}.room-toast.is-visible{opacity:1;transform:translate(-50%,0)}.room-caption{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:18px 0 0;color:#a69c85;font-size:9px;letter-spacing:1.5px}.room-caption p{margin:0;line-height:2}.room-caption>span{white-space:nowrap;opacity:.6}.room-caption i{font-style:normal;padding:0 10px}.mobile-pan-note{display:none}.room-reader{width:min(690px,90vw);max-height:85vh;overflow:auto;background:#cfbc93;color:#3e3226;border:5px solid #4e3e29;padding:45px 55px;box-shadow:0 30px 100px #000a;text-align:left}.room-reader::backdrop{background:#07110ad9;backdrop-filter:blur(7px)}.reader-close{position:absolute;right:15px;top:10px;border:0;background:none;color:#50412d;font:28px var(--latin)}.reader-label{font-size:9px;letter-spacing:2px;color:#7d684a}.room-reader h3{font-size:27px;font-weight:400;line-height:1.8;letter-spacing:2px;margin:26px 0 18px;color:#3e3226}.room-reader p{font-size:12px;line-height:2.4;letter-spacing:1px;color:#554a38}.reader-ornament{color:#8e744d;font-size:25px;margin:18px 0}.room-reader .reader-empty{font-size:10px;opacity:.65;margin-top:25px}.reader-back{border:0;border-bottom:1px solid #806a4144;background:none;font-size:11px;color:#6c5637;padding:12px 0;margin-top:15px;letter-spacing:1px}.album-spread{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0}.photo-placeholder{aspect-ratio:4/5;border:8px solid #e6d8b8;background:radial-gradient(ellipse at 60% 30%,#9a9c7c,#4b6257 50%,#263f35);display:flex;align-items:end;justify-content:center;padding:10px;transform:rotate(-4deg);box-shadow:2px 5px 8px #4d351a33}.photo-placeholder+div{transform:rotate(5deg);background:radial-gradient(ellipse at 30% 30%,#b69f79,#716855 50%,#3c493b)}.photo-placeholder span{font-size:8px;color:#e3d6b7;letter-spacing:1px}.room-direct header{height:100px}.room-direct footer{justify-content:center}.room-direct footer a{font-size:10px;letter-spacing:2px;color:#b5a17c}@keyframes plush-wake{0%,100%{transform:rotate(0)}20%{transform:rotate(-8deg) translateY(-3px)}45%{transform:rotate(6deg)}65%{transform:rotate(-3deg)}}@keyframes hearth-light{to{opacity:.5;transform:scale(1.08)}}@keyframes fire-dance{0%{transform:scale(.85,1) skewX(-5deg)}100%{transform:scale(1.1,.7) skewX(6deg)}}
@media(max-width:700px){.world.room-host{width:calc(100% - 28px)}.room-heading{margin:0 0 16px;align-items:center}.room-heading h2,.world .room-heading h2{font-size:23px}.room-kicker{font-size:7px;letter-spacing:1.5px}.room-tools{gap:11px;font-size:8px;letter-spacing:0}.room-tools summary,.room-tools button{padding:8px 0}.room-viewport{max-height:620px}.room-scene{min-width:900px}.room-caption{font-size:8px;align-items:flex-start;gap:10px}.room-caption>span{font-size:7px;letter-spacing:.5px}.mobile-pan-note{display:inline}.scene-direction{left:25px}.plan-card{width:min(350px,87vw)}.layer-controls{width:215px;right:-55px}.view-arrow{width:28px;height:52px}.previous-view{left:7px}.next-view{right:7px}.room-reader{padding:38px 25px}.room-reader h3{font-size:22px}.album-spread{gap:12px}.photo-placeholder{border-width:5px}.room-toast{font-size:10px;padding:10px 12px;max-width:85%;width:max-content}.room-direct header{height:90px}.room-direct header .utility{font-size:9px}}
@media(prefers-reduced-motion:reduce){.hearth-fire i,.hearth-glow,.object-plush.plush-awake{animation:none}}
/* Align living details with the composited furniture and the actual hearth. */
.hearth-fire{top:43%;left:63.5%;width:5%;height:10%;opacity:.42;filter:blur(1.2px)}
.object-plush{top:48.5%}.object-book{top:68.5%}.object-album{top:69.5%}

/* Frontal composition: the fixed scene and its contact shadows share a render. */
.frontal-room{aspect-ratio:1672/941;background:#25241d}
.lighting-plates{z-index:0}
.lighting-plate{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill;opacity:0;transition:opacity .65s ease;pointer-events:none;user-select:none}
.lighting-plate.is-active{opacity:1}
.frontal-room .object-layer{z-index:3}
.frontal-room .scene-object{height:8.5%;filter:none;transform:none;background:none;border-radius:8px}
.frontal-room .object-book{left:44.5%;top:70%;width:11%}
.frontal-room .object-album{left:56.5%;top:69.7%;width:13.5%}
.frontal-room .object-plush{left:19.6%;top:51.8%;width:7.4%;height:12%;animation:none}
.frontal-room .scene-object:hover{filter:none;background:radial-gradient(ellipse,#f5dfac0d,transparent 65%)}
.frontal-room .scene-object:focus-visible{outline:1px solid #e0c990;outline-offset:2px}
.frontal-room .object-plush.plush-awake:after{content:'嗯？';position:absolute;top:-18px;right:-24px;padding:5px 9px;background:#eee1c7e8;color:#51412e;border-radius:12px 12px 12px 2px;font-size:10px;letter-spacing:1px;animation:toy-whisper 1.8s both;pointer-events:none}
.candle-zones{z-index:2}
.candle-zone{position:absolute;pointer-events:auto;border:0;border-radius:12px;background:none;padding:0}
.sconce-zone{left:8.5%;top:13.5%;width:7.5%;height:18%}
.mantel-left-zone{left:63.2%;top:12%;width:6.2%;height:18%}
.mantel-right-zone{left:88.5%;top:12%;width:6%;height:18%}
.candle-zone>span{position:absolute;bottom:-21px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#182019eb;border:1px solid #c1a47044;color:#e4d4b1;padding:5px 8px;font-size:9px;letter-spacing:1px;opacity:0;pointer-events:none;transition:.25s}
.candle-zone:hover>span,.candle-zone:focus-visible>span,.show-hints .candle-zone>span{opacity:1}

.room-tools .candle-cycle{color:#c5ab7a;white-space:nowrap;padding:6px 9px;border:1px solid #b39b6233;border-radius:2px}
.room-tools{gap:17px}
@keyframes toy-whisper{0%{opacity:0;transform:translateY(4px)}15%,75%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-3px)}}
@media(max-width:700px){.room-heading{align-items:flex-start;gap:10px;flex-wrap:wrap}.room-tools{gap:13px;flex-wrap:wrap}.room-tools .candle-cycle{font-size:9px;padding:5px 7px}.frontal-room{min-width:900px}.frontal-room .scene-object>span{font-size:9px}.candle-zone>span{font-size:9px}.room-caption p{max-width:70%}}
@media(prefers-reduced-motion:reduce){.lighting-plate{transition:none}.frontal-room .object-plush.plush-awake:after{animation-duration:.01ms}}

/* Light is painted from the matched room renders, independently per sconce. */
.candle-patch{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:0;transition:opacity .65s ease;pointer-events:none;user-select:none}
.candle-patch.is-active{opacity:1}
.patch-wall{mask-image:radial-gradient(ellipse 17% 34% at 12% 24%,#000 38%,#000b 58%,transparent 100%)}
.patch-left{mask-image:radial-gradient(ellipse 13% 32% at 66% 21%,#000 32%,#000b 58%,transparent 100%)}
.patch-right{mask-image:radial-gradient(ellipse 12% 32% at 92% 21%,#000 32%,#000b 58%,transparent 100%)}
.frontal-room .scene-object>span,.candle-zone>span{display:none}
.frontal-room .scene-object:hover{background:none}
.explore-contours{mix-blend-mode:screen;position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;overflow:visible}
.explore-contours .hint-light{opacity:0;filter:brightness(1.4) saturate(.85) blur(.7px);transition:opacity .8s ease}
.explore-contours .hint-light.is-hovered{opacity:.16}
.hint-reveal .explore-contours .hint-light{animation:explore-breath 2.3s ease both}
.hint-reveal .explore-contours .hint-light:nth-child(2n){animation-delay:.12s}
.hint-reveal .explore-contours .hint-light:nth-child(3n){animation-delay:.23s}
@keyframes explore-breath{0%,100%{opacity:0}35%{opacity:.32}60%{opacity:.2}}
.candle-zone:focus-visible{outline:1px solid #d7c69d99;outline-offset:5px}
.bear-stage{z-index:1;visibility:hidden;pointer-events:none}
.bear-stage.is-playing{visibility:visible}
.bear-stage.is-playing~.explore-contours [data-hint="plush"]{opacity:0;animation:none}
.bear-stage>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.bear-clean{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;mask-image:radial-gradient(ellipse 6% 10% at 23.4% 58%,#000 72%,transparent 100%)}
@media(prefers-reduced-motion:reduce){.candle-patch,.explore-contours .hint-light{transition:none}.hint-reveal .explore-contours .hint-light{animation-duration:.8s}}

/* Continuous photographed animation: no individual limb cutouts. */
.bear-stage{opacity:0;visibility:hidden;transition:opacity .22s ease,visibility 0s linear .22s}
.bear-stage.is-playing{opacity:1;visibility:visible;transition:opacity .22s ease}
.bear-source{display:none}
.bear-film{position:absolute;left:18.3014%;top:48.2465%;width:11.0048%;height:18.7035%;mask-image:radial-gradient(ellipse 64% 65% at 50% 52%,#000 64%,#000c 79%,transparent 100%)}

/* A quiet narrator, anchored to the visible scene rather than the panning wall. */
.room-subtitle{position:absolute;z-index:7;bottom:25px;left:8%;width:84%;margin:0;text-align:center;color:#f0e6d2;font-size:14px;font-weight:400;line-height:1.9;letter-spacing:1.8px;text-shadow:0 1px 3px #080c08,0 2px 10px #000,0 0 18px #0009;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .6s ease,transform .6s ease;isolation:isolate}
.room-subtitle::before{content:'';position:absolute;z-index:-1;inset:-16px -24px -18px;background:radial-gradient(ellipse,#080d087a,transparent 72%);filter:blur(8px)}
.room-subtitle.is-visible{opacity:1;transform:translateY(0)}
@media(max-width:700px){.room-subtitle{left:7%;width:86%;bottom:23px;font-size:12px;line-height:1.9;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){.room-subtitle{transition:none;transform:none}}

/* The adjacent wall shares one calibrated light plate; hit areas remain independent. */
.window-room{aspect-ratio:1672/941;background:#25241d}
.window-room .lighting-plates{z-index:0}
.window-room .object-layer{z-index:3}
.window-room .scene-object{transform:none;filter:none;border-radius:6px}
.window-room .scene-object>span{display:none}
.window-room .scene-object:hover{filter:none;background:none}
.window-room .window-journal{left:38%;top:55.3%;width:10%;height:4.6%}
.window-room .window-shelf{left:73.7%;top:12.6%;width:21.5%;height:66%}
.window-room .window-view{left:29%;top:5%;width:20.5%;height:42%}
.window-room .window-owl{left:24.2%;top:37.4%;width:5.1%;height:12.1%}
.window-room .scene-object:focus-visible{outline:1px solid #e0c99099;outline-offset:3px}
@media(max-width:700px){.window-room{min-width:900px}}
@media(max-width:700px){.room-caption .view-progress{display:none}.room-caption p{max-width:none;flex:1;font-size:9px}.room-caption>span{font-size:9px}}

.extra-room{aspect-ratio:1672/941;background:#25241d}
.extra-room .lighting-plates{z-index:0}
.extra-room .object-layer{z-index:3}
.extra-room .scene-object{transform:none;filter:none;border-radius:6px}
.extra-room .scene-object:hover{filter:none;background:none}
.extra-room .scene-object:focus-visible{outline:1px solid #e0c99099;outline-offset:3px}
@media(max-width:700px){.extra-room{min-width:900px}}

/* A square room, drawn as an ink-and-watercolour page from a field notebook. */
.room-plan .plan-card{width:min(550px,calc(100vw - 40px),calc((100dvh - 200px)*.94));max-height:calc(100dvh - 150px);overflow:auto;overscroll-behavior:contain;padding:16px 18px 13px;background-color:#e2d2b2;background-image:radial-gradient(ellipse at 19% 16%,#fff8e65c,transparent 66%),radial-gradient(ellipse at 91% 89%,#ab835c25,transparent 50%),repeating-linear-gradient(13deg,#96744906 0px,#96744906 1px,transparent 1px,transparent 4px);color:#68533c;border:1px solid #96764d99;border-radius:2px;box-shadow:0 18px 60px #0007,inset 0 0 35px #9b76451a;backdrop-filter:none}
.plan-card .drawn-plan{display:block;width:100%;height:auto;color:#68533c}
.drawn-plan text{font-family:'Kaiti SC','STKaiti','KaiTi','Songti SC',serif;fill:#68533c;letter-spacing:1px}
.drawn-plan .plan-title{font-size:25px;letter-spacing:3px}
.drawn-plan .plan-small{font-size:11px;letter-spacing:1px;opacity:.65}
.drawn-plan .plan-current{font-size:14px;fill:#976f3d}
.drawn-plan .plan-labels{font-size:18px;letter-spacing:3px}
.drawn-plan .plan-furniture-labels{font-size:12px;opacity:.75}
.plan-wall-accent{fill:none;stroke:#a87a42;stroke-width:5;stroke-linecap:round;opacity:0;transition:opacity .5s}
.room-host[data-view=hearth] .plan-zone-hearth,.room-host[data-view=window] .plan-zone-window,.room-host[data-view=collection] .plan-zone-collection,.room-host[data-view=door] .plan-zone-door{opacity:.5}
.room-plan .plan-card>p{font-size:10px;letter-spacing:.5px;line-height:1.9;color:#816d50;border-top:1px solid #95744d29;padding-top:10px;margin-top:8px}
@media(max-width:700px){.room-plan .plan-card{padding:10px 10px 12px;right:0}.room-plan .plan-card>p{font-size:10px;padding:9px 5px 0}}

/* Local scene plates include the pet, compressed fabric and physical shadows. */
.hearth-pets{z-index:2;pointer-events:none}
.pet-photo-plate{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cat-figure{transition:filter .7s ease}
.cat-tail-patch{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;mask-image:radial-gradient(ellipse 5% 3.6% at 27.5% 82.5%,#000 50%,transparent 100%);pointer-events:none}
.pet-hit{position:absolute;background:none;border:0;padding:0;border-radius:45%;pointer-events:auto}
.pet-bed-hit{left:77%;top:77%;width:21%;height:15%;z-index:1}
.cat-hit{z-index:2}
.pet-hit:focus-visible{outline:1px solid #dfcea570;outline-offset:4px}
.hearth-pets.pet-hover .cat-figure:not([hidden]){filter:brightness(1.07)}
.hint-reveal .hearth-pets .cat-figure:not([hidden]){animation:pet-hint-breath 2.3s ease both}
@keyframes pet-hint-breath{0%,100%{filter:brightness(1)}40%{filter:brightness(1.12)}65%{filter:brightness(1.06)}}
@media(prefers-reduced-motion:reduce){.cat-figure{transition:none}.hint-reveal .hearth-pets .cat-figure:not([hidden]){animation:none}}

/* A photograph patch must not brighten its rectangular surroundings on hover. */
.hearth-pets.pet-hover .cat-scene-patch:not([hidden]){filter:none}
.hint-reveal .hearth-pets .cat-scene-patch:not([hidden]){animation:none}

/* Continuous full-body motion, softly blended back into the same sofa/floor plane. */
.cat-motion-stage{position:absolute;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .32s ease,visibility 0s linear .32s;mask-image:linear-gradient(to right,transparent,#000 3%,#000 97%,transparent),linear-gradient(to bottom,transparent,#000 5%,#000 94%,transparent);mask-composite:intersect}
.cat-motion-stage.is-playing{opacity:1;visibility:visible;transition:opacity .2s ease}
.cat-motion-stage canvas{display:block;width:100%;height:100%}
.cat-motion-source{display:none}
.hearth-pets[data-cat-action] .cat-hit{cursor:progress}
@media(prefers-reduced-motion:reduce){.cat-motion-stage{transition:none}}

/* Keep the resting tail on the exact first motion frame; it never fades back to a different still. */
.hearth-pets[data-cat-state="tail"] .cat-motion-tail.is-ready{opacity:1;visibility:visible;transition:opacity .35s ease}
