/* Android compositor-safe overrides.
   Keeps the public experience intact while avoiding effects that often
   trigger black frames or color corruption on weaker Chrome Android GPUs. */

html.is-android-compositor-safe .paper-grain::after,
html.is-android-compositor-safe .hero-reveal__grain,
html.is-android-compositor-safe .intro-pin::after,
html.is-android-compositor-safe #festa::after{
  mix-blend-mode:normal !important;
}

html.is-android-compositor-safe .paper-grain::after{
  opacity:.018;
}

html.is-android-compositor-safe .hero-reveal__grain{
  opacity:.025;
}

html.is-android-compositor-safe .intro-pin::after,
html.is-android-compositor-safe #festa::after{
  opacity:.02;
}

html.is-android-compositor-safe .app-header[data-state="scrolled"],
html.is-android-compositor-safe .nav-sheet__scrim,
html.is-android-compositor-safe .hero-reveal__mute,
html.is-android-compositor-safe .desktop-advisory__scrim,
html.is-android-compositor-safe .route-warning__scrim,
html.is-android-compositor-safe .rsvp-sheet__scrim,
html.is-android-compositor-safe .rsvp-success__scrim{
  -webkit-backdrop-filter:none !important;
  backdrop-filter:none !important;
}

html.is-android-compositor-safe .app-header[data-state="scrolled"]{
  background:rgba(247,242,236,.96);
}

html.is-android-compositor-safe .nav-sheet__scrim{
  background:rgba(58,34,41,.48);
}

html.is-android-compositor-safe .hero-reveal__mute{
  background:rgba(247,242,236,.24);
}

html.is-android-compositor-safe .desktop-advisory__scrim{
  background:linear-gradient(180deg, rgba(58,34,41,.50), rgba(58,34,41,.58)), rgba(233,228,222,.88);
}

html.is-android-compositor-safe .route-warning__scrim,
html.is-android-compositor-safe .rsvp-sheet__scrim{
  background:rgba(58,34,41,.48);
}

html.is-android-compositor-safe .rsvp-success__scrim{
  background:
    radial-gradient(circle at 52% 38%, rgba(255,253,251,.58), rgba(247,242,236,.2) 34%, rgba(58,34,41,.38) 100%),
    rgba(58,34,41,.28);
}

html.is-android-compositor-safe .hero-reveal__img,
html.is-android-compositor-safe .hero-reveal__prelude,
html.is-android-compositor-safe .memory-photo,
html.is-android-compositor-safe .hero-reveal__copy,
html.is-android-compositor-safe .intro-pin.is-revealing .intro-pin__stage,
html.is-android-compositor-safe .intro-pin.is-finale .intro-divider,
html.is-android-compositor-safe .intro-divider-finale,
html.is-android-compositor-safe .intro-pin.is-finale .intro-divider-finale,
html.is-android-compositor-safe .celebration-burst__piece,
html.is-android-compositor-safe .intro-petal,
html.is-android-compositor-safe .section-jump-veil__ornament,
html.is-android-compositor-safe .convite-petal,
html.is-android-compositor-safe .rsvp-success__ambient span,
html.is-android-compositor-safe .rsvp-success__panel::after,
html.is-android-compositor-safe .rsvp-success__stage::after,
html.is-android-compositor-safe .success-particle,
html.is-android-compositor-safe [data-reveal]{
  filter:none !important;
}

html.is-android-compositor-safe [data-reveal]{
  transition:
    opacity 920ms var(--motion-ease-organic) var(--reveal-delay, 0ms),
    transform 1040ms var(--motion-ease-organic) var(--reveal-delay, 0ms);
  will-change:opacity, transform;
}

html.is-android-compositor-safe .hero-reveal__img,
html.is-android-compositor-safe .memory-photo,
html.is-android-compositor-safe .hero-burst__petal,
html.is-android-compositor-safe .bee-flight,
html.is-android-compositor-safe .intro-finale,
html.is-android-compositor-safe .celebration-burst__piece,
html.is-android-compositor-safe .intro-petal,
html.is-android-compositor-safe .album-slide,
html.is-android-compositor-safe .album-slide__media,
html.is-android-compositor-safe .convite-petal,
html.is-android-compositor-safe .convite-petal__shape,
html.is-android-compositor-safe .success-particle,
html.is-android-compositor-safe .app-footer__rotating-word{
  will-change:auto !important;
}

