:root {
  --ink: #123746;
  --night: #0b2b3a;
  --cream: #ebdcaa;
  --ivory: #e2f0f2;
  --sand: #ebdcaa;
  --apricot: #edb54b;
  --blush: #ebdcaa;
  --sage: #c0e1f0;
  --sea-blue: #7ec3e3;
  --azure: #7ec3e3;
  --turquoise: #5bb9da;
  --coral: #edb54b;
  --orange: #edb54b;
  --violet: #7ec3e3;
  --line: rgba(23,51,72,.2);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: #f1f1f1; }
body { margin: 0; color: var(--ink); background: var(--cream); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.js body.intro-active { overflow:hidden; padding-right:var(--intro-scrollbar-width,0px); background:#f1f1f1; }
.flight-intro { display:none; }
.js .flight-intro { position:fixed; inset:0; z-index:100; display:grid; place-items:center; overflow:hidden; color:var(--ink); background:radial-gradient(circle at 50% 37%,#f7fbff 0%,#dce8f0 62%,#a9c2d0 100%); }
.js .flight-intro.ready { background:transparent; }
.flight-intro-logo { position:absolute; z-index:3; top:20px; left:clamp(22px,4vw,66px); width:54px; height:38px; object-fit:contain; pointer-events:none; }
.flight-intro.zooming .flight-intro-logo { animation:flight-logo-out .6s ease forwards; }
@keyframes flight-logo-out { to { opacity:0; } }
.flight-cabin { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.flight-intro-inner { position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; width:100%; }
.flight-windows { display:flex; align-items:center; justify-content:center; gap:clamp(22px,4vw,72px); width:100%; }
.flight-intro-prompt { margin:clamp(24px,4vh,42px) 16px 0; font-family:Georgia,serif; font-size:clamp(1rem,2vw,1.2rem); font-style:italic; letter-spacing:.04em; text-align:center; }
.flight-window { display:block; flex:none; width:min(260px,calc((100svh - 135px) * .7222)); aspect-ratio:13 / 18; padding:0; border:0; border-radius:48% / 38%; background:none; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.flight-window-neighbor { display:none; cursor:default; }
@media (min-width: 900px) { .flight-window-neighbor { display:block; } }
.flight-window:focus-visible { outline:4px solid var(--ink); outline-offset:12px; }
.flight-window-frame { display:block; width:100%; height:100%; padding:6%; border:11px solid #f9fcfd; border-radius:48% / 38%; background:#d7e3eb; box-shadow:inset 0 3px 10px rgba(31,64,86,.28),0 10px 28px rgba(31,64,86,.23),0 0 0 2px rgba(97,129,149,.24); }
#flight-window .flight-window-frame { background:transparent; }
.flight-window-view { position:relative; display:block; width:100%; height:100%; overflow:hidden; border-radius:47% / 37%; background:#5d9cde url('assets/es-vedra-hero.webp') center / cover no-repeat; box-shadow:inset 0 0 0 4px rgba(29,66,92,.28); }
#flight-window .flight-window-view { background:none; }
.flight-shutter { position:absolute; inset:-2% -2%; z-index:1; border-radius:inherit; background:repeating-linear-gradient(180deg,#edf2f4 0,#edf2f4 9px,#e5ecef 10px,#e5ecef 12px); box-shadow:inset 0 -10px 15px rgba(95,122,138,.25),0 3px 7px rgba(31,64,86,.25); transition:transform 1.1s cubic-bezier(.7,0,.2,1); }
.flight-shutter:after { content:""; position:absolute; left:50%; bottom:15px; width:54px; height:7px; border-radius:10px; transform:translateX(-50%); background:#b7c9d2; box-shadow:0 1px 1px #fff; }
.flight-intro.opening #flight-window .flight-shutter { transform:translateY(-110%); }
.flight-intro.zooming .flight-intro-inner { animation:flight-approach 1.3s cubic-bezier(.42,0,.18,1) forwards; }
.js body.intro-active .hero-content { visibility:hidden; }
.js body.hero-enter .hero-content .reveal { animation:hero-fade-in 1.35s cubic-bezier(.2,.7,.2,1) both; }
.js body.hero-enter .hero-content .delay-1 { animation-delay:.2s; }
.js body.hero-enter .hero-content .delay-2 { animation-delay:.45s; }
.js body.hero-enter .hero-content .delay-3 { animation-delay:.7s; }
@keyframes hero-fade-in { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:translateY(0); } }
@keyframes flight-approach { 0% { transform:scale(1); opacity:1; } 75% { opacity:1; } 100% { transform:scale(var(--flight-scale,8)); opacity:0; } }
@media (prefers-reduced-motion: reduce) { .flight-shutter { transition-duration:.01ms; } .flight-intro.zooming .flight-intro-inner { animation-duration:.01ms; } }
.grain { position: fixed; inset: 0; z-index: 20; pointer-events: none; opacity: .035; 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='.75'/%3E%3C/svg%3E"); }
.topbar { position: fixed; inset: 0 0 auto; z-index: 15; height: 78px; padding: 0 clamp(22px,4vw,66px); display: flex; justify-content: space-between; align-items: center; mix-blend-mode: difference; }
.js body.intro-active .topbar { right:var(--intro-scrollbar-width,0px); }
.mini-mark { display:block; width:54px; height:38px; }
.mini-mark img { display:block; width:100%; height:100%; object-fit:contain; filter:invert(1); }
.topbar nav { display: flex; gap: 34px; font-size: .69rem; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.topbar nav a { position: relative; padding: 8px 0; }
.topbar nav a:after { content:""; position:absolute; left:0; right:100%; bottom:0; height:1px; background:currentColor; transition:right .3s ease; }
.topbar nav a:hover:after { right:0; }
.top-date { justify-self: end; font-size: .68rem; letter-spacing: .22em; }
.hero { min-height: 100svh; position: relative; display: grid; place-items: center; overflow: hidden; color:#fff; background:#5d9cde url('assets/ibiza-hero-poster.webp') center 56% / cover no-repeat; }
.hero-video { position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; object-position:center 56%; }
.hero-video-play { position:absolute; z-index:3; top:90px; right:clamp(22px,4vw,66px); padding:10px 15px; border:1px solid #fff; border-radius:999px; background:rgba(9,38,52,.8); color:#fff; font-family:inherit; font-size:.8rem; font-weight:600; line-height:1.2; cursor:pointer; }
.hero-video-play[hidden] { display:none; }
.hero-video-play:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.hero:before { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(6,30,66,.32),rgba(6,30,66,.18) 46%,rgba(5,27,60,.46)); }
.hero:after { content:none; }
.sun { position:absolute; width:min(48vw,620px); aspect-ratio:1; border-radius:50%; left:50%; top:52%; transform:translate(-50%,-50%); background:radial-gradient(circle at 38% 32%,#fff7d6 0%,#ebdcaa 50%,#edb54b 100%); box-shadow:inset 0 0 0 1px rgba(255,255,255,.2),0 0 100px rgba(237,181,75,.4); animation:breathe 7s ease-in-out infinite; }
.orbit { position:absolute; border:1px solid rgba(255,255,255,.34); border-radius:50%; left:50%; top:52%; transform:translate(-50%,-50%); }
.orbit-one { width:min(68vw,880px); aspect-ratio:1; animation:spin 36s linear infinite; }
.orbit-two { width:min(84vw,1120px); aspect-ratio:1; border-style:dashed; animation:spin 54s linear infinite reverse; }
.hero-content { position:relative; z-index:2; width:min(88vw,1120px); text-align:center; margin-top:5vh; }
.eyebrow,.section-kicker { margin:0 0 25px; font-size:.68rem; font-weight:700; letter-spacing:.32em; text-transform:uppercase; }
.hero-logo { width:min(79vw,920px); display:block; margin:0 auto; filter:brightness(0) invert(1); }
.date-line { display:flex; align-items:center; justify-content:center; gap:20px; margin-top:22px; text-transform:uppercase; font-size:.7rem; font-weight:700; letter-spacing:.22em; }
.hero .eyebrow,.hero .date-line { text-shadow:none; }
.date-line i { width:46px; height:1px; background:currentColor; }
.scroll-cue { width:78px; height:78px; margin:54px auto 0; border:1px solid var(--cream); border-radius:50%; display:grid; place-items:center; position:relative; background:var(--cream); color:var(--ink); transition:background .3s,color .3s,border-color .3s; }
.scroll-cue:hover { background:transparent; color:var(--cream); border-color:var(--cream); }
.scroll-cue span { font-size:.6rem; text-transform:uppercase; letter-spacing:.14em; transform:translateY(-7px); }
.scroll-cue svg { position:absolute; width:20px; transform:translateY(11px); fill:none; stroke:currentColor; stroke-width:1.5; }
.hero-caption { position:absolute; z-index:3; left:clamp(22px,4vw,66px); bottom:32px; font-family:Georgia,serif; font-style:italic; font-size:.8rem; letter-spacing:.06em; }
.music-toggle { position:fixed; z-index:12; right:clamp(16px,3vw,36px); bottom:clamp(16px,3vw,36px); display:flex; align-items:center; gap:10px; border:1px solid rgba(255,255,255,.7); border-radius:999px; padding:12px 17px; background:var(--ink); color:#fff; font-family:inherit; font-size:.8rem; font-weight:600; line-height:1; cursor:pointer; box-shadow:0 8px 28px rgba(0,0,0,.22); }
.music-toggle[hidden] { display:none; }
.music-toggle:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.section { padding:clamp(95px,13vw,190px) clamp(24px,8vw,130px); }
.intro { background:var(--ivory); color:var(--ink); }
.display { font-size:clamp(3.5rem,8vw,8rem); line-height:.88; letter-spacing:-.07em; margin:0; max-width:1100px; font-weight:800; }
.display em { font-family:Georgia,serif; font-weight:400; }
.intro-grid { display:grid; grid-template-columns:minmax(240px,.8fr) 1.5fr; gap:8vw; align-items:end; margin-top:90px; }
.lead { margin:0; font-family:Georgia,serif; font-size:clamp(1.25rem,2vw,1.75rem); line-height:1.55; }
.countdown { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid rgba(10,6,19,.23); padding-top:28px; }
.countdown div { min-width:0; }
.countdown strong { display:block; font-size:clamp(2.2rem,5vw,5.6rem); line-height:1; letter-spacing:-.07em; }
.countdown span { display:block; margin-top:12px; font-size:.62rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; opacity:.58; }
.manifesto { min-height:70vh; position:relative; display:grid; place-content:center; text-align:center; overflow:hidden; color:var(--ink); background:var(--azure); }
.manifesto--sea { background:var(--sea-blue); }
.manifesto--apricot { color:var(--ink); background:var(--apricot); }
.manifesto--sage { color:var(--ink); background:var(--sage); }
.quote-break { min-height:58vh; }
.manifesto blockquote { margin:0; font-family:Georgia,serif; font-size:clamp(2.8rem,7vw,7.6rem); font-style:italic; letter-spacing:-.055em; position:relative; z-index:1; }
.manifesto p { position:relative; z-index:1; opacity:.78; letter-spacing:.05em; }
.manifesto .manifesto-caption { max-width:48rem; margin:1.5rem auto 0; padding:0 1.25rem; font-size:clamp(1.35rem,2.6vw,1.75rem); line-height:1.45; letter-spacing:0; opacity:1; }
.quote-break .quote-break-intro { margin:0 0 1.5rem; }
.wave-lines { position:absolute; inset:16% -5%; display:flex; align-items:center; justify-content:center; gap:4.5vw; transform:rotate(-7deg); opacity:.28; }
.wave-lines span { display:block; width:1px; height:clamp(110px,30vw,400px); background:linear-gradient(transparent,currentColor,transparent); animation:wave 3s ease-in-out infinite; }
.wave-lines span:nth-child(2n) { animation-delay:-.7s; height:55%; }.wave-lines span:nth-child(3n){animation-delay:-1.4s;height:85%;}
.journey { background:var(--sage); color:var(--ink); display:grid; grid-template-columns:1fr 1.1fr; gap:9vw; }
.journey-heading { position:sticky; top:140px; align-self:start; }
.chapters { list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.chapters li { display:grid; grid-template-columns:70px 1fr; gap:20px; border-bottom:1px solid var(--line); padding:42px 0; }
.chapters li>span { color:#fff; font-size:.7rem; letter-spacing:.15em; }
.chapters h3 { font-family:Georgia,serif; font-size:clamp(1.75rem,3vw,3rem); font-weight:400; margin:-10px 0 12px; }
.chapters p { max-width:420px; margin:0; line-height:1.65; color:rgba(23,51,72,.68); }
.location { min-height:90vh; position:relative; display:flex; align-items:flex-end; padding:clamp(26px,6vw,90px); overflow:hidden; background-color:var(--azure); background-image:linear-gradient(90deg,rgba(23,51,72,.06) 0%,transparent 58%),linear-gradient(180deg,transparent 65%,rgba(4,105,150,.14) 100%),url('assets/sa-paissa-photo.webp'); background-size:cover; background-position:center; }
.location--montesol { background-image:linear-gradient(90deg,rgba(23,51,72,.08) 0%,transparent 58%),linear-gradient(180deg,transparent 58%,rgba(23,51,72,.2) 100%),url('assets/montesol-rooftop-photo.webp'); }
.location--pacha { background-image:linear-gradient(90deg,rgba(10,18,40,.08) 0%,transparent 58%),linear-gradient(180deg,transparent 58%,rgba(10,18,40,.35) 100%),url('assets/pacha-photo.webp'); }
.location:after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; box-shadow:inset 0 0 100px rgba(23,51,72,.12); }
.location-card { position:relative; z-index:2; color:var(--ink); background:rgba(243,238,230,.92); backdrop-filter:blur(16px); padding:clamp(35px,5vw,72px); width:min(590px,100%); overflow:hidden; }
.location-card h2 { margin:0 0 32px; font-family:Georgia,serif; font-weight:400; font-size:clamp(2.7rem,5.5vw,5.5rem); line-height:.96; letter-spacing:-.05em; }
.location-card p { line-height:1.7; color:rgba(23,51,72,.7); }
.coordinates { display:block; margin-top:44px; padding-top:18px; border-top:1px solid var(--line); font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; }
.details { background:var(--ivory); color:var(--ink); display:grid; grid-template-columns:1fr 1fr; gap:10vw; }
.rsvp-copy { align-self:center; max-width:570px; }
.rsvp-copy p { max-width:570px; margin:0 0 1.5rem; font-family:Georgia,serif; font-size:clamp(1.25rem,2vw,1.75rem); line-height:1.55; color:var(--ink); }
.rsvp-button { display:inline-flex; align-items:center; justify-content:space-between; gap:1.5rem; max-width:100%; min-height:78px; margin-top:1.25rem; padding:.5rem .65rem .5rem 1.5rem; border:1px solid var(--cream); border-radius:100px; background:var(--cream); color:var(--ink); font-weight:700; text-transform:uppercase; letter-spacing:.12em; transition:background .3s,color .3s,border-color .3s; touch-action:manipulation; }
.rsvp-button-label { font-size:.75rem; line-height:1.5; }
.rsvp-button-icon { width:58px; height:58px; flex:none; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; transition:transform .3s; }
.rsvp-button-icon svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.rsvp-button:focus-visible { background:var(--ink); border-color:var(--ink); color:var(--ivory); }
.rsvp-button:focus-visible .rsvp-button-icon { transform:translateX(3px); }
@media (hover:hover) and (pointer:fine) {
  .rsvp-button:hover { background:var(--ink); border-color:var(--ink); color:var(--ivory); }
  .rsvp-button:hover .rsvp-button-icon { transform:translateX(3px); }
}
.rsvp-button:focus-visible { outline:3px solid var(--apricot); outline-offset:5px; }
.faq { background:var(--cream); color:var(--ink); display:grid; grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr); gap:8vw; }
.faq-heading { position:sticky; top:140px; align-self:start; }
.faq-list { border-top:1px solid var(--line); }
.faq-list article { border-bottom:1px solid var(--line); padding:34px 0 40px; }
.faq-list h3 { margin:0 0 16px; font-family:Georgia,serif; font-size:clamp(1.65rem,2.6vw,2.5rem); font-weight:400; line-height:1.16; letter-spacing:-.03em; }
.faq-list p { max-width:64ch; margin:0 0 1rem; font-size:1.08rem; line-height:1.65; }
.faq-list p:last-child { margin-bottom:0; }
.detail-list { border-top:1px solid rgba(10,6,19,.25); }
.detail-list article { display:grid; grid-template-columns:45px 140px 1fr; gap:20px; align-items:start; border-bottom:1px solid rgba(10,6,19,.25); padding:30px 0; }
.detail-list span { color:var(--coral); font-size:.68rem; }
.detail-list h3 { font-size:.8rem; text-transform:uppercase; letter-spacing:.13em; margin:0; }
.detail-list p { margin:0; line-height:1.55; color:rgba(23,51,72,.68); }
.palette { display:flex; flex-wrap:wrap; gap:12px; margin-top:20px; padding-bottom:18px; }
.palette i { display:block; position:relative; width:34px; height:34px; margin-bottom:18px; border-radius:50%; border:1px solid rgba(23,51,72,.12); box-shadow:0 3px 10px rgba(23,51,72,.08); }
.palette i:after { content:attr(data-label); position:absolute; top:43px; left:50%; transform:translateX(-50%); white-space:nowrap; color:var(--ink); font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; font-size:.48rem; font-style:normal; letter-spacing:.06em; text-transform:uppercase; }
.palette .ivory { background:var(--ivory); }.palette .sand { background:var(--sand); }.palette .apricot { background:var(--apricot); }.palette .blush { background:var(--blush); }.palette .sage { background:var(--sage); }.palette .sea-blue { background:var(--sea-blue); }
.closing { min-height:90vh; position:relative; display:grid; place-content:center; justify-items:center; text-align:center; overflow:hidden; padding:100px 24px; isolation:isolate; color:var(--ivory); background:#164a68 url('assets/footer-sunset-poster.jpg') center / cover no-repeat; }
.closing-video { position:absolute; inset:0; z-index:-1; width:100%; height:100%; object-fit:cover; object-position:center 48%; }
.closing:after { content:""; position:absolute; z-index:-1; inset:0; pointer-events:none; background:linear-gradient(180deg,rgba(9,38,52,.45),rgba(9,38,52,.22) 45%,rgba(9,38,52,.69)); }
.closing-logo-wrap { position:relative; display:grid; place-items:center; width:100%; }
.closing-ring { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:min(70vw,800px); aspect-ratio:1; border:1px solid rgba(192,225,240,.21); border-radius:50%; box-shadow:0 0 0 80px rgba(126,195,227,.025),0 0 0 160px rgba(126,195,227,.018); }
.closing-logo { position:relative; width:min(64vw,560px); filter:invert(1) drop-shadow(0 3px 22px rgba(9,38,52,.55)); }
.mobile-break { display:none; }
.closing-date { position:relative; margin:30px 0 60px; color:var(--cream); text-transform:uppercase; letter-spacing:.3em; font-size:.74rem; }
.closing-note { position:relative; font-family:Georgia,serif; font-style:italic; color:var(--ivory); opacity:.82; }
footer { min-height:110px; padding:30px clamp(22px,4vw,66px); display:flex; align-items:center; justify-content:space-between; gap:24px; color:var(--ivory); background:#092634; border-top:1px solid rgba(192,225,240,.2); font-size:.62rem; letter-spacing:.15em; text-transform:uppercase; }
.reveal { opacity:0; transform:translateY(28px); transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1); }
.reveal.visible { opacity:1; transform:none; }.delay-1{transition-delay:.15s}.delay-2{transition-delay:.3s}.delay-3{transition-delay:.45s}
@keyframes breathe { 50%{transform:translate(-50%,-50%) scale(1.025); box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 0 135px rgba(237,181,75,.5)} }
@keyframes spin { to{transform:translate(-50%,-50%) rotate(360deg)} }
@keyframes wave { 50%{transform:scaleY(.45);opacity:.42} }
@media (max-width: 820px) {
  .topbar { height:66px; }.topbar nav{display:flex;gap:12px;font-size:.55rem;letter-spacing:.08em}
  .hero-content{width:100%;margin-top:0}.hero-logo{width:92vw;position:relative;left:-.65vw}.sun{width:74vw}.orbit-one{width:100vw}.orbit-two{width:132vw}
  .hero-caption{bottom:22px}.date-line{gap:10px;font-size:.58rem}.date-line i{width:24px}
  .intro-grid,.journey,.details,.faq{grid-template-columns:1fr}.intro-grid{margin-top:60px;gap:55px}.journey{gap:70px}.journey-heading,.faq-heading{position:static}.faq{gap:48px}
  .countdown strong{font-size:2.5rem}.countdown span{font-size:.52rem;letter-spacing:.1em}
  .detail-list article{grid-template-columns:32px 1fr}.detail-list p{grid-column:2}
  .location{min-height:0;display:block;padding:84.4vw 0 0;background-size:100% 100%,100% 100%,150% auto;background-position:center,center,70% 0;background-repeat:no-repeat}
  .location:after{display:none}
  .location-card{width:100%}
  .mobile-break{display:block}
  .closing-logo{transform:translate(-.8%,-5.4%)}
  footer{flex-direction:column;justify-content:center;text-align:center}
}
@media (max-width: 480px) {
  .section{padding-left:22px;padding-right:22px}.display{font-size:3.35rem}.countdown{gap:8px}.countdown strong{font-size:2rem}
  .chapters li{grid-template-columns:38px 1fr}.location-card{padding:34px 28px}.closing{min-height:78vh}
  .closing-video{object-position:center}
}
@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}.closing-video{display:none} }
