/* Shared navigation feedback; image cards animate their name, not the photograph. */
:root { --navigation-link-hover:#4a78b0; }

/* Give inline names a transformable box without changing card/grid link layouts. */
:is(h2,h3,h4,p,li) > a:not(.button):not(:has(img)),
.breadcrumbs a { display:inline-block; }

/* Explicitly supersede the older orange and underlined link hover styles. */
body a[href]:not(.brand,.skip-link,.button,.icon-button):is(:hover,:focus-visible),
body a[href]:is(:hover,:focus-visible) :is(h2,h3,h4),
body :is(.catalog-card,.target-family-card,.product-card):has(> a:is(:hover,:focus-visible)) :is(h2,h3,h4) a {
  color:var(--navigation-link-hover) !important;
  text-decoration:none !important;
}

/* When a title has its own anchor, keep it synchronized with its image entrance. */
body a[href]:is(:hover,:focus-visible) :is(h2,h3,h4) a { color:inherit; }

@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  body a[href]:not(.brand,.skip-link,.button,.icon-button):not(:has(img,h2,h3,h4,p)):hover,
  body a[href]:hover :is(h2,h3,h4),
  body :is(.catalog-card,.target-family-card,.product-card):has(> a:hover) :is(h2,h3,h4) a,
  body .partner-cta:hover > span {
    animation:navigation-lift .36s ease-out both;
  }
}

/* Keyboard focus has the same color cue and a visible outline, without a jump. */
body a[href]:focus-visible { outline:2px solid var(--navigation-link-hover); outline-offset:4px; }

@media (prefers-reduced-motion:reduce) {
  body a[href],body a[href] :is(h2,h3,h4,span) { animation:none !important; }
}
