*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#100a0e;--bg2:#180d13;--paper:#f8eee7;--ink:#2c1b20;--rose:#d68b9c;--rose2:#f0b8c5;--cream:#f5e6dd;--muted:#bda8ad;--line:rgba(255,255,255,.12)}
html{scroll-behavior:smooth}
body{background:var(--bg);color:#f7edf0;font-family:"DM Sans",sans-serif;overflow-x:hidden}
body.locked{overflow:hidden}
.noise{position:fixed;inset:0;pointer-events:none;opacity:.045;z-index:20;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='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")}
#hearts{position:fixed;inset:0;pointer-events:none;z-index:19;overflow:hidden}
.float-heart{position:absolute;bottom:-30px;color:var(--rose2);opacity:0;animation:rise linear forwards;font-size:16px}
@keyframes rise{0%{transform:translateY(0) rotate(0);opacity:0}12%{opacity:.5}100%{transform:translateY(-110vh) translateX(var(--drift)) rotate(35deg);opacity:0}}
a{color:inherit}
.nav{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:28px 6vw;z-index:5}
.brand{font-family:"Cormorant Garamond",serif;font-size:22px;letter-spacing:.12em}.brand span{color:var(--rose2)}
.nav a{text-decoration:none;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#dbc9cd}
.hero{min-height:100vh;position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:100px 7vw 60px;overflow:hidden;background:radial-gradient(circle at 72% 50%,#3a1724 0,#1b0d13 38%,#100a0e 72%)}
.hero:before{content:"";position:absolute;width:48vw;height:48vw;border:1px solid rgba(240,184,197,.14);border-radius:50%;right:-18vw;top:8vh}
.hero-content{position:relative;z-index:3;max-width:620px;padding-right:4vw}
.eyebrow{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--rose2);margin-bottom:20px}
.hero h1{font-family:"Cormorant Garamond",serif;font-size:clamp(72px,9vw,140px);line-height:.78;font-weight:500;letter-spacing:-.05em}
.hero h1 span{font-family:"Great Vibes",cursive;color:var(--rose2);font-size:1.03em;display:inline-block;margin-left:6vw;margin-top:18px}
.hero-name{font-family:"Cormorant Garamond",serif;font-size:30px;margin:28px 0 14px;color:#fff}
.hero-copy{max-width:490px;color:#c8b6ba;line-height:1.8;font-size:15px}
.primary-btn{border:0;background:var(--cream);color:var(--ink);padding:15px 21px;border-radius:999px;font:600 12px "DM Sans",sans-serif;letter-spacing:.04em;cursor:pointer;margin-top:30px;transition:.3s;box-shadow:0 15px 40px rgba(0,0,0,.18)}
.primary-btn:hover{transform:translateY(-3px);box-shadow:0 18px 45px rgba(214,139,156,.18)}
.primary-btn span{margin-left:10px;color:#a94f67}
.hero-photo{position:relative;z-index:2;width:min(42vw,610px);height:min(68vh,720px);justify-self:end;transform:rotate(2deg)}
.hero-photo img{width:100%;height:100%;object-fit:cover;border-radius:5px;filter:saturate(.86) contrast(1.03);box-shadow:0 35px 90px rgba(0,0,0,.5)}
.photo-glow{position:absolute;inset:5% -7% -5% 7%;border:1px solid rgba(240,184,197,.4);z-index:-1}
.scroll-hint{position:absolute;bottom:30px;left:7vw;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#8f7d83}.scroll-hint span{margin-left:8px}
.section{max-width:1180px;margin:0 auto;padding:130px 32px}
h2{font-family:"Cormorant Garamond",serif;font-size:clamp(45px,6vw,78px);font-weight:500;line-height:.95;letter-spacing:-.03em}
.intro{max-width:1180px}.story-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:90px;margin-top:70px;align-items:center}.story-text{font-size:18px;line-height:1.9;color:#cdbbc0}.story-text p{margin-bottom:20px}.story-text strong{color:#f1d9df;font-weight:600}.story-text em{color:var(--rose2);font-style:normal}
.quote-card{padding:55px 45px;border:1px solid var(--line);background:rgba(255,255,255,.025);position:relative}.quote-mark{font:100px Georgia;color:var(--rose);opacity:.35;position:absolute;top:8px;left:22px}.quote-card p{font-family:"Cormorant Garamond",serif;font-size:34px;line-height:1.05;position:relative}.quote-card small{display:block;color:#99868b;font-size:11px;letter-spacing:.08em;margin-top:28px}
.timeline{max-width:900px}.timeline-list{margin-top:65px;border-left:1px solid rgba(240,184,197,.2);padding-left:45px}.timeline-item{position:relative;padding:0 0 60px}.timeline-item .dot{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--rose2);left:-50px;top:6px;box-shadow:0 0 0 7px rgba(240,184,197,.08)}.timeline-item small{font-size:10px;letter-spacing:.2em;color:var(--rose2)}.timeline-item h3{font-family:"Cormorant Garamond",serif;font-size:34px;font-weight:500;margin:7px 0}.timeline-item p{color:#aa989d;line-height:1.7;max-width:580px}.final-item{padding-bottom:0}
.reasons{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px;align-items:center}.reasons-image{height:600px;overflow:hidden}.reasons-image img{width:100%;height:100%;object-fit:cover;object-position:center 20%;filter:saturate(.8)}.reasons-copy p{color:#bdaab0;line-height:1.9;font-size:17px;margin:22px 0}.reasons-copy h2{margin-bottom:35px}.signature{font-family:"Great Vibes",cursive;color:var(--rose2);font-size:34px;margin-top:35px}
.gallery-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr;grid-auto-rows:280px;gap:12px;margin-top:65px}.gallery-card{overflow:hidden;position:relative;background:#1c1116}.gallery-card img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1);filter:saturate(.82)}.gallery-card:hover img{transform:scale(1.05)}.gallery-card.large{grid-row:span 2}.gallery-card:nth-child(2){grid-row:span 2}.gallery-card:nth-child(3) img{object-position:center 30%}.gallery-card:nth-child(4) img{object-position:center 55%}.caption-card{background:linear-gradient(135deg,#321722,#160d12);display:flex;align-items:center;justify-content:center;text-align:center;padding:35px}.caption-card span{font-size:42px;color:var(--rose2)}.caption-card p{font-family:"Cormorant Garamond",serif;font-size:27px;margin-top:15px}
.fox{max-width:none;background:radial-gradient(circle at 50% 40%,#341923,#130b10 65%);text-align:center;padding-left:7vw;padding-right:7vw}.fox-inner{max-width:760px;margin:auto}.fox-symbol{font-size:35px;color:var(--rose2);margin:35px}.fox h2{font-size:clamp(55px,7vw,95px)}.fox p{color:#bda9ae;line-height:1.8;font-size:17px;margin:25px auto;max-width:620px}.fox blockquote{font-family:"Cormorant Garamond",serif;font-size:34px;color:#f4dce2;line-height:1.2;padding:35px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:40px auto}
.music{max-width:950px}.music-heading{text-align:center}.music-heading h2{margin-bottom:22px}.music-heading>p:last-child{color:#a9979c;line-height:1.7}.spotify-card{margin-top:55px;display:flex;align-items:center;gap:35px;padding:28px;background:#1b1015;border:1px solid var(--line);box-shadow:0 25px 70px rgba(0,0,0,.25)}.vinyl{width:130px;height:130px;border-radius:50%;flex:none;background:repeating-radial-gradient(circle,#161216 0 2px,#090809 3px 4px);display:grid;place-items:center;box-shadow:0 0 0 7px #22161b}.vinyl-center{width:43px;height:43px;border-radius:50%;background:#c48a99;display:grid;place-items:center;color:#351620;font-size:17px}.spotify-info>span{font-size:9px;letter-spacing:.25em;color:var(--rose2)}.spotify-info h3{font-family:"Cormorant Garamond",serif;font-size:30px;margin:8px 0 4px}.spotify-info p{color:#99878c;font-size:13px}.spotify-btn{display:inline-block;text-decoration:none;margin-top:18px;background:#e9ddd7;color:#24151a;border-radius:999px;padding:11px 16px;font-size:11px;font-weight:600}.spotify-embed{margin-top:18px;overflow:hidden;border-radius:12px}.music-note{font-size:11px;color:#7e6d72;text-align:center;margin-top:12px}
.letter{display:grid;grid-template-columns:1fr .75fr;gap:80px;align-items:center}.letter-intro p:not(.eyebrow){color:#ad9a9f;line-height:1.8;font-size:17px;max-width:520px;margin-top:25px}.letter-preview{transform:rotate(2deg);box-shadow:0 30px 70px rgba(0,0,0,.35)}.letter-preview img{width:100%;display:block}
.final{text-align:center;padding-bottom:150px}.final-heart{font-size:65px;color:var(--rose2);margin-bottom:25px}.final>p:not(.eyebrow):not(.big-line):not(.final-sign){color:#a9969b;line-height:1.8;max-width:550px;margin:15px auto}.big-line{font-family:"Cormorant Garamond",serif;font-size:39px;color:#f2dce2;margin:45px auto 35px}.final-sign{font-family:"Great Vibes",cursive;color:var(--rose2);font-size:36px;line-height:1.15}.final-sign span{font-family:"Cormorant Garamond",serif;font-size:20px;color:#a9949a}.date-line{font-size:10px;letter-spacing:.2em;color:#75656a;margin-top:55px}.date-line span{color:var(--rose2);margin:0 12px}
footer{text-align:center;border-top:1px solid var(--line);padding:35px 20px;color:#6f5d63;font-size:11px;letter-spacing:.05em}
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:25px}.modal.open{display:flex}.modal-backdrop{position:absolute;inset:0;background:rgba(5,3,4,.82);backdrop-filter:blur(12px)}.letter-paper{position:relative;z-index:2;max-width:700px;max-height:88vh;overflow:auto;background:#f5e9df;color:#2c1b20;padding:65px clamp(30px,7vw,80px);box-shadow:0 35px 100px rgba(0,0,0,.5);background-image:radial-gradient(rgba(115,77,53,.06) 1px,transparent 1px);background-size:8px 8px}.letter-paper:before{content:"";position:absolute;inset:14px;border:1px solid rgba(91,56,42,.15);pointer-events:none}.letter-paper p{font-family:"Cormorant Garamond",serif;font-size:19px;line-height:1.55;margin:0 0 18px}.letter-paper .handwritten{font-family:"Great Vibes",cursive;font-size:45px;color:#7c3e50;margin-bottom:30px}.letter-paper .closing{text-align:right;margin-top:30px}.letter-love{color:#7c3e50;font-weight:600}.close-modal{position:absolute;z-index:3;right:20px;top:16px;border:0;background:transparent;font-size:32px;color:#6e4a53;cursor:pointer}
.reveal{opacity:0;transform:translateY(30px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}

/* ─────────────── Entrada romántica ─────────────── */
body.intro-locked{overflow:hidden}
.intro-screen{position:fixed;inset:0;z-index:200;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 42%,#351722 0,#1b0d13 38%,#100a0e 76%);transition:opacity 1s cubic-bezier(.2,.7,.2,1),visibility 1s}
.intro-screen:before{content:"";position:absolute;width:min(80vw,900px);height:min(80vw,900px);border:1px solid rgba(240,184,197,.12);border-radius:50%;box-shadow:0 0 100px rgba(214,139,156,.05)}
.intro-screen.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.intro-content{position:relative;z-index:2;text-align:center;padding:35px 24px;max-width:680px;animation:introRise 1.1s cubic-bezier(.2,.8,.2,1) both}
@keyframes introRise{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}
.intro-heart{font-size:45px;color:var(--rose2);line-height:1;margin-bottom:25px;animation:introPulse 2.8s ease-in-out infinite}
@keyframes introPulse{0%,100%{transform:scale(1);opacity:.8}50%{transform:scale(1.12);opacity:1}}
.intro-eyebrow{font-size:10px;letter-spacing:.3em;color:var(--rose2);margin-bottom:22px}
.intro-kicker{font-family:"Cormorant Garamond",serif;font-size:24px;color:#d8c5ca;margin-bottom:12px}
.intro-content h2{font-size:clamp(58px,8vw,92px);line-height:.9;font-weight:500;letter-spacing:-.04em}
.intro-content h2 span{font-family:"Great Vibes",cursive;color:var(--rose2);display:block;font-size:1.04em;margin-top:8px}
.intro-name{font-family:"Cormorant Garamond",serif;font-size:25px;color:#fff;margin-top:20px}
.intro-note{color:#9f8c92;font-size:13px;margin-top:12px}
.intro-btn{border:1px solid rgba(248,238,231,.18);background:rgba(248,238,231,.96);color:var(--ink);padding:16px 24px;border-radius:999px;font:600 12px "DM Sans",sans-serif;letter-spacing:.04em;cursor:pointer;margin-top:31px;box-shadow:0 20px 60px rgba(0,0,0,.3);transition:transform .3s,box-shadow .3s}
.intro-btn:hover{transform:translateY(-3px);box-shadow:0 24px 70px rgba(214,139,156,.2)}
.intro-btn span{margin-left:12px;color:#a94f67;font-size:16px}
.intro-hint{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#6f5e64;margin-top:24px}
.intro-orbit{position:absolute;border:1px solid rgba(240,184,197,.1);border-radius:50%;animation:orbitFloat 12s ease-in-out infinite}
.intro-orbit-one{width:55vw;height:55vw;right:-25vw;top:-18vw}
.intro-orbit-two{width:38vw;height:38vw;left:-18vw;bottom:-18vw;animation-delay:-5s}
@keyframes orbitFloat{0%,100%{transform:translate(0,0) rotate(0deg)}50%{transform:translate(15px,-18px) rotate(5deg)}}

@media(max-width:520px){.intro-content{padding:25px 20px}.intro-content h2{font-size:68px}.intro-kicker{font-size:21px}.intro-heart{font-size:38px}.intro-note{font-size:12px}.intro-orbit-one{width:95vw;height:95vw;right:-48vw;top:-22vw}.intro-orbit-two{width:75vw;height:75vw;left:-38vw;bottom:-25vw}}
@media(max-width:850px){.nav{padding:22px 6vw}.nav a{display:none}.hero{grid-template-columns:1fr;padding-top:120px;min-height:100svh}.hero-content{padding:0;align-self:start}.hero h1{font-size:80px}.hero h1 span{margin-left:12vw}.hero-photo{width:78vw;height:54vh;justify-self:center;margin-top:35px;transform:rotate(1deg)}.scroll-hint{display:none}.section{padding:90px 22px}.story-grid,.reasons,.letter{grid-template-columns:1fr;gap:45px}.story-grid{margin-top:45px}.quote-card{padding:45px 30px}.reasons-image{height:480px;order:2}.reasons-copy{order:1}.gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:240px}.gallery-card.large{grid-row:span 2}.gallery-card:nth-child(2){grid-row:span 2}.caption-card{grid-column:span 2}.spotify-card{padding:22px;gap:22px}.vinyl{width:95px;height:95px}.spotify-info h3{font-size:24px}.fox blockquote{font-size:29px}.letter-preview{max-width:600px;margin:auto}}
@media(max-width:520px){.hero{padding-left:20px;padding-right:20px}.hero h1{font-size:66px}.hero-photo{width:88vw;height:50vh}.gallery-grid{grid-template-columns:1fr;grid-auto-rows:300px}.gallery-card.large,.gallery-card:nth-child(2){grid-row:span 1}.caption-card{grid-column:auto}.spotify-card{flex-direction:column;text-align:center}.vinyl{width:115px;height:115px}.letter-paper{padding:55px 28px}.letter-paper p{font-size:18px}.letter-paper .handwritten{font-size:38px}}
