/* ─── Scroll Reveal Initial States ───
   Only hide reveal elements when JS is active. If JS fails to load or runs
   late, content is visible by default — better for SEO crawlers, screenshots,
   and accessibility. */

html.js-active .reveal-up,
html.js-active .reveal-left,
html.js-active .reveal-right,
html.js-active .reveal-scale {
  opacity: 0;
  will-change: opacity, transform;
}

html.js-active .reveal-up    { transform: translateY(60px); }
html.js-active .reveal-left  { transform: translateX(-60px); }
html.js-active .reveal-right { transform: translateX(60px); }
html.js-active .reveal-scale { transform: scale(0.92); }

.reveal-active {
  opacity: 1 !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
  transition:
    opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ─── Category Badge (news/featured cards) ─── */

.category-badge {
  display: inline-block;
  padding: 5px 14px;
  background: #2D8B4E;
  color: #ffffff;
  border-radius: 20px;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-family: "Plus Jakarta Sans", sans-serif;
}

/* ─── Footer wave divider ─── */

.footer-wave-divider {
  margin-bottom: -1px;
  line-height: 0;
}
.footer-wave-divider svg {
  display: block;
}

/* ─── Shared keyframes ─── */

@keyframes float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50%      { transform: translateY(-20px) rotate(2deg); }
}

@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 4px 14px rgba(232, 168, 56, 0.35); }
  50%      { box-shadow: 0 8px 28px rgba(232, 168, 56, 0.55); }
}

/* ─── Reduced motion ─── */

@media (prefers-reduced-motion: reduce) {
  .reveal-up,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    opacity: 1 !important;
    transform: none !important;
  }
}
