:root{--cream:#fff9f4;--cream-deep:#fff1e8;--blush:#fbe5e2;--pink:#efbac4;--pink-soft:#ffe1e7;--rose:#af4666;--rose-dark:#8e3252;--berry:#67263d;--ink:#542e3b;--muted:#866f71;--white:#fff;--gold:#cd9869;--line:rgba(105,44,64,.15);--shadow:0 20px 70px rgba(94,36,57,.12);--serif:'DM Serif Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--script:'Great Vibes',cursive}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.modal-open{overflow:hidden}
::selection{background:#eab0be;color:var(--berry)}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
button:focus-visible,a:focus-visible{outline:3px solid var(--rose);outline-offset:5px}
[hidden]{display:none!important}
.container{width:min(1160px,calc(100% - 64px));margin:0 auto}
.section{padding:118px 0}
.eyebrow{display:inline-flex;align-items:center;gap:9px;color:var(--rose);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}
.section-heading{margin-bottom:46px}.section-heading h2,.letter-copy h2,.cake-copy h2,.gift-content h2{font:400 clamp(38px,4.7vw,66px)/1.13 var(--serif);letter-spacing:-.036em;margin:15px 0 18px}.section-heading h2 em,.letter-copy h2 em,.cake-copy h2 em,.gift-content h2 em,.gift-modal h2 em{font-weight:400;color:var(--rose)}.section-heading>p,.section-heading-split>p,.letter-copy>p,.cake-copy>p,.gift-content>p{color:var(--muted);font-size:15px;line-height:1.85;max-width:470px}
.button{display:inline-flex;gap:27px;align-items:center;justify-content:center;border:0;border-radius:100px;padding:17px 26px;font-size:13px;font-weight:700;letter-spacing:.015em;transition:transform .25s,box-shadow .25s,background .25s;white-space:nowrap}.button span{font-size:18px;font-weight:400;line-height:.7}.button:hover{transform:translateY(-4px);box-shadow:0 13px 30px rgba(120,39,67,.18)}.button-primary{background:var(--rose);color:var(--white)}.button-primary:hover{background:var(--rose-dark)}.button-dark{color:#fff;background:var(--berry)}.button-large{padding:20px 32px;font-size:14px}.text-link{display:inline-flex;gap:15px;align-items:center;font-size:13px;font-weight:700;border-bottom:1px solid currentColor;padding:9px 0}.text-link span{font-size:17px}.handwriting{font-family:var(--script)}
.scroll-progress{position:fixed;z-index:120;top:0;left:0;height:3px;background:var(--rose);width:0;transition:width .12s linear}
.sparkle-layer{position:fixed;inset:0;z-index:180;pointer-events:none;overflow:hidden}
.particle{position:absolute;top:-40px;left:0;pointer-events:none;animation:confettiFall var(--fall-time,3s) ease-in forwards;font-size:var(--particle-size,18px);color:var(--particle-color,#ed9cac);transform:translate3d(0,-50px,0) rotate(0deg)}
@keyframes confettiFall{0%{opacity:0;transform:translate3d(0,-50px,0) rotate(0)}8%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translate3d(var(--wind,70px),105vh,0) rotate(var(--spin,720deg))}}
/* Entry screen */
.welcome{position:fixed;z-index:150;inset:0;min-height:100dvh;display:grid;place-items:center;background:radial-gradient(ellipse at 22% 70%,#ffe9df 0,transparent 42%),radial-gradient(ellipse at 84% 12%,#f7d5df 0,transparent 44%),#fff7f3;overflow:auto;padding:28px 18px;transition:opacity .85s,visibility .85s}.welcome.leave{opacity:0;visibility:hidden;pointer-events:none}.welcome-glow{position:absolute;border-radius:50%;filter:blur(4px);pointer-events:none}.welcome-glow-one{width:320px;height:320px;border:1px solid rgba(180,70,108,.13);left:-180px;top:-75px;box-shadow:0 0 0 55px rgba(180,70,108,.035),0 0 0 115px rgba(180,70,108,.023)}.welcome-glow-two{width:350px;height:350px;border:1px solid rgba(180,70,108,.11);right:-140px;bottom:-150px;box-shadow:0 0 0 60px rgba(180,70,108,.035),0 0 0 125px rgba(180,70,108,.02)}.welcome-card{width:min(610px,100%);text-align:center;position:relative;z-index:1;padding:25px 0 18px;animation:welcomeUp .7s both}@keyframes welcomeUp{from{opacity:0;transform:translateY(23px)}to{opacity:1;transform:translateY(0)}}.welcome-top{font-size:10px;font-weight:700;letter-spacing:.25em;color:var(--rose);line-height:2}.welcome-illustration{width:220px;height:204px;position:relative;margin:5px auto -3px;display:grid;place-items:center}.heart-illustration{width:138px;height:138px;display:grid;place-items:center;transform:rotate(-11deg);background:#f5b4c4;border-radius:48% 48% 20% 48%;box-shadow:13px 22px 0 -6px #fce2e5;animation:heartbeat 3.5s ease-in-out infinite}.heart-illustration span{font:100px/1 var(--serif);color:#fff7f8;transform:rotate(11deg);margin-top:-11px}@keyframes heartbeat{0%,100%{transform:rotate(-11deg) scale(1)}45%{transform:rotate(-11deg) scale(1.045)}}.welcome-star{position:absolute;color:#cb7890;font-size:31px}.star-a{top:27px;left:9px;animation:twinkle 2.4s infinite}.star-b{top:19px;right:17px;font-size:22px;animation:twinkle 2.2s 1s infinite}.star-c{bottom:22px;right:0;animation:twinkle 3s .4s infinite}.welcome-flower{position:absolute;bottom:8px;left:25px;color:#e3a66b;font-size:35px;transform:rotate(-18deg)}@keyframes twinkle{0%,100%{opacity:.6;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}.welcome-pretitle{margin:8px 0 0;font-size:36px;color:#bf7890}.welcome h1{font:400 clamp(55px,9vw,83px)/1.05 var(--serif);margin:8px 0 21px;letter-spacing:-.055em;color:var(--berry)}.welcome h1 em{font-weight:400;color:var(--rose)}.title-heart{font:35px var(--sans);vertical-align:top;color:#e49bb0}.welcome-message{max-width:420px;margin:0 auto 30px;line-height:1.95;color:var(--muted);font-size:14px}.welcome-hint{font-size:11px;margin:23px 0 0;color:#ae8691;letter-spacing:.06em}
/* Header */
.site-header{height:86px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 max(5vw,32px);position:sticky;top:0;z-index:100;background:rgba(255,249,244,.9);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px);border-bottom:1px solid rgba(118,46,67,.075)}.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand-mark{place-items:center;width:42px;height:42px;border-radius:50%;border:0px solid var(--rose);font:40px var(--script);color:var(--rose)}.brand-mark span{font:10px var(--sans);margin:0 -1px}.brand-name{font:17px var(--serif);letter-spacing:-.03em;color:var(--berry)}.desktop-nav{display:flex;gap:33px;align-items:center;margin-left:auto}.desktop-nav a{color:#81646b;font-size:12px;font-weight:600;transition:color .2s}.desktop-nav a:hover{color:var(--rose)}.header-actions{display:flex;align-items:center;gap:16px}.sound-btn{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--berry);font-size:11px;font-weight:700;padding:11px 0}.sound-btn>span:first-child{font-size:21px;line-height:1}.sound-btn[aria-pressed="true"]>span:first-child{animation:twinkle 1.2s infinite}.nav-gift{background:var(--berry);color:white;border-radius:60px;padding:13px 19px;font-size:12px;font-weight:700;white-space:nowrap;transition:background .2s}.nav-gift:hover{background:var(--rose)}.nav-gift span{padding-left:9px}
/* Hero */
.hero{position:relative;min-height:740px;display:flex;align-items:center;isolation:isolate;background:radial-gradient(circle at 86% 45%,rgba(246,203,207,.48),transparent 39%),linear-gradient(110deg,#fffaf5 7%,#fff5f0 85%);overflow:hidden;padding:58px 0 95px}.hero-grid{display:grid;grid-template-columns:1.01fr .99fr;align-items:center;gap:50px}.hero-copy{position:relative;z-index:3;padding-bottom:15px}.tiny-sun{font-size:18px;color:#dda4ab}.hero-heading{font:400 clamp(70px,7.3vw,113px)/.99 var(--serif);letter-spacing:-.055em;color:var(--berry);margin:25px 0 24px}.hero-heading em{font-weight:400;color:var(--rose)}.hero-heading .period{color:#e7a9b3}.hero-text{font-size:16px;line-height:1.95;max-width:430px;color:var(--muted)}.hero-text strong{font-weight:700;color:var(--berry)}.hero-actions{display:flex;align-items:center;gap:32px;margin-top:30px;flex-wrap:wrap}.hero-footer{display:flex;align-items:center;gap:14px;font-size:11px;color:#9b7981;letter-spacing:.02em;margin-top:64px}.mini-hearts{font-size:13px;letter-spacing:-5px;margin-right:5px;color:var(--rose)}.hero-orbit{position:absolute;border:1px solid rgba(185,81,107,.1);border-radius:50%;pointer-events:none}.hero-orbit-one{width:450px;height:450px;left:-300px;bottom:-170px}.hero-orbit-two{width:400px;height:400px;right:-310px;top:-200px}.hero-art{height:600px;position:relative;display:grid;place-items:center}.art-halo{position:absolute;width:500px;height:500px;border-radius:50%;background:radial-gradient(circle,#fbd9df 0%,#f9e7e5 56%,transparent 70%);opacity:.95}.art-dots{position:absolute;inset:0;background-image:radial-gradient(#c8758f 1px,transparent 1px);background-size:29px 29px;opacity:.12;mask-image:radial-gradient(circle at center,#000 19%,transparent 66%)}.art-frame{width:min(370px,80%);height:500px;border:11px solid rgba(255,255,255,.94);border-radius:205px 205px 170px 170px;overflow:hidden;background:#f7bec9;position:relative;box-shadow:0 22px 80px rgba(138,62,82,.13);transform:rotate(4deg)}.art-inner{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;background:radial-gradient(circle at 25% 20%,#fbe5dc 0%,transparent 38%),linear-gradient(152deg,#f9c8ce 7%,#f0a5b7 100%)}.art-inner:before,.art-inner:after{content:"";position:absolute;width:290px;height:290px;border:1px solid rgba(255,255,255,.22);border-radius:50%}.art-inner:before{left:-170px;top:-100px}.art-inner:after{right:-120px;bottom:-100px}.art-top-flower{font-size:50px;color:#fff5f1;margin:0 0 24px;line-height:1;filter:drop-shadow(0 3px 2px rgba(150,59,91,.1))}.art-little-text{font:32px var(--script);color:#7c3752;z-index:1}.art-big-heart{width:235px;height:205px;position:relative;z-index:1;display:grid;place-items:center;margin:2px 0 17px}.art-big-heart:before{content:"♥";font:320px/1 var(--sans);position:absolute;color:#fff5ef;text-shadow:0 12px 32px rgba(165,76,100,.11);top:-65px;left:-10px}.art-big-heart span{position:relative;z-index:1;text-align:center;font:42px/.97 var(--script);color:var(--rose);transform:rotate(-9deg)}.art-bottom-text{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--berry);z-index:2}.art-sparkle{position:absolute;color:white;font-size:28px}.spark-one{top:72px;right:45px}.spark-two{left:28px;bottom:80px}.spark-three{right:36px;bottom:94px;font-size:20px}.hero-real-photo{width:100%;height:100%;object-fit:cover;object-position:center}.art-sticker{position:absolute;z-index:2;background:#fffdf9;box-shadow:0 13px 36px rgba(112,59,67,.12);color:var(--berry);text-align:center}.art-sticker-top{right:-12px;top:82px;width:132px;height:132px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;font:25px/1.15 var(--script);transform:rotate(13deg)}.art-sticker-top span{font:15px var(--sans);margin-top:9px;color:var(--rose)}.art-sticker-bottom{bottom:76px;left:0;border-radius:12px;padding:15px 17px;font-size:12px;font-weight:700;transform:rotate(-9deg)}.art-sticker-bottom span{font-size:23px;margin-right:4px;color:var(--rose)}.float-heart{position:absolute;color:#d77d9c;animation:bob 5s ease-in-out infinite}.h-one{top:20px;left:95px;font-size:24px}.h-two{right:34px;bottom:85px;font-size:35px;animation-delay:1.2s}@keyframes bob{0%,100%{transform:translateY(0) rotate(-15deg)}50%{transform:translateY(-18px) rotate(6deg)}}.scroll-cue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:24px;font-size:9px;letter-spacing:.22em;color:#b68b94;font-weight:700;white-space:nowrap}.scroll-cue span{font-size:21px;font-weight:400}
/* ticker */
.love-marquee{overflow:hidden;background:#ad4967;color:#fff8f3;transform:rotate(-1.1deg) scale(1.02);position:relative;z-index:2;padding:17px 0}.marquee-track{width:max-content;display:flex;animation:marquee 28s linear infinite}.marquee-track span{font-size:12px;font-weight:700;letter-spacing:.22em;white-space:nowrap;padding-left:14px}@keyframes marquee{to{transform:translateX(-50%)}}
/* Reasons */
.reasons{background:#fff9f4;padding-top:140px}.section-heading{text-align:center}.section-heading>p{margin:0 auto}.reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:23px}.reason-card{height:342px;border:0;background:none;padding:0;perspective:1200px;text-align:center;color:inherit}.reason-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .85s cubic-bezier(.2,.7,.15,1)}.reason-card.flipped .reason-inner{transform:rotateY(180deg)}.reason-front,.reason-back{position:absolute;inset:0;border:1px solid #f0d9dc;border-radius:20px;backface-visibility:hidden;overflow:hidden;display:flex;align-items:center;flex-direction:column}.reason-front{background:#fff4ef;justify-content:center;transition:background .3s}.reason-card:nth-child(2) .reason-front{background:#ffe7e9}.reason-card:nth-child(3) .reason-front{background:#f9ece7}.reason-card:hover:not(.flipped) .reason-front{background:#fbe6e5}.reason-number{position:absolute;top:25px;left:27px;font-size:11px;font-weight:700;letter-spacing:.12em;color:#b78a90}.reason-icon{height:105px;font:100px/.98 var(--serif);color:#c87992}.reason-card:nth-child(2) .reason-icon{color:#c45b7e}.reason-card:nth-child(3) .reason-icon{font-size:107px;color:#bf8a7a}.reason-title{font:31px var(--serif);margin:14px 0 41px;color:var(--berry)}.reason-instruction{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.17em;color:#a37b85}.reason-back{transform:rotateY(180deg);background:var(--berry);color:#fff7f4;padding:34px 25px;justify-content:center}.reason-back-icon{font:58px var(--serif);color:#f1b2c5}.reason-back-title{font:26px var(--serif);margin:11px 0 13px}.reason-back-text{color:#f9d5dc;font-size:13px;line-height:1.85;max-width:260px}.reason-back .reason-instruction{margin-top:auto;color:#eab5c4}
/* Quote */
.quote-band{position:relative;background:#f8e4e4;text-align:center;padding:94px 0;overflow:hidden}.quote-band:before,.quote-band:after{content:"✿";position:absolute;font:210px var(--serif);color:rgba(173,73,103,.06);top:5px}.quote-band:before{left:-32px}.quote-band:after{right:10px;transform:rotate(35deg)}.quote-content{position:relative;z-index:1}.quote-star{color:var(--rose);font-size:24px}.quote-content p{font:clamp(26px,3.7vw,48px)/1.3 var(--serif);color:var(--berry);margin:15px 0 18px;letter-spacing:-.025em}.quote-content em{color:var(--rose)}.quote-sign{font:28px var(--script);color:var(--rose)}
/* Memories */
.memories{background:#fffbf7}.section-heading-split{text-align:left;display:flex;justify-content:space-between;align-items:end;gap:40px}.section-heading-split>p{margin:0 0 9px;max-width:305px}.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:21px}.memory-card{background:#fff;padding:11px 11px 14px;border-radius:9px;box-shadow:0 12px 40px rgba(114,59,63,.09);transition:transform .35s,box-shadow .35s}.memory-card:nth-child(1){transform:rotate(-3deg)}.memory-card:nth-child(2){transform:rotate(2deg) translateY(16px)}.memory-card:nth-child(3){transform:rotate(-1.8deg) translateY(-7px)}.memory-card:nth-child(4){transform:rotate(3.1deg) translateY(12px)}.memory-card:hover{transform:rotate(0) translateY(-12px);box-shadow:0 23px 60px rgba(114,59,63,.15)}.memory-image{height:262px;overflow:hidden;position:relative;border-radius:4px;background:#f4ccd6}.memory-image>img{width:100%;height:100%;object-fit:cover;display:block}.memory-placeholder{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.memory-placeholder:before,.memory-placeholder:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.4);border-radius:50%;width:230px;height:230px}.memory-placeholder:before{left:-130px;top:-110px}.memory-placeholder:after{right:-130px;bottom:-115px}
.memory-placeholder-1{background-image: url('../images/a.jpeg'); background-repeat: no-repeat;background-position: center;background-size: cover;}
.memory-placeholder-2{background-image: url('../images/b.jpeg'); background-repeat: no-repeat;background-position: center;background-size: cover;}
.memory-placeholder-3{background-image: url('../images/c.jpeg'); background-repeat: no-repeat;background-position: center;background-size: cover;}
.memory-placeholder-4{background-image: url('../images/d.jpeg'); background-repeat: no-repeat;background-position: center;background-size: cover;}
.memory-doodle{font:70px/1 var(--serif);color:rgba(255,250,245,.92);filter:drop-shadow(0 6px 4px rgba(100,42,60,.06))}.memory-small{position:absolute;bottom:30px;text-align:center;font:26px/1.1 var(--script);color:white;transform:rotate(-5deg)}.memory-caption{position:relative;padding:18px 7px 8px}.memory-caption>span:first-child{color:#b37b88;font-size:9px;font-weight:700;letter-spacing:.16em}.memory-caption h3{font:21px var(--serif);color:var(--berry);margin:8px 0 0}.memory-heart{position:absolute;right:4px;bottom:7px;color:#d590a1;font-size:17px}.memories-footnote{margin:72px auto 0;text-align:center;font:29px var(--script);color:#ab617a}.memories-footnote span{font:17px var(--sans)}
/* Letter */
.letter-section{background:linear-gradient(125deg,#fff0ed,#fce0e0);overflow:hidden}.letter-grid{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:80px}.letter-copy h2{margin-top:20px}.letter-copy>p{max-width:430px;margin-bottom:29px}.letter-small{font:24px var(--script);color:#af7082!important;margin-top:20px!important}.envelope-scene{position:relative;border:0;background:transparent;min-height:480px;width:100%;max-width:560px;display:block;margin:0 auto;perspective:850px}.envelope-scene:focus-visible{outline-offset:0}.envelope-scene:hover .envelope-letter{transform:translate(-50%,-43px)}.envelope-scene:hover .envelope{transform:translate(-50%,14px) rotate(-2deg)}.envelope{width:min(370px,85%);height:245px;position:absolute;top:180px;left:50%;transform:translateX(-50%) rotate(-5deg);transition:transform .4s;filter:drop-shadow(0 25px 25px rgba(104,46,62,.13))}.envelope-back{position:absolute;inset:0;background:#e9a1b0;border-radius:8px}.envelope-front{position:absolute;inset:0;z-index:3;background:#eda6b5;clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);border-radius:0 0 8px 8px}.envelope-flap{position:absolute;inset:0;z-index:4;clip-path:polygon(0 0,100% 0,50% 57%);background:#f4bcca;transition:transform .3s}.envelope-seal{position:absolute;z-index:5;top:122px;left:calc(50% - 22px);background:#b95879;color:#fff;border-radius:50%;height:45px;width:45px;display:grid;place-items:center;font-size:21px;box-shadow:0 4px 10px rgba(107,43,62,.12)}.envelope-letter{position:absolute;left:50%;top:120px;transform:translate(-50%,0);height:238px;width:min(305px,69%);border-radius:3px;background:#fffaf3;box-shadow:0 8px 25px rgba(99,46,58,.1);z-index:1;display:flex;flex-direction:column;align-items:center;padding:32px 16px;transition:transform .4s}.envelope-letter>span{font:9px var(--sans);font-weight:700;letter-spacing:.12em;color:#b4838e;text-transform:uppercase}.envelope-letter strong{font:39px var(--script);color:var(--rose);margin:25px 0 14px}.envelope-letter i{font:24px var(--script);color:#ad7486}.envelope-deco{position:absolute;z-index:5;font-size:39px;color:var(--rose);pointer-events:none}.envelope-deco-one{left:11%;top:55px}.envelope-deco-two{right:2%;top:120px}.envelope-deco-three{bottom:90px;left:7%;color:#d59c76}.envelope-cta{position:absolute;bottom:8px;left:0;right:0;text-align:center;color:#a97584;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
/* Cake */
.cake-section{background:#fffaf5}.cake-grid{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:92px}.cake-art{height:470px;position:relative;display:flex;justify-content:center;align-items:flex-end;padding-bottom:89px}.cake-glow{position:absolute;inset:20px 0 45px;border-radius:50%;background:radial-gradient(circle,#fbe8de 0%,#fff7f1 65%,transparent 70%)}.cake-floral{position:absolute;font-size:65px;color:#edc5ca;top:70px}.cake-floral-left{left:26px}.cake-floral-right{right:20px;top:170px;font-size:39px;color:#d8aa80}.birthday-cake{position:relative;width:320px;height:280px;filter:drop-shadow(0 22px 15px rgba(103,44,65,.09))}.candles{display:flex;position:absolute;left:50%;top:0;transform:translateX(-50%);z-index:3;gap:28px}.candle{position:relative;width:13px;height:65px;background:repeating-linear-gradient(160deg,#f5fbfc 0 9px,#e69baf 9px 15px);border-radius:3px 3px 0 0}.flame{position:absolute;bottom:calc(100% + 6px);left:1px;width:12px;height:23px;background:#ffb653;box-shadow:0 0 13px #ffc66f,0 0 26px #ffc66f;transform-origin:50% 100%;clip-path:polygon(50% 0,79% 31%,100% 65%,80% 100%,20% 100%,0 65%,20% 35%);border-radius:50% 50% 44% 44%;animation:flicker .9s ease-in-out infinite alternate}.candle:nth-child(2) .flame{animation-delay:.31s}.candle:nth-child(3) .flame{animation-delay:.16s}.birthday-cake.blown .flame{animation:poof .5s forwards}@keyframes flicker{to{transform:scale(.8) rotate(8deg)}}@keyframes poof{to{transform:translateY(-25px) scale(0);opacity:0}}.cake-top{position:absolute;z-index:2;top:57px;left:65px;width:190px;height:95px;border-radius:15px 15px 8px 8px;background:linear-gradient(90deg,#e9869e,#f5bac6 55%,#e895a9);box-shadow:inset 0 -12px 0 rgba(150,45,76,.08)}.cake-bottom{position:absolute;z-index:1;top:144px;left:22px;width:275px;height:116px;border-radius:20px 20px 12px 12px;background:linear-gradient(90deg,#e6a0aa,#f3c5c4 56%,#e7a0b0);box-shadow:inset 0 -13px 0 rgba(150,45,76,.07)}.cake-icing{position:absolute;left:0;right:0;top:-11px;height:34px;background:#fff5ee;border-radius:49% 49% 18% 18%;box-shadow:0 9px 0 -2px #fff5ee}.cake-icing:after{content:"";position:absolute;width:100%;height:23px;left:0;top:12px;background:radial-gradient(circle at 16% 0,#fff5ee 0 14px,transparent 15px),radial-gradient(circle at 40% 0,#fff5ee 0 19px,transparent 20px),radial-gradient(circle at 70% 0,#fff5ee 0 11px,transparent 12px),radial-gradient(circle at 91% 0,#fff5ee 0 19px,transparent 20px)}.cake-heart{position:absolute;left:0;right:0;top:73px;text-align:center;color:#c56584;font-size:19px;letter-spacing:11px}.cake-heart-top{top:58px;letter-spacing:0}.cake-plate{position:absolute;top:253px;left:0;width:320px;height:24px;border-radius:50%;background:#e7c8bf;box-shadow:0 7px 0 #f1ded8}.cake-art-label{position:absolute;bottom:14px;left:0;right:0;text-align:center;font:26px var(--script);color:#b57b85}.cake-copy .wish-response{font:24px var(--script);color:var(--rose);margin-top:22px;min-height:34px}
/* Gift */
.gift-section{background:radial-gradient(circle at 70% 18%,#ed9caf26,transparent 38%),radial-gradient(circle at 20% 75%,#ed9caf21,transparent 40%),#7b314e;color:#fff8f4;text-align:center;padding:108px 0 100px;overflow:hidden}.gift-content h2{font-size:clamp(40px,5.2vw,70px);color:#fff9f4}.gift-content h2 em{color:#fac8d1}.gift-content .eyebrow{color:#f9c7d1}.gift-content>p{margin:0 auto;color:#f7d3d9}.present-button{position:relative;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;width:300px;height:280px;margin:20px auto 0;color:#fff}.present-box{height:190px;width:185px;position:relative;display:block;transition:transform .3s;filter:drop-shadow(0 23px 16px rgba(48,16,32,.25))}.present-button:hover .present-box{transform:rotate(-6deg) translateY(-9px)}.present-base{position:absolute;width:168px;height:125px;bottom:2px;left:8px;background:linear-gradient(90deg,#e49aa9,#f6c0c4 50%,#e6a0b2);border-radius:4px 4px 13px 13px;box-shadow:inset -16px 0 0 rgba(153,59,85,.065)}.box-ribbon{position:absolute;left:calc(50% - 13px);top:0;height:100%;width:26px;background:#fff3da}.present-lid{position:absolute;z-index:2;top:36px;left:0;width:185px;height:38px;background:#f7cdd3;border-radius:5px;transition:transform .6s cubic-bezier(.18,.75,.22,1);box-shadow:inset -15px 0 0 rgba(157,67,91,.075)}.lid-ribbon{position:absolute;left:calc(50% - 13px);top:0;width:26px;height:100%;background:#fff3da}.box-bow{position:absolute;z-index:3;top:-119px;width:54px;height:43px;border:13px solid #fff2dc;transform:rotate(28deg);border-radius:85% 20% 85% 45%}.bow-left{left:29px}.bow-right{right:29px;transform:scaleX(-1) rotate(28deg)}.present-button:hover .present-lid{transform:translateY(-13px) rotate(-8deg)}.present-rays{position:absolute;inset:5px 18px 0;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffffff12 0deg 5deg,transparent 5deg 23deg);animation:spinSlow 27s linear infinite}@keyframes spinSlow{to{transform:rotate(360deg)}}.present-label{position:absolute;bottom:-2px;font-size:10px;letter-spacing:.22em;font-weight:700;color:#fad8de}.present-label span{font-size:16px;letter-spacing:0}.gift-content .gift-whisper{font:24px var(--script);margin-top:32px;color:#f9c7d1}
/* Footer */
.footer{background:#fff9f4;padding:40px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:24px}.footer-script{font:29px var(--script);color:var(--rose)}.footer-inner>span:nth-child(2){font-size:10px;letter-spacing:.15em;font-weight:700;color:#a28a8c}.footer-inner a{color:var(--rose);font-size:12px;font-weight:700}
/* Dialogs */
.modal-backdrop{position:fixed;z-index:160;inset:0;background:rgba(53,20,34,.62);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);display:flex;align-items:center;justify-content:center;padding:23px;overflow-y:auto;animation:fadeIn .25s}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.modal-card{position:relative;width:min(600px,100%);max-height:calc(100dvh - 46px);overflow:auto;background:#fffaf3;border-radius:11px;box-shadow:0 30px 100px rgba(26,12,18,.22);padding:52px 56px}.modal-close{position:absolute;z-index:2;right:19px;top:13px;background:#fae3e5;border:0;color:var(--berry);font-size:26px;border-radius:50%;height:38px;width:38px;display:grid;place-items:center}.modal-close:hover{background:#f5c9d3}.letter-modal{background:repeating-linear-gradient(#fffaf5 0px,#fffaf5 31px,#f4e8e0 32px);border:7px solid #fff}.letter-paper-top{font-size:10px;font-weight:700;letter-spacing:.22em;color:#b98490}.letter-paper-heart{font:45px var(--serif);display:block;text-align:center;color:#d18ba1;margin:15px 0}.letter-modal h2{font:48px var(--script);color:var(--rose);margin:8px 0 20px}.letter-body p{font-size:14px;line-height:2;color:#654554;margin:0 0 13px}.letter-body .letter-ending{font-weight:700;color:var(--berry)}.letter-signature{display:block;text-align:right;font:27px var(--script);color:var(--rose);padding-top:10px}.letter-signature strong{font-weight:400;font-size:36px}.gift-modal{text-align:center;background:#fff6f0;padding-top:50px;padding-bottom:46px}.gift-modal-icon{font:87px/1 var(--serif);color:var(--rose);animation:heartbeat 2s infinite}.gift-modal h2{font:47px/1.1 var(--serif);color:var(--berry);margin:20px 0}.gift-modal>p{font-size:14px;color:var(--muted);line-height:1.85}.gift-promise{display:flex;align-items:center;justify-content:center;gap:19px;border:1px solid #e9c7cc;background:#fffaf6;padding:17px;margin:29px 0 18px;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--rose)}.gift-promise span{font:29px var(--serif)}.gift-modal .gift-from{font:26px var(--script);color:var(--rose);margin:25px 0}.gift-modal .button{margin:5px auto 0}
/* Reveal animations and motion */
.reveal{opacity:0;transform:translateY(32px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.65,.2,1)}.reveal.in-view{opacity:1;transform:translateY(0)}.memory-card.reveal.in-view:nth-child(1){transform:rotate(-3deg)}.memory-card.reveal.in-view:nth-child(2){transform:rotate(2deg) translateY(16px)}.memory-card.reveal.in-view:nth-child(3){transform:rotate(-1.8deg) translateY(-7px)}.memory-card.reveal.in-view:nth-child(4){transform:rotate(3.1deg) translateY(12px)}.memory-card.reveal.in-view:hover{transform:rotate(0) translateY(-12px)}
/* Tablet */
@media (max-width:1050px){.container{width:min(940px,calc(100% - 48px))}.site-header{padding:0 25px}.desktop-nav{gap:17px}.hero-grid{gap:12px}.hero-heading{font-size:clamp(67px,8.2vw,94px)}.hero-art{height:540px}.art-frame{height:450px;width:310px}.art-halo{width:415px;height:415px}.art-sticker-top{right:-4px}.art-sticker-bottom{left:-5px;bottom:54px}.memory-grid{gap:14px}.memory-image{height:225px}.memory-caption h3{font-size:18px}.cake-grid{gap:44px}.letter-grid{gap:37px}}
@media (max-width:800px){.desktop-nav{display:none}.brand-name{font-size:16px}.hero{min-height:670px}.hero-heading{font-size:clamp(66px,8vw,85px)}.hero-grid{grid-template-columns:1.03fr .97fr}.hero-art{height:470px}.art-frame{width:270px;height:385px;border-width:8px}.art-halo{width:330px;height:330px}.art-big-heart{transform:scale(.79);margin:-8px 0}.art-top-flower{margin-bottom:5px}.art-sticker-top{right:-22px;top:40px;transform:scale(.78) rotate(13deg)}.art-sticker-bottom{transform:scale(.8) rotate(-9deg);left:-25px;bottom:30px}.hero-actions{gap:16px}.hero-footer{margin-top:35px}.reason-grid{gap:13px}.reason-card{height:295px}.reason-title{font-size:24px}.reason-icon{font-size:79px;height:80px}.reason-back{padding:25px 17px}.reason-back-title{font-size:22px}.reason-back-text{font-size:12px}.memory-grid{grid-template-columns:repeat(2,1fr);gap:25px}.memory-image{height:320px}.memory-card{max-width:380px}.section-heading-split{align-items:start}.letter-grid,.cake-grid{gap:10px}.letter-copy h2,.cake-copy h2{font-size:44px}.envelope-scene{min-height:425px;transform:scale(.9)}.birthday-cake{transform:scale(.84);transform-origin:center bottom}.cake-art{height:430px}.cake-copy{padding-left:10px}}
/* Mobile */
@media (max-width:600px){html{scroll-padding-top:71px}.container{width:calc(100% - 38px)}.section{padding:83px 0}.eyebrow{font-size:10px;letter-spacing:.135em}.site-header{height:71px;padding:0 17px;gap:8px}.brand{gap:7px}.brand-mark{width:37px;height:37px;font-size:23px}.brand-name{font-size:14px}.header-actions{gap:9px}.sound-label{display:none}.sound-btn{font-size:20px;padding:11px 2px}.nav-gift{padding:12px 13px;font-size:11px}.nav-gift span{padding-left:4px}.hero{padding:48px 0 75px;min-height:0}.hero-grid{grid-template-columns:1fr;gap:16px}.hero-copy{text-align:center;padding-bottom:0}.hero-copy .eyebrow{justify-content:center}.hero-heading{font-size:clamp(65px,14vw,83px);margin:16px 0;line-height:1}.hero-text{font-size:14px;line-height:1.8;margin:0 auto;max-width:350px}.hero-actions{justify-content:center;gap:20px;margin-top:23px}.button{padding:15px 20px;gap:19px;font-size:12px}.hero-footer{justify-content:center;margin:29px 0 0}.hero-art{height:460px;max-width:420px;width:100%;margin:0 auto}.art-frame{width:277px;height:395px}.art-halo{width:340px;height:340px}.art-sticker-top{right:3px;top:16px}.art-sticker-bottom{left:0;bottom:24px}.h-one{top:8px;left:50px}.h-two{right:17px;bottom:40px}.scroll-cue{bottom:17px;font-size:8px;gap:11px}.love-marquee{padding:14px 0}.marquee-track span{font-size:10px}.reasons{padding-top:96px}.section-heading{margin-bottom:35px}.section-heading h2,.letter-copy h2,.cake-copy h2,.gift-content h2{font-size:clamp(38px,10vw,51px)}.section-heading>p{font-size:13px}.reason-grid{grid-template-columns:1fr;max-width:430px;margin:auto;gap:15px}.reason-card{height:245px}.reason-icon{height:72px;font-size:74px}.reason-title{margin:9px 0 18px;font-size:29px}.reason-back-icon{font-size:37px}.reason-back-title{margin:7px 0;font-size:24px}.reason-back-text{max-width:290px;font-size:12px;line-height:1.6}.quote-band{padding:73px 0}.quote-content p{font-size:clamp(24px,6vw,34px)}.quote-sign{font-size:24px}.section-heading-split{display:block;text-align:center}.section-heading-split>p{margin:0 auto}.memory-grid{gap:19px 14px}.memory-card{padding:7px 7px 10px}.memory-image{height:225px}.memory-caption{padding:12px 4px 6px}.memory-caption h3{font-size:16px}.memory-caption>span:first-child{font-size:8px}.memory-heart{font-size:13px;right:0;bottom:6px}.memory-doodle{font-size:95px}.memory-small{font-size:21px}.memory-card:nth-child(2),.memory-card:nth-child(4){margin-top:19px}.memories-footnote{font-size:24px;margin-top:60px}.letter-grid,.cake-grid{grid-template-columns:1fr;gap:8px}.letter-copy{text-align:center}.letter-copy>p{font-size:14px;margin:0 auto 24px}.letter-small{margin:18px auto 0!important}.envelope-scene{min-height:380px;max-width:410px;transform:scale(.85);margin-top:-20px;margin-bottom:-15px}.envelope-letter{top:70px}.envelope{top:130px}.envelope-deco-one{top:12px}.envelope-cta{bottom:0}.cake-grid{display:flex;flex-direction:column}.cake-art{order:2;width:100%;height:360px;padding-bottom:68px}.cake-copy{order:1;text-align:center;padding-left:0}.cake-copy>p{margin:0 auto 24px;font-size:14px}.cake-glow{inset:0 0 15px}.birthday-cake{transform:scale(.82)}.cake-art-label{bottom:0}.cake-floral{top:25px}.cake-floral-right{top:115px}.cake-copy .wish-response{margin-top:15px;font-size:22px}.gift-section{padding:82px 0 76px}.gift-content h2{font-size:43px}.gift-content>p{font-size:14px}.present-button{margin-top:4px;height:270px}.gift-content .gift-whisper{margin-top:23px}.footer{padding:29px 0}.footer-inner{flex-direction:column;gap:12px;text-align:center}.footer-script{font-size:27px}.footer-inner>span:nth-child(2){font-size:9px}.modal-card{padding:46px 25px 30px}.letter-modal h2{font-size:43px}.letter-body p{font-size:13px;line-height:1.8}.gift-modal h2{font-size:39px}.gift-promise{font-size:9px;gap:7px}.welcome-card{padding:8px 4px}.welcome-illustration{width:190px;height:175px}.heart-illustration{transform:scale(.83) rotate(-11deg)}.welcome h1{font-size:clamp(49px,12vw,67px);margin:3px 0 19px}.welcome-pretitle{font-size:31px;margin:0}.welcome-message{font-size:13px;line-height:1.8;padding:0 12px}.welcome-top{font-size:9px;letter-spacing:.14em}.welcome-flower{bottom:-1px}.star-a{left:0}}
@media (max-width:360px){.brand-name{font-size:12px}.nav-gift{padding:10px 9px}.hero-heading{font-size:62px}.hero-art{height:405px}.art-frame{width:245px;height:353px}.art-sticker-bottom{left:-18px;bottom:15px}.art-sticker-top{right:-13px}.memory-image{height:181px}.memory-doodle{font-size:75px}.memory-small{font-size:17px}.memory-caption h3{font-size:14px}.footer-inner>span:nth-child(2){letter-spacing:.07em}}
@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}.welcome-card{animation:none}}
.present-button.unwrapped .present-lid{transform:translate(-18px,-100px) rotate(-22deg)}
.present-button.unwrapped .present-box{transform:scale(1.06)}
