html.celebration-active,html.celebration-active body{overflow:hidden;height:100%;overscroll-behavior:none}.celebration-active #giftPage{opacity:0;filter:blur(6px);pointer-events:none}.celebration{position:fixed;inset:0;z-index:100;overflow:auto;isolation:isolate;background:#101d17;color:#f1e8d6;display:flex;align-items:center;justify-content:center;padding:60px 7%;min-height:100dvh}.celebration:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 30% 45%,#d2aa5c20,transparent 48%),radial-gradient(ellipse at 80% 60%,#7385651a,transparent 55%),linear-gradient(130deg,#13271c50,transparent)}.celebration:after{content:'';position:fixed;inset:22px;border:1px solid #d4b58938;pointer-events:none;z-index:-1}.celebration-layout{display:grid;grid-template-columns:1fr 1.25fr;gap:40px;width:100%;max-width:1180px;align-items:center}.celebration-copy{position:relative;z-index:2;padding-bottom:20px}.celebration-overline{color:#d4b589;font-size:11px;display:flex;align-items:center;gap:14px}.celebration-overline:before{content:'';width:25px;height:1px;background:#d4b58988}.celebration h1{font:clamp(35px,4vw,58px)/1.65 Amiri,serif;font-weight:400;margin:19px 0 9px}.celebration h1 em{display:block;font-style:normal;color:#ddbf84}.celebration-dedication{font-size:15px;line-height:2.2;color:#c1c8b6;max-width:360px;margin:15px 0 28px}.celebration-name{font:23px/1.7 Amiri,serif;color:#d7bd91;margin-bottom:22px}.celebration .gold-button{border-radius:5px 20px 5px 20px;min-height:51px;gap:35px}.celebration .gold-button span{font-size:20px}.celebration-note{font-size:11px;color:#abb7a0;line-height:1.9;margin-top:18px}.cake-scene{position:relative;min-width:0;width:100%;height:min(78vh,700px);display:flex;align-items:center;justify-content:center;perspective:1200px}.cake-halo{position:absolute;width:84%;aspect-ratio:1;top:9%;border:1px solid #d6b5752e;border-radius:50%;box-shadow:0 0 100px #d6b57508,inset 0 0 100px #d6b57508}.cake-halo:before{content:'';position:absolute;inset:13px;border:1px dashed #c9ae6d22;border-radius:50%;animation:halo-orbit 65s linear infinite}.cake-glow{position:absolute;inset:5% 2% 6%;background:radial-gradient(ellipse at 50% 48%,#d6b16a20,transparent 65%);filter:blur(15px);pointer-events:none}.cake-ground{position:absolute;width:68%;height:7%;border-radius:50%;bottom:5%;background:#b3924d33;filter:blur(14px);transform:rotateX(35deg)}.cake-art{display:block;position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 25px 28px #0006);animation:cake-float 7s ease-in-out infinite;z-index:2}.cake-star{position:absolute;color:#dcbf7d;font-size:21px;animation:cake-spark 4s ease-in-out infinite;z-index:3}.cake-star.one{top:20%;left:9%}.cake-star.two{bottom:22%;right:6%;font-size:15px;animation-delay:-2s}.cake-star.three{top:7%;right:20%;font-size:12px;animation-delay:-1s}.scorpio-caption{position:absolute;bottom:-2%;left:0;right:0;text-align:center;color:#bca878;font:9px Georgia,serif;letter-spacing:.25em}.celebration:not([hidden]) .celebration-copy{animation:celebration-arrive 1.1s cubic-bezier(.2,.7,.2,1) both}.celebration:not([hidden]) .cake-scene{animation:cake-arrive 1.6s cubic-bezier(.2,.6,.2,1) both}.celebration .sound-control{z-index:20}.celebration-active .sound-control{z-index:130}
@keyframes cake-float{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-10px) rotate(.5deg)}}@keyframes cake-arrive{from{opacity:0;transform:translateY(48px) scale(.88);filter:blur(8px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes celebration-arrive{from{opacity:0;transform:translateY(23px)}to{opacity:1;transform:translateY(0)}}@keyframes cake-spark{0%,100%{opacity:.3;transform:scale(.75)}50%{opacity:1;transform:scale(1.2)}}@keyframes halo-orbit{to{transform:rotate(360deg)}}
@media(max-width:850px){.celebration{padding:45px 6%}.celebration-layout{gap:15px;grid-template-columns:1fr 1.2fr}.celebration h1{font-size:40px}.celebration-dedication{font-size:13px}.cake-scene{height:min(72vh,570px)}}
@media(max-width:650px){.celebration{display:block;padding:40px 24px 90px}.celebration:after{inset:12px}.celebration-layout{display:flex;flex-direction:column;gap:5px;text-align:center}.celebration-copy{display:contents}.celebration-overline{order:0;justify-content:center;font-size:10px}.celebration-overline:after{content:'';width:25px;height:1px;background:#d4b58988}.celebration h1{order:1;font-size:31px;line-height:1.55;margin:10px 0 0}.celebration h1 em{display:inline;margin-right:6px}.celebration-name{order:2;font-size:19px;margin:0 0 4px}.cake-scene{order:3;height:min(48vh,430px);min-height:300px;max-width:420px;width:110%;margin:0 -5% 15px}.cake-art{width:100%;height:110%;margin-top:-4%}.cake-halo{width:72%;left:14%;top:0}.cake-ground{bottom:-1%}.celebration-dedication{order:4;font-size:12px;line-height:1.9;margin:8px 0 10px;max-width:300px}.celebration .gold-button{order:5;min-height:48px;font-size:13px;padding:12px 20px;gap:30px}.celebration-note{order:6;font-size:10px;margin:10px 0 0}.scorpio-caption{font-size:7px;bottom:-3%}.cake-star.one{top:15%;left:10%}.cake-star.two{bottom:14%;right:12%}}
@media(max-height:700px) and (max-width:650px){.celebration{padding-top:25px}.celebration h1{font-size:27px}.cake-scene{height:40vh;min-height:260px}.celebration-name{font-size:17px}.celebration-dedication{font-size:11px;margin-top:0}}
@media(prefers-reduced-motion:reduce){.celebration *, .celebration *:before{animation:none!important;transition:none!important}.celebration-active #giftPage{filter:none}}
@media(max-width:650px){.cake-scene{margin-top:24px}}

/* Velvet panels close over the cake, then part to reveal the letter scene. */
html.message-curtain-transition,html.message-curtain-transition body{overflow:hidden;height:100%;overscroll-behavior:none}
.message-curtain-transition #giftPage{opacity:1!important;filter:none!important;transform:none!important;transition:none!important;pointer-events:none}
.message-curtains{position:fixed;inset:0;z-index:200;overflow:hidden;isolation:isolate;cursor:wait}
.message-drape{position:absolute;top:-2%;bottom:-2%;width:50.35%;will-change:transform;background:repeating-linear-gradient(90deg,#0b1812 0%,#213e2b 5%,#1a3324 9%,#102519 13%,#294431 18%,#102318 24%);box-shadow:inset 0 30px 55px #0006,inset 0 -35px 70px #0006}
.message-drape:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#e3c58212,transparent 35%,#0003);opacity:.65}
.message-drape:after{content:'';position:absolute;top:0;bottom:0;width:12%;background:linear-gradient(90deg,#0000,#0006);pointer-events:none}
.drape-left{left:0;transform:translateX(-103%);border-right:1px solid #a88b51b3;box-shadow:10px 0 35px #0006,inset -12px 0 25px #0005}
.drape-right{right:0;transform:translateX(103%);border-left:1px solid #a88b51b3;background-position:right center;box-shadow:-10px 0 35px #0006,inset 12px 0 25px #0005}
.drape-left:after{right:0}.drape-right:after{left:0;transform:scaleX(-1)}
.drape-trim{position:absolute;top:0;bottom:0;width:3px;background:linear-gradient(90deg,#64502c,#d1b477,#7e6336);opacity:.85;box-shadow:0 0 9px #d1b47722}
.drape-left .drape-trim{right:8px}.drape-right .drape-trim{left:8px}
.drape-spark{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);font-size:28px;color:#e5c98c;text-shadow:0 0 18px #bd9d60aa;opacity:0}
.message-curtains.is-running .drape-left{animation:message-drape-left 2.1s cubic-bezier(.65,0,.25,1) both}
.message-curtains.is-running .drape-right{animation:message-drape-right 2.1s cubic-bezier(.65,0,.25,1) both}
.message-curtains.is-running .drape-spark{animation:message-drape-spark 2.1s ease both}
@keyframes message-drape-left{0%{transform:translateX(-103%)}24%,34%{transform:translateX(0)}100%{transform:translateX(-103%)}}
@keyframes message-drape-right{0%{transform:translateX(103%)}24%,34%{transform:translateX(0)}100%{transform:translateX(103%)}}
@keyframes message-drape-spark{0%,20%{opacity:0;transform:translate(-50%,-50%) scale(.6)}29%,34%{opacity:.9;transform:translate(-50%,-50%) scale(1)}49%,100%{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}
@media(max-width:650px){.message-drape{background-size:170% 100%}.drape-left .drape-trim{right:5px}.drape-right .drape-trim{left:5px}.drape-spark{font-size:21px}}
@media(prefers-reduced-motion:reduce){.message-curtains{display:none!important}}
