/* =========================================================
   v72 – WCAG 2.2 AA hardening
   Loaded last so accessibility rules can safely override older layout rules.
   ========================================================= */

/* A clearly visible two-tone keyboard focus indicator that remains visible
   on both the light content surfaces and the dark green footer/hero. */
:where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"])):focus-visible{
  outline:3px solid #fff !important;
  outline-offset:2px !important;
  box-shadow:0 0 0 5px var(--green) !important;
}

/* Keyboard focus must not disappear beneath the sticky mobile header or
   temporary privacy banner. */
:where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"])){
  scroll-margin-top:92px;
  scroll-margin-bottom:calc(var(--consent-banner-space, 0px) + 28px);
}
html.consent-banner-open{
  scroll-padding-bottom:calc(var(--consent-banner-space, 0px) + 28px);
}

/* Inline links are not identified by colour alone. Navigation, cards and
   button-style links keep their established visual language. */
:where(p,li,dd,dt,figcaption) > a:not(.btn),
.legal-document a:not(.btn),
.content-scroll a:not(.btn),
.contact-detail-content a:not(.btn),
.contact-privacy-v36 a:not(.btn),
.speech-note a:not(.btn){
  text-decoration:underline;
  text-decoration-thickness:.08em;
  text-underline-offset:.16em;
}

/* Current location is visible independently from the gold underline. */
.mainnav a[aria-current="page"]{font-weight:800}
.mobile-menu a[aria-current="page"]{font-weight:800}

/* Accessible carousel controls. The large button is the actual hit target;
   the small circle is merely the visual marker. */
.hero-dots{
  align-items:center;
  gap:2px !important;
}
.hero-dot{
  appearance:none;
  width:32px;
  height:32px;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  display:grid;
  place-items:center;
  cursor:pointer;
  color:#fff;
}
.hero-dot::before{
  content:"";
  width:8px;
  height:8px;
  border:1px solid currentColor;
  border-radius:50%;
  background:transparent;
}
.hero-dot.active::before,
.hero-dot[aria-current="true"]::before{
  background:currentColor;
}
.hero-pause{
  position:absolute;
  z-index:7;
  bottom:10px;
  left:calc(50% + 48px);
  min-width:34px;
  height:34px;
  padding:0 8px;
  border:1px solid rgba(255,255,255,.78);
  border-radius:999px;
  background:rgba(8,38,33,.52);
  color:#fff;
  font-size:13px;
  font-weight:800;
  cursor:pointer;
  backdrop-filter:blur(4px);
}
.hero-pause[aria-pressed="true"]{background:rgba(8,38,33,.82)}

/* The cookie switch itself has a visible focus state although the native
   checkbox is visually hidden. */
.consent-switch:has(input:focus-visible) > span{
  outline:3px solid #fff;
  outline-offset:2px;
  box-shadow:0 0 0 5px var(--green);
}

/* A little more room for compact standalone targets in the footer. */
.footer-links > a,
.footer-consent-link{
  min-height:24px;
  display:inline-flex;
  align-items:center;
}

/* Reader status is announced separately; the canvases themselves stay a
   visual representation of the PDF. */
.reader-sr-title{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
.reader-counter[role="status"]{min-width:78px}
.reader-control:disabled,
.reader-edge:disabled{
  opacity:.32;
  cursor:not-allowed;
}

/* Errors linked to a form control should remain easy to perceive. */
[aria-invalid="true"]{
  border-color:#9d2f2f !important;
}
.field-error{
  color:#8b2525 !important;
  font-weight:700;
}

/* Do not force smooth movement on people who request reduced motion. */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto !important}
  *,*::before,*::after{
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    transition-delay:0ms !important;
  }
  .reader-spinner{animation:none !important;border-top-color:rgba(255,255,255,.18) !important}
}

@media(max-width:720px){
  .hero-pause{
    bottom:15px;
    left:auto;
    right:66px;
    min-width:40px;
    height:40px;
  }
  .hero-dot{width:36px;height:36px}
}
