:root{--cream:#fff6fa;--paper:#fffdfd;--ink:#332832;--muted:#877983;--rose:#ed9fbe;--rose-deep:#c94f83;--blush:#f8dce8;--lav:#f2e5ec;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--max:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:16px;overflow-x:hidden}.grain{position:fixed;inset:0;pointer-events:none;z-index:20;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='.14'/%3E%3C/svg%3E")}.petals{position:fixed;inset:0;z-index:15;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-20px;color:#d96f9c;opacity:0;animation:petal-fall linear forwards;text-shadow:0 3px 9px #dbabb177}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 max(6vw,24px);position:absolute;inset:0 0 auto;z-index:5}.wordmark,.top-link{text-decoration:none;color:var(--ink);font-size:13px;letter-spacing:.06em}.wordmark{font-weight:700}.wordmark-heart{font-size:20px;vertical-align:-2px;color:var(--rose-deep);margin-right:7px}.top-link{border-bottom:1px solid #c7aaa0;padding-bottom:5px}.top-link span{color:var(--rose-deep);margin-left:5px}.hero{min-height:800px;max-width:var(--max);margin:auto;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:115px 50px 90px;position:relative}.hero-copy{position:relative;z-index:2;padding:10px 0 0}.eyebrow{text-transform:uppercase;letter-spacing:.19em;font-size:10px;font-weight:700;color:var(--rose-deep);margin:0 0 24px;display:flex;align-items:center;gap:12px}.eyebrow-line{display:inline-block;width:30px;height:1px;background:var(--rose)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.045em}h1{font-size:clamp(62px,7.7vw,104px);line-height:.98;margin:0 0 27px}h1 em,h2 em{font-weight:500;color:var(--rose-deep)}.hero-note{font-size:14px;color:var(--muted);line-height:1.85;max-width:375px;margin-bottom:28px}.button{display:inline-flex;align-items:center;gap:24px;text-decoration:none;padding:15px 20px;font-size:11px;letter-spacing:.05em;transition:transform .25s,background .25s}.button:hover{transform:translateY(-3px)}.button-dark{background:var(--ink);color:white}.button-dark span{font-size:16px;color:#e8aaa0}.hero-signature{display:flex;align-items:center;gap:11px;color:#9b8a83;font-size:10px;line-height:1.6;margin-top:43px;letter-spacing:.04em}.signature-heart{font-family:var(--serif);font-size:30px;color:var(--rose);animation:heartbeat 2s ease-in-out infinite}.hero-art{height:545px;position:relative;display:grid;place-items:center}.sun-glow{position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,#edc6b68c 0%,#efdacf5c 45%,transparent 72%);animation:breathe 6s ease-in-out infinite}.photo-card{background:#fffefa;padding:12px 12px 0;box-shadow:0 22px 70px #644d401c;position:absolute;margin:0}.photo-card-main{width:min(360px,70%);transform:rotate(3.5deg);z-index:1;animation:card-in 1.2s .1s both cubic-bezier(.2,.8,.2,1)}.photo-card-main img{display:block;width:100%;height:390px;object-fit:cover;object-position:center 40%;filter:saturate(.88)}.photo-card figcaption{display:flex;align-items:center;justify-content:space-between;padding:13px 4px 12px;color:#8f7b73;font-family:var(--serif);font-size:13px;font-style:italic}.caption-heart{font-size:20px;color:var(--rose-deep)}.tape{position:absolute;z-index:2;width:85px;height:25px;background:#ead2bdba;top:65px;left:27%;transform:rotate(-23deg);box-shadow:0 2px 4px #5a30210d}.scribble{position:absolute;color:var(--rose);z-index:2}.scribble-one{font-size:53px;left:11%;top:19%;animation:spin 16s linear infinite}.scribble-two{font-size:48px;right:9%;bottom:19%;animation:float 4s ease-in-out infinite}.float-note{position:absolute;z-index:3;right:4%;top:19%;font-family:var(--serif);font-style:italic;font-size:16px;line-height:1.5;color:#987d74;transform:rotate(7deg);animation:float 5s ease-in-out infinite}.float-note span{color:var(--rose);font-size:22px}.orbit{position:absolute;border:1px solid #e8a9c566;border-radius:50%;width:475px;height:360px;transform:rotate(-24deg)}.orbit-b{width:510px;height:405px;transform:rotate(29deg);border-color:#e2bfd166}.scroll-cue{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);text-decoration:none;color:#988982;letter-spacing:.14em;text-transform:uppercase;font-size:9px;display:flex;align-items:center;gap:10px}.scroll-cue span{display:block;width:1px;height:26px;background:var(--rose);animation:cue 1.5s ease-in-out infinite}.section-pad{padding:120px max(calc((100vw - var(--max))/2 + 50px),7vw)}.reasons{background:#fbecf2}.section-heading{text-align:center;margin:0 auto 56px}.section-heading .eyebrow{justify-content:center}.section-heading h2,.memory-copy h2,.letter-wrap h2,.rating-inner h2,.finale h2{font-size:clamp(36px,5vw,58px);line-height:1.14;margin:0 0 17px}.section-intro,.memory-copy>p:not(.eyebrow){font-size:13px;line-height:1.8;color:var(--muted)}.reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;max-width:1000px;margin:auto}.reason-card{position:relative;min-height:230px;padding:34px 30px;background:#fffbf7;border:1px solid #e7dcd3;transition:transform .35s,box-shadow .35s;overflow:hidden}.reason-card:hover{transform:translateY(-7px);box-shadow:0 17px 35px #70564312}.reason-card-blush{background:#f3e2dd}.reason-number{position:absolute;right:25px;top:29px;font-size:10px;color:#b8a49c;letter-spacing:.12em}.reason-icon{font-size:25px;color:var(--rose-deep);display:block;margin-bottom:25px}.reason-card h3{font-family:var(--serif);font-size:23px;font-weight:500;margin-bottom:9px}.reason-card p{max-width:230px;font-size:12px;line-height:1.8;color:var(--muted);margin:0}.card-doodle{position:absolute;right:22px;bottom:7px;font-size:47px;color:#dcaaa0;opacity:.35}.letter-section{min-height:700px;padding:120px 20px;display:grid;place-items:center;position:relative;overflow:hidden;background:#f3e3ec}.letter-section:before,.letter-section:after{content:"";position:absolute;border:1px solid #e2bfd188;border-radius:50%;width:700px;height:700px;left:-390px;top:40px}.letter-section:after{width:850px;height:850px;left:auto;right:-510px;top:-50px}.letter-wrap{text-align:center;position:relative;z-index:1;width:min(620px,100%)}.letter-wrap>.eyebrow{justify-content:center;color:#a04b72}.letter-wrap h2{margin-bottom:35px}.letter-button{border:0;background:transparent;cursor:pointer;color:var(--ink);font-family:var(--sans);display:grid;justify-items:center;gap:15px;margin:auto}.envelope{width:132px;height:89px;background:#fffaf5;position:relative;box-shadow:0 12px 32px #77617925;display:grid;place-items:center;transition:transform .4s}.envelope:before,.envelope:after{content:"";position:absolute;bottom:0;border-style:solid;border-width:0 66px 49px;border-color:transparent transparent #f0ded9;z-index:1}.envelope:after{border-width:45px 66px 0;border-color:#e9cbc8 transparent transparent;z-index:2;bottom:auto;top:0;transform-origin:top;transition:transform .65s}.envelope-flap{position:absolute;top:0;left:0;z-index:3;border-style:solid;border-width:45px 66px 0;border-color:#dbafa8 transparent transparent;transform-origin:top;transition:transform .65s}.envelope-heart{position:relative;z-index:4;color:var(--rose-deep);font-size:27px;transition:opacity .3s}.letter-button-label{font-size:11px;letter-spacing:.08em;color:#76647a}.letter-button:hover .envelope{transform:translateY(-5px)}.letter-button[aria-expanded=true] .envelope-flap{transform:rotateX(180deg)}.letter-button[aria-expanded=true] .envelope-heart{opacity:0}.letter-content{max-height:0;opacity:0;transform:translateY(15px);transition:max-height .9s,opacity .6s,transform .6s;overflow:hidden}.letter-content.open{max-height:450px;opacity:1;transform:translateY(0);margin-top:34px}.letter-paper{background:#fffcf8;text-align:left;max-width:510px;margin:auto;padding:33px 40px;box-shadow:0 18px 50px #53435114;border:1px solid #efd8e2}.letter-paper p{font-family:var(--serif);font-size:14px;line-height:1.9;color:#61545a;margin-bottom:14px}.letter-paper .letter-salutation{font-size:20px;color:#3e3139}.letter-paper .letter-signoff{margin:25px 0 0}.letter-signoff span{font-style:italic;color:var(--rose-deep)}.letter-hint{font-size:10px;letter-spacing:.1em;color:#8d7c91;margin:22px 0 0}.letter-deco{position:absolute;font-size:70px;color:#b7a1c4;opacity:.5;animation:float 5s ease-in-out infinite}.deco-left{left:14%;top:23%}.deco-right{right:13%;bottom:20%;font-family:var(--serif)}.memory-section{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:90px;background:var(--cream)}.memory-copy{max-width:420px}.memory-copy .eyebrow{margin-bottom:22px}.memory-copy>p:not(.eyebrow){margin-bottom:23px}.text-link{color:var(--rose-deep);font-size:11px;text-decoration:none;letter-spacing:.04em;border-bottom:1px solid #d4aaa1;padding-bottom:7px}.text-link span{margin-left:8px}.memory-photo{position:relative;margin:0;justify-self:center;width:min(400px,90%);transform:rotate(-3deg);background:#fff;padding:13px 13px 55px;box-shadow:0 20px 55px #604a3e21}.memory-photo img{display:block;width:100%;height:420px;object-fit:cover;object-position:center 40%;filter:saturate(.83)}.photo-stamp{position:absolute;right:-29px;bottom:31px;border-radius:50%;width:82px;height:82px;background:#eee0d3;color:#8e716b;display:grid;place-items:center;text-align:center;font-family:var(--serif);font-size:14px;line-height:1.2;transform:rotate(11deg);box-shadow:0 5px 12px #0000000c}.rating-section{padding:100px 20px;background:#f2e2dd;text-align:center;position:relative;overflow:hidden}.rating-inner{position:relative;z-index:1;max-width:620px;margin:auto}.rating-inner .eyebrow{justify-content:center}.rating-inner h2{font-size:clamp(35px,4.6vw,52px)}.rating-copy{font-size:12px;line-height:1.8;color:#8b7771;max-width:400px;margin:0 auto 20px}.rating-sparkle{position:absolute;right:4%;top:2%;font-size:58px;color:#d4928c;opacity:.6;animation:spin 18s linear infinite}.stars{display:flex;justify-content:center;gap:5px}.stars button{font-size:35px;color:#d2b5ad;background:transparent;border:0;padding:5px;cursor:pointer;transition:transform .2s,color .2s}.stars button:hover,.stars button:focus-visible{transform:scale(1.2);color:#b96d69;outline:none}.stars button.active{color:#b96d69}.rating-result{font-family:var(--serif);font-style:italic;color:#987d76;font-size:13px;min-height:20px;margin:11px 0 0}.finale{background:#fbf5ef;text-align:center;padding:112px 24px 24px;position:relative;overflow:hidden}.finale-top{max-width:620px;margin:0 auto 60px}.finale-top .eyebrow{justify-content:center}.finale-top h2{font-size:clamp(43px,6vw,69px);margin-bottom:16px}.finale-top>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.8}.final-heart{font-size:38px;color:var(--rose-deep);display:inline-block;animation:heartbeat 1.8s infinite}.heart-photo{max-width:500px;margin:0 auto 90px;position:relative}.heart-photo-frame{padding:15px;background:#fff;box-shadow:0 22px 60px #624d421c;transform:rotate(1.5deg)}.heart-photo img{width:100%;height:520px;object-fit:cover;object-position:center 42%;display:block;filter:saturate(.9)}.heart-photo figcaption{font-family:var(--serif);font-size:14px;font-style:italic;color:#89766e;padding:15px}.heart-photo figcaption span{color:var(--rose-deep);font-style:normal;font-size:20px;margin-left:4px}.footer{border-top:1px solid #e9ddd5;max-width:var(--max);margin:auto;padding:20px 5px 10px;display:flex;justify-content:space-between;color:#a29189;text-transform:uppercase;letter-spacing:.12em;font-size:8px}.footer a{color:#8e716a;text-decoration:none}.toast{position:fixed;pointer-events:none;z-index:30;font-size:22px;color:var(--rose-deep);animation:toast-pop .8s ease-out forwards}.reveal{opacity:0;transform:translateY(24px);transition:opacity .85s ease,transform .85s cubic-bezier(.2,.7,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}@keyframes card-in{from{opacity:0;transform:translateY(25px) rotate(8deg) scale(.95)}to{opacity:1;transform:translateY(0) rotate(3.5deg) scale(1)}}@keyframes heartbeat{0%,100%{transform:scale(1)}10%{transform:scale(1.2)}20%{transform:scale(1)}30%{transform:scale(1.12)}40%{transform:scale(1)}}@keyframes breathe{0%,100%{transform:scale(.94);opacity:.75}50%{transform:scale(1.08);opacity:1}}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -12px}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes cue{0%,100%{transform:scaleY(.5);transform-origin:top;opacity:.45}50%{transform:scaleY(1);transform-origin:top;opacity:1}}@keyframes petal-fall{0%{transform:translate3d(0,-5vh,0) rotate(0);opacity:0}10%{opacity:.72}90%{opacity:.6}100%{transform:translate3d(var(--drift),110vh,0) rotate(500deg);opacity:0}}@keyframes toast-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}30%{opacity:1;transform:translate(-50%,-80%) scale(1.5)}100%{opacity:0;transform:translate(-50%,-170%) scale(.7)}}@media(max-width:760px){.topbar{height:66px;padding:0 23px}.hero{min-height:auto;grid-template-columns:1fr;padding:125px 26px 90px}.hero-copy{text-align:center}.hero-copy .eyebrow{justify-content:center}.hero-note{margin-left:auto;margin-right:auto}.hero-signature{justify-content:center;margin-top:28px}.hero-art{height:470px;margin-top:15px}.photo-card-main{width:min(320px,73%)}.photo-card-main img{height:340px}.orbit{width:370px;height:300px}.orbit-b{width:400px;height:330px}.float-note{right:1%;top:18%;font-size:13px}.scribble-one{left:5%;font-size:40px}.scribble-two{right:4%;bottom:14%}.scroll-cue{bottom:20px}.section-pad{padding:85px 25px}.section-heading{margin-bottom:37px}.reason-grid{grid-template-columns:1fr;max-width:470px}.reason-card{min-height:185px;padding:28px}.reason-icon{margin-bottom:17px}.letter-section{min-height:650px;padding:90px 22px}.deco-left{left:4%;top:12%;font-size:48px}.deco-right{right:5%;bottom:11%;font-size:48px}.letter-paper{padding:27px 25px}.memory-section{grid-template-columns:1fr;gap:45px}.memory-copy{text-align:center;margin:auto}.memory-copy .eyebrow{justify-content:center}.memory-photo{width:min(370px,84%)}.memory-photo img{height:370px}.rating-section{padding:85px 23px}.rating-sparkle{right:0;top:-20px}.finale{padding:85px 20px 20px}.heart-photo{max-width:420px;margin-bottom:60px}.heart-photo img{height:440px}.footer{gap:16px;line-height:1.6}.footer span{max-width:210px;text-align:left}}@media(max-width:390px){h1{font-size:59px}.hero-art{height:410px}.photo-card-main img{height:300px}.float-note{font-size:11px}.memory-photo img{height:320px}.heart-photo img{height:380px}.footer{font-size:7px}}@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}}

/* Clear keyboard focus for every interactive element. */
a:focus-visible,button:focus-visible{outline:2px solid var(--rose-deep);outline-offset:4px}.stars button:focus-visible{border-radius:8px}

.signature-heart,.final-heart{animation:float 3.8s ease-in-out infinite}.deco-right{color:var(--rose-deep)}
