@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=Lora:ital,wght@0,400;0,500;1,400;1,500&family=Playfair+Display:ital,wght@0,400;0,500;1,400&display=swap";:root{font-family:DM Sans,sans-serif;color:#242223;background:#fffdfc;font-synthesis:none;--black: #151515;--soft-black: #242223;--red: #b3263e;--deep-red: #761b2b;--rose: #c98f9d;--rose-light: #e7c2ca;--cream: #fffdfc;--gray: #9b9496;--gray-light: #e7e3e3}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip;scroll-padding-top:72px}body{width:100%;min-width:320px;margin:0;overflow-x:clip}#root{width:100%;overflow-x:clip}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{display:block;max-width:100%}.eyebrow{margin:0 0 18px;color:var(--rose);font-size:.7rem;font-weight:600;letter-spacing:.36em;text-transform:uppercase}.eyebrow.light{color:var(--rose-light)}.ribbon-line{width:min(100%,430px);height:1px;margin-inline:auto;background:linear-gradient(90deg,transparent,var(--rose),var(--red),var(--rose),transparent)}.center-screen{min-height:100svh;display:grid;place-content:center;justify-items:center;background:var(--cream)}.loader{width:42px;height:42px;border:2px solid var(--gray-light);border-top-color:var(--red);border-radius:50%;animation:rotate 1s linear infinite}.access-page{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden;padding:32px;color:var(--cream);background:var(--black) url(/images/login.jpeg) center 24% / cover no-repeat}.access-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#151515e0,#15151561 48%,#151515c7),linear-gradient(180deg,rgba(21,21,21,.35),transparent 30%,transparent 64%,rgba(21,21,21,.86))}.access-page:after{content:"";position:absolute;z-index:1;top:16px;right:16px;bottom:16px;left:16px;border:1px solid rgba(255,253,252,.25);pointer-events:none}.access-card{width:min(650px,100%);position:relative;z-index:2;padding:56px 54px;text-align:center;border:1px solid rgba(231,194,202,.28);background:#15151587;box-shadow:0 28px 80px #0000005c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mini-heart{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 24px;color:var(--red);border:1px solid rgba(231,194,202,.5);border-radius:50%}.access-card h1{margin:0;color:var(--rose-light);font:400 clamp(4rem,9vw,7rem)/.98 "Playfair Display",serif;letter-spacing:-.045em}.access-card h1 span{color:var(--red)}.access-card>.ribbon-line{margin-top:28px}.access-subtitle{margin:26px 0 6px;color:var(--cream);font:italic 400 clamp(1.25rem,2.3vw,1.65rem)/1.4 "Lora",serif}.intro{max-width:470px;margin:0 auto 30px;color:#fffdfcad;line-height:1.7}.access-card form{text-align:left}.access-card label{display:block;margin-bottom:9px;color:var(--rose-light);font-size:.76rem;font-weight:500;letter-spacing:.06em}.email-row{display:flex;gap:10px}.email-row input{min-width:0;flex:1;min-height:54px;padding:14px 18px;border:1px solid rgba(255,253,252,.45);outline:none;color:var(--soft-black);background:#fffdfcf0}.email-row input:focus{border-color:var(--rose);box-shadow:0 0 0 3px #c98f9d3d}.email-row button,.spin-button,.modal-action{min-height:54px;border:0;padding:14px 24px;color:#fff;background:linear-gradient(135deg,var(--red),var(--deep-red));transition:transform .2s,filter .2s}.email-row button:hover,.spin-button:hover,.modal-action:hover{transform:translateY(-2px);filter:brightness(1.1)}.email-row button:disabled,.spin-button:disabled,.reset-wheel-button:disabled{cursor:wait;opacity:.65;transform:none}.form-message{margin:16px 0 0;font-size:.86rem}.form-message.sent{color:#a9dbc7}.form-message.error{color:#ffb8b8}.privacy{display:flex;align-items:center;gap:12px;margin:28px 0 0;color:#e7c2ca99;font:italic .75rem Lora,serif}.privacy:before,.privacy:after{content:"";flex:1;height:1px;background:#c98f9d40}.site-nav{position:fixed;z-index:30;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;min-height:68px;padding:0 clamp(22px,4vw,54px);transition:background .35s,border-color .35s,backdrop-filter .35s}.site-nav.is-scrolled,.site-nav.is-open{border-bottom:1px solid rgba(201,143,157,.16);background:#151515eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.nav-mark{color:var(--cream);font-size:1rem;text-decoration:none}.nav-links{display:flex;align-items:center;gap:clamp(24px,3vw,44px)}.nav-links a{color:#fffdfcb3;font-size:.66rem;letter-spacing:.2em;text-decoration:none;text-transform:uppercase;transition:color .2s}.nav-links a:hover{color:var(--rose-light)}.nav-toggle{display:none}.hero{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden;padding:100px 24px 118px;color:#fff;text-align:center;background:var(--black)}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/images/login.jpeg) center 25% / cover no-repeat;opacity:.3;filter:saturate(.7)}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,var(--black) 0%,rgba(21,21,21,.42) 50%,var(--black) 100%),linear-gradient(180deg,var(--black) 0%,transparent 27%,transparent 64%,var(--black) 100%)}.hero-copy{position:relative;z-index:2;width:min(900px,100%)}.hero-waiting .hero-copy,.hero-waiting .scroll-cue{opacity:0}.hero-revealed .hero-copy{animation:hero-after-intro 1s .12s ease both}.hero-revealed .scroll-cue{animation:hero-after-intro 1s .55s ease both}.birthday-intro{position:fixed;z-index:60;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;padding:24px;color:var(--cream);background:radial-gradient(circle at center,#35151d 0%,var(--black) 46%,#090909 100%);touch-action:none}.birthday-intro:before,.birthday-intro:after{content:"";position:absolute;width:min(72vw,520px);aspect-ratio:1;border:1px solid rgba(201,143,157,.16);border-radius:50%;animation:intro-ring 3.2s ease-in-out infinite}.birthday-intro:after{width:min(92vw,720px);animation-delay:-1.6s}.birthday-intro-inner{position:relative;z-index:1;display:grid;justify-items:center;text-align:center}.birthday-intro-inner>p{margin:0 0 26px;color:var(--rose-light);font-size:clamp(.58rem,1.5vw,.72rem);letter-spacing:.3em;text-transform:uppercase}.birthday-intro-inner>small{margin-top:26px;color:#fffdfc80;font:italic clamp(.75rem,2vw,.95rem) "Lora",serif;letter-spacing:.04em}.birthday-intro-number{width:min(55vw,280px);aspect-ratio:1;position:relative;display:grid;place-items:center;border:1px solid rgba(231,194,202,.38);border-radius:50%;box-shadow:inset 0 0 55px #761b2b38,0 0 80px #761b2b33}.birthday-intro-number:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px dashed rgba(201,143,157,.24);border-radius:inherit;animation:age-orbit 7s linear infinite}.birthday-intro-number:after{content:"";position:absolute;top:16px;left:20%;width:10px;height:10px;border-radius:50%;background:var(--rose-light);box-shadow:0 0 18px 5px #c98f9d73;animation:intro-spark 1.2s ease-in-out infinite alternate}.birthday-intro-number span{min-width:2ch;color:var(--cream);font:400 clamp(7rem,28vw,12rem)/1 "Playfair Display",serif;font-variant-numeric:tabular-nums;letter-spacing:-.09em;text-shadow:0 5px 35px rgba(201,143,157,.35);transform:translate(-.05em)}.birthday-intro--boom{pointer-events:none;animation:intro-curtain .9s cubic-bezier(.7,0,.3,1) both}.birthday-intro--boom .birthday-intro-inner{animation:intro-boom .9s cubic-bezier(.2,.8,.2,1) both}.age-counter{width:108px;height:108px;position:relative;display:grid;place-content:center;margin:0 auto 24px;border-radius:50%;animation:age-reveal .9s cubic-bezier(.2,.85,.3,1.2) both}.age-counter:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px solid rgba(231,194,202,.38);border-radius:inherit;box-shadow:inset 0 0 22px #c98f9d1f,0 0 32px #761b2b33}.age-counter strong{color:var(--cream);font:400 3.45rem/.72 Playfair Display,serif;font-variant-numeric:tabular-nums;letter-spacing:-.07em;text-shadow:0 3px 18px rgba(201,143,157,.4)}.age-counter small{margin-top:9px;color:var(--rose-light);font-size:.52rem;letter-spacing:.28em;text-transform:uppercase}.age-orbit{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(201,143,157,.22);border-radius:inherit;animation:age-orbit 4.5s linear infinite}.age-orbit:before,.age-orbit:after{content:"";position:absolute;border-radius:50%;background:var(--rose-light);box-shadow:0 0 12px var(--rose)}.age-orbit:before{width:7px;height:7px;top:8px;left:20px}.age-orbit:after{width:4px;height:4px;right:5px;bottom:29px;opacity:.65}.greeting-wrap{min-height:clamp(92px,14vw,150px);display:grid;place-items:center}.hero h1{margin:0;color:var(--cream);font:400 clamp(3.25rem,8.6vw,7.5rem)/.95 "Playfair Display",serif;letter-spacing:-.04em;animation:greeting-in .8s ease both}.hero h1.greeting-compact{font-size:clamp(2.75rem,6.6vw,5.6rem);line-height:1.02}.my-love{margin:4px 0 26px;color:var(--rose-light);font:italic 400 clamp(2.45rem,6vw,5.4rem)/1.1 "Playfair Display",serif;animation:greeting-in .8s ease both}.my-love.love-compact{font-size:clamp(2.25rem,5vw,4.4rem)}.my-love span{color:var(--red)}.hero .ribbon-line{margin-bottom:28px}.birthday-meta{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 24px;color:var(--rose-light);font-size:.66rem;letter-spacing:.22em;text-transform:uppercase}.birthday-meta i{width:4px;height:4px;flex:0 0 auto;border-radius:50%;background:var(--red)}.birthday-meta strong{color:var(--cream);font-weight:500}.hero-note{max-width:620px;margin:auto;color:#fffdfcb8;font:italic clamp(1rem,2.3vw,1.28rem)/1.8 "Lora",serif}.scroll-cue{position:absolute;z-index:3;bottom:32px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#fffdfc87;font-size:.62rem;letter-spacing:.27em;text-decoration:none;text-transform:uppercase}.scroll-cue b{font-size:1.1rem;animation:bounce 1.8s infinite}.confetti{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti canvas{width:100%;height:100%;display:block}.fireworks{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.fireworks canvas{width:100%;height:100%;display:block}.story-section{position:relative;padding:112px max(24px,calc((100vw - 1160px)/2));overflow:hidden;background:var(--cream)}.section-heading{max-width:850px;margin:0 auto 76px;text-align:center}.section-heading h2{margin:0;color:var(--black);font:400 clamp(2.7rem,5.5vw,5rem)/1.08 "Playfair Display",serif;letter-spacing:-.035em}.section-heading h2 em{color:var(--red);font-weight:400}.section-heading .ribbon-line{margin-top:26px}.memory-grid{display:grid;grid-template-columns:repeat(3,1fr);align-items:start;gap:clamp(24px,4vw,56px)}.memory-card{min-width:0}.memory-card-2{margin-top:70px}.photo-frame{aspect-ratio:4 / 5;position:relative;padding:10px 10px 42px;transform:rotate(-1.25deg);background:var(--cream);box-shadow:0 14px 36px #15151529;transition:transform .35s,box-shadow .35s}.memory-card-2 .photo-frame{transform:rotate(1.2deg);background:var(--soft-black)}.memory-card-3 .photo-frame{transform:rotate(-.7deg);background:var(--rose-light)}.photo-frame:hover{transform:translateY(-5px) rotate(0);box-shadow:0 22px 46px #15151533}.photo-frame img{position:relative;z-index:2;width:100%;height:100%;object-fit:cover}.photo-frame img.missing{visibility:hidden}.photo-placeholder{position:absolute;top:10px;right:10px;bottom:42px;left:10px;display:grid;place-content:center;text-align:center;color:#24222394;font:italic 1rem/1.6 Lora,serif;background:linear-gradient(145deg,#f2eeee,#ddd6d8)}.photo-caption{position:absolute;right:10px;bottom:13px;left:10px;overflow:hidden;color:var(--gray);font:italic .7rem Lora,serif;text-align:center;text-overflow:ellipsis;white-space:nowrap}.memory-card-2 .photo-caption{color:var(--rose-light)}.memory-copy{position:relative;padding:34px 12px 0;text-align:center}.moment-number{position:absolute;top:12px;left:50%;color:#eee9ea;font:400 5.5rem/1 Playfair Display,serif;transform:translate(-50%);z-index:0}.memory-copy h3{position:relative;z-index:1;margin:0 0 16px;color:var(--black);font:400 clamp(1.55rem,2.4vw,2.25rem)/1.2 "Playfair Display",serif}.memory-copy p{position:relative;z-index:1;margin:0;color:#716b6d;font:.94rem/1.75 Lora,serif}.love-note{max-width:760px;margin:92px auto 0;padding:46px clamp(26px,6vw,70px);border:1px solid var(--rose-light);text-align:center;background:linear-gradient(135deg,#f6f0f1,var(--cream))}.love-note>span{display:block;height:22px;color:var(--rose);font:3.5rem/1 Playfair Display,serif}.love-note p{color:var(--soft-black);font:italic clamp(1.15rem,2.5vw,1.55rem)/1.75 "Lora",serif}.love-note cite{color:var(--rose);font-size:.68rem;font-style:normal;letter-spacing:.2em;text-transform:uppercase}.reveal{opacity:0;transform:translateY(38px);transition:opacity .9s ease,transform .9s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}.gallery-section{position:relative;overflow:hidden;padding:112px 0 104px;background:#f7f2f3}.gallery-section:before{content:"";position:absolute;top:-180px;right:-150px;width:440px;height:440px;border:1px solid rgba(201,143,157,.18);border-radius:50%}.gallery-section .section-heading{position:relative;padding-inline:24px}.gallery-intro{max-width:620px;margin:24px auto 0;color:#716b6d;font:italic 1rem/1.75 Lora,serif}.gallery-shell{position:relative}.gallery-track{display:grid;grid-auto-flow:column;grid-auto-columns:min(28vw,360px);gap:clamp(18px,2.5vw,34px);overflow-x:auto;padding:28px max(72px,calc((100vw - 1120px)/2)) 42px;overscroll-behavior-inline:contain;scrollbar-width:none;scroll-snap-type:x mandatory}.gallery-track::-webkit-scrollbar{display:none}.gallery-slide{min-width:0;aspect-ratio:4 / 5;position:relative;overflow:hidden;padding:0;border:8px solid var(--cream);color:#fff;background:var(--gray-light);box-shadow:0 15px 35px #15151529;scroll-snap-align:center}.gallery-slide:nth-child(3n+1){transform:rotate(-.7deg)}.gallery-slide:nth-child(3n+2){transform:rotate(.8deg)}.gallery-slide:nth-child(3n){transform:rotate(-.3deg)}.gallery-slide img{width:100%;height:100%;object-fit:cover;transition:transform .55s ease,filter .55s ease}.gallery-slide>span{position:absolute;inset:auto 0 0;padding:40px 16px 16px;opacity:0;font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;background:linear-gradient(transparent,#151515bd);transition:opacity .3s}.gallery-slide:hover img,.gallery-slide:focus-visible img{transform:scale(1.035);filter:brightness(.8)}.gallery-slide:hover>span,.gallery-slide:focus-visible>span{opacity:1}.gallery-arrow{position:absolute;z-index:4;top:50%;width:48px;height:48px;border:1px solid rgba(201,143,157,.45);border-radius:50%;color:var(--cream);background:#151515d6;box-shadow:0 8px 20px #15151533;transform:translateY(-50%);transition:opacity .2s,transform .2s}.gallery-arrow.previous{left:20px}.gallery-arrow.next{right:20px}.gallery-arrow:hover:not(:disabled){transform:translateY(-50%) scale(1.06)}.gallery-arrow:disabled{cursor:default;opacity:.25}.gallery-status{display:grid;grid-template-columns:auto minmax(80px,220px) auto;align-items:center;justify-content:center;gap:14px;padding-inline:24px;color:var(--gray)}.gallery-status>span{color:var(--red);font:italic 1rem Lora,serif}.gallery-status small{font-size:.63rem;letter-spacing:.12em;text-transform:uppercase}.gallery-progress{width:100%;height:1px;overflow:hidden;background:#d9d1d3}.gallery-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--rose),var(--red));transition:width .3s}.gallery-empty{width:min(560px,calc(100% - 48px));margin:auto;padding:45px 24px;border:1px solid var(--rose-light);text-align:center;background:#fffdfc9e}.gallery-empty p{margin:26px 0 8px;font:italic 1.2rem Lora,serif}.gallery-empty small{color:var(--gray)}.gallery-empty code{color:var(--red)}.empty-frames{height:120px;position:relative;display:flex;align-items:center;justify-content:center}.empty-frames i{width:82px;height:105px;position:absolute;border:6px solid var(--cream);background:var(--gray-light);box-shadow:0 8px 18px #1515151f}.empty-frames i:first-child{transform:translate(-60px) rotate(-8deg)}.empty-frames i:nth-child(2){z-index:2;transform:rotate(2deg)}.empty-frames i:last-child{transform:translate(60px) rotate(9deg);background:var(--rose-light)}.lightbox{position:fixed;z-index:60;top:0;right:0;bottom:0;left:0;overflow:hidden;color:#fff;background:#050505fa;overscroll-behavior:none;animation:fade-in .25s ease}.lightbox figure{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;margin:0;padding:12px;touch-action:none}.lightbox figure img{width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.lightbox figcaption{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;padding:8px 14px;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--rose-light);font:500 .72rem DM Sans,sans-serif;letter-spacing:.12em;background:#151515b8;transform:translate(-50%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lightbox-close{position:absolute;z-index:2;top:max(14px,env(safe-area-inset-top));right:16px;width:48px;height:48px;border:0;color:#fff;background:transparent;font-size:2rem}.gifts-section{position:relative;overflow:hidden;padding:112px 24px;color:#fff;background:var(--black)}.gifts-section:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 65% 45% at 50% 100%,rgba(118,27,43,.35),transparent 72%),radial-gradient(ellipse 35% 30% at 90% 0%,rgba(201,143,157,.1),transparent 75%)}.gift-inner{width:min(900px,100%);position:relative;z-index:1;margin:auto}.gift-copy{max-width:680px;margin:0 auto 58px;text-align:center}.gift-copy h2{margin:0;color:var(--cream);font:400 clamp(2.8rem,6vw,5.2rem)/1.06 "Playfair Display",serif;letter-spacing:-.04em}.gift-copy h2 em{color:var(--rose-light);font-weight:400}.gift-copy .ribbon-line{margin-top:26px}.gift-copy>p:not(.eyebrow){margin:24px auto 0;color:#fffdfc94;font:italic 1rem/1.75 Lora,serif}.gift-count{display:inline-flex;align-items:center;gap:12px;margin-top:24px}.gift-count strong{color:var(--rose-light);font:400 2.6rem Playfair Display,serif}.gift-count span{max-width:94px;color:#fffdfc73;font-size:.65rem;line-height:1.45;letter-spacing:.1em;text-align:left;text-transform:uppercase}.wheel-area{min-height:520px;display:flex;flex-direction:column;align-items:center;justify-content:center}.wheel{width:min(400px,76vw);aspect-ratio:1;position:relative;border:8px solid var(--soft-black);border-radius:50%;box-shadow:0 0 0 2px var(--rose),0 18px 55px #00000080;transition:transform 4.2s cubic-bezier(.12,.68,.08,1)}.wheel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(255,255,255,.28);border-radius:50%}.wheel-center{position:absolute;z-index:4;left:50%;top:50%;display:grid;place-items:center;width:58px;height:58px;color:var(--red);border:2px solid var(--rose);border-radius:50%;background:var(--black);transform:translate(-50%,-50%);box-shadow:0 4px 14px #0006}.pointer{position:relative;z-index:5;margin-bottom:-21px;width:0;height:0;border-left:16px solid transparent;border-right:16px solid transparent;border-top:32px solid var(--red);filter:drop-shadow(0 3px 3px rgba(0,0,0,.5))}.wheel-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;margin-top:38px}.spin-button{min-width:230px;margin:0;font-family:Playfair Display,serif;letter-spacing:.08em}.reset-wheel-button{min-height:46px;padding:10px 18px;border:1px solid rgba(231,194,202,.48);color:var(--rose-light);background:transparent;font:500 .68rem DM Sans,sans-serif;letter-spacing:.12em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}.reset-wheel-button:hover:not(:disabled){border-color:var(--rose-light);color:var(--black);background:var(--rose-light)}.all-opened .reset-wheel-button{margin-top:22px}.wheel-error{color:#ffb7b7;font-size:.86rem}.all-opened{max-width:420px;text-align:center}.all-opened>span{color:var(--red);font-size:4rem}.all-opened h3{margin:16px 0;font:400 2.6rem/1.2 Playfair Display,serif}.all-opened p{color:#fff9}.modal-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;padding:24px;background:#0f0f0fd6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overscroll-behavior:none;animation:fade-in .3s ease}.winner-modal{width:min(620px,100%);max-height:calc(100dvh - 24px);position:relative;overflow-y:auto;padding:48px 46px 38px;border:1px solid var(--rose-light);text-align:center;color:var(--soft-black);background:var(--cream);box-shadow:0 30px 90px #0006;overscroll-behavior:contain;animation:modal-in .45s ease both;scrollbar-width:thin;scrollbar-color:var(--rose) transparent}.modal-close{position:absolute;right:10px;top:8px;width:44px;height:44px;border:0;color:var(--gray);background:none;font-size:1.8rem}.gift-icon{display:block;margin-bottom:22px;font-size:4.5rem;filter:drop-shadow(0 6px 0 var(--gift-color))}.winner-modal h3{margin:0 0 18px;font:400 4rem Playfair Display,serif}.gift-instruction{color:#696466;line-height:1.6}.gift-message{position:relative;margin-top:25px;padding:25px 22px 22px;border:1px solid var(--rose-light);background:linear-gradient(145deg,#e7c2ca2e,#ffffff73)}.gift-message:before{content:"✦";position:absolute;top:-11px;left:50%;padding:0 10px;color:var(--red);background:var(--cream);transform:translate(-50%)}.verse-reference{margin:0 0 11px;color:var(--red);font-size:.65rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}.gift-message blockquote{margin:0;color:var(--soft-black);font:italic 1rem/1.65 Lora,serif}.gift-dedication{margin:16px 0 0;padding-top:15px;border-top:1px solid rgba(201,143,157,.38);color:#716b6d;font:.82rem/1.65 DM Sans,sans-serif}.modal-action{margin-top:20px}.promises-section{position:relative;overflow:hidden;padding:112px max(24px,calc((100vw - 1060px)/2));background:var(--cream)}.promises-section:before{content:"";position:absolute;inset:0 0 auto;height:180px;background:linear-gradient(180deg,rgba(231,194,202,.2),transparent)}.promises-section>*{position:relative}.promise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}.promise-card{padding:40px 28px;border:1px solid var(--gray-light);text-align:center;background:#ffffff4d}.promise-card:nth-child(2){border-color:var(--rose-light);background:#faf5f6}.promise-card>span{display:block;margin-bottom:18px;color:var(--red);font-size:1.6rem}.promise-card h3{margin:0 0 14px;color:var(--black);font:400 1.45rem Playfair Display,serif}.promise-card p{margin:0;color:var(--gray);font:italic .9rem/1.7 Lora,serif}.final-promise{max-width:850px;margin:82px auto 0;padding:60px 32px;color:var(--cream);text-align:center;background:linear-gradient(135deg,var(--soft-black),var(--black))}.final-promise>span{display:grid;place-items:center;width:42px;height:42px;margin:-82px auto 30px;color:var(--red);border-radius:50%;background:var(--cream)}.final-promise p{color:var(--rose-light);font:italic clamp(1.75rem,4vw,3rem)/1.35 "Playfair Display",serif}.final-promise cite{color:var(--gray);font:italic .8rem Lora,serif}footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:7px;padding:36px 24px;border-top:1px solid rgba(201,143,157,.14);color:var(--gray);font:italic .82rem Lora,serif;background:var(--black)}footer>:nth-child(2){color:var(--red)}footer small{width:100%;text-align:center;color:#6e686a;font:500 .58rem DM Sans,sans-serif;letter-spacing:.2em;text-transform:uppercase}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes greeting-in{0%{opacity:0;transform:translateY(22px)}}@keyframes bounce{50%{transform:translateY(7px)}}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(25px) scale(.96)}}@keyframes age-reveal{0%{opacity:0;transform:translateY(-18px) scale(.65)}}@keyframes age-orbit{to{transform:rotate(360deg)}}@keyframes intro-ring{50%{opacity:.35;transform:scale(1.08)}}@keyframes intro-spark{to{opacity:.35;transform:scale(.65)}}@keyframes intro-boom{45%{opacity:1;transform:scale(1.12);filter:brightness(1.6)}to{opacity:0;transform:scale(3.4);filter:brightness(2)}}@keyframes intro-curtain{0%,40%{opacity:1}to{opacity:0}}@keyframes hero-after-intro{0%{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}@media(max-width:800px){.site-nav{min-height:60px;padding-inline:20px}.nav-toggle{width:48px;height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:0;color:#fff;background:transparent}.nav-toggle span{width:20px;height:1px;background:currentColor;transition:transform .25s,opacity .25s}.nav-toggle b{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.site-nav.is-open .nav-toggle span:first-child{transform:translateY(5px) rotate(45deg)}.site-nav.is-open .nav-toggle span:nth-child(2){opacity:0}.site-nav.is-open .nav-toggle span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.nav-links{position:absolute;inset:60px 0 auto;display:grid;gap:0;max-height:0;overflow:hidden;background:#151515f5;transition:max-height .3s ease}.site-nav.is-open .nav-links{max-height:300px;border-bottom:1px solid rgba(201,143,157,.2)}.nav-links a{min-height:52px;display:grid;place-items:center;border-top:1px solid rgba(255,255,255,.06)}.memory-grid{grid-template-columns:1fr;gap:78px}.memory-card{width:min(100%,480px);margin:0 auto}.memory-card-2{margin-top:0}.photo-frame{width:min(88vw,400px);margin:auto}.memory-copy{padding-inline:4px}.gallery-track{grid-auto-columns:min(74vw,350px);padding-inline:13vw}.gallery-arrow{display:none}.promise-grid{grid-template-columns:1fr;gap:16px}.promise-card{padding:32px 24px}}@media(max-width:600px){.access-page{display:flex;align-items:flex-end;overflow-y:auto;padding:0;background-position:center 18%}.access-page:before{background:linear-gradient(180deg,#15151514,#1515151f 31%,#151515a8 52%,#151515f5)}.access-page:after{top:8px;right:8px;bottom:8px;left:8px}.access-card{width:100%;min-height:0;display:block;margin-top:36svh;padding:30px 26px max(30px,env(safe-area-inset-bottom));border:0;border-top:1px solid rgba(231,194,202,.28);background:linear-gradient(180deg,#151515bd,#151515f0 34%,#151515fa);box-shadow:0 -24px 55px #1515155c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.mini-heart{display:none}.access-card .eyebrow{margin-bottom:12px}.access-card h1{font-size:clamp(3.45rem,16vw,4.6rem)}.access-card>.ribbon-line{margin-top:14px}.access-subtitle{margin:14px 0 4px;font-size:1.12rem}.intro{margin-bottom:18px;font-size:.88rem;line-height:1.55}.email-row{flex-direction:column}.email-row input,.email-row button{width:100%;min-height:54px}.privacy{margin-top:18px}.hero{padding:90px 22px 106px}.hero:before{background-position:center 20%;opacity:.27}.hero:after{background:linear-gradient(180deg,rgba(21,21,21,.94),rgba(21,21,21,.45) 38%,rgba(21,21,21,.68) 64%,var(--black))}.age-counter{width:88px;height:88px;margin-bottom:17px}.age-counter:before{top:9px;right:9px;bottom:9px;left:9px}.age-counter strong{font-size:2.8rem}.age-counter small{margin-top:7px;font-size:.45rem}.hero .eyebrow{font-size:.62rem}.greeting-wrap{min-height:138px}.hero h1{max-width:350px;font-size:clamp(3.1rem,14.5vw,4.2rem)}.hero h1.greeting-compact{font-size:clamp(2.35rem,10.5vw,3.2rem);line-height:1.06}.my-love{margin-top:0;font-size:clamp(2.6rem,12vw,3.5rem)}.my-love.love-compact{font-size:clamp(2.2rem,10vw,3rem)}.birthday-meta{flex-wrap:wrap;gap:8px 12px;margin-bottom:20px;font-size:.6rem;line-height:1.5;letter-spacing:.17em}.hero-note{font-size:.98rem;line-height:1.75}.scroll-cue{width:100%;padding-inline:20px;font-size:.57rem}.story-section,.gifts-section,.promises-section{padding-top:84px;padding-bottom:84px}.gallery-section{padding-top:84px;padding-bottom:78px}.section-heading{margin-bottom:58px}.section-heading h2{font-size:clamp(2.55rem,12vw,3.35rem)}.memory-grid{gap:68px}.photo-frame{width:min(86vw,360px);padding:8px 8px 38px}.photo-placeholder{top:8px;right:8px;bottom:38px;left:8px}.memory-copy h3{font-size:1.75rem}.love-note{margin-top:72px;padding:36px 24px}.gallery-track{grid-auto-columns:78vw;gap:16px;padding:16px 11vw 34px}.gallery-slide{border-width:6px}.gallery-slide>span{opacity:1;padding-bottom:13px}.gallery-status{grid-template-columns:auto minmax(70px,1fr);gap:12px}.gallery-status small{grid-column:1 / -1;text-align:center}.lightbox figure{padding:0}.gift-copy{margin-bottom:38px}.gift-copy h2{font-size:clamp(2.75rem,13vw,3.6rem)}.wheel-area{min-height:430px}.wheel{width:min(310px,78vw);border-width:6px}.wheel-center{width:50px;height:50px}.wheel-actions{flex-direction:column;margin-top:34px}.spin-button{min-width:210px}.promises-section .section-heading h2{font-size:clamp(2.45rem,11vw,3.2rem)}.final-promise{margin-top:68px;padding:52px 22px 42px}.final-promise>span{margin-top:-73px}.winner-modal{width:100%;max-height:calc(100dvh - 8px);align-self:end;padding:38px 22px max(24px,env(safe-area-inset-bottom))}.winner-modal .gift-icon{margin-bottom:8px;font-size:3.4rem}.winner-modal h3{margin-bottom:10px;font-size:3.2rem}.winner-modal .gift-instruction{margin-block:8px}.winner-modal .gift-message{margin-top:16px;padding:20px 18px 17px}.winner-modal .gift-dedication{margin-top:12px;padding-top:12px}.winner-modal .modal-action{margin-top:15px}.modal-backdrop{place-items:end center;padding:4px}}@media(max-width:600px)and (max-height:700px){.access-card{margin-top:28svh;padding-top:20px;padding-bottom:20px}.access-card .eyebrow{margin-bottom:8px}.access-card h1{font-size:3.1rem}.access-card>.ribbon-line{margin-top:10px}.access-subtitle{margin-top:10px;font-size:1rem}.intro{margin-bottom:12px;font-size:.82rem;line-height:1.4}.email-row{gap:8px}.email-row input,.email-row button{min-height:48px}.privacy{margin-top:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
