/* Shared accessibility repairs. Load after the visual stylesheets. */
:root { --accessible-muted: #455d6d; }

/* A two-colour indicator remains visible on both pale and dark surfaces. */
:is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid #0b213a;
  outline-offset: 3px;
  box-shadow: 0 0 0 3px #fff, 0 0 0 6px #0b213a;
}
.skip { position: fixed; left: 1rem; max-width: calc(100% - 2rem); z-index: 10000; }
.skip:focus { top: 1rem; }
main:focus { outline: none; }

/* Subtle labels still need sufficient contrast at their small text sizes. */
.path-no,
.filter-count,
.cooperation-grid .eyebrow,
.partner-content .section:not(.section-dark) .eyebrow,
.partner-content .muted { color: var(--accessible-muted); }
.cooperation-state { color: #455d6d; }
.footer, .footer-bottom { font-size: .8125rem; }
.footer a:not(.brand), .footer-bottom > div > a { font-size: .8125rem; }
.footer-top > div > p { font-size: .875rem; }
.footer h2 { font-size: .9375rem; }

/* Generous control areas and visible links; inline text links keep their flow. */
.header nav a,
.menu-toggle,
.filters button,
.tabs button,
.footer a,
.footer button,
.text-link,
.flow-steps a { min-height: 44px; }
.text-link, .flow-steps a { padding-block: 10px; }
.footer a, .footer button { align-content: center; }
.footer button { font: inherit; }
.partner-content .copy a:not(.button),
.partner-content .card p a,
.contact-note p a { text-decoration: underline; text-underline-offset: .18em; }
.tabs { flex-wrap: wrap; overflow: visible; gap: 8px 24px; }
.tabs button { white-space: normal; text-align: start; }
html:not(.js-enabled) .tabs { display: none; }
html:not(.js-enabled) [role="tabpanel"][hidden] { display: block !important; margin-top: 2rem; }

/* Allow content to reflow at a narrow viewport or a high zoom level. */
.wrap > *,
.projects-grid > *,
.cooperation-grid > *,
.flow-steps > *,
.footer-top > *,
.partner-hero-grid > *,
.partner-content .grid > *,
.partner-content .longform-grid > *,
.partner-content .product-shell > *,
.join-grid > * { min-width: 0; }
h1, h2, h3, p, li, .actions, .footer a { overflow-wrap: anywhere; }
.actions > * { max-width: 100%; }
.button { white-space: normal; }
.project, .cooperation-card { scroll-margin-top: 1.5rem; }

@media (max-width: 900px) {
  /* Navigation is available even if JavaScript fails or is disabled. */
  .header-inner { flex-wrap: wrap; padding-bottom: 1rem; }
  .header nav { display: flex; position: static; width: 100%; flex-wrap: wrap; padding: .5rem 0; }
  .menu-toggle { display: none; }
  .js-enabled .header-inner { flex-wrap: nowrap; padding-bottom: 0; }
  .js-enabled .menu-toggle { display: block; }
  .js-enabled .header nav { display: none; position: absolute; padding: 20px 32px; max-height: calc(100dvh - 90px); overflow-y: auto; }
  .js-enabled .header nav[data-open="true"] { display: flex; }
}
@media (max-width: 650px) {
  .js-enabled .header nav { padding: 20px; max-height: calc(100dvh - 80px); }
  .footer-bottom > div { gap: 12px 20px; }
}
@media (max-width: 360px) {
  .path-grid { grid-template-columns: minmax(0, 1fr); }
  .path-grid > a { min-height: 0; padding-bottom: 1.5rem; }
  .path-target { margin-top: 1rem; }
  .footer-top { grid-template-columns: minmax(0, 1fr); }
  .footer-top > div:first-child { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .button:hover { transform: none; }
}
@media (forced-colors: active) {
  :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid Highlight;
    box-shadow: none;
  }
  .filters button[aria-pressed="true"], .tabs button[aria-selected="true"] { border: 2px solid Highlight; }
}
