/* AirSite reveal layer.
   One class set, driven by an IntersectionObserver. Anything carrying
   data-reveal gets it, including blocks written long after this file. */

[data-reveal]{
  --as-reveal-distance:1.75rem;
  --as-reveal-time:.62s;
  --as-reveal-ease:cubic-bezier(.22,.61,.36,1);
}

[data-reveal]:not(.as-revealed){
  opacity:0;
  will-change:opacity,transform;
}
[data-reveal="up"]:not(.as-revealed){transform:translateY(var(--as-reveal-distance))}
[data-reveal="left"]:not(.as-revealed){transform:translateX(calc(var(--as-reveal-distance) * -1.6))}
[data-reveal="right"]:not(.as-revealed){transform:translateX(calc(var(--as-reveal-distance) * 1.6))}
[data-reveal="zoom"]:not(.as-revealed){transform:scale(.94)}

[data-reveal].as-revealed{
  opacity:1;
  transform:none;
  transition:opacity var(--as-reveal-time) var(--as-reveal-ease),
             transform var(--as-reveal-time) var(--as-reveal-ease);
}

[data-reveal-delay="1"].as-revealed{transition-delay:.10s}
[data-reveal-delay="2"].as-revealed{transition-delay:.22s}
[data-reveal-delay="3"].as-revealed{transition-delay:.36s}

/* Stagger hands each direct child its own step, set inline by the script. */
[data-reveal="stagger"]:not(.as-revealed){opacity:1;transform:none}
[data-reveal="stagger"] > *{
  opacity:0;
  transform:translateY(var(--as-reveal-distance));
}
[data-reveal="stagger"].as-revealed > *{
  opacity:1;
  transform:none;
  transition:opacity var(--as-reveal-time) var(--as-reveal-ease),
             transform var(--as-reveal-time) var(--as-reveal-ease);
  transition-delay:var(--as-step,0s);
}

/* Anyone who has asked their system not to animate sees the finished state. */
@media (prefers-reduced-motion:reduce){
  [data-reveal],
  [data-reveal] > *{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }
}

/* Before the script runs, show everything: a blocked script must never
   leave a page blank. The script re-hides what it is about to animate. */
.as-reveal-ready [data-reveal]:not(.as-revealed){opacity:0}
html:not(.as-reveal-ready) [data-reveal],
html:not(.as-reveal-ready) [data-reveal] > *{
  opacity:1 !important;
  transform:none !important;
}
