:root{--cream:#fbf5f0;--pink:#f4dce1;--rose:#a4546a;--ink:#533b40;--muted:#806b70;--line:#eadbd9;--serif:'Cormorant Garamond',Georgia,serif;--script:'Dancing Script',cursive;--sans:'Poppins',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}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:6px}button{color:inherit}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}::selection{background:#eac2cf}.site-header,main,footer{position:relative;z-index:1}.site-header{height:105px;max-width:1400px;margin:auto;padding:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e8d7d466}.wordmark{font-family:var(--script);font-size:29px;font-weight:600;white-space:nowrap}.tiny-flower{font-family:Georgia;font-size:30px;color:var(--rose);display:inline-block;vertical-align:middle;margin-right:10px}.small-heart{font-family:var(--sans);font-size:21px;margin-left:9px;color:var(--rose)}nav{display:flex;gap:33px;font-size:11px;color:var(--muted)}nav a:hover{color:var(--rose)}.music-button{display:flex;align-items:center;gap:10px;background:#ffffff80;border:1px solid #ddc4ca;border-radius:30px;padding:11px 17px;font-size:10px;min-height:44px}.music-icon{font-size:18px;color:var(--rose)}.equalizer{display:none;gap:2px;align-items:center;height:16px}.equalizer i{height:10px;width:2px;background:var(--rose);animation:equalize .7s infinite alternate}.equalizer i:nth-child(2){animation-delay:.3s}.equalizer i:nth-child(3){animation-delay:.5s}.music-button[aria-pressed=true] .equalizer{display:flex}.hero{max-width:1400px;margin:auto;min-height:calc(100svh - 105px);padding:60px 6% 100px;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:30px;position:relative}.hero-copy{animation:fade-in 1s .15s both;z-index:2}.eyebrow{font-size:9px;font-weight:500;letter-spacing:2.4px;line-height:1.9;color:var(--rose)}.hero .eyebrow{display:flex;align-items:center;gap:10px}.eyebrow>span{width:23px;height:1px;background:#b7808c}h1{margin:26px 0 25px;font-weight:400}.birthday-line{display:block;font-family:var(--serif);font-size:clamp(40px,4.1vw,62px);line-height:1.1;letter-spacing:-1.4px}.name-line{display:block;position:relative;font-family:var(--script);font-weight:500;font-size:clamp(65px,7.4vw,108px);line-height:1.3;color:var(--rose);text-shadow:0 0 32px #e7b1c07a;white-space:nowrap}.heading-star{display:inline-block;font-family:var(--serif);font-size:40px;vertical-align:top;margin-top:10px;margin-left:9px;color:#bd8c75}.hero-note{font-family:var(--serif);font-size:26px;line-height:1.3}.hero-description{font-size:11px;line-height:2.1;color:var(--muted);margin:20px 0 28px}.primary-button{display:inline-flex;gap:27px;align-items:center;justify-content:center;background:var(--rose);border:1px solid var(--rose);border-radius:5px;color:#fff9f6;padding:15px 24px;font-size:11px;box-shadow:0 5px 15px #a4546a15;transition:transform .25s,background .25s}.primary-button:hover{background:#8d4157;transform:translateY(-3px)}.primary-button span{font-size:20px;line-height:1}.distance-note{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:39px;font-size:8px;letter-spacing:1.6px;color:#8b6a72}.distance-note svg{width:90px;height:24px}.distance-note em{display:block;width:100%;font-family:var(--serif);font-size:17px;letter-spacing:0;margin-top:-1px;color:var(--muted)}.hero-collage{height:515px;position:relative;animation:fade-in 1.3s .35s both}.halo{position:absolute;inset:10% -4% 1% -5%;background:radial-gradient(ellipse,#f0cbd599 0%,#f4dce170 43%,transparent 70%);border-radius:50%;filter:blur(15px)}.photo-card{position:absolute;background:#fffdf9;padding:13px 13px 0;box-shadow:0 12px 30px #65404b21;border:1px solid #fff;transition:transform .5s}.photo-card img{width:100%;height:100%;object-fit:cover}.photo-card>span:last-child{font-family:var(--script);display:block;text-align:center;padding:15px 0;font-size:19px;color:#77515e}.photo-back{width:63%;height:295px;top:0;right:0;transform:rotate(9deg)}.photo-back img{height:230px}.photo-front{width:75%;height:333px;top:153px;left:0;transform:rotate(-8deg)}.photo-front img{height:262px}.tape{position:absolute;top:-14px;left:36%;width:85px;height:30px;background:#e6c7b8aa;transform:rotate(-7deg);z-index:2;clip-path:polygon(2% 0,99% 5%,97% 96%,0 100%)}.photo-front .tape{background:#e5bac5bb;left:34%}.collage-sparkle{position:absolute;color:#b3836d;font-family:var(--serif);z-index:3}.collage-sparkle.one{top:65px;left:13%;font-size:57px}.collage-sparkle.two{bottom:11px;right:1%;font-size:30px}.handwritten-note{position:absolute;right:-5px;bottom:47px;font-family:var(--script);font-size:25px;line-height:1.1;color:var(--rose);transform:rotate(7deg)}.drawn-arrow{width:70px;position:absolute;right:25px;bottom:-16px;color:#b97c8e;transform:rotate(15deg)}.flower-doodle{position:absolute;left:28px;bottom:-45px;font-size:68px;color:#c17c9099;transform:rotate(10deg)}.scroll-cue{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-size:8px;letter-spacing:2px;color:#947a80;white-space:nowrap;display:flex;align-items:center;gap:15px}.scroll-cue span{font-size:20px;animation:bob 3s ease-in-out infinite}
/* The SVG flap rotates at its fold; the letter then lifts into view. */
.letter-section{padding:95px 24px 90px;text-align:center;background:linear-gradient(155deg,#f6e5e8,#f9edef 65%,#f4e1e6);border-top:1px solid #ecd9dc;border-bottom:1px solid #ecd9dc}h2{font-family:var(--serif);font-size:clamp(35px,3.7vw,49px);font-weight:400;line-height:1.12;letter-spacing:-.7px}h2 em{font-weight:400;color:var(--rose)}.letter-section h2{max-width:620px;margin:16px auto}.section-intro{font-size:11px;color:var(--muted);line-height:1.9}.envelope-area{max-width:460px;margin:47px auto 0;perspective:1000px}.envelope-button{display:block;width:100%;background:none;padding:0;border:0;filter:drop-shadow(0 16px 20px #82546022);transition:transform .35s}.envelope-button:hover{transform:translateY(-5px) rotate(-1deg)}.envelope{overflow:visible;width:100%;display:block}.envelope-flap{transform-origin:260px 28px;transition:transform .7s ease,opacity .3s .3s}.wax-seal{transition:opacity .3s}.letter-peek{transition:transform .7s .3s}.envelope-area.open .envelope-flap{transform:scaleY(-.8);opacity:.55}.envelope-area.open .wax-seal{opacity:0}.envelope-area.open .letter-peek{transform:translateY(-100px)}.envelope-hint{font-family:var(--script);font-size:25px;margin-top:19px}.envelope-hint span{display:block;font-family:var(--sans);font-size:9px;letter-spacing:1px;color:var(--muted);margin-top:8px}.envelope-area.open .envelope-hint{visibility:hidden}.letter-reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows .8s;margin:auto;max-width:740px}.letter-reveal.open{grid-template-rows:1fr}.letter-paper{position:relative;text-align:left;background:#fffaf5;box-shadow:0 15px 50px #6d374d12;padding:48px 60px;border:1px solid #ead9d7;border-radius:3px;animation:letter-in .8s both;scroll-margin-top:30px}.letter-paper[hidden]{display:none}.letter-date{font-size:8px;letter-spacing:2px;color:#a57582}.letter-flower{position:absolute;right:34px;top:30px;font-size:40px;color:#c5879a}.letter-paper h3{font-family:var(--script);font-weight:500;font-size:38px;color:var(--rose);margin:24px 0}.letter-paper>p:not(.letter-date):not(.signature){font-size:12px;line-height:2.15;margin:18px 0;color:#695159}.signature{font-family:var(--serif);font-style:italic;font-size:21px;margin-top:28px;line-height:1.7}.signature span{font-family:var(--script);font-size:31px;color:var(--rose)}.text-button{border:0;background:none;padding:16px 0 0;font-size:9px;letter-spacing:.5px;color:#9a6374;margin-top:16px}.text-button span{margin-left:12px}.memories-section{max-width:1400px;margin:auto;padding:95px 6% 70px}.memories-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:42px}.memories-heading h2{margin-top:15px}.memories-heading>p{font-size:11px;line-height:2;color:var(--muted);padding-bottom:5px}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.memory-card{display:block;border:1px solid #e9dcd6;background:#fffdf9;padding:9px 9px 0;box-shadow:0 5px 14px #6f4c5b09;transition:transform .3s,box-shadow .3s;text-align:left;min-width:0}.memory-card:nth-child(odd){transform:rotate(-2deg)}.memory-card:nth-child(even){transform:rotate(2deg) translateY(13px)}.memory-card:hover{transform:rotate(0) translateY(-6px);box-shadow:0 12px 24px #6f4c5b22}.memory-card img{width:100%;height:auto;aspect-ratio:1/1.14;object-fit:cover}.memory-card .portrait-memory{object-position:center 40%}.memory-card>span{display:flex;gap:7px;align-items:center;padding:19px 2px;font-family:var(--script);font-size:18px;white-space:nowrap}.memory-card small{font:8px var(--sans);color:#b28f97}.memory-card b{font:13px var(--sans);margin-left:auto;color:var(--rose)}.gallery-footnote{font-family:var(--script);font-size:24px;text-align:center;color:#a77a86;margin-top:49px}.wish-section{text-align:center;padding:65px 24px 76px;background:radial-gradient(ellipse at 50% 65%,#f3d9e0aa,transparent 64%)}.wish-star{font-size:47px;color:#b98d76;display:block;margin-bottom:15px}.wish-section h2{margin:14px 0 20px}.wish-section>p:not(.eyebrow):not(.wish-message){font-size:11px;color:var(--muted);line-height:2}.wish-section button{margin-top:27px}.wish-message{font-family:var(--script);font-size:25px;color:var(--rose);min-height:34px;margin-top:18px}footer{border-top:1px solid var(--line);margin:0 6%;padding:28px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}footer .wordmark{font-size:25px}footer p{font-size:9px;color:var(--muted)}footer>span{font-size:7px;letter-spacing:1.8px;color:#9b7f87}.fireflies{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:2}.firefly{position:absolute;background:#c78a9b;border-radius:50%;opacity:0;animation:float 12s ease-in-out infinite;box-shadow:0 0 13px #dfaabc;pointer-events:none}#confetti{position:fixed;inset:0;width:100%;height:100%;z-index:10;pointer-events:none}dialog{border:0;padding:55px 35px 24px;border-radius:8px;background:#fff9f5;width:min(920px,94vw);max-height:94svh;color:var(--ink);box-shadow:0 30px 100px #29131a55}dialog::backdrop{background:#38222cdb;backdrop-filter:blur(6px)}.dialog-close{position:absolute;right:12px;top:8px;border:0;background:none;width:42px;height:42px;font-size:32px}.lightbox-content img{max-height:65svh;width:100%;object-fit:contain}.lightbox-content>p{text-align:center;font:28px var(--script);margin-top:16px}.lightbox-controls{display:flex;justify-content:center;align-items:center;gap:28px;margin-top:10px}.lightbox-controls button{border:1px solid #d9bac3;background:transparent;border-radius:50%;height:42px;width:42px}.lightbox-controls span{font-size:11px;color:var(--muted)}body.modal-open{overflow:hidden}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip:focus{position:fixed;top:8px;left:8px;z-index:20;background:white;padding:15px}
@keyframes fade-in{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes letter-in{from{opacity:0;transform:translateY(70px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,100%{opacity:0;transform:translate(0,30px)}40%,60%{opacity:.35}80%{transform:translate(25px,-100px)}}@keyframes bob{50%{transform:translateY(5px)}}@keyframes equalize{to{height:3px}}
@media(min-width:1600px){.hero{min-height:800px}}
@media(max-width:1100px){.hero{gap:20px}.hero-collage{height:455px}.photo-back{height:250px}.photo-back img{height:186px}.photo-front{height:290px;top:140px}.photo-front img{height:220px}.handwritten-note{font-size:22px;right:-9px;bottom:20px}.drawn-arrow{bottom:-35px}.flower-doodle{bottom:-30px}.heading-star{font-size:28px;margin-left:0}.memory-grid{gap:13px}.memory-card>span{font-size:15px}.memory-card small{display:none}}
@media(max-width:760px){.site-header{height:83px;padding:0 6%}nav{display:none}.wordmark{font-size:25px}.tiny-flower{font-size:25px;margin-right:5px}.music-button{padding:8px 12px;font-size:9px;gap:6px}.hero{padding:46px 7% 70px;grid-template-columns:1fr;gap:28px;min-height:initial}.hero-copy{text-align:center}.hero .eyebrow{justify-content:center;font-size:7px;letter-spacing:1.7px}.birthday-line{font-size:44px}.name-line{font-size:76px;white-space:normal}.heading-star{font-size:24px;position:absolute;top:9px;margin-left:8px}.hero h1{margin:23px 0 17px}.hero-note{font-size:25px}.hero-description{font-size:10px;margin:16px 0 21px}.distance-note{justify-content:center;margin-top:25px}.distance-note em{font-size:16px}.hero-collage{width:min(435px,96%);height:405px;margin:8px auto 30px}.photo-back{width:62%;height:239px;right:3%}.photo-back img{height:177px}.photo-front{width:72%;height:272px;top:122px;left:2%}.photo-front img{height:208px}.photo-card{padding:10px 10px 0}.photo-card>span:last-child{font-size:16px;padding:12px 0}.handwritten-note{font-size:21px;right:-5px;bottom:20px}.drawn-arrow{right:0;bottom:-26px;width:56px}.flower-doodle{font-size:47px;bottom:-36px;left:40px}.collage-sparkle.one{left:8%;font-size:45px}.collage-sparkle.two{right:3%;bottom:-9px}.scroll-cue{bottom:18px;font-size:7px}.letter-section{padding:66px 20px 60px}.letter-section h2{max-width:380px;font-size:37px}.eyebrow{font-size:8px;letter-spacing:1.8px}.section-intro{font-size:10px}.envelope-area{max-width:360px;margin-top:45px}.letter-paper{padding:35px 26px}.letter-paper h3{font-size:33px}.letter-paper>p:not(.letter-date):not(.signature){font-size:12px;line-height:2}.letter-flower{right:20px;font-size:30px}.letter-date{font-size:7px;letter-spacing:1px}.memories-section{padding:65px 7% 40px}.memories-heading{display:block;margin-bottom:30px}.memories-heading h2{font-size:39px}.memories-heading>p{margin-top:20px;font-size:10px}.memory-grid{grid-template-columns:repeat(2,1fr);gap:25px 15px}.memory-card>span{font-size:17px;padding:15px 0}.memory-card b{display:none}.gallery-footnote{font-size:23px;max-width:280px;margin:38px auto 0}.wish-section{padding-top:35px}.wish-section h2{font-size:38px}.wish-section h2 em{display:block}footer{flex-direction:column;text-align:center;gap:15px;padding:26px 0}dialog{padding:50px 14px 20px}}
@media(max-width:380px){.name-line{font-size:65px}.birthday-line{font-size:39px}.hero-collage{height:355px}.photo-back{height:207px}.photo-back img{height:148px}.photo-front{height:235px;top:105px}.photo-front img{height:176px}.photo-card>span:last-child{font-size:14px}.handwritten-note{font-size:18px}.memory-card>span{font-size:14px}.heading-star{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.fireflies{display:none}}
