/* Parquet first; furniture settles over a loose blue painted backdrop. */
.manifesto-stage{isolation:isolate}
.manifesto-stage .manifesto-message{z-index:3;text-shadow:0 1px 16px #f2f1ef70}
.manifesto-stage .manifesto-label{z-index:5}
.manifesto-message[data-message="first"] .char{text-shadow:0 0 2px #f2f1ef,0 0 6px #f2f1ef,0 0 10px #f2f1ef}
.manifesto-stage .study-plan{z-index:1;width:62vw;height:54svh;right:0;bottom:0;opacity:0;overflow:hidden;transform:none;transition:opacity .2s;contain:paint;background:none;mix-blend-mode:normal;pointer-events:none;mask-image:linear-gradient(to right,transparent,#000 13%),linear-gradient(to bottom,transparent,#000 16%);mask-composite:intersect;-webkit-mask-image:linear-gradient(to right,transparent,#000 13%),linear-gradient(to bottom,transparent,#000 16%);-webkit-mask-composite:source-in}
.manifesto-stage .study-plan.is-drawing{opacity:1;transform:none;transition-delay:0s}
.study-plan .reference-plan{display:block;width:100%;height:100%;overflow:hidden;filter:none!important;shape-rendering:geometricPrecision}
.study-plan .reference-plan .plan-stroke{fill:none;stroke:#65615b;stroke-width:.8;stroke-linejoin:round;stroke-linecap:round;vector-effect:none;stroke-dasharray:1;stroke-dashoffset:1;opacity:.74}
.study-plan .reference-plan .plan-primary{stroke:#34322e;stroke-width:2.2;opacity:.95}
.study-plan.is-drawing .plan-stroke{animation:plan-line-draw var(--draw-duration) linear var(--draw-delay) both}
@keyframes plan-line-draw{to{stroke-dashoffset:0}}
.manifesto-stage .manifesto-message.second{top:23%}
.manifesto-stage .room-study{position:absolute;inset:0;width:100%;height:100%;z-index:6;pointer-events:none;contain:paint;opacity:0;transform:none;transition:opacity .3s;transition-delay:0s}
.manifesto-stage .room-study.is-drawing{opacity:1;transform:none;transition-delay:0s}
.salon-stage{position:absolute;width:min(96vw,132svh,1520px);aspect-ratio:3/2;left:50%;bottom:-7svh;transform:translateX(-50%)}
.salon-item{position:absolute;opacity:0;transform-origin:50% 90%;pointer-events:none}
.salon-item img,.salon-pendant img{display:block;width:100%;height:auto;user-select:none}
.salon-rug{width:100%;left:0;top:9%;z-index:1}
.salon-sofa{width:90%;left:5%;top:1%;z-index:3;--land-delay:1.13s;--land-duration:.97s}
.salon-table{width:51%;left:24.5%;top:49%;z-index:4;--land-delay:1.35s;--land-duration:1s}
.salon-floor-lamp{width:32%;left:-8%;top:-3%;z-index:2;--land-delay:1.52s;--land-duration:1s}
.salon-vase{width:25%;left:80%;top:30%;z-index:4;filter:drop-shadow(0 8px 5px #28201c36);--land-delay:1.58s;--land-duration:.97s}
.room-study.is-drawing.is-ready .salon-rug{animation:rug-slide-in .47s .7s cubic-bezier(.18,.7,.22,1) both}
.room-study.is-drawing.is-ready .salon-item:not(.salon-rug){animation:furniture-land var(--land-duration) cubic-bezier(.2,.72,.24,1) var(--land-delay) both}
.salon-pendants{position:absolute;inset:0;pointer-events:none}
.salon-pendant{position:absolute;left:var(--light-x);top:var(--light-y);width:calc(clamp(80px,7.5vw,128px)*var(--light-scale));opacity:0;transform-origin:50% 0}
.salon-pendant-swing:before{content:'';position:absolute;left:49.8%;top:-100svh;width:1px;height:100svh;background:#877150b8}
.room-study.is-drawing.is-ready .salon-pendant{animation:pendant-arrive .72s var(--light-delay) cubic-bezier(.2,.72,.24,1) both}
@keyframes rug-slide-in{from{opacity:1;transform:translate3d(0,105svh,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes furniture-land{from{opacity:1;transform:translate3d(0,-110svh,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pendant-arrive{from{opacity:1;transform:translate3d(0,-110svh,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.salon-backdrop{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .3s;overflow:hidden}
.manifesto-stage:has(.room-study.is-drawing.is-ready) .salon-backdrop{opacity:1}
.salon-parquet{position:absolute;width:125%;max-width:none;height:83.33%;left:-12.5%;top:22%;object-fit:fill;clip-path:inset(0 0 0 100%);mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 90%,transparent)}
.salon-blue-paint{position:absolute;width:98%;height:80%;object-fit:fill;left:1%;top:-10%;opacity:0;clip-path:inset(0 100% 0 0)}
.manifesto-stage:has(.room-study.is-drawing.is-ready) .salon-parquet{animation:parquet-unroll .65s cubic-bezier(.25,.65,.3,1) both}
.manifesto-stage:has(.room-study.is-drawing.is-ready) .salon-blue-paint{animation:salon-paint-in 1s .65s ease-out both}
@keyframes parquet-unroll{to{clip-path:inset(0)}}
@keyframes salon-paint-in{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:.82;clip-path:inset(0)}}
.salon-pendant-swing{position:relative;transform-origin:50% 0;pointer-events:none}
.salon-pendant-hit,.salon-lamp-hit{position:absolute;z-index:3;display:block;padding:0;border:0;background:transparent!important;pointer-events:none;touch-action:pan-y;min-width:32px;min-height:44px}
.salon-pendant-hit{left:20%;top:42%;width:60%;height:40%;border-radius:50%}
.salon-lamp-hit{left:38%;top:4%;width:42%;height:91%;border-radius:35%}
.room-study.is-drawing.is-ready .salon-pendant-hit,.room-study.is-drawing.is-ready .salon-lamp-hit{pointer-events:auto}
/* Light is aligned to the mouth of the existing 1024 × 1536 lamp cutout. */
.salon-floor-lamp>img{position:relative;z-index:1}
.salon-lamp-beam,.salon-lamp-glow,.salon-pendant-glow{position:absolute;display:block;pointer-events:none;opacity:0;transition:opacity .55s ease}
.salon-floor-lamp .salon-lamp-beam{inset:0;width:100%;height:100%;overflow:visible;z-index:0}
.salon-lamp-glow{z-index:2;left:52%;top:21%;width:26%;height:5.5%;border-radius:50%;transform:rotate(28deg);background:radial-gradient(ellipse,#fffbed 8%,#ffe5a6bf 35%,#ffd07800 74%);filter:blur(2px);mix-blend-mode:screen}
.salon-pendant-glow{left:18%;top:42%;width:65%;height:41%;border-radius:50%;background:radial-gradient(ellipse,#fff6d2b3 5%,#ffd98a5c 36%,#ffc56500 73%);filter:blur(5px);mix-blend-mode:screen}
.manifesto-stage:after{content:'';position:absolute;inset:0;z-index:5;background:linear-gradient(180deg,#1e2940 0%,#292d40 58%,#393238 100%);opacity:0;pointer-events:none;transition:opacity .9s ease}
.manifesto-stage.is-salon-lit:has(.room-study.is-drawing):after{opacity:.44}
.salon-item:not(.salon-floor-lamp)>img{transition:filter .9s ease}
.is-salon-lit .salon-item:not(.salon-floor-lamp)>img{filter:brightness(.7) saturate(.9)}
.salon-pendant-swing>img{filter:brightness(.82) saturate(.8);transition:filter .55s ease}
.is-salon-lit .salon-pendant-swing>img{filter:brightness(1.16) saturate(1.12)}
.is-salon-lit .salon-lamp-beam,.is-salon-lit .salon-lamp-glow,.is-salon-lit .salon-pendant-glow{opacity:1}
@media(max-width:700px){
 .manifesto-stage .study-plan{width:88vw;height:38svh;right:0;bottom:0}
 .manifesto-stage .manifesto-message.second{top:28%}
 .salon-stage{width:110vw;max-width:112svh;bottom:16svh}
 .salon-pendant{left:calc(60% + (var(--light-x) - 76%)*1.6);top:calc(var(--light-y)*.66 - 5svh);width:calc(15vw*var(--light-scale))}
}
@media(max-height:540px) and (min-width:701px){
 .salon-stage{width:114svh;bottom:-9svh}
 .salon-pendant{width:calc(13svh*var(--light-scale));top:calc(var(--light-y)*.7 - 3svh)}
}
@media(prefers-reduced-motion:reduce){
 .manifesto-stage .study-plan{display:none}
 .manifesto-stage .manifesto-message.second{top:auto}
 .manifesto-stage .room-study{display:block;position:relative;inset:auto;width:100%;height:65vw;max-height:650px;opacity:1;transition:none}
 .salon-stage{width:min(100%,975px);bottom:0}
 .salon-item,.salon-pendant{opacity:1;transform:none;animation:none!important}
 .salon-pendant{width:7%;top:calc(var(--light-y)*.5)}
 .salon-backdrop{opacity:1;top:auto;bottom:0;height:min(65vw,650px)}
 .salon-parquet,.salon-blue-paint{animation:none!important;clip-path:none;opacity:1}
 .salon-lamp-glow,.salon-lamp-beam,.salon-pendant-glow,.salon-pendant-swing>img,.salon-item>img,.manifesto-stage:after{transition:none}
}

/* Fade the assembled composition as one layer, preserving all object fills. */
.manifesto-stage .room-study{transition:opacity .9s cubic-bezier(.4,0,.2,1)}
.manifesto-stage .room-study.is-fading{opacity:0}
.salon-backdrop{transition:opacity .9s cubic-bezier(.4,0,.2,1)}
.manifesto-stage:has(.room-study.is-drawing.is-ready.is-fading) .salon-backdrop{opacity:0}
.manifesto-stage.is-salon-lit:has(.room-study.is-fading):after{opacity:0}
.room-study.is-drawing.is-ready.is-fading .salon-pendant-hit,.room-study.is-drawing.is-ready.is-fading .salon-lamp-hit{pointer-events:none}
@media(prefers-reduced-motion:reduce){.manifesto-stage .room-study,.salon-backdrop{transition:none}}
