/* BVQ motion layer. Content leads; interactive controls carry feedback.
   Load after all composition styles. No content, layout or palette changes. */
:root {
  --bvq-ease: cubic-bezier(0.23, 1, 0.32, 1);
  --bvq-dur-xs: 100ms;
  --bvq-dur-sm: 120ms;
  --bvq-dur-md: 180ms;
  --bvq-dur-lg: 240ms;
}

/* Reading never waits for an entrance, including legal and operational data. */
html[data-reveal-ready] .reveal,
html[data-reveal-ready] .reveal.is-visible {
  opacity: 1;
  transform: none;
  transition: none;
  transition-delay: 0ms !important;
}
html[data-reveal-ready] .hero__content > *,
html[data-reveal-ready] .cat .cat__scene,
html[data-reveal-ready] .cat .cat__detail,
html[data-reveal-ready] .cat.is-visible .cat__scene,
html[data-reveal-ready] .cat.is-visible .cat__detail {
  animation: none;
  opacity: 1;
  transform: none;
}
html[data-reveal-ready] .gov-row :is(.conds li, .evid li, .gate__out, .zeros > div),
html[data-reveal-ready] .gov-row.is-visible :is(.conds li, .evid li, .gate__out, .zeros > div) {
  opacity: 1;
  transform: none;
  transition: none;
}
html[data-reveal-ready] .steps__item::before,
html[data-reveal-ready] .steps__item.is-visible::before {
  transform: scaleX(1);
  transition: none;
}

/* Informational illustrations are not buttons. Keep them still on hover. */
.card, .cat__art, .card__visual img { transition: none; }
.card:hover { box-shadow: none; }
.card:hover .card__visual img,
.cat:hover .cat__art { transform: none; }

/* Explicit press feedback; hover never displaces a target or its label. */
.button, .menu-toggle, .consent-close {
  transition: transform 120ms var(--bvq-ease);
  touch-action: manipulation;
}
.button > .icon, .text-link > .icon { transition: none; }
.button:hover > .icon,
.button--down:hover > .icon,
.text-link:hover > .icon,
.text-link--down:hover > .icon { transform: none; }
html[data-bvq-input="pointer"] :is(.button, .menu-toggle, .consent-close):active {
  transform: scale(.98);
}
:is(a, button, input, select, textarea, [tabindex]):focus-visible {
  transition: none;
  outline-color: var(--bvq-accent);
}
.contact-form :is(input, select, textarea) {
  caret-color: var(--bvq-accent);
  transition: none;
}
.consent-switch > span { transition: none; }
.consent-switch > span::before { transition: transform 120ms var(--bvq-ease); }
.skip { transition: none; }

/* Native dialog lifecycle and focus remain owned by the existing script. */
.consent-banner,
.consent-dialog[open] { animation: none; }
html[data-bvq-input="pointer"] .consent-dialog[open] {
  transition: opacity 180ms var(--bvq-ease);
}
@starting-style {
  html[data-bvq-input="pointer"] .consent-dialog[open] { opacity: 0; }
}

/* Keyboard interaction is immediate, including anchor navigation. */
html[data-bvq-input="keyboard"] { scroll-behavior: auto; }
html[data-bvq-input="keyboard"] :is(.button, .menu-toggle, .consent-close),
html[data-bvq-input="keyboard"] .consent-switch > span::before,
html[data-bvq-input="keyboard"] .consent-dialog[open] {
  animation: none;
  transition: none;
}
html[data-bvq-input="keyboard"] :is(.button, .menu-toggle, .consent-close):active {
  transform: none;
}

@media (prefers-reduced-motion: reduce) {

  html[data-bvq-input] :is(.button, .menu-toggle, .consent-close):active { transform: none; }
  .consent-dialog[open] { opacity: 1; transition: none !important; }
}


/* Scroll animations are finite WAAPI effects. No persistent hidden class or
   will-change layer; unsupported browsers retain the approved static layout. */
