/* ============================================================
   DIGITAL INVITES V11.8 — MOBILE / TABLET EXPERIENCE LAYER
   Purpose-built touch layout; desktop choreography remains intact.
   ============================================================ */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:72px}
body{overscroll-behavior-x:none}
@supports(padding:max(0px)){
  .topbar{padding-top:env(safe-area-inset-top);height:calc(64px + env(safe-area-inset-top))}
  .mobile-menu{padding-top:max(24px,calc(env(safe-area-inset-top) + 18px));padding-bottom:max(24px,calc(env(safe-area-inset-bottom) + 18px))}
  .creator.creator-webx{padding-bottom:max(28px,calc(env(safe-area-inset-bottom) + 20px))}
}
@media(max-width:900px){
  .topbar{grid-template-columns:1fr auto!important;gap:10px!important;padding-left:20px!important;padding-right:14px!important}
  .brand-mark{display:flex;align-items:center;min-height:44px;min-width:44px;width:max-content}
  .menu-btn{display:grid!important;place-content:center;width:46px!important;height:46px!important;min-width:46px;min-height:46px;padding:12px!important}
  .menu-btn span{width:21px;height:1.5px;margin:3px 0;background:currentColor}
  .mobile-menu-head button{width:46px;height:46px;display:grid;place-items:center;padding:0;cursor:pointer}
  .mobile-menu nav a{min-height:56px;display:flex;align-items:center}
  .text-link{min-height:44px;align-items:center}
  .gallery-modal button{width:48px;height:48px;display:grid;place-items:center;top:max(14px,env(safe-area-inset-top));right:14px}
  .rsvp-back{min-height:44px;padding:10px 0;margin-left:0;margin-right:0}
  .field input,.field textarea,.field select{font-size:16px!important}
  .creator-primary,.creator-secondary{min-height:56px!important}
  .creator-brand-stage{align-content:start!important}
  .webx-brand-image img{max-height:26vh;object-fit:contain}
}

@media(max-width:680px){
  /* Keep cinematic depth, remove dead runway. */
  .opening-sequence{height:315vh!important}
  .story-sequence{height:435vh!important}
  .day-sequence{height:265vh!important}
  .finale-sequence{height:135vh!important}

  /* Opening: readable, full-screen and deliberate on narrow phones. */
  .hero-editorial{padding:12vh 22px 10vh!important}
  .hero-overline{font-size:.68rem!important;letter-spacing:.18em!important}
  .hero-names{font-size:clamp(4rem,18.5vw,6.4rem)!important;line-height:.78!important;gap:5px!important}
  .hero-editorial>p{font-size:1rem!important;line-height:1.65!important;max-width:94%!important}
  .hero-details{font-size:.66rem!important;letter-spacing:.13em!important;line-height:1.45!important}
  .scroll-cue{font-size:.62rem!important;letter-spacing:.18em!important}
  .invite-paper{width:90vw!important;min-height:68svh!important;padding:48px 28px!important}
  .invite-paper h2{font-size:clamp(3rem,12vw,4.5rem)!important;line-height:.86!important}
  .invite-paper p{font-size:1rem!important;line-height:1.68!important}
  .invite-date{font-size:.64rem!important;letter-spacing:.13em!important}
  .date-kicker{font-size:.66rem!important;letter-spacing:.18em!important}
  .date-month span{font-size:.72rem!important}
  .countdown-inline span{font-size:.62rem!important;letter-spacing:.10em!important}
  .opening-iris::before{font-size:.58rem!important;letter-spacing:.20em!important;top:calc(50% - 30px)!important;color:rgba(255,255,255,.62)!important}
  .opening-iris::after{font-size:.76rem!important;letter-spacing:.24em!important;color:#e0c69c!important}

  /* Story: editorial copy remains legible and proposal becomes a single clean moment. */
  .story-copy{left:54px!important;right:18px!important;bottom:7.5vh!important}
  .story-copy-stack{height:46vh!important}
  .story-copy-card .story-year{font-size:18vw!important}
  .story-copy-card small{font-size:.70rem!important;letter-spacing:.14em!important}
  .story-copy-card h2{font-size:clamp(2.55rem,10.8vw,4rem)!important;line-height:.90!important}
  .story-copy-card p{font-size:.96rem!important;line-height:1.58!important;max-width:100%!important}
  .story-rail{left:14px!important;top:9vh!important;bottom:9vh!important}
  .proposal-editorial{right:18px!important;left:54px!important;top:10vh!important;width:auto!important;height:49vh!important}
  .proposal-detail{inset:0!important}
  .proposal-note{left:0!important;right:0!important;bottom:0!important;padding:16px 18px 18px!important}
  .proposal-note small{font-size:.64rem!important;letter-spacing:.16em!important}
  .proposal-note strong{font-size:clamp(1.8rem,8vw,2.35rem)!important;line-height:.92!important}
  .proposal-note span{font-size:.82rem!important}
  .story-paper-teaser span{font-size:.70rem!important;letter-spacing:.18em!important;margin-bottom:1rem!important}
  .story-paper-teaser strong{font-size:clamp(2.5rem,11vw,4rem)!important;line-height:.92!important}

  /* Wedding day: preserve animated photography as a soft full-bleed backdrop. */
  .day-stage{background:var(--ivory)!important}
  .event-panel{padding:0!important}
  .event-list{z-index:4!important;left:34px!important;right:18px!important;top:11vh!important;width:auto!important}
  .event-route{z-index:4!important;left:16px!important;top:12vh!important;bottom:10vh!important}
  .event-row{grid-template-columns:84px minmax(0,1fr)!important;gap:0 14px!important;padding:1.05rem 0 1.15rem!important}
  .event-row time{font-size:clamp(2rem,9vw,2.7rem)!important;line-height:1!important}
  .event-row small{display:block!important;grid-column:2!important;font-size:.64rem!important;letter-spacing:.14em!important;padding-top:.12rem!important;margin-bottom:.30rem!important;color:#947b58!important}
  .event-row .event-copy{grid-column:2!important}
  .event-row h3{font-size:clamp(1.25rem,5.8vw,1.65rem)!important;line-height:1.05!important;margin-bottom:.35rem!important}
  .event-row p{font-size:.90rem!important;line-height:1.55!important;max-width:100%!important;color:#696159!important}
  .event-photo{display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;right:auto!important;top:auto!important;opacity:.18!important;box-shadow:none!important;pointer-events:none!important;background:#efe8dd!important}
  .event-photo-stack{inset:0!important}
  .event-photo-frame{filter:saturate(.48) contrast(.98)!important}
  .event-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(245,240,232,.94),rgba(245,240,232,.82) 64%,rgba(245,240,232,.72))!important;z-index:2!important}
  .venue-copy{left:24px!important;right:24px!important;bottom:8vh!important}
  .venue-copy>span{font-size:.68rem!important;letter-spacing:.16em!important}
  .venue-copy h2{font-size:clamp(3.9rem,16vw,5.8rem)!important;line-height:.78!important}
  .venue-copy small{font-size:.78rem!important;line-height:1.5!important}
  .text-link{font-size:.72rem!important;letter-spacing:.14em!important}
  .dress-copy{left:24px!important;right:24px!important;top:12vh!important}
  .dress-copy>span{font-size:.68rem!important;letter-spacing:.16em!important}
  .dress-copy h2{font-size:clamp(3.7rem,15vw,5.6rem)!important}
  .dress-copy p{font-size:.98rem!important;line-height:1.62!important}
  .palette-editorial{left:24px!important;right:24px!important;bottom:13vh!important;height:31vh!important;gap:6px!important}
  .palette-swatch span{font-size:.58rem!important;letter-spacing:.10em!important;bottom:-28px!important}
  .day-gallery-teaser span{font-size:.60rem!important;letter-spacing:.20em!important}
  .day-gallery-teaser strong{font-size:clamp(3rem,13vw,4.7rem)!important}

  /* Gallery: native swipe, larger captions, no accidental vertical trap. */
  .gallery-stage{padding:84px 0 46px!important;min-height:auto!important}
  .gallery-intro{padding:0 22px!important;margin-bottom:30px!important}
  .gallery-intro>span{font-size:.68rem!important;letter-spacing:.17em!important}
  .gallery-intro h2{font-size:clamp(3.3rem,13.5vw,5rem)!important;line-height:.82!important}
  .gallery-track{padding:0 22px 24px!important;gap:14px!important;scroll-padding-inline:22px;touch-action:pan-x pan-y!important}
  .gallery-card,.gallery-card.tall,.gallery-card.wide{width:84vw!important;flex-basis:84vw!important;height:min(58svh,520px)!important;border-radius:0!important}
  .gallery-card figcaption{font-size:.72rem!important;letter-spacing:.13em!important}
  .gallery-progress{margin:12px 22px 0!important}
  .gallery-progress span{font-size:.66rem!important}
  .mobile-gallery-exit{min-height:auto!important;margin-top:36px!important;grid-template-rows:min(48svh,440px) auto!important}
  .mobile-gallery-exit>.mobile-exit-photo{height:min(48svh,440px)!important}
  .mobile-exit-copy{padding:7vh 22px 8vh!important}
  .mobile-exit-copy span{font-size:.66rem!important;letter-spacing:.16em!important}
  .mobile-exit-copy strong{font-size:clamp(2.8rem,11.5vw,4rem)!important;line-height:.88!important}

  /* RSVP: no nested scroll, 16px+ form controls, generous touch targets. */
  .rsvp-section,.rsvp-section.has-answer{min-height:0!important;overflow:visible!important}
  .rsvp-photo-echo,.rsvp-section.has-answer .rsvp-photo-echo{height:min(42svh,400px)!important;min-height:280px!important}
  .rsvp-photo-caption span{font-size:.66rem!important;letter-spacing:.16em!important}
  .rsvp-photo-caption strong{font-size:clamp(1.55rem,7vw,2rem)!important;line-height:1.02!important}
  .rsvp-paper,.rsvp-section.has-answer .rsvp-paper{padding:66px 22px 52px!important}
  .rsvp-step-choice small,.rsvp-form-head>small{font-size:.68rem!important;letter-spacing:.16em!important}
  .rsvp-step-choice h2{font-size:clamp(3.2rem,13vw,4.6rem)!important;line-height:.86!important}
  .rsvp-step-choice p{font-size:.98rem!important;line-height:1.55!important}
  .rsvp-choice{min-height:72px!important;font-size:.70rem!important;letter-spacing:.12em!important;padding:0 16px!important}
  .rsvp-form-head h2{font-size:clamp(2.4rem,10vw,3.6rem)!important;line-height:.94!important}
  .field{padding:1.05rem 0 .9rem!important}
  .field>span{font-size:.68rem!important;letter-spacing:.10em!important}
  .submit-rsvp{min-height:58px!important;height:auto!important;padding:18px!important;font-size:.70rem!important}
  .demo-note{font-size:.66rem!important;line-height:1.45!important}

  /* Finale: preserve movement while guaranteeing readable copy on short phones. */
  .finale-copy{left:22px!important;right:22px!important;bottom:8vh!important}
  .finale-copy>span{font-size:.66rem!important;letter-spacing:.18em!important}
  .finale-copy h2{font-size:clamp(3.5rem,15vw,5.6rem)!important;line-height:.80!important}
  .finale-copy p{font-size:.96rem!important;line-height:1.58!important;padding:0!important}
  .finale-copy strong{font-size:1.7rem!important}
  .finale-date-mark{font-size:.58rem!important;letter-spacing:.20em!important}

  /* webXCode credits: reveal before the section owns the viewport; no blank black frame. */
  .creator.creator-webx{min-height:auto!important;padding:26px 20px 30px!important;gap:22px!important;display:flex!important;flex-direction:column!important}
  .creator-topline{font-size:.62rem!important;letter-spacing:.12em!important;line-height:1.35!important;flex-wrap:wrap!important}
  .creator-brand-stage{min-height:0!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:26px!important}
  .webx-brand-image{justify-content:center!important;min-height:0!important}
  .webx-brand-image img{width:100%!important;max-height:none!important}
  .creator-message{width:100%!important;padding-top:0!important}
  .creator-eyebrow{font-size:.66rem!important;letter-spacing:.14em!important}
  .creator-message h2{font-size:clamp(2.7rem,11.8vw,4.1rem)!important;line-height:.88!important;margin:1rem 0 1.1rem!important}
  .creator-message p{font-size:.96rem!important;line-height:1.65!important;margin-bottom:1.4rem!important}
  .creator-actions{gap:10px!important}
  .creator-bottomline{font-size:.60rem!important;line-height:1.45!important;gap:16px!important;padding-top:18px!important}
  .creator-capabilities{gap:14px!important}
  .creator-x-outline{font-size:105vw!important;right:-25vw!important;top:22%!important;opacity:.42!important}
  .creator-red-glow{width:95vw!important;right:-50vw!important;top:10%!important;opacity:.55!important}
  .creator-webx .creator-topline,.creator-webx .webx-brand-lockup,.creator-webx .creator-message,.creator-webx .creator-bottomline{transform:translate3d(0,14px,0)!important;transition-duration:.58s!important}
}

@media(max-width:360px){
  .topbar{padding-left:14px!important;padding-right:8px!important}
  .hero-editorial{padding-left:16px!important;padding-right:16px!important}
  .hero-names{font-size:18vw!important}
  .story-copy{left:48px!important;right:14px!important}
  .story-copy-card h2{font-size:10.2vw!important}
  .story-copy-card p{font-size:.90rem!important;line-height:1.5!important}
  .event-list{left:30px!important;right:12px!important}
  .event-row{grid-template-columns:76px minmax(0,1fr)!important;gap:0 10px!important}
  .event-row time{font-size:1.95rem!important}
  .event-row h3{font-size:1.2rem!important}
  .event-row p{font-size:.84rem!important}
  .gallery-card,.gallery-card.tall,.gallery-card.wide{width:86vw!important;flex-basis:86vw!important}
  .rsvp-paper,.rsvp-section.has-answer .rsvp-paper{padding-left:18px!important;padding-right:18px!important}
  .creator.creator-webx{padding-left:16px!important;padding-right:16px!important}
}

/* Tablets keep the photographic split and larger readable type. */
@media(max-width:900px) and (min-width:681px){
  .opening-sequence{height:330vh!important}.story-sequence{height:405vh!important}.day-sequence{height:315vh!important}.gallery-sequence{height:325vh!important}.finale-sequence{height:132vh!important}
  .event-list{left:6vw!important;top:17vh!important;width:51vw!important}.event-route{left:3.5vw!important;top:19vh!important}.event-row{grid-template-columns:92px 1fr!important;padding:1rem 0!important}.event-row small{display:block!important;grid-column:2!important;font-size:.62rem!important;letter-spacing:.13em!important}.event-row .event-copy{grid-column:2!important}.event-row time{font-size:2.45rem!important}.event-row h3{font-size:1.4rem!important}.event-row p{font-size:.88rem!important;line-height:1.5!important}
  .event-photo{display:block!important;right:3vw!important;top:16vh!important;width:37vw!important;height:60vh!important}
  .rsvp-stage,.rsvp-section.has-answer .rsvp-stage{grid-template-columns:minmax(0,42%) minmax(0,58%)!important}.rsvp-paper,.rsvp-section.has-answer .rsvp-paper{padding:72px 38px!important}.rsvp-step-choice h2{font-size:clamp(3.6rem,7.5vw,5.5rem)!important}
  .creator.creator-webx{padding:28px 28px 34px!important}.creator-brand-stage{gap:26px!important;min-height:0!important}.webx-brand-image img{width:min(92%,720px)!important}.creator-message{width:min(100%,640px)!important}.creator-bottomline{margin-top:8px!important}
}

/* Landscape phones: maintain full experience without clipped controls. */
@media(max-height:520px) and (orientation:landscape) and (max-width:900px){
  .topbar{height:54px!important;padding-top:0!important}
  .opening-sequence{height:340vh!important}.story-sequence{height:440vh!important}.day-sequence{height:285vh!important}.finale-sequence{height:150vh!important}
  .hero-editorial{padding:16vh 7vw 8vh!important}.hero-names{font-size:11vw!important;flex-wrap:nowrap!important}.hero-editorial>p{max-width:58%!important}
  .story-copy{bottom:7vh!important}.story-copy-stack{height:64vh!important}.story-copy-card h2{font-size:6.6vw!important}.story-copy-card p{font-size:.84rem!important;max-width:62%!important}.proposal-editorial{left:auto!important;right:5vw!important;top:11vh!important;width:46vw!important;height:72vh!important}
  .event-list{top:10vh!important;width:58vw!important}.event-route{top:12vh!important}.event-row{padding:.55rem 0!important}.event-row time{font-size:1.7rem!important}.event-row p{font-size:.76rem!important}.event-photo{display:block!important;left:auto!important;right:0!important;width:42vw!important;opacity:.20!important}
  .gallery-card,.gallery-card.tall,.gallery-card.wide{height:72vh!important;width:50vw!important;flex-basis:50vw!important}
  .rsvp-photo-echo{height:66vh!important}.rsvp-paper{padding-top:54px!important}.creator-brand-stage{display:grid!important;grid-template-columns:1fr 1fr!important;gap:26px!important}.webx-brand-image img{max-height:42vh!important}.creator-message h2{font-size:6vw!important}
}

@media(prefers-reduced-motion:reduce){
  .creator-webx .creator-topline,.creator-webx .webx-brand-lockup,.creator-webx .creator-message,.creator-webx .creator-bottomline{opacity:1!important;transform:none!important}
}


/* V11.8.1 audit refinements: remove the final mobile dead frames. */
.mobile-rsvp-finale-bridge{display:none}
@media(max-width:680px){
  .mobile-rsvp-finale-bridge{display:grid;height:34svh;min-height:220px;place-items:end start;padding:0 22px 26px;background:linear-gradient(180deg,rgba(248,244,237,.88) 0%,rgba(18,17,15,.14) 32%,rgba(18,17,15,.45) 100%),var(--rsvp-photo,none) center 42%/cover no-repeat;color:#f7f1e7;overflow:hidden}
  .mobile-rsvp-finale-bridge span{font:600 .66rem/1 var(--sans);letter-spacing:.18em;color:#e0c79d}
  .creator-webx .creator-topline{opacity:.70!important;transform:translate3d(0,6px,0)!important}
  .creator-webx .webx-brand-lockup{opacity:.88!important;transform:translate3d(0,8px,0)!important}
  .creator-webx .creator-message{opacity:.46!important;transform:translate3d(0,10px,0)!important}
  .creator-webx .creator-bottomline{opacity:.45!important;transform:translate3d(0,8px,0)!important}
  .creator-webx.creator-in .creator-topline,.creator-webx.creator-in .webx-brand-lockup,.creator-webx.creator-in .creator-message,.creator-webx.creator-in .creator-bottomline{opacity:1!important;transform:none!important}
}

/* V11.8.1 tablet/landscape entrance guards. */
@media(max-width:900px) and (min-width:681px){
  .day-stage::before{
    content:"20 · MAR · 2027";position:absolute;z-index:6;left:50%;top:50%;transform:translate(-50%,-50%);
    font:500 clamp(2.2rem,5vw,3.5rem)/1 var(--serif);letter-spacing:.08em;color:#3b3530;
    opacity:calc(1 - var(--events-o,0));pointer-events:none;transition:opacity .15s linear;white-space:nowrap
  }
  .day-stage::after{
    content:"THE WEDDING";position:absolute;z-index:6;left:50%;top:calc(50% - 54px);transform:translateX(-50%);
    font:600 .66rem/1 var(--sans);letter-spacing:.20em;color:#9a7d56;opacity:calc(1 - var(--events-o,0));pointer-events:none
  }
  .creator-webx .creator-topline{opacity:.70!important;transform:translate3d(0,6px,0)!important}
  .creator-webx .webx-brand-lockup{opacity:.88!important;transform:translate3d(0,8px,0)!important}
  .creator-webx .creator-message{opacity:.46!important;transform:translate3d(0,10px,0)!important}
  .creator-webx .creator-bottomline{opacity:.45!important;transform:translate3d(0,8px,0)!important}
  .creator-webx.creator-in .creator-topline,.creator-webx.creator-in .webx-brand-lockup,.creator-webx.creator-in .creator-message,.creator-webx.creator-in .creator-bottomline{opacity:1!important;transform:none!important}
}

/* Final touch-target pass: form controls remain comfortably tappable on iOS/Android. */
@media(max-width:900px){
  .field input,.field select{min-height:44px!important}
  .field textarea{min-height:112px!important}
}

/* ============================================================
   V11.9 — MOBILE LATE-JOURNEY PACING
   Gallery -> RSVP -> finale -> credits. No sticky traps.
   ============================================================ */
@media(max-width:680px){
  /* Gallery remains native swipe, but the imagery reacts as it becomes active. */
  .gallery-intro{opacity:var(--mobile-gallery-intro-o,1)!important;transform:translate3d(0,var(--mobile-gallery-intro-y,0px),0)!important;will-change:transform,opacity}
  .gallery-card img{transition:transform .72s var(--ease),opacity .4s ease!important;transform:scale(1.01)!important}
  .gallery-card.is-mobile-active img{transform:scale(1.055)!important}
  .gallery-card figcaption{opacity:.58;transform:translate3d(0,6px,0);transition:opacity .36s ease,transform .45s var(--ease)!important}
  .gallery-card.is-mobile-active figcaption{opacity:1;transform:none;color:#e3cda7}
  .gallery-card .gallery-no{opacity:.48;transition:opacity .35s ease}
  .gallery-card.is-mobile-active .gallery-no{opacity:.9}
  .mobile-gallery-exit{overflow:hidden!important}
  .mobile-gallery-exit>.mobile-exit-photo{transform:translate3d(0,var(--mg-photo-y,26px),0) scale(var(--mg-photo-s,1.045))!important;transform-origin:center;will-change:transform}
  .mobile-exit-copy{opacity:var(--mg-copy-o,0);transform:translate3d(0,var(--mg-copy-y,28px),0);will-change:transform,opacity}
  .mobile-exit-copy small{display:block;margin-top:1rem;font:400 .92rem/1.55 var(--sans);color:#6f665e;max-width:88vw}

  /* RSVP starts as the same paper from the gallery handoff, with a controlled reveal. */
  .rsvp-photo-echo,.rsvp-section.has-answer .rsvp-photo-echo{
    opacity:var(--rsvp-photo-o,1)!important;
    transform:translate3d(0,var(--rsvp-photo-y,18px),0) scale(var(--rsvp-photo-s,1.025))!important;
    transform-origin:center!important;
  }
  .rsvp-paper,.rsvp-section.has-answer .rsvp-paper{
    margin-top:-28px!important;z-index:3!important;
    opacity:var(--rsvp-paper-o,1)!important;
    transform:translate3d(0,var(--rsvp-paper-y,34px),0) scale(var(--rsvp-paper-s,.992))!important;
    transform-origin:center top!important;
    box-shadow:0 -18px 46px rgba(68,49,28,.06)!important;
  }
  .rsvp-paper-accent{left:22px!important;right:22px!important;top:28px!important;gap:10px!important}
  .rsvp-paper-accent span{font-size:.60rem!important;letter-spacing:.15em!important}
  .rsvp-date-side{display:none!important}
  .rsvp-monogram{opacity:var(--rsvp-monogram-o,0)!important;transform:translateY(var(--rsvp-monogram-y,-8px))!important}
  .rsvp-step-choice{padding-top:38px!important}
  .rsvp-question span,.rsvp-question em{font-size:inherit!important}
  .rsvp-question em{color:#9b7d55!important}
  .rsvp-choice-grid{margin-top:1.9rem!important}
  .rsvp-choice{transition:transform .22s ease,color .3s ease,border-color .3s ease!important}
  .rsvp-choice::before{transition:transform .34s var(--ease)!important}

  /* Mobile bridge is a short film beat, not a blank runway. */
  .mobile-rsvp-finale-bridge{display:none!important}
  .rsvp-finale-bridge{height:66svh!important;min-height:430px!important}
  .rsvp-finale-bridge::before{top:0!important;left:0!important;right:0!important;bottom:auto!important;width:100%!important;height:100%!important;transform:translate3d(0,var(--bridge-cover-y,0%),0)!important;background:#fbf8f2!important}
  .rsvp-bridge-photo{inset:-1%!important;background-position:center 42%!important;transform:scale(var(--bridge-photo-s,1.025)) translate3d(0,var(--bridge-photo-y,8px),0)!important}
  .rsvp-bridge-shade{background:linear-gradient(180deg,rgba(10,9,8,.05),rgba(10,9,8,.58))!important}
  .rsvp-bridge-copy{left:22px!important;right:22px!important;bottom:7vh!important;width:auto!important}
  .rsvp-bridge-copy span{font-size:.64rem!important;letter-spacing:.18em!important}
  .rsvp-bridge-copy strong{font-size:clamp(3rem,13vw,4.8rem)!important;line-height:.80!important}
  .rsvp-bridge-copy small{font-size:.60rem!important;letter-spacing:.17em!important;margin-top:1.25rem!important}

  /* Finale pacing: each line gets room to land before the next. */
  .finale-sequence{height:152vh!important}
  .finale-copy{bottom:8.5vh!important}
  .finale-copy h2 span,.finale-copy h2 em{display:block!important}
  .finale-credit-cue{left:22px!important;right:auto!important;bottom:5vh!important}
  .finale-credit-cue i{max-width:72px}

  /* Credits keep their movement but take slightly longer to settle on touch. */
  .creator.creator-webx{padding-top:34px!important}
  .creator.creator-webx .webx-brand-lockup{transform-origin:center!important}
}

@media(max-width:360px){
  .rsvp-finale-bridge{height:62svh!important;min-height:390px!important}
  .rsvp-bridge-copy strong{font-size:12.5vw!important}
  .rsvp-step-choice{padding-top:34px!important}
}

@media(max-height:520px) and (orientation:landscape) and (max-width:900px){
  .rsvp-finale-bridge{height:100vh!important;min-height:360px!important}
  .rsvp-bridge-copy{left:6vw!important;bottom:8vh!important;width:54vw!important}
  .rsvp-bridge-copy strong{font-size:6vw!important}
}

@media(max-width:900px){
  .creator.creator-webx .creator-topline,.creator.creator-webx.creator-in .creator-topline{opacity:var(--creator-top-o,.2)!important;transform:translate3d(0,var(--creator-top-y,18px),0)!important;transition:none!important}
  .creator.creator-webx .webx-brand-lockup,.creator.creator-webx.creator-in .webx-brand-lockup{opacity:var(--creator-logo-o,.2)!important;transform:translate3d(0,var(--creator-logo-y,28px),0) scale(var(--creator-logo-s,.975))!important;transition:none!important}
  .creator.creator-webx .creator-message,.creator.creator-webx.creator-in .creator-message{opacity:var(--creator-message-o,.15)!important;transform:translate3d(0,var(--creator-message-y,30px),0)!important;transition:none!important}
  .creator.creator-webx .creator-bottomline,.creator.creator-webx.creator-in .creator-bottomline{opacity:var(--creator-bottom-o,.12)!important;transform:translate3d(0,var(--creator-bottom-y,18px),0)!important;transition:none!important}
}
@media(max-width:680px){
  .gallery-track{scroll-snap-type:x proximity!important}
  .gallery-card{contain:paint}
  .rsvp-finale-bridge{contain:paint}
}


/* V12 mobile late-journey choreography overrides */
@media(max-width:680px){
  .rsvp-section,.rsvp-section.has-answer{overflow:clip!important;background:#eee7dc!important}
  .rsvp-stage,.rsvp-section.has-answer .rsvp-stage{display:block!important}
  .rsvp-photo-echo,.rsvp-section.has-answer .rsvp-photo-echo{position:relative!important;width:100%!important;height:48svh!important;min-height:340px!important}
  .rsvp-paper,.rsvp-section.has-answer .rsvp-paper{position:relative!important;width:100%!important;margin-left:0!important;margin-top:-7svh!important;padding:76px 22px 64px!important}
  .rsvp-date-side{display:none!important}
  .gallery-track{scroll-snap-type:x proximity!important}
}


/* V12.0.5 late-journey photo separation */
.mobile-gallery-exit>.mobile-exit-photo{background-image:var(--gallery-exit-photo,none)!important;}
.mobile-rsvp-finale-bridge{background-image:linear-gradient(180deg,rgba(248,244,237,.80) 0%,rgba(18,17,15,.12) 30%,rgba(18,17,15,.48) 100%),var(--finale-photo,none)!important;}


/* 12.0.6 mobile cleanup: remove repeated late-journey photos before RSVP */
@media (max-width: 680px){
  .mobile-gallery-exit{display:block!important;min-height:auto!important;grid-template-rows:none!important;background:#f5f0e8!important;margin-top:22px!important;padding:8vh 22px 7vh!important;overflow:visible!important;}
  .mobile-gallery-exit>.mobile-exit-photo{display:none!important;}
  .mobile-exit-copy{padding:0!important;background:transparent!important;opacity:1!important;transform:none!important;}
  .mobile-exit-copy span{display:block!important;font-size:.66rem!important;letter-spacing:.16em!important;color:#9a7c55!important;}
  .mobile-exit-copy strong{display:block!important;font-size:clamp(2.9rem,11.8vw,4.2rem)!important;line-height:.88!important;max-width:92vw!important;margin-top:.9rem!important;}
  .mobile-exit-copy small{display:block!important;margin-top:1rem!important;font:400 .95rem/1.55 var(--sans)!important;color:#6f665e!important;max-width:90vw!important;}

  .rsvp-photo-echo,
  .rsvp-section.has-answer .rsvp-photo-echo{display:none!important;}
  .rsvp-section,
  .rsvp-section.has-answer{min-height:auto!important;padding:0!important;overflow:visible!important;background:#f5f0e8!important;}
  .rsvp-stage,
  .rsvp-section.has-answer .rsvp-stage{display:block!important;min-height:0!important;}
  .rsvp-paper,
  .rsvp-section.has-answer .rsvp-paper{margin:0!important;width:100%!important;min-height:0!important;padding:70px 22px 62px!important;box-shadow:none!important;background:#f8f4ed!important;transform:none!important;opacity:1!important;}
  .rsvp-paper::before{inset:14px!important;}
  .rsvp-monogram{top:28px!important;right:22px!important;left:auto!important;transform:none!important;font-size:.72rem!important;}
}


/* ============================================================
   V12.1 MOBILE MOTION CALIBRATION
   Slower choreography + cheaper compositing, without removing scenes.
   ============================================================ */
@media(max-width:680px){
  .opening-sequence{height:350vh!important}
  .story-sequence{height:475vh!important}
  .day-sequence{height:310vh!important}
  .finale-sequence{height:170vh!important}

  /* Moving photos stay animated, but avoid per-frame filter/shadow rasterisation. */
  .opening-photo img,.story-photo img,.proposal-detail img,.event-photo-frame,.venue-image img,.gallery-card img,.finale-photo img{filter:none!important}
  .gallery-card,.gallery-card.active,.proposal-detail,.invite-paper{box-shadow:none!important}
  .gallery-card::before{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.13);z-index:3;pointer-events:none}

  /* Keep GPU layer count controlled. Only primary moving surfaces stay promoted. */
  .story-copy-card,.event-row,.palette-swatch,.rsvp-choice-grid,.rsvp-question span,.rsvp-question em{will-change:auto!important}
  .opening-photo,.story-media,.event-photo-stack,.gallery-track,.finale-photo{will-change:transform!important}

  /* Native horizontal gallery gets gentle state changes without transition fighting touch scroll. */
  .gallery-card,.gallery-card.tall,.gallery-card.wide{transition:opacity .28s ease!important}
  .gallery-card img{transition:transform .50s cubic-bezier(.22,.75,.18,1)!important}
  .gallery-card figcaption{transition:opacity .30s ease,transform .36s cubic-bezier(.22,.75,.18,1)!important}

  /* RSVP has a measured reveal; buttons never wait until the question is nearly gone. */
  .rsvp-step-choice{padding-top:26px!important}
  .rsvp-question{margin-bottom:1rem!important}
  .rsvp-choice-grid{margin-top:1.55rem!important}

  /* Remove animated light sweep on touch; image/copy motion carries the finale instead. */
  .finale-light-sweep{display:none!important}
  .finale-photo img{transform:scale(var(--final-photo-s,1.03)) translate3d(var(--final-photo-x,0px),0,0)!important}
}

@media(max-width:360px){
  .opening-sequence{height:365vh!important}
  .story-sequence{height:500vh!important}
  .day-sequence{height:325vh!important}
  .finale-sequence{height:180vh!important}
}
