*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#100713;--bg2:#190c1e;--pink:#ff6f9f;--rose:#ff9bbb;--cream:#fff3f6;--muted:#cdb8c5;--line:rgba(255,255,255,.11)}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--cream);font-family:Inter,Arial,sans-serif;overflow-x:hidden}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 15% 15%,rgba(255,92,145,.12),transparent 28%),radial-gradient(circle at 85% 75%,rgba(166,89,255,.10),transparent 30%);z-index:-2}
.bg-hearts{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:20}.floating-heart{position:absolute;color:rgba(255,142,177,.5);animation:floatUp linear forwards;font-size:14px}
@keyframes floatUp{from{transform:translateY(105vh) rotate(0);opacity:0}10%{opacity:1}90%{opacity:.6}to{transform:translateY(-15vh) rotate(360deg);opacity:0}}
.hidden{display:none}
.intro{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 50% 45%,#2a1028 0%,#110712 58%,#09040b 100%);display:grid;place-items:center;text-align:center;padding:24px;overflow:hidden}
.intro-glow{position:absolute;width:55vw;height:55vw;max-width:700px;max-height:700px;border-radius:50%;background:rgba(255,83,139,.12);filter:blur(80px)}
.intro-content{position:relative;max-width:700px}.mini-heart{font-size:46px;color:var(--pink);animation:pulse 1.6s infinite;text-shadow:0 0 35px rgba(255,94,147,.8)}
.eyebrow{font-size:11px;letter-spacing:4px;text-transform:uppercase;color:#e7cbd7;margin-bottom:18px}
.intro h1{font-family:"Cormorant Garamond",serif;font-size:clamp(70px,12vw,150px);line-height:.8;font-weight:600;margin:15px 0 28px}.intro h1 span,.hero-title em,.section-title em,.final h2 em{color:var(--rose);font-style:italic}
.intro-copy{color:var(--muted);font-size:16px;margin-bottom:30px}.primary-btn{border:0;background:linear-gradient(135deg,#ff4f88,#d93f78);color:white;border-radius:100px;padding:15px 25px;font-weight:600;letter-spacing:.3px;cursor:pointer;box-shadow:0 15px 35px rgba(255,57,122,.22);transition:.3s}
.primary-btn:hover{transform:translateY(-3px);box-shadow:0 20px 45px rgba(255,57,122,.35)}.primary-btn span{margin-left:8px}
.hint{margin-top:20px;color:#8e7382;font-size:11px}
.site{opacity:0}.site.show{animation:siteIn 1.2s ease forwards}@keyframes siteIn{to{opacity:1}}
.hero{min-height:100vh;display:flex;align-items:center;justify-content:space-between;gap:70px;padding:90px max(7vw,30px);position:relative;overflow:hidden}.hero-inner{max-width:650px;z-index:2}.hero-title{font-family:"Cormorant Garamond",serif;font-size:clamp(65px,8vw,120px);line-height:.84;font-weight:600;letter-spacing:-3px;margin-bottom:30px}.hero-title .heart{font-family:Inter;font-size:.28em;color:var(--pink);vertical-align:top;display:inline-block;margin-top:10px;animation:pulse 1.7s infinite}
.hero-subtitle{font-size:18px;line-height:1.8;color:var(--muted);max-width:530px}.hero-subtitle strong{color:white}.scroll-btn{display:inline-flex;gap:12px;align-items:center;color:#f8dfe9;text-decoration:none;margin-top:45px;font-size:13px}.scroll-btn span{font-size:22px;animation:bounce 1.5s infinite}.hero-photo-wrap{width:min(39vw,520px);min-width:310px;position:relative;z-index:2;transform:rotate(3deg)}.photo-frame{padding:12px;background:#f8edf0;box-shadow:0 30px 80px rgba(0,0,0,.5)}.photo-frame img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}.floating-note{position:absolute;bottom:-25px;left:-45px;background:#211021;border:1px solid var(--line);padding:15px 20px;border-radius:14px;font-family:"Playfair Display",serif;font-style:italic;color:#ffdce8;box-shadow:0 20px 40px rgba(0,0,0,.3)}
.hero-orb{position:absolute;border-radius:50%;filter:blur(2px);opacity:.45}.orb-one{width:350px;height:350px;background:#6e1647;right:-130px;top:10%}.orb-two{width:250px;height:250px;background:#4e235f;left:-150px;bottom:0}
.section{padding:130px max(7vw,25px);position:relative}.section-label{text-transform:uppercase;letter-spacing:3px;font-size:10px;color:#bca2b1;margin-bottom:18px}.section-title{font:600 clamp(48px,6vw,82px)/.9 "Cormorant Garamond",serif;letter-spacing:-2px;margin-bottom:55px}
.letter{background:linear-gradient(180deg,#130915,#1b0b1a)}.letter-card{max-width:850px;margin:auto;border:1px solid var(--line);background:rgba(255,255,255,.035);padding:clamp(35px,6vw,75px);position:relative;box-shadow:0 35px 80px rgba(0,0,0,.25)}.quote-mark{position:absolute;right:35px;top:10px;font:120px/1 "Cormorant Garamond",serif;color:rgba(255,112,159,.12)}.letter-card h2{font:600 52px "Cormorant Garamond",serif;margin-bottom:28px}.letter-card p{font:17px/2;color:#d9c8d0;margin:0 0 20px}.letter-card strong{color:#fff}.signature{font-family:"Playfair Display",serif;font-style:italic;color:#f4d7e1!important;margin-top:40px!important}.signature span{color:var(--rose)}
.gallery{background:#0d070e}.gallery-grid{max-width:1150px;margin:auto;display:grid;grid-template-columns:1.15fr .85fr;grid-template-rows:350px 350px;gap:20px}.gallery-item{margin:0;overflow:hidden;position:relative;background:#1b0c18}.gallery-item.large{grid-row:span 2}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease;filter:saturate(.92)}.gallery-item:hover img{transform:scale(1.06)}.gallery-item:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(8,3,8,.78))}.gallery-item figcaption{position:absolute;z-index:2;bottom:20px;left:22px;font:italic 22px "Playfair Display",serif;color:#fff}
.reasons{background:linear-gradient(180deg,#10070f,#180a18)}.reason-grid{max-width:1050px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}.reason-grid article{padding:35px 24px;border-right:1px solid var(--line)}.reason-grid article:last-child{border-right:0}.reason-grid span{color:var(--pink);font-size:11px;letter-spacing:2px}.reason-grid h3{font:600 30px "Cormorant Garamond",serif;margin:24px 0 12px}.reason-grid p{font-size:13px;line-height:1.8;color:#aa96a4}
.countdown-section{padding-top:80px;padding-bottom:80px}.countdown-card{max-width:950px;margin:auto;text-align:center;border:1px solid var(--line);background:linear-gradient(135deg,rgba(255,93,145,.08),rgba(255,255,255,.02));padding:65px 30px;border-radius:4px}.countdown-card h2{font:500 clamp(38px,5vw,65px) "Cormorant Garamond",serif;margin-bottom:40px}.countdown-card h2 em{color:var(--rose)}.countdown{display:flex;justify-content:center;gap:clamp(15px,5vw,60px)}.countdown div{min-width:80px}.countdown strong{font:600 clamp(42px,6vw,70px) "Cormorant Garamond",serif;display:block}.countdown span{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:#9e8492}.birthday-message{font:italic 21px "Playfair Display",serif;color:#ffbfd1;margin-top:35px}
.final{min-height:90vh;display:grid;place-items:center;text-align:center;overflow:hidden;background:radial-gradient(circle at center,#2a0e27 0%,#110711 55%,#090409 100%)}.final-glow{position:absolute;width:500px;height:500px;border-radius:50%;background:rgba(255,62,128,.12);filter:blur(100px)}.final-content{position:relative;max-width:700px}.big-heart{font-size:58px;color:var(--pink);animation:pulse 1.7s infinite;text-shadow:0 0 40px rgba(255,80,140,.6);margin-bottom:25px}.final h2{font:600 clamp(60px,8vw,110px)/.82 "Cormorant Garamond",serif;letter-spacing:-3px}.final-text{max-width:600px;margin:35px auto 15px;color:#cbb6c2;line-height:1.9;font-size:15px}.final-wish{font:italic 18px "Playfair Display",serif;color:#f8dce6;margin-bottom:35px}
footer{text-align:center;padding:25px;color:#705d68;font-size:10px;letter-spacing:1px;border-top:1px solid rgba(255,255,255,.05)}
.modal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:20px}.modal.open{display:grid}.modal-backdrop{position:absolute;inset:0;background:rgba(5,2,7,.86);backdrop-filter:blur(12px)}.modal-card{position:relative;z-index:2;max-width:560px;background:#1b0b1a;border:1px solid rgba(255,151,180,.2);padding:55px 45px;text-align:center;box-shadow:0 30px 100px #000}.modal-heart{font-size:42px;color:var(--pink);margin-bottom:15px}.modal-card h2{font:600 50px/1 "Cormorant Garamond",serif;margin-bottom:25px}.modal-card p:not(.eyebrow){color:#cbb7c3;line-height:1.8;font-size:14px;margin-bottom:25px}.modal-card strong{color:#ffb8ca;font-family:"Playfair Display",serif}.close-modal{position:absolute;right:18px;top:12px;border:0;background:none;color:#b89eab;font-size:30px;cursor:pointer}
.reveal{opacity:0;transform:translateY(30px)}.revealed{animation:reveal .9s ease forwards}@keyframes reveal{to{opacity:1;transform:none}}@keyframes pulse{50%{transform:scale(1.12)}}@keyframes bounce{50%{transform:translateY(5px)}}
@media(max-width:850px){.hero{padding-top:110px;display:block}.hero-photo-wrap{width:min(80vw,500px);margin:75px auto 20px}.reason-grid{grid-template-columns:1fr 1fr}.reason-grid article:nth-child(2){border-right:0}.reason-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}.gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:300px 300px}.gallery-item.large{grid-row:auto;grid-column:span 2}.gallery-item.large img{object-position:center 25%}}
@media(max-width:560px){.hero-title{font-size:68px}.section{padding:90px 20px}.gallery-grid{display:block}.gallery-item{height:390px;margin-bottom:14px}.reason-grid{grid-template-columns:1fr}.reason-grid article{border-right:0!important;border-bottom:1px solid var(--line)!important}.reason-grid article:last-child{border-bottom:0!important}.countdown{gap:8px}.countdown div{min-width:62px}.countdown strong{font-size:40px}.countdown span{font-size:7px}.letter-card{padding:35px 25px}.letter-card h2{font-size:44px}.final h2{font-size:65px}}
