/* Video-first invitation experience. The supplied film stays uncropped on every viewport. */
:root{--film-ink:#090d18;--film-ruby:#560b1c;--film-ruby-deep:#23030c;--film-gold:#d8a64b;--film-gold-light:#f5d88e;--film-ivory:#fff7e7}
html.video-opening-enabled{overflow:hidden;background:var(--film-ink)}
.opening-film{display:none}
html.video-opening-enabled .opening-film{position:fixed;z-index:5000;inset:0;display:grid;place-items:center;overflow:hidden;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));color:var(--film-ivory);background:radial-gradient(circle at 50% 44%,#76182c 0,#300711 43%,#080b13 100%);isolation:isolate;transition:opacity .85s ease,visibility .85s ease}
html.video-opening-enabled .floating-control{visibility:hidden!important}
.opening-film[hidden]{display:none!important}
.opening-film.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
html.video-opening-enabled .intro *,html.invitation-entered .intro *{animation:none!important}
.opening-film__ambient{position:absolute;z-index:-3;inset:-7%;background:linear-gradient(rgba(11,8,16,.58),rgba(35,3,12,.78)),url("../assets/images/newvid-poster.webp") center/cover;filter:blur(24px) saturate(.78);transform:scale(1.12);animation:film-ambient-breathe 8s ease-in-out infinite alternate}
.opening-film__ambient::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,transparent 18%,rgba(2,4,9,.72) 78%)}
.opening-film__grain{position:absolute;z-index:8;inset:0;opacity:.11;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='92' height='92' viewBox='0 0 92 92'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.38'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.opening-film__theatre{position:relative;width:min(100%,980px);display:grid;align-content:center;gap:clamp(.85rem,2.8vh,1.65rem);min-height:min(100%,900px);padding:clamp(1rem,3vw,2.2rem);border:1px solid rgba(237,198,117,.5);background:linear-gradient(145deg,rgba(16,10,15,.93),rgba(66,7,22,.78));box-shadow:0 35px 100px rgba(0,0,0,.62),inset 0 0 75px rgba(216,166,75,.06)}
.opening-film__theatre::before,.opening-film__theatre::after{content:"";position:absolute;inset:.55rem;pointer-events:none;border:1px solid rgba(216,166,75,.22);clip-path:polygon(0 0,42% 0,50% 1.5%,58% 0,100% 0,100% 100%,58% 100%,50% 98.5%,42% 100%,0 100%)}
.opening-film__theatre::after{inset:.82rem;border-color:rgba(216,166,75,.1)}
.opening-film__header{position:relative;z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;text-align:center}
.opening-film__header p{margin:0;color:#e5c98e;font:700 clamp(.55rem,1.2vw,.72rem)/1.3 Manrope,sans-serif;letter-spacing:.22em;text-transform:uppercase}
.opening-film__header p:first-child{text-align:right}.opening-film__header p:last-child{text-align:left}
.opening-film__monogram{display:grid;place-items:center;width:clamp(3.6rem,7vw,5.1rem);aspect-ratio:1;border:1px solid var(--film-gold);border-radius:50%;color:var(--film-gold-light);background:radial-gradient(circle at 35% 28%,#8b253b,#4b0b19 70%);box-shadow:0 0 0 5px rgba(216,166,75,.09),0 10px 28px rgba(0,0,0,.4);font:700 clamp(1rem,2vw,1.45rem)/1 Newsreader,serif;letter-spacing:.02em}
.opening-film__screen{position:relative;z-index:2;width:100%;aspect-ratio:848/478;overflow:hidden;background:#12050a;border:clamp(3px,.7vw,7px) solid #8b642a;outline:1px solid #f1cd79;box-shadow:0 22px 55px rgba(0,0,0,.58),0 0 45px rgba(216,166,75,.12)}
.opening-film__screen::before{content:"";position:absolute;z-index:3;inset:0;pointer-events:none;box-shadow:inset 0 0 45px rgba(0,0,0,.55)}
.opening-film__screen video{display:block;width:100%;height:100%;object-fit:contain;background:#12050a}
.opening-film__screen-shine{position:absolute;z-index:4;inset:-40%;pointer-events:none;background:linear-gradient(105deg,transparent 38%,rgba(255,241,203,.14) 49%,transparent 60%);transform:translateX(-70%);animation:film-screen-shine 6.8s ease-in-out infinite}
.opening-film__start{position:absolute;z-index:6;inset:0;display:grid;place-content:center;justify-items:center;gap:.62rem;border:0;color:var(--film-ivory);background:linear-gradient(rgba(14,3,8,.18),rgba(14,3,8,.72));cursor:pointer;transition:opacity .45s ease,visibility .45s ease}
.opening-film.is-playing .opening-film__start{opacity:0;visibility:hidden;pointer-events:none}
.opening-film__seal{display:grid;place-items:center;width:clamp(4.4rem,9vw,6.4rem);aspect-ratio:1;border:2px solid #f1d18a;border-radius:50%;color:#ffe8b6;background:radial-gradient(circle at 35% 28%,#a33a4f,#651225 64%,#35050f);box-shadow:0 8px 22px rgba(0,0,0,.45),inset 0 0 0 5px rgba(70,5,19,.32),0 0 0 8px rgba(221,174,85,.12);font:700 clamp(1rem,2.3vw,1.5rem)/1 Newsreader,serif;animation:film-seal-pulse 2.5s ease-in-out infinite}
.opening-film__start strong{font:400 clamp(1.25rem,3.2vw,2rem)/1 Italiana,serif;letter-spacing:.03em}.opening-film__start small{color:#ecd39f;font:700 .62rem/1.4 Manrope,sans-serif;letter-spacing:.18em;text-transform:uppercase}
.opening-film__sound{position:absolute;z-index:7;right:.7rem;bottom:.7rem;padding:.5rem .7rem;border:1px solid rgba(246,214,146,.55);border-radius:999px;color:#fff1cf;background:rgba(20,4,10,.72);backdrop-filter:blur(8px);font:700 .58rem/1 Manrope,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.opening-film__caption{position:relative;z-index:2;text-align:center}.opening-film__caption p{margin:0;color:#e1bd75;font:700 clamp(.55rem,1.3vw,.72rem)/1.2 Manrope,sans-serif;letter-spacing:.24em;text-transform:uppercase}.opening-film__caption h1{display:flex;justify-content:center;align-items:center;gap:.18em;margin:.15rem 0 -.05rem;color:#fff1d5;font:400 clamp(3rem,8vw,6rem)/.82 Corinthia,cursive;text-shadow:0 .2rem .9rem rgba(0,0,0,.5)}.opening-film__caption h1 b{color:var(--film-gold);font-size:.68em;font-weight:400}.opening-film__caption time{color:#f0dec0;font:500 clamp(.76rem,1.6vw,.96rem)/1.4 Newsreader,serif;letter-spacing:.08em}
.opening-film__progress{position:relative;z-index:2;height:2px;overflow:hidden;background:rgba(255,255,255,.16)}.opening-film__progress i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#8b4c20,var(--film-gold-light));transform:scaleX(0);transform-origin:left;will-change:transform}
.opening-film__skip{position:absolute;z-index:9;right:max(1rem,env(safe-area-inset-right));top:max(1rem,env(safe-area-inset-top));padding:.65rem .8rem;border:0;color:#f4dfb2;background:transparent;font:700 .62rem/1 Manrope,sans-serif;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.opening-film__noscript{position:absolute;z-index:10;left:50%;bottom:1rem;transform:translateX(-50%);color:white}

.invitation-scroll-progress{position:fixed;z-index:650;right:max(.6rem,env(safe-area-inset-right));top:50%;display:grid;justify-items:center;gap:.45rem;opacity:0;visibility:hidden;transform:translateY(-50%) translateX(12px);transition:.5s;pointer-events:none}
html.invitation-entered .invitation-scroll-progress{opacity:.82;visibility:visible;transform:translateY(-50%)}
.invitation-scroll-progress>span{display:grid;place-items:center;width:2rem;aspect-ratio:1;border:1px solid rgba(216,166,75,.7);border-radius:50%;color:var(--gold,#c99a55);background:rgba(16,10,16,.76);font:700 .48rem/1 Manrope,sans-serif}.invitation-scroll-progress>i{position:relative;width:1px;height:min(32vh,16rem);overflow:hidden;background:rgba(216,166,75,.24)}.invitation-scroll-progress b{position:absolute;inset:0;background:linear-gradient(var(--gold,#c99a55),#f5dc9a);transform:scaleY(var(--page-progress,0));transform-origin:top}

body.cinematic-scroll .reveal-on-scroll{--section-shift:0px;transform:translate3d(0,var(--section-shift),0);transition:opacity .85s ease,transform 1.05s cubic-bezier(.2,.7,.2,1);will-change:transform,opacity}
body.cinematic-scroll .reveal-on-scroll:not(.revealed){opacity:.01;transform:translate3d(0,42px,0)}
body.cinematic-scroll .reveal-on-scroll.revealed{opacity:1}
body.cinematic-scroll .reveal-on-scroll>*>*{transition:opacity .8s ease,transform .95s cubic-bezier(.2,.75,.2,1);transition-delay:calc(var(--motion-order,0)*90ms)}
body.cinematic-scroll .reveal-on-scroll:not(.revealed)>*>*{opacity:0;transform:translate3d(0,24px,0)}
body.cinematic-scroll .ceremony,.story-step,.programme li,.dress-columns>div,.contact-item{transition:transform .55s ease,box-shadow .55s ease,opacity .7s ease}
body.cinematic-scroll .ceremony:hover,.story-step:hover,.dress-columns>div:hover{transform:translateY(-6px);box-shadow:0 24px 60px rgba(48,20,14,.13)}
body.cinematic-scroll .countdown strong{display:inline-block;animation:film-count-breathe 3.6s ease-in-out infinite}
body.cinematic-scroll .countdown>div:nth-child(2) strong{animation-delay:.2s}body.cinematic-scroll .countdown>div:nth-child(3) strong{animation-delay:.4s}body.cinematic-scroll .countdown>div:nth-child(4) strong{animation-delay:.6s}
body.cinematic-scroll .arch-panel,body.cinematic-scroll .venue-illustration,body.cinematic-scroll .ring-exchange{transform:translate3d(0,var(--parallax-y,0),0);will-change:transform}

@keyframes film-ambient-breathe{to{transform:scale(1.17) translate3d(1%,-1%,0);filter:blur(28px) saturate(.9)}}
@keyframes film-screen-shine{0%,48%{transform:translateX(-70%)}72%,100%{transform:translateX(70%)}}
@keyframes film-seal-pulse{50%{transform:scale(1.035);box-shadow:0 10px 25px rgba(0,0,0,.5),inset 0 0 0 5px rgba(70,5,19,.32),0 0 0 12px rgba(221,174,85,.06)}}
@keyframes film-count-breathe{50%{transform:translateY(-3px);text-shadow:0 8px 22px rgba(255,211,125,.28)}}

@media(max-width:600px){
  html.video-opening-enabled .opening-film{padding:0}
  .opening-film__theatre{width:100%;min-height:100dvh;padding:max(3.8rem,env(safe-area-inset-top)) .8rem max(1.1rem,env(safe-area-inset-bottom));border:0;background:linear-gradient(180deg,rgba(12,8,14,.86),rgba(78,8,25,.75) 48%,rgba(12,5,12,.92))}
  .opening-film__theatre::before{inset:.45rem}.opening-film__theatre::after{inset:.7rem}
  .opening-film__header{grid-template-columns:1fr auto 1fr;gap:.5rem}.opening-film__header p{font-size:.48rem;letter-spacing:.13em}.opening-film__monogram{width:3.4rem}
  .opening-film__screen{border-width:3px}.opening-film__caption h1{font-size:clamp(3.8rem,18vw,5.2rem)}.opening-film__caption time{font-size:.78rem}
  .opening-film__start strong{font-size:1.25rem}.opening-film__seal{width:4.2rem}
  .invitation-scroll-progress{right:.35rem;opacity:.55}.invitation-scroll-progress>span{display:none}.invitation-scroll-progress>i{height:25vh}
}
@media(min-width:601px) and (max-height:760px){.opening-film__theatre{gap:.65rem;padding:1rem}.opening-film__caption h1{font-size:3.5rem}.opening-film__monogram{width:3.4rem}}
@media(prefers-reduced-motion:reduce){.opening-film__ambient,.opening-film__screen-shine,.opening-film__seal,body.cinematic-scroll .countdown strong{animation:none!important}.opening-film,.opening-film__start,body.cinematic-scroll .reveal-on-scroll,body.cinematic-scroll .reveal-on-scroll>*>*{transition:none!important}.invitation-scroll-progress{display:none}}