html.is-android-compositor-safe .convite-petals{
  perspective:none;
  transform-style:flat;
}

html.is-android-compositor-safe .convite-petal,
html.is-android-compositor-safe .convite-petal__shape{
  transform-style:flat;
}

html.is-android-compositor-safe .hero-reveal.is-playing .hero-reveal__prelude{
  animation:preludeFadeAndroid 5600ms var(--motion-ease-soft) both;
}

html.is-android-compositor-safe .hero-reveal.is-playing .memory-photo--a{
  animation:memEnterAAndroid 2800ms linear 0ms both, memPartA 1200ms cubic-bezier(.33,0,.25,1) 11400ms forwards;
}

html.is-android-compositor-safe .hero-reveal.is-playing .memory-photo--b{
  animation:memEnterBAndroid 2800ms linear 3800ms both, memPartB 1200ms cubic-bezier(.33,0,.25,1) 11400ms forwards;
}

html.is-android-compositor-safe .hero-reveal.is-playing .memory-photo--c{
  animation:memEnterCAndroid 2800ms linear 7600ms both, memPartC 1200ms cubic-bezier(.33,0,.25,1) 11400ms forwards;
}

html.is-android-compositor-safe .hero-reveal.is-playing .memory-photo--main{
  animation:memMainAndroid 1600ms cubic-bezier(.4,0,.2,1) 11400ms both;
}

html.is-android-compositor-safe .hero-reveal.is-playing .hero-reveal__copy{
  animation:letteringRevealAndroid 2000ms cubic-bezier(.22,.61,.27,1) 12300ms both;
}

html.is-android-compositor-safe .intro-pin.is-revealing .intro-pin__stage{
  animation:sectionStageArriveAndroid 980ms var(--motion-ease-organic) both;
}

html.is-android-compositor-safe .section-jump-veil__ornament{
  animation:sectionJumpBloomAndroid 1100ms var(--motion-ease-organic) both;
}

@keyframes memEnterAAndroid{
  0%{ opacity:0; transform:translate(40px,0) scale(2.9) rotate(var(--rot)); animation-timing-function:cubic-bezier(.22,.61,.27,1); }
  16%{ opacity:1; }
  100%{ opacity:1; transform:translate(0,0) scale(1) rotate(var(--rot)); }
}

@keyframes memEnterBAndroid{
  0%{ opacity:0; transform:translate(86px,0) scale(1.55) rotate(var(--rot)); animation-timing-function:cubic-bezier(.22,.61,.27,1); }
  16%{ opacity:1; }
  100%{ opacity:1; transform:translate(0,0) scale(1) rotate(var(--rot)); }
}

@keyframes memEnterCAndroid{
  0%{ opacity:0; transform:translate(-64px,0) scale(2.05) rotate(var(--rot)); animation-timing-function:cubic-bezier(.22,.61,.27,1); }
  16%{ opacity:1; }
  100%{ opacity:1; transform:translate(0,0) scale(1) rotate(var(--rot)); }
}

@keyframes memMainAndroid{
  0%{ opacity:0; }
  60%{ opacity:1; }
  100%{ opacity:1; }
}

@keyframes letteringRevealAndroid{
  0%{ opacity:0; }
  55%{ opacity:1; }
  100%{ opacity:1; }
}

@keyframes preludeFadeAndroid{
  0%, 64%{ opacity:.94; transform:translateX(-50%) translateY(0); }
  100%{ opacity:0; transform:translateX(-50%) translateY(8px); }
}

@keyframes sectionStageArriveAndroid{
  from{ opacity:.84; transform:translate3d(0,22px,0) scale(.988); }
  to{ opacity:1; transform:none; }
}

@keyframes sectionJumpBloomAndroid{
  0%{ opacity:0; transform:translateY(16px) scale(.82) rotate(-4deg); }
  58%{ opacity:1; }
  100%{ opacity:1; transform:translateY(0) scale(1) rotate(0); }
}
