/* Accessibility support shared by every public page (2026-10-21). */

/* Strong, consistent keyboard focus indicator (WCAG 2.4.7). */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
video:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid #ffbf00 !important;
  outline-offset: 2px !important;
}

/* Skip link must sit above the fixed navigation when focused. */
.skip-link:focus, .skip-link:focus-visible { z-index: 2147483001 !important; top: 1rem !important; transition: none !important; }

/* Footer links wrap on narrow screens instead of being clipped (WCAG 1.4.10 reflow). */
.footer-links { flex-wrap: wrap; row-gap: 0.75rem; }
/* Grid items sized by long unbreakable strings (email address, large headings) must be allowed to shrink. */
.contact-inner > *, .hero-content > *, .video-grid > *, .video-card-body > * { min-width: 0; }
.contact-detail-value, .video-label, .embed-credit, .hero-title { overflow-wrap: anywhere; }
main a, main p, main li, main h2, main h3, main span { overflow-wrap: anywhere; }
.update-card > *, .update-body > *, .embed-grid > *, .embed-card > * { min-width: 0; }
.embed-grid { grid-template-columns: minmax(0, 1fr) !important; }
.embed-card { max-width: 100%; }
iframe.instagram-media { min-width: 0 !important; max-width: 100% !important; }
.hero-stats { flex-wrap: wrap; row-gap: 1rem; }
@media (max-width: 600px) {
  /* Stack the two-column name row in the contact form. */
  .contact-form div[style*="grid-template-columns"] { grid-template-columns: minmax(0, 1fr) !important; }
  .contact-form .form-group, .contact-form .form-input, .contact-form .form-textarea { min-width: 0; width: 100%; }
}

/* Invalid form fields are marked by text and colour, not colour alone. */
[aria-invalid="true"] { border-color: #f0a59b !important; }
.field-error { display: block; margin-top: 0.35rem; font-size: 12px; color: #f6b8ae; }

.sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ── On-site accessibility controls ── */
.heh-a11y { position: fixed; left: 16px; bottom: 16px; z-index: 2147483000; font-family: 'Montserrat', Arial, sans-serif; }
.heh-a11y-toggle {
  width: 52px; height: 52px; border-radius: 50%; border: 2px solid #c9a84c;
  background: #080f1e; color: #e2c97e; cursor: pointer; padding: 0;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 10px rgba(0,0,0,.45);
}
.heh-a11y-toggle:hover { background: #132040; color: #fff; }
.heh-a11y-panel {
  position: absolute; left: 0; bottom: 64px; width: 240px; max-width: calc(100vw - 32px);
  background: #fff; color: #111; border: 2px solid #111; border-radius: 10px;
  padding: 12px; box-shadow: 0 4px 16px rgba(0,0,0,.35);
}
.heh-a11y-panel[hidden] { display: none; }
.heh-a11y-title { font-size: 16px; font-weight: 700; margin: 0 0 8px; color: #111; letter-spacing: 0; text-transform: none; }
.heh-a11y-row { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 8px; }
.heh-a11y-size { font-size: 14px; color: #111; }
.heh-a11y-panel button {
  font: 600 15px/1.2 Arial, sans-serif; color: #111; background: #f1f1f1;
  border: 2px solid #111; border-radius: 6px; padding: 7px 10px; cursor: pointer;
  letter-spacing: 0; text-transform: none;
}
.heh-a11y-panel button[disabled] { opacity: .45; cursor: default; }
.heh-a11y-opt { display: block; width: 100%; text-align: left; margin-top: 6px; }
.heh-a11y-opt[aria-pressed="true"] { background: #080f1e; color: #fff; }
.heh-a11y-opt[aria-pressed="true"]::after { content: " \2713"; }
.heh-a11y-more { display: block; margin-top: 10px; font-size: 14px; color: #0b3d91 !important; text-decoration: underline !important; }

/* Bigger text: scale the page, not the controls. */
html.heh-zoomed body > *:not(.heh-a11y) { zoom: var(--heh-zoom, 1); }

/* High contrast. */
html.heh-contrast body,
html.heh-contrast body > *:not(.heh-a11y),
html.heh-contrast body > *:not(.heh-a11y) * {
  background-color: #fff !important; background-image: none !important;
  color: #000 !important; border-color: #000 !important;
  text-shadow: none !important; box-shadow: none !important;
}
html.heh-contrast body > *:not(.heh-a11y) a,
html.heh-contrast body > *:not(.heh-a11y) a * { color: #0000c8 !important; text-decoration: underline !important; }
html.heh-contrast body > *:not(.heh-a11y) img,
html.heh-contrast body > *:not(.heh-a11y) video { opacity: 1 !important; }

/* Underline links. */
html.heh-links body > *:not(.heh-a11y) a { text-decoration: underline !important; }

/* Pause animations and motion. */
html.heh-still *, html.heh-still *::before, html.heh-still *::after {
  animation-play-state: paused !important; animation-duration: 0s !important;
  transition-duration: 0s !important; scroll-behavior: auto !important;
}
html.heh-still .reveal, html.heh-still .reveal-stagger, html.heh-still .reveal-stagger > *,
html.heh-still .fade-up { opacity: 1 !important; transform: none !important; }

@media (max-width: 600px) {
  .heh-a11y { left: 12px; bottom: 12px; }
  .heh-a11y-toggle { width: 46px; height: 46px; }
  .heh-a11y-panel { bottom: 56px; }
}
