/* Site fixes loaded after the Next.js stylesheet on every page.

   1) Gradient headings: solid colour fallback so text never disappears when the
      browser cannot paint background-clip:text.
   2) Reveal: the site's .reveal elements start at opacity 0 and rely on a class
      that React can overwrite, so titles flashed and vanished. Instead, play a
      short entrance animation whose end state is fully visible. Nothing depends
      on a JS class, so the text always stays visible. */

.text-gradient { color: hsl(var(--primary)); }
@supports ((background-clip: text) or (-webkit-background-clip: text)) {
  .text-gradient { color: transparent; }
}

@keyframes pt-rise {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}
.reveal {
  opacity: 1;
  transform: none;
  animation: pt-rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@media (prefers-reduced-motion: reduce) {
  .reveal { animation: none; opacity: 1; transform: none; }
}
