.wu-hero{--wu-pad:clamp(22px,4vw,76px);position:relative;isolation:isolate;background:#050505;color:#efeee8}
.wu-viewport{position:relative;min-height:100svh;padding:140px var(--wu-pad) 100px;overflow:hidden;isolation:isolate}
#wedding-universe-sky{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;filter:grayscale(1)}
.wu-viewport::after{content:"";position:absolute;z-index:3;inset:0;background:url('assets/grain.svg') repeat;background-size:190px;opacity:.055;pointer-events:none}
.wu-horizon{position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(#05050555,transparent 18%,transparent 84%,#050505aa),radial-gradient(ellipse at 50% 48%,transparent 45%,#0505054d 100%)}
.wu-title{position:relative;z-index:4;margin:0 0 50px;font-size:clamp(38px,5vw,74px);font-weight:400;line-height:1;letter-spacing:-.045em}
.wu-stage{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px 28px;align-items:center}
.wu-card{display:block;position:relative;min-width:0;color:#efeee8;text-decoration:none;-webkit-user-drag:none;outline-offset:8px}
.wu-card[data-wu-echo]{display:none}
.wu-image{position:relative;display:block;aspect-ratio:16/9;background:#111;overflow:hidden}
.wu-image img{display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.91) contrast(1.08);transition:filter .45s ease;-webkit-user-drag:none}
.wu-card--portrait{width:62%;justify-self:center}
.wu-card--portrait .wu-image{aspect-ratio:9/16}
.wu-card--scope .wu-image{aspect-ratio:2.35/1}
.wu-card-title{display:block;margin-top:12px;font-size:10px;font-weight:400;letter-spacing:.09em;line-height:1.4;text-shadow:0 2px 16px #000;color:#e6e6e0}
.wu-card:hover .wu-image img,.wu-card:focus-visible .wu-image img{filter:grayscale(1) brightness(1.04) contrast(1.08)}
.wu-card:focus-visible{outline:1px solid #efeee8}
.wu-bottom{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:25px;margin-top:60px;font-size:8px;letter-spacing:.14em}
.wu-bottom>a{display:flex;align-items:center;gap:18px;min-height:44px}
.wu-bottom>a span{font-size:16px}
.wu-scroll-hint{display:flex;align-items:center;gap:14px;margin:0;color:#a8a8a2;font-size:7px;letter-spacing:.17em}
.wu-scroll-hint b{font-size:18px;line-height:1;font-weight:300;color:#dadad4}
.wu-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* The long wrapper supplies real document scroll; there is no wheel interception. */
.wu-hero.is-ready{height:660svh}
.wu-hero.is-ready .wu-viewport{position:sticky;top:0;height:100svh;min-height:0;padding:0}
.wu-hero.is-ready .wu-title{position:absolute;left:var(--wu-pad);bottom:43px;font-size:11px;letter-spacing:.18em;line-height:1;margin:0}
.wu-hero.is-ready .wu-stage{position:absolute;inset:0;display:block;perspective:900px;perspective-origin:50% 48%;transform-style:preserve-3d}
.wu-hero.is-ready .wu-card{position:absolute;display:block;left:50%;top:48%;width:min(46vw,720px);transform-origin:center center;backface-visibility:hidden;will-change:transform,opacity}
.wu-hero.is-ready .wu-card--portrait{width:min(27vw,365px)}
.wu-hero.is-ready .wu-card-title{font-size:12px;opacity:var(--wu-title-opacity,1);transition:opacity .25s}
.wu-hero.is-ready .wu-card:hover .wu-card-title,.wu-hero.is-ready .wu-card:focus-visible .wu-card-title{opacity:1}
.wu-hero.is-ready .wu-bottom{position:absolute;left:var(--wu-pad);right:var(--wu-pad);bottom:26px;margin:0;justify-content:flex-end}
.wu-hero.is-ready .wu-scroll-hint{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;pointer-events:none}
.wu-hero.is-ready .wu-bottom>a{font-size:8px;letter-spacing:.13em}
.wu-hero.is-ready .wu-card:focus-visible{width:min(70vw,620px);opacity:1!important;pointer-events:auto!important;z-index:1000}
.wu-hero.is-ready .wu-card--portrait:focus-visible{width:min(42vw,260px,30svh)}
.wu-hero.is-ready .wu-card:focus-visible .wu-image{max-height:65svh}
.wu-hero.is-ready .wu-card:focus-visible .wu-image img{object-fit:contain}
.wu-hero.is-selecting .wu-card:not(:focus-visible){opacity:.06!important;pointer-events:none!important}
.wu-hero.is-idle .wu-card{will-change:auto}
@media(max-width:1000px){.wu-viewport{padding-top:120px}.wu-stage{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){
  .wu-viewport{padding:115px var(--wu-pad) 70px}
  .wu-title{font-size:48px;margin-bottom:35px}
  .wu-stage{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 20px}
  .wu-card-title{font-size:8px;letter-spacing:.05em}
  .wu-card--portrait{width:76%}
  .wu-hero.is-ready{height:600svh}
  .wu-hero.is-ready .wu-card{width:82vw}
  .wu-hero.is-ready .wu-card--portrait{width:46vw}
  .wu-hero.is-ready .wu-card-title{font-size:10px}
  .wu-hero.is-ready .wu-title{bottom:42px;font-size:9px}
  .wu-hero.is-ready .wu-scroll-hint{font-size:6px;gap:7px;bottom:65px}
  .wu-hero.is-ready .wu-bottom>a{font-size:7px;gap:10px}
}
@media(prefers-reduced-motion:reduce){
  .wu-hero.is-ready{height:auto}
  .wu-hero.is-ready .wu-viewport{position:relative;height:auto;min-height:100svh;padding:140px var(--wu-pad) 80px}
  .wu-hero.is-ready .wu-title{position:relative;left:auto;bottom:auto;font-size:44px;letter-spacing:-.04em;margin:0 0 45px}
  .wu-hero.is-ready .wu-stage{position:relative;inset:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:35px 25px;perspective:none;transform-style:flat}
  .wu-hero.is-ready .wu-card{position:relative;left:auto;top:auto;width:100%;transform:none!important;opacity:1!important;pointer-events:auto!important;will-change:auto}
  .wu-hero.is-ready .wu-card--portrait{width:62%}
  .wu-hero.is-ready .wu-card[data-wu-echo]{display:none}
  .wu-hero.is-ready .wu-card-title{opacity:1!important;font-size:10px}
  .wu-hero.is-ready .wu-bottom{position:relative;inset:auto;margin-top:45px}
  .wu-hero.is-ready .wu-scroll-hint{display:none}
  .wu-card *{transition:none!important}
}
@media(prefers-reduced-motion:reduce) and (max-width:700px){.wu-hero.is-ready .wu-viewport{padding-top:115px}.wu-hero.is-ready .wu-stage{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 18px}.wu-hero.is-ready .wu-card--portrait{width:76%}.wu-hero.is-ready .wu-card-title{font-size:8px}}

/* Destination films share the perspective language of Films, with an atlas behind them. */
.wu-hero{background:#070808}
.wu-hero .wu-viewport{background:radial-gradient(ellipse at 60% 48%,#15171744,transparent 65%)}
.wu-hero .wu-horizon{background:linear-gradient(#07080877,transparent 22%,transparent 76%,#070808ee)}
.wu-atlas-wrap{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:.72}
.wu-atlas{position:absolute;top:50%;left:50%;width:125%;max-width:none;height:auto;transform:translate(-50%,-50%) translate3d(var(--wu-map-x,0px),var(--wu-map-y,0px),0) scale(var(--wu-map-scale,1));}
.wu-land{fill:#d9dedb03;stroke:#d9dedb;stroke-width:.6;stroke-opacity:.13;stroke-linejoin:round}
.wu-graticule{fill:none;stroke:#d9dedb;stroke-width:.35;stroke-dasharray:1 7;opacity:.13}
.wu-route-ghost{fill:none;stroke:#f0eee9;stroke-width:.7;opacity:.12}
.wu-route{fill:none;stroke:#deded7;stroke-width:.85;opacity:.48;stroke-dasharray:1;stroke-dashoffset:1}
.wu-traveller{fill:#c42c25;opacity:0}
.wu-pins circle{fill:#c6c8c4;opacity:.24;transition:opacity .6s,fill .6s}
.wu-pins circle.is-active{fill:#c42c25;opacity:.95}
.wu-hero .wu-stage{z-index:1}
.wu-hero .wu-image img{filter:grayscale(1) brightness(.96) contrast(1.08);object-position:center}
.wu-hero .wu-card:hover .wu-image img,.wu-hero .wu-card:focus-visible .wu-image img{filter:grayscale(1) brightness(1.03) contrast(1.08)}
.wu-hero .wu-card-title{font-size:11px;letter-spacing:.22em;font-weight:400}
.wu-hero.is-ready .wu-card--portrait{width:min(30vw,385px)}
.wu-hero .wu-card--portrait .wu-image{aspect-ratio:3/4}
.wu-hero .wu-bottom{justify-content:space-between}
.wu-hero .wu-bottom>span{font-size:8px;letter-spacing:.18em}
.wu-hero .wu-bottom>a{font-size:8px;letter-spacing:.13em}
.wu-hero .wu-bottom b{font-size:17px;font-weight:300}
.wu-hero.is-ready .wu-bottom{justify-content:space-between}
.wu-hero .wu-bottom>a{position:relative;z-index:1}
.wu-hero .wu-card.is-unavailable{visibility:hidden;pointer-events:none!important}
body[data-page="events"] .header{position:fixed;background:linear-gradient(#080808dd,#08080800);transition:background .4s}
body[data-page="events"] .header.wedding-scrolled{background:#080808ef}
#the-moments{scroll-margin-top:0;position:relative;z-index:2;background:#080808}
#the-moments .hero-copy h2{font-size:clamp(68px,10vw,170px);font-weight:400;letter-spacing:-.065em;line-height:.9;margin:18px 0 clamp(45px,8svh,90px);max-width:1360px}
#the-moments .hero-copy h2 em{font-style:normal;color:#f0eee9}
#the-moments .hero-film video{transform:translate3d(0,var(--wu-reveal-y,0px),0) scale(1.31)}
@media(max-width:1000px){.wu-hero .wu-viewport{padding-top:165px}}
@media(max-width:700px){
 .wu-atlas{width:210%;left:40%}
 .wu-hero.is-ready .wu-card--portrait{width:49vw}
 .wu-hero .wu-bottom>span{max-width:108px;font-size:6px;line-height:1.7}
 .wu-hero.is-ready .wu-bottom>a{font-size:6px;letter-spacing:.1em;gap:10px}
 .wu-hero .wu-card-title{font-size:10px;letter-spacing:.16em}
 .wu-hero.is-ready .wu-scroll-hint{bottom:59px}
 #the-moments .hero-copy h2{font-size:clamp(49px,12vw,75px);line-height:.94;margin-bottom:47px}
}
@media(max-height:650px) and (min-width:1001px){#the-moments .hero-copy h2{font-size:clamp(60px,8vw,110px);margin-bottom:40px}}

/* V21 — the same image flight, now travelling above our night-side world. */
.wu-hero{background:#050707}
.wu-hero .wu-viewport{background:none}
.wu-atlas-wrap{opacity:.94}
#wedding-universe-orbit{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.wu-hero.has-orbit .wu-atlas{visibility:hidden}
.wu-hero .wu-horizon{background:linear-gradient(#05070790,transparent 20%,transparent 78%,#050707bd)}
.wu-hero .wu-viewport::after{opacity:.065}
.wu-travel-route{position:absolute;top:clamp(112px,14svh,154px);left:var(--wu-pad);z-index:4;display:flex;align-items:center;gap:15px;margin:0;font-size:9px;font-weight:400;letter-spacing:.19em;color:#d2d4ce;pointer-events:none;line-height:1.5}
.wu-travel-route [data-wu-route-from]{color:#929993}
.wu-route-rule{width:clamp(24px,3vw,56px);height:1px;background:linear-gradient(90deg,#8d969350,#c3cac899);position:relative}
.wu-route-rule::after{content:"";position:absolute;width:3px;height:3px;right:-1px;top:-1px;border-radius:50%;background:#d8463a;box-shadow:0 0 8px #d8463a55}
.wu-hero .wu-bottom>span{display:flex;gap:10px;align-items:center}
.wu-hero .wu-bottom>span::before{content:"";width:16px;height:10px;flex:none;background:#d8463a;-webkit-mask:url('assets/lua-moon.png') center/contain no-repeat;mask:url('assets/lua-moon.png') center/contain no-repeat}
.wu-hero .wu-card-title{letter-spacing:.24em;margin-top:15px;font-size:10px;color:#e6e7e1}
.wu-hero .wu-image{box-shadow:0 12px 45px #0005}
.wu-destinations{position:relative;display:flex;gap:12px 22px;flex-wrap:wrap;margin:0 0 35px;padding:0;list-style:none;font-size:9px;letter-spacing:.12em;color:#a6ada8}
.wu-hero.is-ready .wu-destinations{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%)}
.wu-hero.is-empty{height:140svh}
@media(max-width:700px){
 .wu-travel-route{top:113px;font-size:8px;letter-spacing:.13em;gap:11px}
 .wu-hero.is-ready .wu-card-title{font-size:9px;letter-spacing:.19em}
 .wu-hero .wu-bottom>span{gap:6px;max-width:132px}
 .wu-hero .wu-bottom>span::before{width:13px;height:8px}
}
@media(max-height:500px) and (min-width:701px){.wu-travel-route{top:89px;font-size:8px}}
@media(prefers-reduced-motion:reduce){
 .wu-hero.is-ready{height:auto}
 .wu-hero.is-ready .wu-destinations{position:relative;width:auto;height:auto;margin:0 0 35px;overflow:visible;clip-path:none}
 .wu-travel-route{display:none}
 .wu-hero .wu-viewport::after{opacity:.04}
}
@media(prefers-reduced-motion:reduce){
 .wu-atlas{transform:translate(-50%,-50%)}
 .wu-hero.is-ready .wu-card--portrait{width:76%}
 .wu-hero .wu-viewport::after{opacity:.035}
 .wu-hero .wu-route{stroke-dashoffset:0;opacity:.2}
 #the-moments .hero-film video{transform:scale(1.31)}
}

/* V23 — one world, four continents. Geography sits outside the image frames. */
.wu-world-index{position:absolute;z-index:4;left:var(--wu-pad);top:clamp(112px,14svh,154px);display:flex;gap:12px;align-items:center;font-size:8px;letter-spacing:.18em;color:#bbc1ba;pointer-events:none}
.wu-world-index i{font-style:normal;color:#d8463a}
.wu-hero.is-ready .wu-destinations{clip-path:none;overflow:visible;width:auto;height:auto;margin:0;padding:0;left:var(--wu-pad);right:var(--wu-pad);bottom:88px;display:flex;gap:10px 22px;z-index:4;font-size:7px;line-height:1.8;letter-spacing:.16em;pointer-events:none;color:#989f99}
.wu-destinations li{transition:color .8s}
.wu-destinations li.is-active{color:#f0eee9}
.wu-hero.is-ready{height:620svh}
.wu-hero.is-ready .wu-card{width:min(52vw,820px)}
.wu-hero .wu-image{aspect-ratio:16/9;background:transparent;box-shadow:none}
.wu-hero.is-ready .wu-card:not(.is-image-ready){visibility:hidden;pointer-events:none!important}
.wu-hero .wu-image img{object-fit:cover;filter:grayscale(1) brightness(.96) contrast(1.06)}
.wu-hero .wu-card-title{font-size:9px;margin-top:11px;letter-spacing:.22em}
.wu-hero .wu-horizon{background:linear-gradient(#0507077a,transparent 23%,transparent 70%,#050707b8)}
@media(max-width:700px){
 .wu-world-index{top:112px;gap:8px;font-size:6px;letter-spacing:.09em;flex-wrap:wrap;right:var(--wu-pad)}
 .wu-hero.is-ready{height:580svh}
 .wu-hero.is-ready .wu-card{width:84vw}
 .wu-hero.is-ready .wu-destinations{bottom:114px;max-width:330px;gap:5px 13px;font-size:6px;letter-spacing:.1em;line-height:1.8}
 .wu-hero.is-ready .wu-scroll-hint{bottom:46px}
}
@media(max-height:500px) and (min-width:701px){.wu-world-index{top:87px}.wu-hero.is-ready .wu-destinations{bottom:73px;font-size:6px;gap:6px 14px}}
@media(prefers-reduced-motion:reduce){
 .wu-hero.is-ready{height:auto}
 .wu-world-index{position:relative;inset:auto;margin:0 0 30px;line-height:1.8}
 .wu-hero.is-ready .wu-destinations{position:relative;inset:auto;max-width:none;margin-bottom:35px;pointer-events:auto}
 .wu-hero.is-ready .wu-card{width:100%}
}
/* The Bali source carries a central title. This portrait window uses its right
   landscape area only: palms and rice fields, with no letters inside the frame. */
.wu-hero .wu-card--bali .wu-image{aspect-ratio:3/4}
.wu-hero .wu-card--bali .wu-image img{object-position:100% 50%}
.wu-hero.is-ready .wu-card--bali{width:min(30vw,385px)}
@media(max-width:700px){.wu-hero.is-ready .wu-card--bali{width:49vw}}
@media(prefers-reduced-motion:reduce){.wu-hero.is-ready .wu-card--bali{width:76%}}
/* Original Vimeo padding is cropped by the frame, never stretched or painted over. */
.wu-hero .wu-card--iceland .wu-image img{transform:scale(1.335)}
.wu-hero .wu-card--france .wu-image{aspect-ratio:9/16}
.wu-hero .wu-card--france .wu-image img{width:315.8%;max-width:none;position:absolute;left:50%;transform:translateX(-50%);object-fit:fill}
.wu-hero.is-ready .wu-card--france{width:min(23vw,310px)}
@media(max-width:700px){.wu-hero.is-ready .wu-card--france{width:43vw}}
@media(prefers-reduced-motion:reduce){.wu-hero.is-ready .wu-card--france{width:68%}}
.wu-hero.is-ready .wu-card--bali:focus-visible .wu-image img{object-fit:cover}

/* V24 — return to the flat map; image labels are the only destination text. */
.wu-hero.has-flat-atlas .wu-atlas{visibility:visible}
.wu-hero .wu-world-index,.wu-hero .wu-destinations,.wu-hero .wu-travel-route{display:none}
.wu-hero .wu-atlas-wrap{opacity:.76}
.wu-hero .wu-land{stroke-opacity:.16;fill:none}
.wu-hero .wu-route-ghost{opacity:.085;stroke-width:.55}
.wu-hero .wu-route{opacity:.28;stroke-width:.65}
.wu-hero .wu-pins circle{opacity:.19}
.wu-hero .wu-pins circle.is-active{opacity:.6}
.wu-hero .wu-image img{filter:grayscale(1) brightness(.76) contrast(1.13)}
.wu-hero .wu-card:hover .wu-image img,.wu-hero .wu-card:focus-visible .wu-image img{filter:grayscale(1) brightness(.88) contrast(1.1)}
.wu-hero .wu-card--japan .wu-image img{object-position:50% 62%;transform:scale(1.08);filter:grayscale(1) brightness(.78) contrast(1.12)}
.wu-hero .wu-card--france .wu-image img{filter:grayscale(1) brightness(.69) contrast(1.17)}
.wu-hero.is-ready{height:560svh}
@media(max-width:700px){.wu-hero.is-ready{height:530svh}}
@media(prefers-reduced-motion:reduce){.wu-hero.is-ready{height:auto}}
