/* ZincArt — Modular CSS for View Transitions + animation polish
 * Loaded after palette.css. Doesn't touch any block markup.
 */

/* View Transitions API — instant swap (no animation).
 *
 * Page wrapper (navbar, footer, backgrounds) MUST appear in its final
 * position immediately. Only the per-element entry animations (text,
 * cards) animate via GSAP. Disable any movement on the root snapshot. */
@view-transition { navigation: auto; }

::view-transition-old(root),
::view-transition-new(root) {
  animation: none !important;
  /* No transform, no opacity change — the new snapshot just replaces
     the old one. Browser handles it as an instant atomic swap. */
}

/* Hover micro-animations (CSS only, complement GSAP scroll work) */
main a.bg-primary,
main a.bg-whatsapp,
main button.bg-primary {
  transition: transform 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
  will-change: transform;
}
main a.bg-primary:hover,
main a.bg-whatsapp:hover,
main button.bg-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px -8px rgb(13 153 255 / 0.4);
}
main a.bg-primary:active,
main a.bg-whatsapp:active {
  transform: translateY(0);
  transition-duration: 0.05s;
}

/* Card lift refinement */
main a.group {
  will-change: transform;
}

/* Smooth scroll for in-page anchors */
html {
  scroll-behavior: smooth;
}

/* Respect prefers-reduced-motion globally */
@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none !important;
  }
  main a.bg-primary,
  main a.bg-whatsapp,
  main button.bg-primary,
  main a.group {
    transition: none !important;
  }
  html {
    scroll-behavior: auto;
  }
}
