/* Les fresques et les pièces d’enveloppe gardent désormais leur ratio natif. */
.hero{min-height:0;padding-bottom:20px}.hero-shore{position:relative;display:block;left:auto;bottom:auto;width:min(800px,100%);height:auto;object-fit:contain;margin:35px auto 0}.closing{padding-bottom:0}.closing-shore{position:relative;display:block;width:min(1050px,100%);height:auto;object-fit:contain;bottom:auto;left:auto;margin:40px auto 0}.separator{height:auto;width:min(580px,85%);margin:20px auto}.separator img{display:block;height:auto;object-fit:contain}
.date-reveal{height:clamp(210px,44vw,340px);margin-top:15px}.date-wave{position:absolute;left:0;top:50%;width:100%;pointer-events:none;z-index:2;will-change:transform}.date-wave img{width:125%;max-width:none;height:auto;display:block;transform:translateY(-50%)}.date-reveal[data-state=closed] .date-wave{visibility:hidden}#date-full{clip-path:inset(0 100% 0 0)}.countdown-medal{width:min(510px,100%);aspect-ratio:1.5}.countdown-medal>img{object-fit:contain}#countdown{inset:26% 18% 25%;gap:9px}.countdown-outro{margin-top:6px}
.marine-composition{position:relative;width:min(360px,80%);height:190px;margin:0 auto 15px}.marine-composition img{position:absolute;object-fit:contain;height:auto}.composition-star{width:32%;left:7%;top:28%;transform:rotate(-13deg)}.composition-shell{width:44%;right:13%;top:25%;transform:rotate(13deg)}.composition-conch{width:22%;right:2%;top:5%;transform:rotate(8deg)}.dance{width:min(600px,90%);margin:25px auto;aspect-ratio:1.5}#pratique{position:relative;padding-top:95px;padding-bottom:100px}.practical-decor{position:absolute;width:95px;height:auto;pointer-events:none}.decor-left{top:5px;left:max(20px,calc(50% - 430px))}.decor-right{bottom:0;right:max(20px,calc(50% - 430px));width:105px}
.envelope{width:min(420px,95%);height:auto;aspect-ratio:1.62;margin:100px auto 20px;perspective:1100px}.envelope-back,.envelope-pocket{height:auto;width:100%;bottom:0;object-fit:contain}.envelope-back{height:100%;object-fit:fill}.envelope-pocket{z-index:4}.envelope-flap{top:0;height:auto;aspect-ratio:3.2;width:100%;transition:transform 1.8s ease;transform-origin:50% 0}.envelope-flap img{height:auto;width:100%;object-fit:contain}.rsvp-card{width:54%;height:auto;aspect-ratio:3/4;bottom:7%;left:23%;padding:22px 10px 35px;background-size:100% 100%;transform:translateY(19%);transition:transform 1.8s ease .7s}.rsvp-card span{font-size:29px;line-height:1.1;margin-top:5px}.rsvp-card small{font-size:10px;margin-top:17px}.envelope[data-state=closed]{overflow:hidden}.envelope[data-state=open] .rsvp-card{transform:translateY(-25%)}#envelope-open{inset:0}.envelope[data-state=open] .envelope-flap{transform:rotateX(174deg)}
.opening-camera{width:min(660px,96vw);height:min(660px,96vw);aspect-ratio:1;top:43%;perspective:none;transform-style:flat}#shell-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0}#shell-fallback{position:absolute;left:15%;top:23%;width:70%;height:auto;filter:drop-shadow(0 10px 8px #876c4230)}.scene-ready #shell-canvas{opacity:1}.scene-ready #shell-fallback{visibility:hidden}#opening-calligraphy{bottom:12%}#open-invitation{top:23%;height:47%}.opening-wave{display:none}
@media(max-width:700px){.hero{padding-bottom:10px}.hero-shore{margin-top:25px}.closing{padding-bottom:0}.closing-shore{margin-top:30px}.separator{width:82%;margin:15px auto}.marine-composition{height:160px}.dance{width:84%;margin:22px auto}.practical-decor{width:65px}.decor-right{width:75px}#pratique{padding-top:90px;padding-bottom:90px}.envelope{width:min(330px,96%);height:auto;margin-top:95px}.rsvp-card span{font-size:25px}.rsvp-card small{font-size:8.5px;margin-top:13px}.countdown-medal{width:370px;max-width:100%}#countdown>div:first-child strong{font-size:35px}#countdown strong{font-size:19px}.opening-camera{width:96vw;height:96vw;top:42%}#opening-calligraphy{font-size:40px;bottom:14%}}
@media(max-width:360px){.envelope{width:96%;height:auto}.rsvp-card span{font-size:22px}.rsvp-card small{font-size:8px}.rsvp-card{padding:19px 8px 30px}.dance{width:88%}#countdown>div:first-child strong{font-size:32px}#countdown strong{font-size:17px}#countdown span{font-size:6px}}
@media(max-height:500px) and (orientation:landscape){.opening-camera{width:380px;height:340px;top:40%}#opening-calligraphy{bottom:5%;font-size:30px}}
.envelope[data-state=closed] .rsvp-card{visibility:hidden}.date-reveal{height:clamp(190px,42vw,320px)}
.rsvp-card{width:48%;left:26%}.envelope[data-state=open] .rsvp-card{transform:translateY(-17%)}

/* V3 : compositions jointes et fresque de clôture de bord à bord. */
.marine-composition{height:auto;width:min(460px,88%);margin:20px auto 35px}.marine-composition .composition-unie{position:relative;display:block;width:100%;height:auto}.practical-decor.decor-left{width:180px;top:0;left:20px}.practical-decor.decor-right{width:200px;bottom:0;right:20px}#pratique{padding-top:125px;padding-bottom:110px}.closing{max-width:none;padding-left:0;padding-right:0;overflow:clip}.closing>p,.closing>.portrait{max-width:660px;margin-left:auto;margin-right:auto}.closing>p{padding-inline:25px}.closing-shore{width:100%;max-width:none;margin-top:40px}.separator:nth-of-type(2){display:none}@media(max-width:700px){.practical-decor.decor-left{width:145px}.practical-decor.decor-right{width:160px}.closing>.portrait{width:70%}}
/* V4 : pièces photographiques articulées, matières originales préservées. */
.textile-shell{position:absolute;inset:0;perspective:1000px;transform-style:preserve-3d;filter:drop-shadow(0 13px 9px #6d543d35)}.textile-valve{position:absolute;width:84%;aspect-ratio:1;left:8%;top:33%;transform-origin:50% 5%;transform-style:preserve-3d}.textile-valve>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.textile-base{transform:rotateX(52deg)}.textile-lid{transform:rotateX(52deg)}.textile-front,.textile-back{backface-visibility:hidden}.textile-back{transform:rotateY(180deg)}.textile-valve>.textile-pearl{inset:auto;left:40%;top:47%;width:20%;height:20%;object-fit:contain;transform:translateZ(15px)}#pratique>.practical-decor{display:none}#pratique{padding-top:44px;padding-bottom:44px}
/* Marée de soie : image textile détourée, une seule nappe, proportions natives. */
#opening{background:transparent!important;overflow:hidden}#opening .opening-camera{position:absolute;inset:0;width:100%;height:100%;transform:none;perspective:none;filter:none}#maree-cloth{position:absolute;max-width:none;top:0;will-change:transform;transform:translateY(-16%);width:max(106vw,62vh);height:auto;left:-3vw}#opening-calligraphy{z-index:3;bottom:19%;font-size:clamp(34px,6vw,65px);white-space:nowrap;text-shadow:.7px 1px #dcebf1,-.4px -.4px #244e6850}#open-invitation{inset:0;width:100%;height:100%;z-index:2}#skip-opening{z-index:4}.opening-dismiss #opening-calligraphy,.opening-dismiss #skip-opening{visibility:hidden!important;opacity:0!important;pointer-events:none}#hero-names:focus{outline:none}.opening-pending .hero>.eyebrow,.opening-pending .hero>.welcome,.opening-pending .hero>.portrait,.opening-pending .navigation{visibility:visible}@media(max-height:500px) and (orientation:landscape){#opening-calligraphy{bottom:12%;font-size:36px}}
#maree-cloth{width:max(106vw,75vh)}
/* V8 : bordure entière dans le cadre, doublure opaque derrière son alpha. */
#opening{height:100lvh;min-height:100dvh;bottom:auto}#opening .opening-camera{height:100%;will-change:transform}.maree-lining{position:absolute;top:0;left:0;width:100%;background:#f7f2e8 url('assets/31-fond-soie.webp') center/700px;pointer-events:none}#maree-cloth{transform:none}
/* V9 : revers du rabat dans le même axe X que son ouverture, visible sur Safari. */
#envelope{isolation:isolate;overflow:visible}#envelope .envelope-flap{z-index:6;transform-style:preserve-3d}#envelope .envelope-flap img{backface-visibility:visible;-webkit-backface-visibility:visible}#envelope .flap-face{opacity:1;transition:opacity 0s linear .9s}#envelope .flap-back{transform:rotateX(180deg) translateZ(.5px);opacity:0;transition:opacity 0s linear .9s}#envelope[data-state=open] .flap-face{opacity:0}#envelope[data-state=open] .flap-back{opacity:1}#envelope[data-state=open] .envelope-flap{transform:rotateX(160deg);z-index:1}#envelope[data-state=open] .rsvp-card{transform:translateY(-17%)}
#envelope .flap-back{transform:translateZ(.5px)}
/* V10 : aucune portion du contenu ne peut dépasser sous l’entrée fermée iOS. */
body.opening-pending:not(.maree-running) #experience{visibility:hidden}body.opening-pending:not(.maree-running){background-color:#b0cbd7}.maree-tail{position:absolute;left:0;width:100%;background:#afcad7;pointer-events:none}#opening{inset:0 0 -180px;height:auto;min-height:100lvh}#opening-calligraphy{top:calc(var(--visible-height,100svh)*.76);bottom:auto}#skip-opening{top:calc(var(--visible-height,100svh) - 85px - env(safe-area-inset-bottom,0px));bottom:auto}#opening .opening-camera{height:100%;min-height:100lvh}
body.opening-pending:not(.maree-running) #experience{opacity:0;pointer-events:none}
