/* =========================================================
   WCAG 2.1 AA accessibility overrides for universal-theme
   ========================================================= */

/* Screen-reader-only utility */
.sr-only,
.screen-reader-text {
    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;
}

/* Skip link — visible on focus */
.skip-link {
    position: absolute;
    top: -100px;
    left: 8px;
    z-index: 100000;
    background: #0a1735;
    color: #fff;
    padding: 12px 24px;
    font-weight: 700;
    font-size: 1rem;
    text-decoration: underline;
    border: 2px solid #fff;
    border-radius: 4px;
    transition: top 0.2s ease-in-out;
}
.skip-link:focus,
.skip-link:focus-visible {
    top: 8px;
    outline: 3px solid #ffbf00;
    outline-offset: 2px;
}

/* -----------------------------------------------------------
   Global focus-visible styles (WCAG 2.4.7)
   ----------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
summary:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 5px rgba(255, 191, 0, 0.35) !important;
    border-radius: 3px;
}

/* Slick slider slides can catch focus; give them a visible ring */
.slick-slide:focus-visible,
.slick-slide *:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* Remove default focus outline suppression from the theme */
.slick-slide:focus,
.slick-list:focus,
.o-button:focus,
.o-input:focus,
a:focus,
.c-slider-banner a:focus,
.c-offer-tile a:focus {
    outline: revert;
}

/* -----------------------------------------------------------
   Header / menu toggle
   ----------------------------------------------------------- */
.c-header__toggle-nav {
    background: transparent;
    border: 0;
    padding: 6px;
    cursor: pointer;
    color: inherit;
}
/* Preserve theme's original desktop visibility rule (button replaced <a>) */
@media (min-width: 62em) {
    .c-header__toggle-nav {
        display: none;
    }
}
.c-header__toggle-nav:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* Nav link should keep readable focus indicator */
.c-main-nav__link:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
    background: rgba(255, 255, 255, 0.15);
}

/* -----------------------------------------------------------
   FAQ – accordion buttons
   ----------------------------------------------------------- */
.c-faq__question-title-button {
    all: unset;
    display: block;
    width: 100%;
    cursor: pointer;
    padding-right: 40px;
    position: relative;
    font-style: italic;
    font-size: 1.125rem;
    line-height: 1.5;
    color: inherit;
    transition: color 0.3s ease-out;
    text-align: left;
}
.c-faq__question-title-button:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

.c-faq__nav-item[role="tab"] {
    outline: none;
}
.c-faq__nav-item[role="tab"]:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* -----------------------------------------------------------
   Language switcher
   ----------------------------------------------------------- */
.c-lang-switcher__item a {
    text-transform: uppercase;
}
.c-lang-switcher__item a:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* -----------------------------------------------------------
   Scroll-to-top button
   ----------------------------------------------------------- */
.c-scroll-to-top {
    background: transparent;
    border: 0;
    padding: 8px;
    cursor: pointer;
    color: inherit;
}
.c-scroll-to-top:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* -----------------------------------------------------------
   Slick slider – arrows / dots
   ----------------------------------------------------------- */
.slick-arrow:focus-visible,
.slick-dots li button:focus-visible {
    outline: 3px solid #ffbf00 !important;
    outline-offset: 2px !important;
}

/* Ensure slider containers announce as regions */
[role="region"][aria-roledescription="carousel"] {
    position: relative;
}

/* -----------------------------------------------------------
   Video block – always show controls
   ----------------------------------------------------------- */
.c-video__player {
    max-width: 100%;
}

/* -----------------------------------------------------------
   Forms – error messages, required indicator
   ----------------------------------------------------------- */
.wpcf7-not-valid-tip,
.wpcf7-response-output {
    color: #b30000 !important;
    font-weight: 600;
}
.wpcf7-not-valid-tip {
    display: block;
    margin-top: 4px;
    font-size: 0.875rem;
}
.wpcf7 label {
    display: block;
    margin-bottom: 4px;
    font-weight: 600;
}
.wpcf7-form-control-wrap {
    display: block;
}

/* Required indicator */
label .required,
label.required::after {
    color: #b30000;
    font-weight: 700;
}

/* -----------------------------------------------------------
   Reduced motion (WCAG 2.3.3 / 2.2.2)
   ----------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
    .js-animation,
    [class*="animate__"] {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* -----------------------------------------------------------
   High-contrast forced-colors mode
   ----------------------------------------------------------- */
@media (forced-colors: active) {
    .o-button,
    .c-header__toggle-nav,
    .c-scroll-to-top {
        border: 1px solid CanvasText;
    }
}

/* -----------------------------------------------------------
   Ensure hidden decorative icons stay hidden from AT
   ----------------------------------------------------------- */
.o-icon[aria-hidden="true"] {
    speak: none;
}

/* -----------------------------------------------------------
   Inline links in body content – underline for readability (WCAG 1.4.1)
   Footer/nav links intentionally left un-styled (design choice).
   ----------------------------------------------------------- */
.o-mce a,
.c-post-single__content a,
.c-donation__content a {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* -----------------------------------------------------------
   Menu open state on <body>
   ----------------------------------------------------------- */
.is-nav-open .c-header__toggle-nav {
    color: inherit;
}
