/* Site-wide Traybite motion, borrowed from AlienGuards and toned down.
   Merges with existing .rv / brand.js (same .in class). Traybite colors only.
   No glitch, no scan, no layout shift. */
@media (prefers-reduced-motion: no-preference) {
  /* Retune existing reveals toward AG's ag-rv easing and travel, keep .in hook */
  .rv, .rv-l, .rv-r {
    transform: translate3d(0, 1.8rem, 0);
    transition: opacity .8s cubic-bezier(.2, .7, .2, 1),
                transform .8s cubic-bezier(.2, .7, .2, 1);
  }
  .rv.in, .rv-l.in, .rv-r.in { opacity: 1; transform: none; }

  /* Extra reveals for headings/cards brand.js does not already stagger */
  .sb-mrev {
    opacity: 0;
    transform: translate3d(0, 1.8rem, 0);
    transition: opacity .8s cubic-bezier(.2, .7, .2, 1) var(--d, 0s),
                transform .8s cubic-bezier(.2, .7, .2, 1) var(--d, 0s);
  }
  .sb-mrev.is-in { opacity: 1; transform: none; }
}

/* Button sheen + soft Traybite-blue ring (AG agSheen / btn glow, recolored) */
@keyframes sb-ag-sheen {
  0%, 78% { transform: translateX(-130%); }
  100% { transform: translateX(130%); }
}
.btn {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.btn::after {
  content: "";
  position: absolute;
  inset: -20% -45%;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%);
  transform: translateX(-130%);
  pointer-events: none;
  z-index: 1;
}
@media (prefers-reduced-motion: no-preference) {
  .btn::after { animation: sb-ag-sheen 5.8s ease-in-out 1.4s infinite; }
}
.btn:hover, .btn:focus-visible {
  box-shadow: 0 0 0 1px rgba(31, 95, 209, .35), 0 10px 28px -10px rgba(31, 95, 209, .35);
}
.btn-line:hover, .btn-line:focus-visible {
  box-shadow: none;
}
.btn-white:hover, .btn-white:focus-visible {
  box-shadow: 0 0 0 1px rgba(31, 95, 209, .28), 0 10px 28px -12px rgba(11, 31, 58, .25);
}

/* Gentle bob on product imagery. Hero already uses sb-float — leave it alone. */
@keyframes sb-ag-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}
@media (prefers-reduced-motion: no-preference) {
  .tile img,
  .sig img, .file img, .erow img, .eimg img,
  .opt .th img,
  img.is-render:not(.hero-media img),
  .pgrid .tile img {
    animation: sb-ag-bob 6.5s ease-in-out .8s infinite;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rv, .rv-l, .rv-r, .rv.in, .rv-l.in, .rv-r.in,
  .sb-mrev, .sb-mrev.is-in,
  .tile img, .sig img, .file img, .erow img, .eimg img,
  .opt .th img, img.is-render, .pgrid .tile img,
  .btn::after {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
}
