.room-heading{padding:20px 25px;display:flex;justify-content:space-between;align-items:center;background:#fff9f4}.room-heading .eyebrow{margin:0 0 7px}.room-heading h2{font-size:30px}.room-heading button{margin-left:15px}#cinema{height:auto;max-height:none;overflow-x:auto}#cinema-inner{min-width:760px;line-height:normal;width:100%;isolation:isolate}#room-image{width:100%;aspect-ratio:1672/941;object-fit:cover}#tv-surface{position:absolute;top:0;left:0;width:320px;height:180px;transform-origin:0 0;background:#080808;overflow:hidden;z-index:1;pointer-events:none}#room-tv{width:100%;height:100%;object-fit:contain;display:block}#tv-fallback{position:absolute;inset:0;display:grid;place-items:center;color:#f1d6e9;background:radial-gradient(ellipse,#81547d,#24192b);font:italic 33px Georgia}#board-surface{position:absolute;background:#242322;color:#f5e9ea;display:grid;place-items:center;border:0;padding:3px;z-index:1;font:italic clamp(10px,1.4vw,21px)/1.3 Georgia;text-align:center;overflow:hidden;border-radius:3px}#board-message{white-space:pre-line;overflow-wrap:anywhere}.spot-dot{background:radial-gradient(circle,#fff3fb 5%,#edb7d7a8 60%,#e5a0c844);color:#70425e;border:1px solid #fff7;box-shadow:0 0 13px 9px #f7b8df85,0 0 32px 18px #ffbadc50;position:relative;animation:cloud-glow 5s ease-in-out infinite}.spot-dot:before,.spot-dot:after{content:'✦';position:absolute;color:#fff4fc;font-size:12px;text-shadow:0 0 7px #fff;animation:twinkle 4s ease-in-out infinite}.spot-dot:before{left:-13px;top:-10px}.spot-dot:after{right:-12px;bottom:-9px;font-size:9px;animation-delay:2s}.hotspot:nth-child(2n) .spot-dot{animation-delay:1.5s}.spot-label{opacity:1;transform:none;background:#fff7f1eb;border-color:#e5b7d0;color:#603e53}.hotspot{z-index:3}.room-tools{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:center;padding:17px 20px;border-top:1px solid #e7d7df;background:#fff9f5}.room-tools button,.room-tools a{background:transparent;border:0;border-bottom:1px solid #c8a2bb;font-size:11px;padding:9px 4px}.room-tools #joy-button{background:#79516e;color:white;border:0;border-radius:30px;padding:12px 20px}.room-description{padding:5px 25px 0;font-size:13px;line-height:1.8;color:#725967;max-width:850px}.room-creations{display:flex;gap:12px;padding:15px 25px 25px;overflow-x:auto}.room-creation{width:150px;flex:0 0 150px;background:#fffaf5;border:1px solid #e2cfda;border-radius:9px;overflow:hidden;text-align:left;padding:0}.room-creation img{display:block;width:100%;height:105px;object-fit:contain;background:#fffaf7}.room-creation span{display:block;padding:11px;font-size:11px;line-height:1.5}.gift-counter{max-width:1180px;margin:70px auto;padding:40px;background:#f5e8ee;border:1px solid #e5cfdc;border-radius:14px}.gift-counter h2{font-size:36px}.gift-counter>p{font-size:13px;line-height:1.8;max-width:700px}.free-downloads article{margin-top:25px;display:flow-root}.free-downloads img{width:240px;max-width:100%;float:left;margin:0 30px 15px 0;box-shadow:0 8px 24px #7b4f691c}.free-downloads h3{padding-top:20px;font-size:27px}.free-downloads p{font-size:12px;line-height:1.9;max-width:800px}.free-downloads a{margin:12px 8px 10px 0;display:inline-block}.served-cup{height:92px;width:70px;border:3px solid #fef6f9;border-radius:8px 8px 19px 19px;margin:0 auto 24px;background:linear-gradient(90deg,#a8ddd7,#eef4ee,#b5d9d3);position:relative;box-shadow:0 12px 0 -3px #edbad8,0 15px 0 -3px #ba8c66}.served-cup:before{content:'';position:absolute;left:-6px;top:-5px;width:76px;height:10px;border:2px solid white;border-radius:50%;background:#f9eaf580}.served-cup span{position:absolute;top:-31px;left:26px;color:#d788ae;font-size:24px}.served-cup i{display:block;margin-top:25px;font:italic 15px Georgia;color:#6d4960}.joy-card{padding:20px 12px;border:1px solid #c5a385;background:#fff9f2cc;border-radius:5px;animation:serve-card .6s ease-out}.joy-card small{display:block;font-size:10px;margin-top:20px;color:#88647a}#joy-dialog h2{font-size:32px}.joy-actions{display:flex;justify-content:center;gap:10px;margin-top:17px}#board-dialog{text-align:center;padding:55px 35px;background:#282725;color:#fff3f4;max-width:600px;border:8px ridge #bea4a3}#board-dialog h2{font:italic 34px/1.5 Georgia;white-space:pre-line;overflow-wrap:anywhere}#board-dialog .eyebrow,#board-dialog p{color:#dfb9cd}#board-dialog:before,#board-dialog:after{content:'❀ ♡ ❀';display:block;color:#d49dbb;letter-spacing:12px;margin:12px}.scene-caption button{min-height:40px}
@keyframes cloud-glow{0%,100%{box-shadow:0 0 13px 9px #f7b8df85,0 0 32px 18px #ffbadc50}50%{box-shadow:0 0 18px 11px #f7b8df95,0 0 38px 21px #ffbadc65}}@keyframes twinkle{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:.95;transform:scale(1.15)}}@keyframes serve-card{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media(max-width:1250px){.gift-counter{margin-left:6%;margin-right:6%}}@media(max-width:700px){.room-heading{padding:17px}.room-heading h2{font-size:24px}.room-heading .eyebrow{font-size:8px}.spot-label{font-size:9px;padding:6px 8px}.room-creations{padding:10px 16px 20px}.room-description{padding:5px 17px 0;font-size:12px}.gift-counter{padding:25px}.gift-counter h2{font-size:28px}.free-downloads img{width:175px}.room-tools{gap:10px}.scene-caption{gap:10px}#board-surface{font-size:11px}}@media(max-width:450px){.free-downloads img{float:none;width:100%;max-width:240px;margin:0}.free-downloads h3{padding-top:5px}.room-heading .secondary-button{font-size:10px;padding:10px}.joy-actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}
/* Quiet ambient movement, anchored to the original room coordinates. */
#ambient-effects,#bitsy-motion{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#bitsy-motion{z-index:0}#ambient-effects{z-index:1;overflow:hidden}.coffee-steam{position:absolute;transform:translate(-50%,-100%);pointer-events:none}.coffee-steam i{position:absolute;bottom:0;left:30%;width:35%;height:48%;border-left:2px solid #fff9;border-radius:50%;filter:blur(2px);opacity:0;animation:coffee-drift 6.5s ease-out infinite;animation-delay:var(--delay)}.fire-shimmer{position:absolute;left:79.7%;top:48.8%;width:16.9%;height:7.9%;clip-path:polygon(0 0,100% 22%,100% 100%,0 73%);overflow:hidden;mix-blend-mode:screen;opacity:.34}.fire-shimmer i{position:absolute;bottom:18%;width:4%;height:var(--height);transform-origin:50% 100%;background:radial-gradient(ellipse at bottom,#fff6ce 0,var(--flame) 28%,transparent 72%);border-radius:55% 45% 30% 30%;filter:blur(1.5px);animation:gentle-flame var(--duration) ease-in-out infinite alternate;animation-delay:var(--delay)}.fire-shimmer i:nth-child(n+12){bottom:7%}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}#motion-toggle{font-weight:600;min-height:44px}@keyframes coffee-drift{0%{opacity:0;transform:translate(0,0) scale(.6)}20%{opacity:.24}65%{opacity:.16}100%{opacity:0;transform:translate(var(--drift),-65%) scale(1.5)}}@keyframes gentle-flame{0%{transform:scale(.85,.8) skewX(-4deg);opacity:.5}45%{transform:scale(1,1.08) skewX(2deg);opacity:.85}100%{transform:scale(.9,.92) skewX(-1deg);opacity:.65}}@media(prefers-reduced-motion:reduce){#ambient-effects,#bitsy-motion{display:none!important}}

.scene-viewport{position:relative}#mobile-scene-hint{display:none;position:absolute;bottom:12px;left:12px;z-index:4;max-width:245px;width:calc(100% - 32px);padding:11px 14px;border:1px solid #e3bdd3;border-radius:10px;background:#fff8f4ed;color:#654159;box-shadow:0 3px 15px #57334822;pointer-events:none;line-height:1.5}#mobile-scene-hint strong{display:block;font-size:11px;font-weight:600}#mobile-scene-hint span{display:block;font-size:10px;margin-top:3px}@media(max-width:800px){#mobile-scene-hint{display:block}}

/* More readable motion on compact displays; shelf centers stay clear. */
.coffee-steam i{border-left:2.5px solid #fff;filter:blur(.9px);animation-duration:5.5s;width:45%;height:55%;filter:drop-shadow(0 0 2px #ffffff99) blur(.9px)}
.fire-shimmer{opacity:.62}.fire-shimmer i{filter:blur(.8px)}
@keyframes coffee-drift{0%{opacity:0;transform:translate(0,0) scale(.65)}18%{opacity:.6}58%{opacity:.42}100%{opacity:0;transform:translate(var(--drift),-95%) scale(1.55)}}
@keyframes gentle-flame{0%{transform:scale(.8,.62) skewX(-7deg);opacity:.5}45%{transform:scale(1.1,1.22) skewX(5deg);opacity:.95}100%{transform:scale(.9,.85) skewX(-2deg);opacity:.7}}
.cubby-led{position:absolute;display:block;pointer-events:none;border-radius:3px;mix-blend-mode:screen;filter:blur(1px);animation:cubby-hues 7.5s ease-in-out infinite;animation-delay:var(--led-delay);box-shadow:inset 0 0 12px 3px #fff5eaa6,inset 0 -3px 6px #fff7e7cc;opacity:.8}.cubby-led.arched{border-radius:42% 42% 3px 3px}
@keyframes cubby-hues{0%,100%{box-shadow:inset 0 0 12px 3px #fff5eaa6,inset 0 -3px 6px #fff7e7cc}33%{box-shadow:inset 0 0 15px 4px #ff85cbcc,inset 0 -3px 7px #ffb2dded}66%{box-shadow:inset 0 0 15px 4px #55e4e2cc,inset 0 -3px 7px #b2fffaed}}

/* Fitted cafe niches: retain the dark product silhouettes and soften LED spill. */
.cubby-led.fitted{opacity:.78;filter:blur(.6px);clip-path:inset(0 round 2px);animation-name:fitted-cubby-hues}.cubby-led.fitted.arched{border-radius:45% 45% 2px 2px;clip-path:inset(0 round 45% 45% 2px 2px)}
@keyframes fitted-cubby-hues{0%,100%{box-shadow:inset 0 5px 8px -3px #fff9ebc9,inset 0 -4px 6px -3px #fff9ebba}33%{box-shadow:inset 0 5px 9px -3px #ff9dd9df,inset 0 -4px 7px -3px #ff9dd9cc}66%{box-shadow:inset 0 5px 9px -3px #76e9e7df,inset 0 -4px 7px -3px #76e9e7cc}}
/* Patio: low-opacity light on the photographed surfaces, never solid bars. */
.patio-opal,.patio-water-thread,.patio-water-pool,.patio-planter-warmth,.patio-twinkle{position:absolute;pointer-events:none;mix-blend-mode:screen}
.patio-opal{background:linear-gradient(125deg,#c9bdfb26,#b7eee61c,#f8c8df26);animation:patio-opalescence 12s ease-in-out infinite;mask-image:linear-gradient(to bottom,#000,transparent 29%,transparent 65%,#000)}
.patio-water-thread{background:linear-gradient(transparent 0%,#fff7df70 38%,transparent 62%);background-size:100% 220%;animation:patio-water var(--duration) linear infinite;animation-delay:var(--delay);opacity:.32}
.patio-water-pool{background:radial-gradient(ellipse,#e4eaff65,transparent 70%);animation:patio-ripple 6s ease-in-out infinite}
.patio-planter-warmth{background:radial-gradient(ellipse at bottom,#ffe3a633,transparent 70%);animation:patio-ripple 9s ease-in-out infinite}
.patio-twinkle{border-radius:50%;background:#fff6db;box-shadow:0 0 5px 2px #ffe6b888;animation:patio-crystal var(--duration) ease-in-out infinite;animation-delay:var(--delay)}
.patio-fire{opacity:.6}.patio-fire-light{background:radial-gradient(ellipse,#ffdb8730,transparent 70%);opacity:.35}
@keyframes patio-water{from{background-position:0 190%}to{background-position:0 -110%}}
@keyframes patio-opalescence{0%,100%{opacity:.35}40%{opacity:.85;filter:hue-rotate(28deg)}75%{opacity:.6;filter:hue-rotate(-25deg)}}
@keyframes patio-ripple{0%,100%{opacity:.4}50%{opacity:.8}}
@keyframes patio-crystal{0%,60%,100%{opacity:.15}74%{opacity:.85}86%{opacity:.3}}
@media(prefers-reduced-motion:reduce){.patio-opal,.patio-water-thread,.patio-water-pool,.patio-planter-warmth,.patio-twinkle{animation:none!important}}

/* Veranda depth: branch sparkle, falling water, shoreline windows and a soft breeze. */
.patio-water-fall,.patio-pool-ring,.patio-distant-window,.patio-foliage{position:absolute;pointer-events:none}
.patio-water-thread{opacity:.64;background:linear-gradient(180deg,transparent 5%,#fff5df95 23%,transparent 38%,#dcf8ff85 60%,transparent 78%);background-size:100% 190%}
.patio-water-fall{mix-blend-mode:screen;background:linear-gradient(180deg,transparent,#fff5d9bb 48%,transparent 72%);background-size:100% 210%;animation:patio-water var(--duration) linear infinite;animation-delay:var(--delay)}
.patio-water-pool{background:repeating-radial-gradient(ellipse at 50% 30%,#dbf5ff70 0 1px,transparent 2px 5px);animation:patio-pool-shimmer 3.7s ease-in-out infinite}
.patio-pool-ring{border:1px solid #e5f4ffb0;border-radius:50%;mix-blend-mode:screen;animation:patio-ring var(--duration) ease-out infinite;animation-delay:var(--delay)}
.patio-twinkle{background:#fffbe6;box-shadow:0 0 3px 1px #fff6de,0 0 9px 3px #ffdfa7bb;animation-name:patio-branch-sparkle}
.patio-star::after{content:'';position:absolute;inset:-3px;background:linear-gradient(transparent 40%,#fff7dd 48% 52%,transparent 60%),linear-gradient(90deg,transparent 40%,#fff7dd 48% 52%,transparent 60%);opacity:.65}
.patio-distant-window{background:#ffe7ac;border-radius:1px;box-shadow:0 0 3px 1px #ffd68c99;mix-blend-mode:screen;animation:patio-window-life var(--duration) linear infinite;animation-delay:var(--delay)}
.patio-foliage{background-repeat:no-repeat;mask-image:radial-gradient(ellipse at 50% 46%,#000 12%,#000b 43%,transparent 70%);transform-origin:50% 95%;animation:patio-breeze var(--duration) ease-in-out infinite;animation-delay:var(--delay)}
@keyframes patio-branch-sparkle{0%,100%{opacity:.18;transform:scale(.7)}27%{opacity:.6;transform:scale(1)}48%{opacity:1;transform:scale(1.45)}70%{opacity:.35;transform:scale(.85)}85%{opacity:.8;transform:scale(1.13)}}
@keyframes patio-window-life{0%,17%,81%,100%{opacity:.03}22%,38%{opacity:.9}44%,62%{opacity:.28}68%,75%{opacity:.75}}
@keyframes patio-breeze{0%,100%{transform:rotate(-.16deg) translateX(-.45px)}50%{transform:rotate(.2deg) translateX(.65px)}}
@keyframes patio-pool-shimmer{0%,100%{opacity:.4;transform:scaleX(.98)}50%{opacity:.9;transform:scaleX(1.015)}}
@keyframes patio-ring{0%{opacity:0;transform:scale(.4,.5)}25%{opacity:.65}100%{opacity:0;transform:scale(1.6,1.25)}}
@media(prefers-reduced-motion:reduce){.patio-water-fall,.patio-pool-ring,.patio-distant-window,.patio-foliage{animation:none!important}}

/* Transparent doll silhouette occludes the whole water stack at every scene size. */
.patio-water-behind-bitsy{position:absolute;inset:0;pointer-events:none;mask-image:url("assets/rooms/patio-water-occlusion.svg");mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:url("assets/rooms/patio-water-occlusion.svg");-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}
