/* =====================================================================
   Accessibility enhancements (WCAG 2.2 AA)
   Loaded AFTER css/style.css so these rules win the cascade.
   style.css line ~79 sets `*, *:hover, *:focus { outline:none !important; }`
   which removes all focus indicators site-wide; the :focus-visible rules
   below have higher specificity AND !important to restore them.
   ===================================================================== */

/* --- 2.4.7 Focus Visible: restore a clear, high-contrast focus ring --- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.hamburger-menu:focus-visible,
.mobile-nb:focus-visible {
    outline: 3px solid #9ecbe6 !important;
    outline-offset: 2px !important;
    border-radius: 2px;
    box-shadow: 0 0 0 2px #0a0a0a, 0 0 0 5px #9ecbe6 !important;
}

/* Fallback for browsers without :focus-visible support */
a:focus,
button:focus,
input:focus,
textarea:focus,
select:focus,
.hamburger-menu:focus {
    outline: 3px solid #9ecbe6 !important;
    outline-offset: 2px !important;
}
/* Suppress the fallback ring when the element was focused by pointer
   (browsers that DO support :focus-visible). */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
input:focus:not(:focus-visible),
textarea:focus:not(:focus-visible),
select:focus:not(:focus-visible),
.hamburger-menu:focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none !important;
}

/* --- 2.4.1 Bypass Blocks: skip-to-content link --- */
.skip-to-content {
    position: absolute;
    left: 8px;
    top: -60px;
    z-index: 100000;
    padding: 12px 20px;
    background: #0a0a0a;
    color: #ffffff;
    border: 2px solid #9ecbe6;
    border-radius: 0 0 6px 6px;
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
    transition: top 0.2s ease-in-out;
}
.skip-to-content:focus {
    top: 0;
    color: #ffffff;
}

/* --- Visually-hidden utility (for screen-reader-only labels) --- */
.sr-only {
    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;
}

/* --- 2.5.8 Target Size (Minimum): ensure interactive controls are
       at least 24x24 CSS px with adequate spacing.
       NB: do NOT set `display` on `.mobile-nb` here — the theme toggles it
       between none/flex per breakpoint and overriding it would reveal the
       hamburger on desktop. --- */
.nav-links .extra-links a,
.footer-socials a {
    min-width: 24px;
    min-height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.hamburger-menu {
    /* reset native <button> chrome so the icon looks unchanged; keep the
       theme's flex/dimension rules (which are more specific) intact. */
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
    min-width: 24px;
    min-height: 24px;
}

/* --- 1.4.3 Contrast (Minimum): lift low-contrast greys used on light
       backgrounds (the NAICS / contract tables used #888 ~3.5:1). --- */
.naics-muted,
.table-muted {
    color: #595959 !important; /* 7:1 on #fff, 6.6:1 on #f9f9f9 */
}

/* Visible required-field marker colour with sufficient contrast */
.required-mark {
    color: #d24b4b;
}
