
/* ---- reflow: collapse the fixed grids on narrow viewports (WCAG 1.4.10) ---- */
@media (max-width: 900px){
  [style*="grid-template-columns"]{ grid-template-columns:1fr !important; gap:28px !important; }
  [style*="padding: 42px 32px"],[style*="padding: 74px 32px"],
  [style*="padding: 64px 32px"],[style*="padding: 56px 32px"]{
    padding-left:20px !important; padding-right:20px !important; }
  header nav{ flex-wrap:wrap; gap:14px !important; }
  h1{ font-size:clamp(30px,7.5vw,52px) !important; }
  img,video{ max-width:100%; height:auto; }
}
@media (max-width: 620px){
  [style*="display: flex"]{ flex-wrap:wrap; }
  dl[style*="display: flex"] > div{ flex:1 1 100% !important; }
}
html,body{ max-width:100%; overflow-x:hidden; }

/* ---- focus visibility (WCAG 2.4.7). The exports set inline `outline:none` on every
       input and select and never replace it, so a keyboard user is invisible. This is
       the same rule the app already ships at app.py:5885; it was lost in the rebuild. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,[tabindex]:focus-visible{
  outline:3px solid #8CA85C !important; outline-offset:3px; border-radius:2px; }

/* ---- reduced motion (WCAG 2.3.3 / 2.2.2). No prefers-reduced-motion rule existed
       anywhere in the built site. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important; }
  video{ display:none; }
  .df-poster{ display:block !important; }
}

/* ---- contrast: the 11px mono eyebrow measured 4.12:1 on #F3F1EA, under the 4.5:1
       required for text below 18.66px (WCAG 1.4.3). #5F6A33 clears it everywhere. */
[style*="color: #8CA85C"]{ color:#5F6A33 !important; }
[data-theme="dark"] [style*="color: #8CA85C"],
section[style*="background: #12171A"] [style*="color: #8CA85C"],
footer [style*="color: #8CA85C"]{ color:#8CA85C !important; }
