/* Shared interaction treatment; existing proposal colors remain authoritative. */
:root {
  --interaction-shadow: 0 7px 18px color-mix(in oklch, var(--navy) 15%, transparent);
  --interaction-tint: color-mix(in oklch, var(--red) 7%, var(--white));
}
.reading-progress {
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--red);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .1s linear;
  pointer-events: none;
}
.nav a { transition: color .2s ease; }
.nav a::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--red);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .22s ease;
}
.nav a.active { color: var(--red); }
.nav a.active::after, .nav a:hover::after, .nav a:focus-visible::after { transform: scaleX(1); }
a.btn, a.text-link, .contact-links a, .brand {
  transition: background .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
a.btn > span, a.text-link > span { display: inline-block; transition: transform .2s ease; }
a.btn:focus-visible { box-shadow: var(--interaction-shadow); }
a.btn:active { transform: translateY(0); box-shadow: none; }
.contact-links a { display: inline-block; text-underline-offset: 4px; }
/* Every remaining link in the document gets the same animated underline feedback. */
main a:not(.btn):not(.brand), .footer a:not(.brand) {
  position: relative;
  text-decoration: none;
  transition: color .2s ease;
}
main a:not(.btn):not(.brand)::after, .footer a:not(.brand)::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--red);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .22s ease;
}
main a:not(.btn):not(.brand):hover, .footer a:not(.brand):hover { color: var(--red); }
main a:not(.btn):not(.brand):hover::after, .footer a:not(.brand):hover::after,
main a:not(.btn):not(.brand):focus-visible::after, .footer a:not(.brand):focus-visible::after {
  transform: scaleX(1);
}
.mls-comp-link a.btn > span { transition: transform .22s ease; }
/* Clickable controls: comparable filters, sort headers, process tabs, expandable items. */
.segmented button, .timeline-tab, summary, th button, .expand-table {
  transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.segmented button:hover { color: var(--navy); background: white; box-shadow: 0 1px 4px #203e5015; }
.timeline-tab:hover { background: var(--interaction-tint); }
.timeline-tab:hover .step-circle { border-color: var(--red); color: var(--red); }
.summary-item summary:hover, summary:hover { color: var(--red); background: var(--interaction-tint); }
th button:hover { color: var(--red); }
.expand-table:hover { background: var(--interaction-tint); }
@media (hover: hover) {
  a.btn:hover { transform: translateY(-3px); box-shadow: var(--interaction-shadow); }
  a.btn:hover > span, a.text-link:hover > span, .mls-comp-link a.btn:hover > span { transform: translate(2px, -2px); }
  a.text-link:hover { transform: translateX(2px); }
  .contact-links a:hover { transform: translateY(-2px); text-decoration: underline; }
  .brand:hover { opacity: .8; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reading-progress, .nav a, .nav a::after, a.btn, a.text-link, a.btn > span, a.text-link > span, .contact-links a, .brand, main a:not(.btn):not(.brand), .footer a:not(.brand), main a:not(.btn):not(.brand)::after, .footer a:not(.brand)::after, .mls-comp-link a.btn > span, .segmented button, .timeline-tab, .timeline-tab .step-circle, summary, th button, .expand-table { transition: none; }
  a.btn:hover, a.text-link:hover, a.btn:hover > span, a.text-link:hover > span, .contact-links a:hover, .mls-comp-link a.btn:hover > span, .segmented button:hover { transform: none; }
}
@media print { .reading-progress { display: none; } }
