/* ===== assets/css/components/links.css ===== */
/* v50 — the underline is drawn, not switched on.
   `text-decoration` cannot be animated in a way that reads as a gesture; a pseudo-element can.
   `transform-origin` is set in LOGICAL terms so the line grows from the start of the text — on
   an RTL page that is the right-hand end, and a physical `left` would have it growing backwards
   out of the wrong side of the word. */
.link-sweep, .site-footer__nav a, .contact__v, .site-footer__credit a, .faq__aside-cta {
  position: relative;
  text-decoration: none;
  border-block-end: 0 !important;      /* the static rules these replace */
}
.link-sweep::after, .site-footer__nav a::after, .contact__v::after,
.site-footer__credit a::after, .faq__aside-cta::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  inset-block-end: -2px;
  block-size: 1px;
  background: currentColor;
  transform: scaleX(1);
  transform-origin: right center;
  transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}
[dir="ltr"] .link-sweep::after { transform-origin: left center; }
/* out first, then back in from the other end — the line does not just fade, it travels */
.link-sweep:hover::after, .site-footer__nav a:hover::after, .contact__v:hover::after,
.site-footer__credit a:hover::after, .faq__aside-cta:hover::after {
  animation: link-sweep 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes link-sweep {
  0%   { transform: scaleX(1); transform-origin: left center; }
  49%  { transform: scaleX(0); transform-origin: left center; }
  51%  { transform: scaleX(0); transform-origin: right center; }
  100% { transform: scaleX(1); transform-origin: right center; }
}
.site-footer__nav a::after { transform: scaleX(0); }
.site-footer__nav a:hover::after { animation: none; transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) {
  .link-sweep::after, .site-footer__nav a::after, .contact__v::after,
  .site-footer__credit a::after, .faq__aside-cta::after { transition: none; animation: none !important; }
}
