/* Prygenix motion layer (2026-10-17), loaded on every page after site.css / the home bundle.
   motion.js adds html.pgx-motion only when the visitor allows motion; without it nothing here moves. */

/* ---------- hero constellation (canvas added by motion.js) ---------- */
.pgx-net {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
  opacity: 0;
  transition: opacity 1.2s ease;
}
.pgx-net.on { opacity: 1; }
.page-hero .pgx-net,
#hero .pgx-net { z-index: 1; }

/* ---------- menu: a gold line slides in under the hovered item ---------- */
.nav-item > a,
.nav-dropdowns .nav-item > a,
.nav-dropdowns .nav-item > button { position: relative; }
.nav-item > a:not(.active)::after,
.nav-dropdowns .nav-item:not(:first-child) > a::after,
.nav-dropdowns .nav-item:not(:first-child) > button::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -6px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, #d4af37, #2d8cff);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.nav-item:hover > a::after,
.nav-dropdowns .nav-item:hover > a::after,
.nav-dropdowns .nav-item:hover > button::after { transform: scaleX(1); }
.dropdown a,
.nav-dropdowns .dropdown a { transition: color 0.2s, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1); }
.dropdown a:hover,
.nav-dropdowns .dropdown a:hover { transform: translateX(4px); }

/* ---------- buttons: magnetic pull (motion.js sets `translate`) + light sweep on the home buttons ---------- */
.pgx-magnet { transition: translate 0.35s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.3s, background-color 0.3s, color 0.3s, border-color 0.3s; }
.pgx-shine { position: relative; overflow: hidden; isolation: isolate; }
.pgx-shine::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.45) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.pgx-shine:hover::before { transform: translateX(120%); }
.pgx-shine:hover { box-shadow: 0 10px 30px rgba(212, 175, 55, 0.3); }

/* ---------- cards lift; their icons and titles respond ---------- */
.pgx-motion .card,
.pgx-motion .feature,
.pgx-motion .product-card,
.pgx-motion .contact-item,
.pgx-motion [data-spot] { transition: translate 0.4s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.4s, border-color 0.3s; }
.pgx-motion .card:hover,
.pgx-motion .feature:hover,
.pgx-motion .product-card:hover,
.pgx-motion .contact-item:hover,
.pgx-motion [data-spot]:hover { translate: 0 -5px; box-shadow: 0 20px 44px rgba(0, 0, 0, 0.45); }
.feature strong,
.card h3,
.product-card h3 { transition: color 0.3s; }
.feature:hover strong,
.card:hover h3,
.product-card:hover h3 { color: #d4af37; }
[data-spot] svg,
.contact-item svg,
.ci-icon { transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1); }
[data-spot]:hover svg,
.contact-item:hover svg,
.contact-item:hover .ci-icon { transform: rotate(-8deg) scale(1.15); }

/* ---------- pictures ---------- */
.gallery-item { overflow: hidden; }
.gallery-item img { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1), filter 0.6s; }
.gallery-item:hover img { transform: scale(1.06); filter: saturate(1.15); }

/* ---------- section titles: a gold rule draws in under eyebrows as they appear ---------- */
.pgx-motion .eyebrow { position: relative; }
.pgx-motion .section-head .eyebrow::after,
.pgx-motion .page-hero .eyebrow::after {
  content: "";
  display: block;
  width: 36px;
  height: 2px;
  margin-top: 8px;
  border-radius: 2px;
  background: linear-gradient(90deg, #d4af37, transparent);
  transform: scaleX(0);
  transform-origin: 0 50%;
  animation: pgxRule 0.9s cubic-bezier(0.22, 1, 0.36, 1) 0.5s forwards;
}
.pgx-motion .section-head.center .eyebrow::after,
.pgx-motion .text-center .eyebrow::after { margin-left: auto; margin-right: auto; transform-origin: 50% 50%; }
@keyframes pgxRule { to { transform: scaleX(1); } }

/* ---------- inner-page hero: headline words rise in one after another ---------- */
.pgx-word { display: inline-block; opacity: 0; transform: translateY(0.45em); animation: pgxWord 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards; }
@keyframes pgxWord { to { opacity: 1; transform: none; } }

/* ---------- footer links nudge ---------- */
footer a,
.footer a { transition: color 0.25s, translate 0.25s; }
.footer-grid a:hover,
footer ul a:hover { translate: 3px 0; }

@media (prefers-reduced-motion: reduce) {
  .pgx-net { display: none; }
  .pgx-word { opacity: 1; transform: none; animation: none; }
  .pgx-shine::before { display: none; }
  .gallery-item:hover img, .dropdown a:hover, .nav-dropdowns .dropdown a:hover { transform: none; }
}
