
/* Modern Animations Pack — v1.0.9 (Images opt-in, header excluded, mobile fixes) */
:root {
  --map-duration: 700ms;
  --map-stagger: 90ms;
  --map-distance: 24px;
  --map-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --map-paragraph-distance: 32px;
  --map-paragraph-duration: 800ms;
}
@media (prefers-reduced-motion: reduce) {
  .map-animate .anim-init { opacity:1 !important; transform:none !important; transition:none !important; }
  .map-animate p.anim-init::after,
  .map-animate .wp-block-paragraph.anim-init::after { height: 0 !important; }
}
.map-animate .anim-init {
  opacity: 0;
  transform: translateY(var(--map-distance)) scale(0.98);
  transition:
    transform var(--map-duration) var(--map-ease),
    opacity var(--map-duration) var(--map-ease);
  will-change: transform, opacity;
}
.map-animate .is-inview { opacity: 1; transform: none; }
.map-animate .anim-fade-up.anim-init { transform: translateY(var(--map-distance)); }
.map-animate .anim-slide-left.anim-init { transform: translateX(var(--map-distance)); }
.map-animate .anim-slide-right.anim-init { transform: translateX(calc(var(--map-distance) * -1)); }
.map-animate .anim-zoom-in.anim-init { transform: scale(0.96); }

/* Paragraph slide-up + pre-reveal spacer */
.map-animate p.anim-init,
.map-animate .wp-block-paragraph.anim-init {
  transform: translateY(var(--map-paragraph-distance));
  transition-duration: var(--map-paragraph-duration);
  will-change: transform, opacity;
}
.map-animate p.anim-init::after,
.map-animate .wp-block-paragraph.anim-init::after {
  content: "";
  display: block;
  height: var(--map-paragraph-distance);
}
.map-animate p.is-inview::after,
.map-animate .wp-block-paragraph.is-inview::after { height: 0; }

/* Buttons: flicker-proof */
.map-animate .wp-block-button__link {
  position: relative; z-index: 0; transform: translateZ(0);
  backface-visibility: hidden; contain: paint; transition: none;
}
.map-animate .wp-block-button__link::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: currentColor; opacity: 0; transition: opacity .18s var(--map-ease);
  pointer-events: none; mix-blend-mode: soft-light;
}
@media (hover:hover) and (pointer:fine) {
  .map-animate .wp-block-button__link:hover::before { opacity: .15; }
}
.map-animate .wp-block-button__link:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
@media (hover:hover) and (pointer:fine) {
  .map-animate .map-raise .wp-block-button__link::before { opacity: 0; }
  .map-animate .map-raise .wp-block-button__link:hover::before { opacity: .12; }
  .map-animate .map-raise .wp-block-button__link { box-shadow: 0 0 0 rgba(0,0,0,0); transition: box-shadow .2s var(--map-ease); }
  .map-animate .map-raise .wp-block-button__link:hover { box-shadow: 0 8px 20px rgba(0,0,0,.12); }
}
.map-animate .wp-block-button.is-style-outline .wp-block-button__link::before { display: none; }

/* Header hard opt-out (safety): never animate anything in <header> */
header, .site-header, .wp-site-header { contain: layout paint style; }
.map-animate header *, .map-animate .site-header *, .map-animate .wp-site-header * {
  animation: none !important;
  transition: none !important;
  opacity: 1 !important;
  transform: none !important;
}

/* Image/figure micro lift on hover (kept, not part of reveal) */
.map-animate figure,
.map-animate .wp-block-image img { transition: transform .3s var(--map-ease), box-shadow .3s var(--map-ease); }
.map-animate figure:hover,
.map-animate .wp-block-image img:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(0,0,0,0.10); }

/* Mobile overlap hotfix & tweaks */
@media (max-width: 680px){
  main .wp-block-group.is-layout-flex { flex-wrap: wrap !important; }
  main .wp-block-group.is-layout-flex > * { min-width: 0; }
  main .wp-block-columns { flex-wrap: wrap !important; }
  main .wp-block-column { flex-basis: 100% !important; }
  main .wp-block-group, main .wp-block-columns { overflow: visible; }
  .map-animate h1.anim-init::after,
  .map-animate h2.anim-init::after,
  .map-animate h3.anim-init::after{ content:""; display:block; height: 12px; }
}
@media (max-width: 480px){
  .map-animate p.anim-init,
  .map-animate .wp-block-paragraph.anim-init {
    transform: translateY(20px);
    transition-duration: 700ms;
  }
}

.no-anim { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }
