:root{--ink:#121212;--purple:#8b35ff;--lime:#c8ff38;--coral:#ff5e50;--blue:#225dff;--yellow:#ffd51f;--pink:#ff5bd1;--paper:#fffaf0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Space Grotesk",Arial,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}img{display:block;width:100%}.party-nav{position:fixed;z-index:50;top:18px;left:3vw;right:3vw;height:58px;padding:0 12px 0 18px;border-radius:99px;background:rgba(18,18,18,.88);color:#fff;backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:space-between;transition:transform .35s}.party-mark{font:400 1rem Bungee;display:flex;align-items:center;gap:4px}.party-mark span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--lime);color:var(--ink);transform:rotate(-10deg)}.party-nav nav{display:flex;align-items:center;gap:24px;text-transform:uppercase;font-size:.68rem;letter-spacing:.1em}.nav-rsvp{background:var(--coral);padding:11px 16px;border-radius:99px;color:var(--ink);font-weight:700}.hero{position:relative;min-height:100svh;overflow:hidden;background:var(--purple)}.hero>img{position:absolute;inset:0;height:100%;object-fit:cover}.hero-wash{position:absolute;inset:0;background:linear-gradient(90deg,rgba(200,255,56,.82) 0,rgba(139,53,255,.35) 45%,transparent 72%)}.hero-copy{position:relative;z-index:3;padding:150px 5vw 70px;width:min(750px,60vw)}.micro{text-transform:uppercase;font-weight:700;letter-spacing:.16em;font-size:.68rem}.hero h1{font:400 clamp(4.5rem,10.7vw,10rem)/.75 Bungee;margin:45px 0 38px;letter-spacing:-.06em}.hero h1 span,.hero h1 b{display:block}.hero h1 b{font-size:.46em;line-height:1;margin:18px 0 0 1em;color:var(--blue);transform:rotate(-3deg)}.hero h1 em{position:absolute;left:54vw;top:20vh;font-style:normal;font-size:1.05em;color:var(--yellow);-webkit-text-stroke:4px var(--ink);transform:rotate(8deg)}.hero-lead{font-size:clamp(1rem,1.7vw,1.35rem);font-weight:500;line-height:1.5;max-width:560px}.hero-actions{display:flex;gap:10px;margin-top:32px;flex-wrap:wrap}.hero-actions a,.hero-actions button{border:0;border-radius:99px;background:var(--ink);color:#fff;padding:14px 22px;font-weight:700;cursor:pointer}.hero-actions button{background:var(--pink);color:var(--ink)}.hero-sticker{position:absolute;z-index:4;right:4vw;bottom:5vh;width:145px;height:145px;border-radius:50%;background:var(--yellow);display:grid;place-items:center;text-align:center;font:400 1.1rem/1.1 Bungee;transform:rotate(10deg);animation:bob 3.2s ease-in-out infinite}.confetti{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-8vh;width:10px;height:24px;border-radius:2px;animation:fall var(--speed) linear var(--delay) infinite;transform:rotate(var(--turn));opacity:.9}@keyframes fall{to{transform:translate3d(var(--drift),112vh,0) rotate(calc(var(--turn) + 720deg))}}@keyframes bob{50%{transform:rotate(6deg) translateY(-10px)}}.ticker{background:var(--ink);color:var(--lime);padding:15px 0;overflow:hidden;white-space:nowrap;font:400 1.2rem Bungee}.ticker div{width:max-content;animation:ticker 22s linear infinite}@keyframes ticker{to{transform:translateX(-50%)}}.countdown{background:var(--yellow);padding:70px 5vw;display:flex;align-items:center;justify-content:center;gap:3vw}.countdown div{text-align:center}.countdown strong{display:block;font:400 clamp(3.8rem,8vw,8rem)/.8 Bungee}.countdown span{text-transform:uppercase;font-size:.65rem;letter-spacing:.14em}.countdown i{font:400 4rem Bungee;font-style:normal}.countdown>p{font-weight:700;text-transform:uppercase;line-height:1.15;margin-left:3vw}.plan{padding:10vw 4vw;background:var(--paper)}.section-title h2,.dress h2,.playlist h2,.photo-party h2,.rsvp h2{font:400 clamp(3.5rem,7.5vw,7.8rem)/.87 Bungee;letter-spacing:-.05em;margin:22px 0}.plan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:7vw}.plan-card{min-height:420px;padding:28px;display:flex;flex-direction:column;transition:transform .25s}.plan-card:hover{transform:translateY(-10px) rotate(-1deg)}.plan-card span{font-size:.68rem;font-weight:700;letter-spacing:.12em}.plan-card h3{font:400 clamp(2.4rem,4vw,4.4rem)/.9 Bungee;margin:70px 0 25px}.plan-card p{line-height:1.6}.plan-card i{font:400 4.5rem Bungee;font-style:normal;margin-top:auto;align-self:flex-end}.lime{background:var(--lime)}.coral{background:var(--coral)}.blue{background:var(--blue);color:#fff}.purple{background:var(--purple);color:#fff}.venue{height:100svh;min-height:680px;position:relative}.venue>img{height:100%;object-fit:cover}.venue:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(18,18,18,.65),transparent 60%)}.venue-card{position:absolute;z-index:2;left:5vw;bottom:6vw;color:#fff;max-width:520px}.venue-card h2{font:400 clamp(3.7rem,7vw,7.2rem)/.85 Bungee;margin:20px 0}.venue-card p{line-height:1.6}.venue-card a{display:inline-block;background:var(--lime);color:var(--ink);padding:14px 20px;border-radius:99px;font-weight:700;margin-top:18px}.practical{display:grid;grid-template-columns:1fr 1fr 1fr;min-height:720px}.practical>div{padding:7vw 4vw}.dress{background:var(--purple);color:#fff}.dress p{line-height:1.7;max-width:480px}.swatches{display:flex;gap:9px;margin-top:50px}.swatches i{width:42px;height:42px;border-radius:50%;background:var(--lime)}.swatches i:nth-child(2){background:var(--coral)}.swatches i:nth-child(3){background:var(--blue)}.swatches i:nth-child(4){background:var(--yellow)}.swatches i:nth-child(5){background:var(--pink)}.party-map{position:relative;overflow:hidden;background:var(--lime);min-height:560px}.party-map:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 2px 2px,rgba(18,18,18,.2) 2px,transparent 2.2px);background-size:30px 30px}.road{position:absolute;height:10px;background:#fff;border-radius:99px;transform-origin:left}.r1{width:130%;left:-10%;top:30%;transform:rotate(18deg)}.r2{width:100%;left:20%;top:75%;transform:rotate(-37deg)}.r3{width:80%;left:45%;top:0;transform:rotate(68deg)}.map-pin{position:absolute;z-index:2;left:54%;top:38%;width:78px;height:78px;border-radius:50%;background:var(--coral);display:grid;place-items:center;font:400 1.2rem Bungee;animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.08)}}.party-map b,.party-map strong{position:absolute;z-index:2;text-transform:uppercase}.party-map b{left:10%;top:18%}.party-map strong{left:62%;top:53%;font:400 1rem/1.05 Bungee}.party-map small{position:absolute;z-index:2;right:25px;bottom:20px;text-transform:uppercase;font-size:.58rem;letter-spacing:.1em}.transport{background:var(--yellow)}.transport span{display:block;font-weight:700;font-size:.65rem;letter-spacing:.16em;margin-top:25px}.transport h3{font:400 1.8rem/1 Bungee;margin:9px 0}.transport p{line-height:1.6}.transport a{display:inline-block;margin-top:25px;font-weight:700;border-bottom:3px solid}.playlist{padding:10vw 5vw;background:var(--blue);color:#fff;display:grid;grid-template-columns:1fr 1fr;gap:8vw}.playlist-copy p{max-width:570px;line-height:1.7}.song-form{align-self:center}.song-form label{display:block;margin:0 0 20px}.song-form label span{display:block;text-transform:uppercase;font-size:.65rem;letter-spacing:.14em;margin-bottom:5px}.song-form input{width:100%;border:0;border-bottom:2px solid rgba(255,255,255,.6);background:transparent;color:#fff;padding:12px 0;outline:none}.song-form input::placeholder{color:rgba(255,255,255,.55)}.song-form button{border:0;border-radius:99px;padding:15px 22px;background:var(--lime);font-weight:700;cursor:pointer}.song-form #song-status{min-height:24px;font-size:.76rem}.song-wall{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap;margin-top:35px}.song-wall span{padding:11px 15px;border-radius:99px;background:var(--paper);color:var(--ink);font-size:.78rem;animation:chipIn .5s ease both}@keyframes chipIn{from{opacity:0;transform:scale(.8) rotate(-5deg)}}.photo-party{padding:10vw 5vw;background:var(--coral);display:grid;grid-template-columns:.9fr 1.1fr;gap:8vw}.photo-copy p{line-height:1.7;max-width:560px}.public-note{font-size:.72rem;opacity:.75;margin-top:35px}.photo-panel{align-self:center}.guest-name span{display:block;text-transform:uppercase;font-size:.64rem;font-weight:700;letter-spacing:.14em}.guest-name input{width:100%;border:0;border-bottom:2px solid var(--ink);background:transparent;padding:13px 0;outline:none}.upload-actions{display:flex;gap:10px;margin-top:25px}.upload-actions label{flex:1;text-align:center;padding:16px;border-radius:99px;background:var(--ink);color:#fff;font-weight:700;font-size:.78rem;cursor:pointer}.upload-actions label+label{background:var(--yellow);color:var(--ink)}.upload-actions input{position:absolute;width:1px;height:1px;opacity:0}.photo-preview,.shared-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.photo-preview img,.shared-gallery img{aspect-ratio:1;object-fit:cover}.photo-panel button{width:100%;border:0;border-radius:99px;background:var(--purple);color:#fff;padding:16px;font-weight:700;margin-top:15px;cursor:pointer}.photo-panel button:disabled{opacity:.4;cursor:not-allowed}.photo-panel [role=status],.empty-gallery{grid-column:1/-1;font-size:.75rem}.shared-gallery{border-top:2px solid rgba(18,18,18,.25);padding-top:18px;margin-top:40px}.rsvp{padding:10vw 7vw;background:var(--lime);display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw}.rsvp-form{}.rsvp form{display:grid;grid-template-columns:1fr 1fr;gap:20px 28px}.rsvp label{font-size:.64rem;text-transform:uppercase;letter-spacing:.12em}.rsvp input,.rsvp select,.rsvp textarea{display:block;width:100%;border:0;border-bottom:2px solid var(--ink);background:transparent;padding:12px 0;color:var(--ink);outline:none}.rsvp textarea{height:75px;resize:vertical}.rsvp label:last-of-type{grid-column:1/-1}.rsvp button{grid-column:1/-1;border:0;border-radius:99px;background:var(--ink);color:#fff;padding:17px;font-weight:700;cursor:pointer}footer{background:var(--ink);color:#fff;padding:28px 4vw;display:flex;justify-content:space-between;gap:20px;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em}.reveal{opacity:0;transform:translateY(28px) rotate(.4deg);transition:opacity .8s cubic-bezier(.22,.61,.36,1),transform .8s cubic-bezier(.22,.61,.36,1)}.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){.plan-grid{grid-template-columns:1fr 1fr}.practical{grid-template-columns:1fr 1fr}.transport{grid-column:1/-1}.playlist,.photo-party,.rsvp{grid-template-columns:1fr}.hero-copy{width:70vw}.hero h1 em{left:58vw}.party-nav nav a:not(.nav-rsvp){display:none}}
@media(max-width:600px){.party-nav{top:10px;left:12px;right:12px}.hero{min-height:760px}.hero-copy{padding:130px 22px 55px;width:100%}.hero h1{font-size:21vw;margin-top:70px}.hero h1 em{position:static;display:block;margin-top:20px;-webkit-text-stroke:2px var(--ink)}.hero-wash{background:linear-gradient(180deg,rgba(200,255,56,.4),rgba(139,53,255,.28))}.hero-sticker{width:105px;height:105px;font-size:.78rem;right:18px;bottom:24px}.hero-lead{background:rgba(255,250,240,.82);padding:12px}.countdown{gap:12px;padding:50px 15px;flex-wrap:wrap}.countdown strong{font-size:12vw}.countdown i{font-size:2rem}.countdown>p{width:100%;text-align:center}.plan{padding:90px 15px}.plan-grid{grid-template-columns:1fr}.plan-card{min-height:360px}.venue{min-height:700px}.venue-card{left:22px;right:22px;bottom:30px}.practical{grid-template-columns:1fr}.practical>div{padding:85px 24px}.transport{grid-column:auto}.playlist,.photo-party,.rsvp{padding:90px 22px}.upload-actions{flex-direction:column}.rsvp form{grid-template-columns:1fr}.rsvp label:last-of-type,.rsvp button{grid-column:auto}.photo-preview,.shared-gallery{grid-template-columns:repeat(2,1fr)}footer{flex-direction:column}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}

/* El titular funciona como una sola composición; el 40 ya no flota sobre la foto. */
.hero h1 .title-line-two{display:block;margin-top:.16em;font-size:.5em;line-height:1;color:var(--blue);letter-spacing:-.045em;transform:none}

@media(max-width:600px){.hero h1 .title-line-two{margin-top:.22em;font-size:.47em}}

/* La frase entra completa por la derecha y sale completa por la izquierda. */
.ticker div{animation:full-width-ticker 18s linear infinite;will-change:transform}
@keyframes full-width-ticker{from{transform:translateX(100vw)}to{transform:translateX(-100%)}}
