/* Overcast daylight: a changed exterior, diffuse window bounce and local warm materials. */
.room-rain-art,.rain-room-shade{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity 1.4s}
.room-rain-art{z-index:0;background:url(assets/room-rain-v1.png) center/100% 100%}
.close-view .room-rain-art{background-image:url(assets/sofa-rain-v1.png)}
.app.rainy:not(.night) .room-rain-art{opacity:1}
.rain-room-shade{z-index:2;mix-blend-mode:multiply;background:radial-gradient(ellipse 58% 57% at 57% 18%,#dce6e5,transparent 95%),linear-gradient(120deg,#b9c7cf5e 0%,#c5d1d540 38%,#e8d1ae18 75%),linear-gradient(0deg,#949ba333,transparent 48%)}
.app.rainy:not(.night) .rain-room-shade{opacity:.18}
.app.rainy:not(.night) .room-art{filter:none}
.app.rainy:not(.night) .daylight{opacity:0}
.app.rainy:not(.night) .ambient-light{opacity:.44;background:radial-gradient(ellipse 55% 56% at 55% 13%,#e2edf03b,transparent 90%),linear-gradient(120deg,#aab9c744,transparent 65%)}
.app.rainy:not(.night) .lamp-glow{opacity:.2;background:radial-gradient(ellipse 18% 22% at 91% 39%,#ffe2a32b,transparent 90%)}
.app.rainy:not(.night).close-view .lamp-glow{background:radial-gradient(ellipse 20% 22% at 98% 44%,#ffe2a32b,transparent 90%)}
.app.rainy:not(.night) .rain{background:linear-gradient(115deg,#e4edf016,#dbe7e92e 54%,#8ca2ac12);opacity:.82}
.app .rain::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(101deg,transparent 0 55px,#e0eced20 56px,transparent 58px 115px);opacity:.6}
.app .rain i{width:1px;height:30px;background:linear-gradient(transparent,#ecf4f2b0,transparent);box-shadow:none}
.rain-bead{position:absolute;width:3px;height:8px;border-radius:50% 50% 45% 45%;border-left:1px solid #f0f7f59c;box-shadow:1px 1px 1px #4e6c7738;animation:glassSlide 10s ease-in infinite}
@keyframes glassSlide{0%,20%{transform:translateY(0);opacity:.3}70%{opacity:.7}100%{transform:translateY(85px);opacity:0}}
/* No CSS raster rotation, scaling or color filter on the character, in any weather. */
.app .character,.app .character.touched,.app.close-view .character,.app.close-view .character.touched,.app.night .character,.app.rainy .character,.app.night.rainy .character{animation:none;filter:none;transform:translateX(-50%);transition:none}
/* Keep the crossed legs on the painted seat plane. Size follows the chair's
   width, rather than the viewport height, so tall phones cannot enlarge him
   beyond the armrests. The sock contact is 85.4% down the shared rig canvas. */
.room{container-type:size}
.app.close-view.crossleg-pose .character{left:47.5%;width:42%;height:auto;top:calc(62% - var(--rig-seat-offset,53.8cqw));bottom:auto;aspect-ratio:2/3;max-height:none}
.app.close-view.crossleg-pose .seat-contact{left:31%;top:60.4%;width:33%;height:2.5%;filter:blur(2px);background:radial-gradient(ellipse at 50% 46%,#343b264f 0%,#35402733 42%,#35402700 75%);transform:rotate(6deg)}
.app.close-view.crossleg-pose .seat-contact::after{content:'';position:absolute;left:27%;top:25%;width:49%;height:90%;border-radius:50%;background:radial-gradient(ellipse,#29332352,transparent 72%)}
.app.night.close-view.crossleg-pose .seat-contact{background:radial-gradient(ellipse at 50% 46%,#101a2b80,#14203245 45%,transparent 75%)}
/* Tucked reading pose: the lowest sock edge rests on the seat, at every
   viewport aspect ratio. The slightly turned torso sits into the backrest. */
.app.close-view.reading-pose .character{left:51%;width:42%;height:auto;top:calc(61.5% - var(--rig-seat-offset,54.3cqw));bottom:auto;aspect-ratio:2/3;max-height:none}
.app.close-view.reading-pose .seat-contact{left:32%;top:59.6%;width:32%;height:2.3%;filter:blur(2px);background:radial-gradient(ellipse,#343b2659,#35402725 48%,transparent 75%);transform:rotate(6deg)}
.app.night.close-view.reading-pose .seat-contact{background:radial-gradient(ellipse,#101a2b80,#14203245 45%,transparent 75%)}
/* Relaxed slight side sitting: hips, rather than dangling shoes, meet the cushion. */
.app.close-view.seated-pose .character{left:52%;width:42%;height:auto;top:calc(58.5% - var(--rig-hip-offset,46.4cqw));bottom:auto;aspect-ratio:2/3;max-height:none}
.app.close-view.seated-pose .seat-contact{left:41%;top:57.9%;width:21%;height:2.2%;filter:blur(2px);background:radial-gradient(ellipse,#343b2659,#35402725 48%,transparent 75%);transform:rotate(6deg)}
.app.night.close-view.seated-pose .seat-contact{background:radial-gradient(ellipse,#101a2b80,#14203245 45%,transparent 75%)}
@media(prefers-reduced-motion:reduce){.rain-bead{animation:none}.room-rain-art,.rain-room-shade{transition:none}}
