@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&family=DM+Sans:wght@300;400;500;600&display=swap');
:root{--ink:#542b39;--muted:#896a71;--rose:#b45c75;--rose-dark:#7d2949;--cream:#fff9f3;--line:rgba(101,54,67,.22);--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--sans);overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:5px}::selection{background:#d698a6;color:#fff}
.page{min-height:100vh;position:relative;isolation:isolate}.page-one{background:radial-gradient(circle at 78% 18%,#fff9f1 0,transparent 35%),linear-gradient(145deg,#f6e7e4,#fcf3eb 60%,#f0d8d7)}.page-two{background:linear-gradient(150deg,#f4dcd9,#fff3e8 38%,#e9bfc3 100%)}.page-three{--ink:#fff1e9;--muted:#e9c2c5;--line:rgba(255,235,221,.28);background:radial-gradient(circle at 50% 43%,#853c54 0,transparent 37%),linear-gradient(155deg,#54223a,#351528 75%);color:var(--ink)}
.grain{position:fixed;z-index:20;inset:0;pointer-events:none;opacity:.23;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='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E")}.petals{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:10}.petal{position:absolute;top:-8vh;width:9px;height:16px;background:#c76c87;border-radius:80% 10% 80% 10%;opacity:.32;animation:fall linear infinite;filter:blur(.1px)}.page-three .petal{background:#f4a9b9;opacity:.23}@keyframes fall{0%{transform:translate3d(0,-5vh,0) rotate(0)}100%{transform:translate3d(80px,112vh,0) rotate(440deg)}}
main{max-width:1600px;margin:auto;position:relative}.chapter-head{max-width:1400px;margin:auto;padding:36px 6.5% 0;display:flex;justify-content:space-between;align-items:center;gap:20px;text-transform:uppercase;font-size:10px;letter-spacing:.25em;font-weight:600}.chapter-mark{display:flex;gap:9px;align-items:center;font-size:11px}.chapter-mark i{width:30px;height:1px;background:currentColor;opacity:.55}.eyebrow{opacity:.75}.kicker,.overline{font-size:10px;letter-spacing:.25em;text-transform:uppercase;font-weight:600}.kicker{display:flex;align-items:center;gap:14px;color:var(--rose-dark)}.page-three .kicker{color:#e6acb7}.kicker-line{width:38px;height:1px;background:currentColor}.hero{padding:72px 10% 115px;min-height:780px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:2vw}.hero-copy{z-index:2}.hero h1,.chapter-intro h1,.final-intro h1{font:500 clamp(62px,7vw,120px)/.91 var(--serif);letter-spacing:-.055em;margin:30px 0}.hero h1 em,.chapter-intro h1 em,.final-intro h1 em,h2 em{font-weight:400;color:var(--rose);white-space:nowrap}.hero-lead{max-width:400px;line-height:1.9;font-size:14px;color:var(--muted);font-weight:300}.tiny-heart{font:40px var(--serif);color:var(--rose);margin-top:35px}.signature{font:italic 19px var(--serif);margin:0}.signature span{color:var(--rose)}
.hero-art{height:620px;position:relative;display:flex;align-items:center;justify-content:center}.oval-frame{width:min(100%,420px);height:540px;border-radius:48% 48% 4% 4%;border:12px solid #fef8f1;outline:1px solid #d9aab4;box-shadow:0 22px 70px rgba(107,55,73,.19),inset 0 0 0 1px #cfa8af;overflow:hidden;position:relative;z-index:1;background:linear-gradient(160deg,#e3aab7,#f4d6cc 55%,#d498a5)}.portrait-slot>img,.photo-slot>img{width:100%;height:100%;object-fit:cover;display:block}.portrait-fallback{height:100%;display:grid;place-items:center;position:relative}.portrait-fallback img{width:95%;opacity:.75;transform:rotate(-5deg) scale(1.35);filter:drop-shadow(10px 20px 15px rgba(100,35,58,.15))}.portrait-fallback span{position:absolute;bottom:42px;text-align:center;background:rgba(255,249,245,.86);padding:16px 26px;font:italic 22px/1 var(--serif)}.frame-glow{position:absolute;width:95%;height:85%;border-radius:50%;background:#f7d7cc;filter:blur(55px);opacity:.55}.art-note{position:absolute;z-index:2;right:-5%;bottom:21px;transform:rotate(-7deg);font:italic 26px var(--serif);color:var(--rose-dark)}.sparkle{position:absolute;z-index:2;color:#bd7790;font-size:29px;animation:twinkle 3s ease-in-out infinite}.s1{left:2%;top:14%}.s2{right:3%;top:29%;animation-delay:1.4s}@keyframes twinkle{50%{opacity:.25;transform:scale(.7) rotate(20deg)}}
.letter-panel{background:rgba(255,251,246,.71);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:110px 12%;display:grid;grid-template-columns:20% 1fr;gap:6%;position:relative}.letter-panel:after{content:'';position:absolute;right:3%;bottom:0;width:225px;height:300px;background:url('floral.svg') center/contain no-repeat;opacity:.18;transform:rotate(30deg)}.section-number{font:italic 85px var(--serif);color:#d69bab}.letter-content{max-width:745px;position:relative;z-index:1}.letter-content h2{font:400 clamp(42px,4vw,65px)/1.1 var(--serif);letter-spacing:-.03em;margin:18px 0 36px}.letter-content p:not(.overline){font-size:15px;line-height:2.05;color:#765f64;max-width:650px;font-weight:300}.letter-content .letter-close{font:italic 25px var(--serif)!important;color:var(--rose-dark)!important;margin-top:35px}.letter-close span{font-size:34px;margin-left:8px}.poem-band{text-align:center;padding:120px 20px 100px}.poem-ornament{font:38px var(--serif);color:var(--rose);margin-bottom:12px}.poem-band p{font:italic 400 clamp(32px,3.3vw,50px)/1.35 var(--serif);margin:12px auto 24px}.poem-band span,.whisper-sub{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--rose-dark)}.next-tease{text-align:center;padding:60px 20px 125px}.next-tease p{font:italic 28px var(--serif);margin:0 0 24px}.button{display:inline-flex;gap:44px;align-items:center;justify-content:space-between;padding:19px 24px;border:1px solid var(--rose-dark);background:var(--rose-dark);color:#fff7ee;text-transform:uppercase;font-size:10px;font-weight:600;letter-spacing:.17em;min-width:230px;cursor:pointer;transition:transform .3s,background .3s,box-shadow .3s}.button:hover{transform:translateY(-4px);background:#a44b68;box-shadow:0 15px 30px rgba(94,28,54,.18)}.button span{font-size:19px;font-weight:300}.page-footer{border-top:1px solid var(--line);padding:25px 6.5% 35px;display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:.18em;text-transform:uppercase;max-width:1600px;margin:auto}.page-controls{display:flex;align-items:center;gap:20px}.round-arrow{display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;width:47px;height:47px;font-size:20px;transition:background .3s,transform .3s}.round-arrow:hover{background:var(--rose);color:#fff;transform:translateY(-3px)}
.chapter-intro{position:relative;text-align:center;padding:115px 20px 75px}.chapter-intro .kicker,.final-intro .kicker{justify-content:center}.chapter-intro h1{margin:25px 0}.chapter-intro>p:last-of-type,.final-intro>p:last-of-type{font-size:14px;line-height:1.8;color:var(--muted);font-weight:300;max-width:420px;margin:auto}.floating-asterisk{position:absolute;color:#bd7185;font:90px var(--serif);left:15%;top:34%;animation:twinkle 5s infinite}.reasons{max-width:1200px;padding:15px 5% 105px;margin:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.reason-card{text-align:left;min-height:315px;padding:25px 28px;border:1px solid #d6acb2;background:rgba(255,250,246,.6);color:var(--ink);display:flex;flex-direction:column;align-items:flex-start;position:relative;overflow:hidden;cursor:pointer;transition:transform .35s,background .35s,box-shadow .35s}.reason-card:hover{transform:translateY(-6px);box-shadow:0 18px 32px rgba(106,47,67,.12)}.reason-index{font-size:9px;letter-spacing:.18em;font-weight:600;color:var(--rose-dark)}.reason-symbol{font:62px var(--serif);color:#ba6f81;margin:auto 0 5px;line-height:1}.reason-card strong{font:500 32px/1.05 var(--serif);letter-spacing:-.02em;max-width:220px}.reason-prompt{font-size:9px;text-transform:uppercase;letter-spacing:.19em;color:var(--rose-dark);width:100%;display:flex;justify-content:space-between;margin-top:23px}.reason-prompt span{font-size:18px}.reason-secret{position:absolute;inset:0;background:#822f4e;color:#fff6ed;padding:30px;display:flex;align-items:center;font:italic 28px/1.25 var(--serif);opacity:0;transform:translateY(100%);transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .4s}.reason-card[aria-expanded=true] .reason-secret{transform:translateY(0);opacity:1}.reason-card[aria-expanded=true] .reason-prompt{z-index:1;color:#fff;align-self:end}.memory-section{margin:0 auto 100px;max-width:1100px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:9%;padding:0 5%}.memory-photo{height:570px;border:12px solid #fffaf4;box-shadow:0 20px 60px rgba(117,51,72,.18);background:#d69da7;transform:rotate(-2deg);overflow:hidden}.memory-fallback{height:100%;display:grid;place-items:center;background:radial-gradient(circle at 70% 30%,#e7b5ac,transparent 40%),linear-gradient(140deg,#ad6479,#eac1bd)}.memory-fallback span{font:italic 96px/.56 var(--serif);text-align:center;color:#fff5ec;text-shadow:0 5px 20px #7f3b5566}.memory-fallback i{font-size:57px}.memory-copy h2{font:400 72px/.95 var(--serif);letter-spacing:-.05em;margin:26px 0}.memory-copy p:not(.overline){max-width:380px;font-size:14px;line-height:2;color:#765f64;font-weight:300}.memory-copy .memory-caption{font:italic 28px var(--serif)!important;color:var(--rose-dark)!important;margin-top:35px}.whisper-section{text-align:center;background:#f9ebe4;border-block:1px solid #dab7b8;padding:88px 20px}.whisper-flower{color:var(--rose);font:48px var(--serif)}.whisper-section p{font:italic 48px/1.1 var(--serif);margin:18px 0 22px}
.page-three .chapter-head{opacity:.9}.final-intro{text-align:center;padding:95px 20px 40px}.final-intro h1{font-size:clamp(70px,9vw,130px);margin:24px 0}.final-intro h1 em{color:#e7aab4}.final-intro>p:last-of-type{color:#dcbcc3}.card-stage{min-height:810px;display:grid;place-items:center;position:relative;padding:45px 20px}.card-orbit{position:absolute;border:1px solid rgba(238,187,190,.16);width:680px;height:680px;border-radius:50%;pointer-events:none}.orbit-two{width:880px;height:880px}.love-card{width:min(100%,470px);min-height:690px;background:#fff8ef;color:#5c2b3d;box-shadow:0 35px 90px rgba(12,1,10,.45),0 0 0 1px #ebc5c1;transform:rotate(-2deg);transition:transform .5s;position:relative;padding:17px}.love-card:hover{transform:rotate(0) translateY(-8px)}.love-card:before{content:'';position:absolute;inset:6px;border:1px solid #dca2a9;pointer-events:none}.card-border{border:1px solid #dca2a9;min-height:656px;display:flex;flex-direction:column;align-items:center;text-align:center;padding:26px 22px 32px;position:relative;overflow:hidden}.card-border:before,.card-border:after{content:'';position:absolute;width:190px;height:230px;background:url('floral.svg') center/contain no-repeat;opacity:.23;pointer-events:none}.card-border:before{left:-69px;top:-78px;transform:rotate(50deg)}.card-border:after{right:-79px;bottom:-91px;transform:rotate(220deg)}.card-topline{font-size:9px;letter-spacing:.27em;font-weight:600;color:#a96173;z-index:1}.card-photo{z-index:1;width:175px;height:175px;border-radius:50%;border:7px solid #f8ebdf;outline:1px solid #b87183;margin:27px auto 16px;overflow:hidden;background:#e8b6bc}.card-photo-fallback{height:100%;display:grid;place-items:center}.card-photo-fallback img{width:130%;transform:rotate(-18deg);opacity:.8}.card-divider{font:15px var(--serif);color:#c17a8d;letter-spacing:6px}.love-card h2{font:400 50px/.92 var(--serif);letter-spacing:-.04em;margin:16px 0 22px}.love-card h2 em{color:#b05b73}.love-card p{font:italic 20px/1.35 var(--serif);margin:0;color:#75445a;z-index:1}.card-signoff{font:italic 24px var(--serif);color:#ad5d73;margin-top:auto;padding-top:20px;z-index:1}.download-wrap{text-align:center;padding:0 20px 100px}.button-download{background:#e9b7bb;border-color:#e9b7bb;color:#4f1e36}.button-download:hover{background:#ffced0;color:#4f1e36}.download-wrap p{font:italic 22px var(--serif);color:#d9b5b9}.final-letter{text-align:center;max-width:680px;margin:auto;padding:20px 20px 125px}.final-ornament{font:43px var(--serif);color:#e0aab4}.final-letter p{font:400 29px/1.3 var(--serif);color:#e5c7c8}.final-letter strong{display:block;font:italic 39px/1.15 var(--serif);margin:28px auto;color:#fff5ec}.final-heart{display:block;font:50px var(--serif);color:#e5a2b2}
.reveal{opacity:0;transform:translateY(25px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}.delay-1{transition-delay:.12s}.delay-2{transition-delay:.24s}
.poem-garden{text-align:center;max-width:1200px;margin:0 auto 115px;padding:20px 5% 0}.poem-garden .overline{color:var(--rose-dark);margin-bottom:35px}.verse-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.verse-grid p{min-height:215px;margin:0;padding:35px 16px;display:grid;place-items:center;border-top:1px solid #bb8293;border-bottom:1px solid #bb8293;font:italic 27px/1.2 var(--serif);background:rgba(255,249,244,.29)}
.memory-stack{position:relative;padding:0 38px 30px 0}.solo-photo{position:absolute;right:0;bottom:0;width:35%;height:225px;border:8px solid #fffaf4;box-shadow:0 16px 35px rgba(80,32,53,.24);transform:rotate(8deg);overflow:hidden;background:#e4b6ba}.solo-fallback{height:100%;display:grid;place-items:center;text-align:center;font:italic 38px/.85 var(--serif);color:#fff6ec;background:linear-gradient(145deg,#a4536e,#e4adb9)}
.date-memory{max-width:1100px;margin:0 auto 110px;padding:0 5%;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:7%}.date-photo{height:500px;overflow:hidden;border:12px solid #fffaf4;box-shadow:0 20px 60px rgba(117,51,72,.16);background:#e0adad;transform:rotate(2deg)}.date-copy .overline{color:var(--rose-dark)}.date-copy p:not(.overline){font:italic clamp(32px,3.6vw,51px)/1.18 var(--serif);margin:22px 0}.date-copy span{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--rose-dark)}
@media(max-width:900px){.hero{padding:60px 8% 90px;min-height:auto;grid-template-columns:1fr 1fr}.hero h1{font-size:clamp(55px,7.5vw,83px)}.hero-art{height:480px}.oval-frame{height:420px}.reasons{grid-template-columns:repeat(2,1fr)}.memory-copy h2{font-size:58px}.memory-photo{height:480px}.art-note{right:-2%;font-size:20px}}
@media(max-width:650px){.chapter-head{padding:24px 6% 0;font-size:8px;letter-spacing:.16em}.chapter-mark{font-size:9px}.hero{padding:65px 7% 70px;display:flex;flex-direction:column;gap:30px}.hero-copy{width:100%}.hero h1{font-size:clamp(56px,13vw,83px);margin:25px 0}.hero-lead{font-size:13px}.hero-art{width:100%;height:440px}.oval-frame{width:75%;max-width:320px;height:390px;border-width:9px}.art-note{right:2%;bottom:10px;font-size:20px}.letter-panel{padding:65px 8%;display:block}.section-number{font-size:50px}.letter-content h2{font-size:46px}.letter-content p:not(.overline){font-size:13px}.poem-band{padding:80px 20px 60px}.poem-band p{font-size:34px}.next-tease{padding:45px 20px 90px}.page-footer{padding:22px 6% 28px}.chapter-intro{padding:90px 8% 55px}.chapter-intro h1{font-size:65px}.floating-asterisk{left:3%;top:25%;font-size:46px}.reasons{grid-template-columns:1fr;padding:0 7% 70px;gap:12px}.reason-card{min-height:225px}.reason-symbol{font-size:48px}.reason-secret{font-size:25px}.memory-section{display:flex;flex-direction:column;margin-bottom:65px;gap:45px;padding:0 8%}.memory-photo{width:100%;height:440px;transform:rotate(-1deg)}.memory-copy{width:100%}.memory-copy h2{font-size:60px}.whisper-section{padding:65px 20px}.whisper-section p{font-size:36px}.final-intro{padding:80px 8% 20px}.final-intro h1{font-size:85px}.card-stage{min-height:690px;padding:30px 7%}.love-card{max-width:390px;min-height:600px;padding:12px}.card-border{min-height:576px;padding:22px 10px 25px}.card-photo{width:140px;height:140px;margin:20px auto 12px}.love-card h2{font-size:43px;margin:13px 0 16px}.love-card p{font-size:18px}.card-signoff{font-size:21px}.card-orbit{width:490px;height:490px}.orbit-two{width:670px;height:670px}.download-wrap{padding-bottom:70px}.final-letter{padding-bottom:90px}.final-letter p{font-size:26px}.final-letter strong{font-size:32px}}
@media(max-width:360px){.hero h1{font-size:52px}.oval-frame{height:350px}.hero-art{height:390px}.chapter-intro h1{font-size:57px}.final-intro h1{font-size:75px}.love-card p{font-size:16px}.love-card h2{font-size:40px}}
@media(max-width:900px){.verse-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.poem-garden{margin-bottom:70px;padding:0 7%}.verse-grid{grid-template-columns:1fr 1fr;gap:9px}.verse-grid p{min-height:150px;font-size:21px;padding:18px 5px}}
@media(max-width:650px){.memory-stack{width:100%;padding-right:27px}.solo-photo{width:36%;height:170px}.memory-stack .memory-photo{width:100%}}
@media(max-width:650px){.date-memory{display:flex;flex-direction:column;gap:40px;margin-bottom:70px;padding:0 8%}.date-photo{width:100%;height:400px;transform:rotate(1deg)}.date-copy{width:100%}.date-copy p:not(.overline){font-size:37px}}
.card-signoff{font-size:19px;max-width:100%;line-height:1.1}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.petal{display:none}.reveal{opacity:1;transform:none;transition:none}.sparkle{animation:none}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
