/* V2 : panneaux indépendants, rabat articulé, scène et caméra. */
.opening{position:fixed;inset:0;z-index:100;overflow:hidden;isolation:isolate;background:#f4eee3}.opening-rule{position:absolute;inset:20px;border:1px solid #89654c25;pointer-events:none;z-index:7}.envelope-presentation{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:40px 25px;background:radial-gradient(ellipse at 43% 30%,#fffdf7,#e9decd);perspective:1600px;will-change:opacity}.opening-copy{text-align:center;max-width:650px;margin-bottom:65px;position:relative;z-index:2}.opening-copy .eyebrow{font-size:10px;letter-spacing:2px}.opening-copy h2{font-size:clamp(29px,3.4vw,45px);line-height:1.18;letter-spacing:-1.5px;margin-top:16px}.opening-copy h2>span,.opening-copy h2>em{display:inline}.opening-copy h2>em{color:var(--accent);margin-left:10px}.opening-copy>p:last-child{font:italic 15px/1.8 var(--serif);margin-top:16px}.envelope-button{position:relative;display:block;width:min(76vw,510px);aspect-ratio:1.48;margin:0;padding:0;flex-shrink:0;background:transparent;transform-style:preserve-3d;perspective:1600px;cursor:pointer;transform:rotateX(7deg) rotateZ(-2deg);will-change:transform}.envelope-button:focus-visible{outline:2px solid #956d42;outline-offset:17px}.envelope{position:absolute;display:block;inset:0;transform-style:preserve-3d;filter:drop-shadow(6px 28px 24px #50321d42)}.envelope>span{position:absolute;display:block}.envelope-back{inset:0;border-radius:4px;background:linear-gradient(155deg,#a34a4f44,#3b102840),var(--envelope-texture) center/cover;box-shadow:inset 0 0 0 1px #4c1728,inset 0 1px 2px #d79c8766,0 1px 0 #4f1a2e;transform:translateZ(0)}.envelope-lining{inset:3px 4px 6px;border-radius:3px;background:repeating-linear-gradient(45deg,#b2905330 0 1px,transparent 1px 11px),linear-gradient(155deg,#f1dfc1,#c9aa7b);box-shadow:inset 0 8px 16px #4b152b33;transform:translateZ(1px)}.envelope-letter{top:7%;left:6%;width:88%;height:84%;background:linear-gradient(125deg,#fffdf5,#efe1c9);box-shadow:inset 0 0 0 1px #dfc9a5,inset 0 0 0 11px #fff8e8,inset 0 0 0 12px #b8996255,0 4px 12px #36101d55;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:8px;transform:translateZ(2px);border-radius:3px}.envelope-letter>span:first-child{font:italic 38px var(--serif);color:var(--accent)}.envelope-letter>span:last-child{font:10px/1.8 var(--sans);letter-spacing:2px;text-transform:uppercase;color:#98784b}.envelope-side{top:0;bottom:0;width:62%;filter:drop-shadow(0 0 .7px #330b1c99);transform:translateZ(4px)}.side-left{left:0;clip-path:polygon(0 0,100% 50%,0 100%);background:linear-gradient(90deg,#360b2122,#a8494933),var(--envelope-texture) left/cover}.side-right{right:0;clip-path:polygon(100% 0,0 50%,100% 100%);background:linear-gradient(270deg,#33091e33,#b8644922),var(--envelope-texture) right/cover}.envelope-pocket{inset:0;border-radius:0 0 4px 4px;clip-path:polygon(0 100%,0 11%,50% 61%,100% 11%,100% 100%);background:linear-gradient(0deg,#32102244,#aa4c4211),var(--envelope-texture) center bottom/cover;transform:translateZ(5px);box-shadow:inset 0 -2px 2px #3a0d2577}.envelope-pocket:after{content:'';position:absolute;inset:0;background:linear-gradient(160deg,#f2b69a1a,transparent 45%)}.envelope-flap{left:0;top:0;width:100%;height:65%;transform-origin:50% 0;transform-style:preserve-3d;transform:translateZ(7px);z-index:6;will-change:transform}.flap-face{position:absolute;inset:0;display:block;backface-visibility:hidden;clip-path:polygon(0 0,100% 0,100% 9%,57% 93%,53% 98%,50% 100%,47% 98%,43% 93%,0 9%)}.flap-front{background:linear-gradient(150deg,#b55a4b33,#360c2928),var(--envelope-texture) center top/cover;filter:drop-shadow(0 4px 2px #290c1b88);box-shadow:inset 0 1px 1px #edaa8c66}.flap-back{background:repeating-linear-gradient(45deg,#ae8d5233 0 1px,transparent 1px 11px),linear-gradient(#d9bd93,#f5e7d0);transform:rotateX(180deg)}.wax-seal{position:absolute;top:58%;left:calc(50% - 31px);width:62px;height:62px;border-radius:46% 53% 48% 49% / 51% 47% 53% 45%;display:grid;place-items:center;background:radial-gradient(ellipse at 34% 21%,#b88b59,#967039 40%,#735026 75%,#4a2e19);box-shadow:1px 4px 5px #2b0b1955,inset 0 0 0 2px #ad8754,inset 0 0 0 4px #684621,inset 0 0 0 5px #c69d65;color:#d9b87e;transform:translateZ(3px)}.wax-seal:before{content:'';position:absolute;inset:9px;border:1px solid #d7ad6a99;border-radius:50%;box-shadow:inset 0 1px 2px #33201180,0 1px 0 #d8b77b99}.wax-seal svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.1;filter:drop-shadow(0 -1px 0 #38200e) drop-shadow(0 1px 0 #efd1a0)}.envelope-recipient{left:12%;right:12%;bottom:12%;text-align:center;font:italic 19px var(--serif);color:#e4c9a0;text-shadow:0 1px 1px #3f1426;z-index:7;pointer-events:none;transform:translateZ(8px)}.envelope-caption{position:absolute;top:calc(100% + 28px);left:-10%;width:120%;text-align:center;font-size:11px;letter-spacing:1px;color:#744d42;line-height:1.8}.envelope-caption>span{margin-left:12px;font-size:16px}.opening-skip{position:absolute;z-index:16;left:50%;bottom:27px;transform:translateX(-50%);font-size:10px;letter-spacing:.5px;color:var(--ink);white-space:nowrap;background:#f7f2e9b3;border-color:#9b7d5d4d;padding:8px 12px;border-radius:1px}.opening-skip:focus-visible{outline-offset:3px}.opening-status{position:absolute;bottom:75px;left:20px;right:20px;text-align:center;z-index:14;font:italic 14px/1.7 var(--serif);color:var(--ink);pointer-events:none}.opening-light{position:absolute;inset:0;z-index:9;pointer-events:none;background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,52%),#fffef6 0 4%,#fff9e6f0 18%,#fff9e6aa 30%,#fff8de00 63%);opacity:0;transform-origin:var(--light-x,50%) var(--light-y,52%);will-change:opacity,transform}.opening-ray{position:absolute;left:10%;top:0;width:80%;height:75%;background:linear-gradient(0deg,#fffde3cc,transparent);clip-path:polygon(41% 100%,59% 100%,100% 0,0 0);filter:blur(12px);opacity:0;transform:translateZ(6px);pointer-events:none}.flight-scene{position:absolute;inset:0;overflow:hidden;z-index:1;background:linear-gradient(#cbdde3 0%,#e4e9e1 44%,#f4eddf 81%,#eaddc7);opacity:0}.flight-scene:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #ac8c5d15}.flight-sun{position:absolute;left:73%;top:16%;width:clamp(130px,23vw,390px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff9df 0 5%,#fff2bcaa 15%,#ffe4ac55 30%,#ffe6b400 67%);transform:translate(-50%,-50%);mix-blend-mode:screen;filter:blur(2px);z-index:1}.sun-rays{position:absolute;inset:-50%;background:conic-gradient(from -10deg at 68% 35%,transparent 0 20deg,#fff6d544 22deg 29deg,transparent 32deg 57deg,#fff6d533 59deg 65deg,transparent 67deg 115deg,#fff6d533 118deg 125deg,transparent 128deg);filter:blur(11px);mix-blend-mode:screen;z-index:2;opacity:.7}.flight-world{position:absolute;inset:0;transform-origin:0 0;will-change:transform;z-index:3}.cloud-plane{position:absolute;left:0;top:0;pointer-events:none;will-change:transform,opacity}.cloud-plane img{width:100%;height:auto;display:block}.cloud-far{z-index:1;opacity:.65;filter:blur(2px)}.cloud-middle{z-index:3;opacity:.85}.cloud-near{z-index:7;filter:blur(1.1px)}.stork-rig{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;z-index:5;filter:drop-shadow(2px 9px 12px #6f593514)}.stork-body{position:absolute;inset:0;width:100%;height:100%;z-index:4}.stork-wing{position:absolute;left:0;top:0;max-width:none;transform-origin:var(--wing-root-x) var(--wing-root-y);will-change:transform}.wing-far{z-index:2;filter:brightness(.91) saturate(.85)}.wing-near{z-index:6}.sling-rig{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;z-index:3}.sling-rig img{position:absolute;max-width:none;width:100%;height:100%}.stork-grip{position:absolute;z-index:8;pointer-events:none;background:#ac5a36;height:1px;transform-origin:0 0}.reveal-glow{position:absolute;inset:0;background:radial-gradient(ellipse at center,#fffef5 0%,#f9f1dfbb 35%,#f6eddf00 73%);opacity:0;z-index:10;pointer-events:none}.confetti-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:120;pointer-events:none}.opening-dissolve{position:absolute;inset:0;background:#fffaf0;z-index:11;opacity:0;pointer-events:none}.opening.finished{pointer-events:none}.opening .sr-only{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.opening-media-warning{position:absolute;z-index:17;bottom:80px;left:20px;right:20px;text-align:center;font-size:11px;background:#fff7e7e6;padding:10px;color:var(--ink)}
@media(max-width:680px){.opening-rule{inset:12px}.envelope-presentation{padding:35px 20px 70px}.opening-copy{margin-bottom:60px}.opening-copy .eyebrow{font-size:9px;letter-spacing:1.4px}.opening-copy h2{font-size:34px;line-height:1.15;letter-spacing:-1.2px;margin-top:19px}.opening-copy h2>span,.opening-copy h2>em{display:block}.opening-copy h2>em{margin:4px 0 0}.opening-copy>p:last-child{font-size:14px;margin:15px auto 0;max-width:265px}.envelope-button{width:min(82vw,380px)}.envelope-caption{font-size:10px;top:calc(100% + 28px)}.wax-seal{width:50px;height:50px;left:calc(50% - 25px);top:56%}.wax-seal svg{width:24px;height:24px}.envelope-recipient{font-size:17px;bottom:11%}.envelope-letter>span:first-child{font-size:29px}.envelope-letter>span:last-child{font-size:8px}.opening-skip{font-size:9px;bottom:24px}.opening-status{font-size:13px;bottom:71px}.flight-sun{left:80%;top:20%;width:240px}}
@media(max-height:690px){.opening-copy{margin-bottom:35px}.opening-copy h2{font-size:29px}.opening-copy>p:last-child{margin-top:10px;font-size:13px}.envelope-button{width:min(68vw,350px)}.envelope-presentation{padding-top:25px;padding-bottom:64px}.envelope-caption{top:calc(100% + 18px)}.opening-skip{bottom:18px}}
@media(prefers-reduced-motion:reduce){.opening *, .opening *:before,.opening *:after{animation:none!important;transition:none!important}.confetti-canvas{display:none!important}}

.envelope-back,.envelope-side,.envelope-pocket,.flap-front{background-color:var(--accent)}
@media(max-height:690px){.envelope-button{width:min(66vw,280px)}.opening-copy{margin-bottom:25px}.opening-copy h2{font-size:27px}.envelope-presentation{padding-bottom:85px}}

.flap-back{clip-path:polygon(0 100%,100% 100%,100% 91%,57% 7%,53% 2%,50% 0,47% 2%,43% 7%,0 91%)}
.flight-sun:before{content:'';position:absolute;inset:37%;border-radius:50%;background:#fff5c5;box-shadow:0 0 30px #fff3b788,0 0 90px #ffe3a533}

.wax-seal{backface-visibility:hidden;z-index:2}
