@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap');
:root{--night:#220c22;--night2:#32112d;--pink:#f2b4c8;--rose:#d982a1;--cream:#fff4ed;--muted:#c4aab9;--lilac:#ac8ba9;--gold:#ecc99b;--sans:'DM Sans',sans-serif;--serif:'Playfair Display',serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--cream);font-family:var(--sans);overflow-x:hidden}a{color:inherit;text-decoration:none}.grain{position:fixed;inset:0;pointer-events:none;z-index:10;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}.ambient{position:absolute;width:600px;height:600px;border-radius:50%;filter:blur(130px);opacity:.13;pointer-events:none}.ambient-one{top:0;left:-250px;background:#ba567d}.ambient-two{top:480px;right:-300px;background:#79507e}.topbar{height:84px;padding:0 8.3%;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2;border-bottom:1px solid #ffffff12}.wordmark{font:500 13px var(--sans);letter-spacing:.02em;color:#f7e6ed}.tiny-heart{color:var(--rose);margin-right:8px}.top-link{font-size:12px;color:var(--muted);letter-spacing:.04em}.top-link span{margin-left:8px;color:var(--pink)}.hero{min-height:710px;max-width:1200px;margin:auto;padding:96px 6% 100px;display:grid;grid-template-columns:1fr 1fr;align-items:center;position:relative}.hero-copy{z-index:1}.eyebrow{font-size:9px;font-weight:700;letter-spacing:.22em;color:#dd9ab2}.eyebrow-line{display:inline-block;width:27px;height:1px;background:#d98ea8;vertical-align:middle;margin:0 11px}h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.035em}h1{font-size:clamp(54px,6.4vw,84px);line-height:1.04;margin:26px 0 20px}h1 em,h2 em{color:var(--pink);font-weight:500}.hero-sub{font-size:14px;line-height:1.9;color:var(--muted);margin:0 0 28px}.hero-sub em{color:var(--pink);font-family:var(--serif);font-size:16px}.button{display:inline-flex;align-items:center;gap:29px;padding:15px 19px;font-size:11px;letter-spacing:.025em;transition:transform .25s,box-shadow .25s}.button:hover{transform:translateY(-3px)}.button-primary{background:linear-gradient(105deg,#d47996,#b66d8f);color:white;box-shadow:0 8px 28px #c5688738}.button-primary:hover{box-shadow:0 12px 32px #c5688758}.button span{font-size:15px}.hero-note{display:flex;align-items:center;gap:10px;margin:42px 0 0;color:#a88d9d;font-size:10px;letter-spacing:.06em}.note-heart{font:25px var(--serif);color:#d989a5}.hero-art{height:480px;position:relative;display:flex;align-items:center;justify-content:center}.orbit{position:absolute;border:1px solid #f0b6d019;border-radius:50%;width:405px;height:405px;transform:rotate(-24deg)}.orbit-a{width:460px;height:310px;transform:rotate(37deg)}.moon{position:absolute;width:340px;height:340px;background:radial-gradient(circle at 36% 31%,#bd799c66,transparent 70%);filter:blur(20px);border-radius:50%}.main-photo{width:279px;height:350px;position:relative;z-index:1;transform:rotate(-4deg);box-shadow:0 25px 90px #0f07117a}.photo-placeholder{background:linear-gradient(145deg,#55304f,#2f1733 75%);border:1px solid #ffd2df2b;color:#e6c1d0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;overflow:hidden}.photo-placeholder:before{content:'';position:absolute;inset:8px;border:1px solid #ffc5d41a}.photo-placeholder>span:not(.photo-mark){font:italic 15px var(--serif)}.photo-placeholder small{font-size:8px;color:#c19aac;letter-spacing:.03em}.photo-placeholder small b{color:#efb1c8;font-weight:600}.photo-mark{font-size:34px;color:#e59bb4}.photo-polaroid{position:absolute;width:146px;height:167px;bottom:15px;left:8px;z-index:2;transform:rotate(8deg);box-shadow:0 15px 45px #10071188}.photo-polaroid .photo-mark{font-size:25px}.photo-polaroid>span:not(.photo-mark){font-size:11px}.photo-polaroid:before{inset:6px}.photo-polaroid small{font-size:7px}.floating-caption{position:absolute;bottom:63px;right:3px;display:flex;align-items:center;gap:10px;font:italic 13px var(--serif);color:#edbfd0;transform:rotate(-7deg)}.caption-star{color:var(--gold);font-style:normal}.spark{position:absolute;color:var(--gold);animation:twinkle 2.5s ease-in-out infinite}.s1{top:76px;right:90px;font-size:22px}.s2{top:135px;left:35px;color:var(--pink);font-size:25px;animation-delay:.7s}.s3{bottom:68px;right:82px;font-size:16px;animation-delay:1.3s}.s4{top:80px;left:130px;font-size:30px;animation-delay:.3s}.scroll-cue{position:absolute;bottom:29px;left:50%;transform:translateX(-50%);font-size:8px;letter-spacing:.21em;color:#90748a;display:flex;align-items:center;gap:10px}.scroll-cue span{display:block;width:31px;height:1px;background:#986d86}.wish-section{padding:103px 8% 116px;background:linear-gradient(180deg,#35132f,#2c1029);display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center}.section-heading h2,.film-heading h2,.gallery-heading h2{font-size:clamp(40px,5vw,62px);line-height:1.1;margin:20px 0}.wish-intro,.film-heading>p:last-child{max-width:310px;font-size:13px;line-height:1.9;color:var(--muted)}.wish-card{position:relative;border:1px solid #e2aec328;background:linear-gradient(138deg,#65345580,#38203b99);padding:42px 42px 36px;max-width:480px;box-shadow:0 24px 80px #16081755}.card-kicker{font-size:8px;letter-spacing:.23em;color:#dfa1b6;margin:0 0 22px}.birthday-message{font:17px/1.85 var(--serif);color:#f5e4e9;margin:0}.signature{font:italic 13px var(--serif);color:var(--pink);margin:26px 0 0}.signature span{font-size:20px;margin-left:8px}.card-decoration{position:absolute;color:#d790ab70}.deco-one{right:31px;top:23px;font-size:17px}.deco-two{right:31px;bottom:26px;font-size:24px}.film-section{padding:118px 9%;display:grid;grid-template-columns:.75fr 1.25fr;gap:8%;align-items:center}.film-frame{border:1px solid #f2b4c82b;padding:10px;background:#31142e;box-shadow:0 25px 70px #12091388}.film-frame video{display:block;width:100%;max-height:370px;object-fit:cover;background:#170b18}.film-caption{display:flex;justify-content:space-between;padding:13px 6px 4px;font-size:9px;letter-spacing:.06em;color:#c4a9b7}.film-caption span:last-child{color:#9e7c92}.final-cta{position:relative;text-align:center;padding:105px 20px 112px;background:#33132f;overflow:hidden}.cta-glow{position:absolute;width:390px;height:250px;background:#c7638850;filter:blur(100px);left:calc(50% - 195px);top:45px}.final-cta>*:not(.cta-glow){position:relative}.final-cta h2{font-size:clamp(43px,5.4vw,66px);line-height:1.1;margin:18px 0 30px}.button-outline{border:1px solid #db9eb7;color:#f5d7e1}.button-outline:hover{background:#ffffff0b}.cta-heart{display:block;color:#d783a1;margin:33px auto 0;font:30px var(--serif)}footer{height:85px;border-top:1px solid #ffffff12;padding:0 8.3%;display:flex;align-items:center;justify-content:space-between;color:#9a8092;font-size:9px;letter-spacing:.04em}.footer-heart{color:#d985a1}.memory-hero{text-align:center;min-height:438px;padding:92px 20px 50px;position:relative}.memory-hero h1{font-size:clamp(49px,6vw,74px);line-height:1.08;margin:22px 0 14px}.memory-lede{font-size:12px;color:var(--muted);letter-spacing:.02em}.memory-stamp{position:absolute;right:16%;top:147px;width:76px;height:76px;border:1px solid #efafc647;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--pink);font-size:20px;transform:rotate(12deg)}.memory-stamp small{font-size:7px;line-height:1.2;text-align:center;text-transform:uppercase;letter-spacing:.12em}.reasons-section{padding:35px 9% 108px;text-align:center;background:linear-gradient(180deg,#32132f,#2b102a)}.reasons-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:31px;text-align:left}.reason-card{min-height:255px;padding:28px 26px 24px;background:#ffffff07;border:1px solid #efb4ca20;position:relative;transition:transform .3s,border-color .3s}.reason-card:hover{transform:translateY(-6px);border-color:#efb4ca55}.reason-no{font-size:9px;letter-spacing:.14em;color:#a8869c}.reason-icon{position:absolute;right:24px;top:25px;color:#e3a3b9;font-size:20px}.reason-card h2{font-size:25px;margin:35px 0 12px}.reason-card p{font-size:11px;line-height:1.8;color:#c3aeba;max-width:240px;margin:0}.reason-scribble{display:block;margin-top:19px;color:#df9db5;font:italic 12px var(--serif)}.gallery-section{padding:105px 9% 120px}.gallery-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:32px}.gallery-heading h2{margin-bottom:0}.gallery-heading>p{max-width:260px;font-size:11px;line-height:1.8;color:var(--muted);margin-bottom:7px}.gallery-grid{display:grid;grid-template-columns:1.15fr .85fr;grid-template-rows:210px 210px;gap:17px}.gallery-photo{position:relative;transition:transform .35s}.gallery-photo:hover{transform:scale(1.015)}.gallery-tall{grid-row:span 2}.gallery-wide{background:linear-gradient(125deg,#57394f,#36213b)}.gallery-square{background:linear-gradient(125deg,#503554,#281d37)}.gallery-photo i{position:absolute;right:14px;bottom:12px;font:italic 13px var(--serif);color:#efc1d1}.gallery-photo>span:not(.photo-mark){font-size:15px}.gallery-photo small{font-size:8px}.letter-section{padding:28px 9% 100px;background:linear-gradient(180deg,#2c1029,#34132f)}.letter-card{max-width:710px;margin:auto;text-align:center;position:relative;padding:62px 70px;background:linear-gradient(140deg,#62345175,#3c1b3999);border:1px solid #f4bacb24}.letter-card h2{font-size:42px;line-height:1.2;margin:18px 0}.letter-card>p:not(.eyebrow){font:15px/1.9 var(--serif);color:#e5cad5;max-width:500px;margin:0 auto}.letter-signoff{margin-top:25px;color:#f0bdd0;font:italic 15px var(--serif)}.letter-signoff span{font-size:20px}.letter-spark{position:absolute;top:26px;right:32px;color:#e9c599;font-size:18px}.memory-bottom{text-align:center;padding:10px 20px 90px}.memory-bottom p{color:#c5aabc;font:italic 18px var(--serif);margin:0 0 19px}.reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:translateY(0)}
@keyframes twinkle{0%,100%{opacity:.45;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
@media(max-width:760px){.topbar{height:70px;padding:0 6%}.hero{grid-template-columns:1fr;padding:75px 8% 50px;min-height:auto}.hero-copy{text-align:center}.hero h1{font-size:57px}.hero-sub{font-size:12px}.hero-note{justify-content:center;margin-top:24px}.hero-art{height:410px;margin-top:17px}.main-photo{width:235px;height:300px}.orbit{width:360px;height:280px}.orbit-a{width:400px;height:265px}.photo-polaroid{left:1%;bottom:8px}.floating-caption{right:2%;bottom:36px}.scroll-cue{display:none}.wish-section{grid-template-columns:1fr;padding:80px 8%;gap:30px}.wish-card{padding:31px 27px}.film-section{grid-template-columns:1fr;padding:84px 8%;gap:24px}.film-frame video{max-height:280px}.final-cta{padding:85px 14px}.memory-hero{min-height:390px;padding-top:75px}.memory-stamp{top:auto;right:calc(50% - 38px);bottom:21px;width:58px;height:58px}.memory-stamp{font-size:16px}.memory-stamp small{font-size:6px}.reasons-section{padding:35px 7% 75px}.reasons-grid{grid-template-columns:1fr;gap:12px}.reason-card{min-height:205px}.reason-card h2{margin-top:22px}.gallery-section{padding:78px 7%}.gallery-heading{display:block}.gallery-heading>p{margin-top:15px}.gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:220px 175px}.gallery-tall{grid-row:span 2}.gallery-photo>span:not(.photo-mark){font-size:13px}.letter-section{padding:20px 7% 72px}.letter-card{padding:49px 24px}.letter-card h2{font-size:34px}.letter-card>p:not(.eyebrow){font-size:13px}footer{padding:18px 6%;height:auto;min-height:80px;gap:10px;flex-wrap:wrap}footer>span:nth-child(2){order:3;width:100%;text-align:center}.ambient{width:360px;height:360px;filter:blur(90px)}}
@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}}

.photo-placeholder.has-photo{background:transparent}.photo-placeholder.has-photo:before{z-index:1;pointer-events:none}.photo-placeholder.has-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.photo-placeholder.has-photo>span,.photo-placeholder.has-photo>small{display:none}.photo-placeholder.has-photo>i{z-index:2;text-shadow:0 1px 8px #000}

