/* Scroll / load reveals — fade + slight rise, in the spirit of
   Austin Hardtech (Squarespace fade + slide).
   html.js-reveal is set by a tiny inline script in <head>.
   Without JS that class is never added, so nothing is hidden. */

@keyframes ar-reveal {
  from {
    opacity: 0;
    transform: translate3d(0, 22px, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .js-reveal .hero .hero-meta,
  .js-reveal .hero h1,
  .js-reveal .hero-lead,
  .js-reveal .hero-cta,
  .js-reveal .hero .stat,
  .js-reveal .page-hero .hero-meta,
  .js-reveal .page-hero .tag,
  .js-reveal .page-hero h1,
  .js-reveal .page-hero .lead,
  .js-reveal .page-hero .idx,
  .js-reveal .past-events-head .tag,
  .js-reveal .past-events-head h1,
  .js-reveal .past-events-head .lead,
  .js-reveal .past-events-wrap > .back-link,
  .js-reveal .event-detail-wrap > .back-link {
    animation: ar-reveal 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  .js-reveal .hero .hero-meta,
  .js-reveal .page-hero .hero-meta,
  .js-reveal .past-events-wrap > .back-link,
  .js-reveal .event-detail-wrap > .back-link { animation-delay: 0s; }
  .js-reveal .hero h1 { animation-delay: 0.07s; }
  .js-reveal .hero-lead { animation-delay: 0.16s; }
  .js-reveal .hero-cta { animation-delay: 0.24s; }
  .js-reveal .hero .stat:nth-child(1) { animation-delay: 0.30s; }
  .js-reveal .hero .stat:nth-child(2) { animation-delay: 0.38s; }
  .js-reveal .hero .stat:nth-child(3) { animation-delay: 0.46s; }

  .js-reveal .page-hero .tag { animation-delay: 0.06s; }
  .js-reveal .page-hero h1 { animation-delay: 0.10s; }
  .js-reveal .page-hero .lead,
  .js-reveal .page-hero .idx { animation-delay: 0.20s; }

  .js-reveal .past-events-head .tag { animation-delay: 0.06s; }
  .js-reveal .past-events-head h1 { animation-delay: 0.10s; }
  .js-reveal .past-events-head .lead { animation-delay: 0.18s; }

  /* Keep this selector list in sync with reveal.js */
  .js-reveal .sec-head:not([data-revealed]),
  .js-reveal .event-card:not([data-revealed]),
  .js-reveal .sponsor:not([data-revealed]),
  .js-reveal .about-copy:not([data-revealed]),
  .js-reveal .pillar:not([data-revealed]),
  .js-reveal .carousel-wrap:not([data-revealed]),
  .js-reveal .col-card:not([data-revealed]),
  .js-reveal .newsletter-grid > *:not([data-revealed]),
  .js-reveal .cta .sec-pad > *:not([data-revealed]),
  .js-reveal .company-card:not([data-revealed]),
  .js-reveal .news-card:not([data-revealed]),
  .js-reveal .job-card:not([data-revealed]),
  .js-reveal .event-header:not([data-revealed]),
  .js-reveal .event-content:not([data-revealed]),
  .js-reveal .error-msg:not([data-revealed]) {
    transition:
      opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
      transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: var(--reveal-delay, 0ms);
  }

  .js-reveal .sec-head:not([data-revealed]):not(.is-in),
  .js-reveal .event-card:not([data-revealed]):not(.is-in),
  .js-reveal .sponsor:not([data-revealed]):not(.is-in),
  .js-reveal .about-copy:not([data-revealed]):not(.is-in),
  .js-reveal .pillar:not([data-revealed]):not(.is-in),
  .js-reveal .carousel-wrap:not([data-revealed]):not(.is-in),
  .js-reveal .col-card:not([data-revealed]):not(.is-in),
  .js-reveal .newsletter-grid > *:not([data-revealed]):not(.is-in),
  .js-reveal .cta .sec-pad > *:not([data-revealed]):not(.is-in),
  .js-reveal .company-card:not([data-revealed]):not(.is-in),
  .js-reveal .news-card:not([data-revealed]):not(.is-in),
  .js-reveal .job-card:not([data-revealed]):not(.is-in),
  .js-reveal .event-header:not([data-revealed]):not(.is-in),
  .js-reveal .event-content:not([data-revealed]):not(.is-in),
  .js-reveal .error-msg:not([data-revealed]):not(.is-in) {
    opacity: 0;
    transform: translate3d(0, 22px, 0);
  }

  /* Hero blocks use the load animation above — don't also hide them.
     Match or beat the hide-rule specificity (0,4,0). */
  .js-reveal .hero .sec-head:not([data-revealed]):not(.is-in),
  .js-reveal .page-hero .sec-head:not([data-revealed]):not(.is-in),
  .js-reveal .hero .event-card:not([data-revealed]):not(.is-in),
  .js-reveal .page-hero .event-card:not([data-revealed]):not(.is-in) {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .js-reveal .hero .hero-meta,
  .js-reveal .hero h1,
  .js-reveal .hero-lead,
  .js-reveal .hero-cta,
  .js-reveal .hero .stat,
  .js-reveal .page-hero .hero-meta,
  .js-reveal .page-hero .tag,
  .js-reveal .page-hero h1,
  .js-reveal .page-hero .lead,
  .js-reveal .page-hero .idx,
  .js-reveal .past-events-head .tag,
  .js-reveal .past-events-head h1,
  .js-reveal .past-events-head .lead,
  .js-reveal .past-events-wrap > .back-link,
  .js-reveal .event-detail-wrap > .back-link,
  .js-reveal .sec-head,
  .js-reveal .event-card,
  .js-reveal .sponsor,
  .js-reveal .about-copy,
  .js-reveal .pillar,
  .js-reveal .carousel-wrap,
  .js-reveal .col-card,
  .js-reveal .newsletter-grid > *,
  .js-reveal .cta .sec-pad > *,
  .js-reveal .company-card,
  .js-reveal .news-card,
  .js-reveal .job-card,
  .js-reveal .event-header,
  .js-reveal .event-content,
  .js-reveal .error-msg {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
