/*
Theme Name:   Avada Child - FILC
Theme URI:    https://floridasilc.org
Description:  Child theme for the Florida Independent Living Council. All customizations live here — Avada updates will never overwrite these changes. Targets WCAG 2.1 AA compliance.
Author:       FILC / Kevin McDaniel
Template:     Avada
Version:      1.5.0
Text Domain:  avada-child-filc
*/

/*
 * =====================================================================
 * FILC ACCESSIBILITY & DESIGN FIXES — WCAG 2.1 AA
 *
 * This is the single source of truth for all CSS.
 * Clear the Avada Customizer "Additional CSS" area after deploying
 * this child theme — everything from there has been consolidated here.
 *
 * CONTENTS
 *  1.  Focus Indicators          (WCAG 2.4.7 / 2.4.11)
 *  2.  Skip Link                 (WCAG 2.4.1)
 *  3.  Screen-Reader Utilities
 *  4.  Navigation — Desktop      (WCAG 2.4.3, 2.4.7)
 *  5.  Navigation — Mobile       (WCAG 1.4.3, 2.4.7)
 *  6.  Search Form               (WCAG 1.4.3, 4.1.2)
 *  7.  Color Contrast Overrides  (WCAG 1.4.3)
 *  8.  Typography Legacy Fixes
 *  9.  Text Reflow & Spacing     (WCAG 1.4.10 / 1.4.12)
 *  10. Reduced Motion            (WCAG 2.3.3)
 *  11. Error Messaging           (WCAG 3.3.1 / 3.3.3)
 *  12. Print Styles
 *  13. Touch Targets — Pagination (WCAG 2.5.5)
 *  14. Image Layout Shift         (CLS prevention)
 *  15. Forced Colors / High Contrast
 * =====================================================================
 */


/* ── CSS CUSTOM PROPERTIES ──────────────────────────────────────────────
 * Define once, reference everywhere. Override in :root if needed.
 */
:root {
    --focus-color:     #0057B8;
    --focus-light:     #5BA4F5;
    --nav-dark-bg:     #0E3D4A;
    --gap-white:       #ffffff;
    --link-color:      #0057B8;
    --error-color:     #b71c1c;
    --success-color:   #1b5e20;
}


/* ── 1. FOCUS INDICATORS ──────────────────────────────────────────────
 *
 * Avada strips :focus outlines globally via reset CSS.
 * The JS script also injects inline focus styles for keyboard users
 * (beating Avada's !important via inline specificity).
 * These rules provide the base layer — the JS layer handles edge cases.
 *
 * WCAG 2.4.7 — Focus Visible (AA)
 * WCAG 2.4.11 — Focus Appearance (AAA target, good practice)
 */

/* Suppress WebKit default ring */
:focus {
    -webkit-focus-ring-color: transparent;
}

/* Remove focus ring for mouse users */
:focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none !important;
}

/* Restore for keyboard users */
:focus-visible {
    outline: 3px solid #0057B8 !important;
    outline-offset: 3px !important;
}

/* Global fallback — catches older browsers that don't support :focus-visible */
*:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 3px !important;
}

/* Interactive elements — add white gap ring on focus AND hover
   EXCLUDES mobile nav (handled separately in §5 with light ring on dark bg) */
a:focus-visible,
a:hover,
button:focus-visible,
button:hover,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
summary:hover,
[role="button"]:focus-visible,
[role="button"]:hover,
[role="link"]:focus-visible,
[role="link"]:hover,
[role="menuitem"]:focus-visible,
[role="menuitem"]:hover,
[role="tab"]:focus-visible,
[role="tab"]:hover,
[tabindex]:focus-visible,
[tabindex]:hover {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
    border-radius: 2px;
}

/* Kill the global blue ring inside mobile/flyout nav — §5 handles it */
.fusion-mobile-nav-holder a:hover,
.fusion-mobile-nav-holder a:focus,
.fusion-mobile-nav-holder a:focus-visible,
.fusion-flyout-menu a:hover,
.fusion-flyout-menu a:focus,
.fusion-flyout-menu a:focus-visible,
.fusion-flyout-menu-content a:hover,
.fusion-flyout-menu-content a:focus,
.fusion-flyout-menu-content a:focus-visible {
    outline: 3px solid #5BA4F5 !important;
    outline-offset: -3px !important;
    box-shadow: none !important;
    color: #ffffff !important;
    background-color: #036897 !important;
}

/* Force ALL text inside flyout white — covers .menu-text, spans, everything */
.fusion-flyout-menu *,
.fusion-flyout-menu-content *,
.fusion-mobile-nav-holder * {
    color: #ffffff !important;
}


/* :focus fallback for browsers without :focus-visible */
a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus,
summary:focus,
[role="button"]:focus,
[role="link"]:focus,
[role="menuitem"]:focus,
[role="tab"]:focus,
[tabindex]:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
    border-radius: 2px;
}

/* Checkboxes and radio buttons */
input[type="checkbox"]:focus-visible,
input[type="radio"]:focus-visible,
input[type="checkbox"]:focus,
input[type="radio"]:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
}

/* Nav links sit on a dark background — use lighter ring */
.fusion-main-menu .fusion-menu-element-list a:focus-visible,
.fusion-main-menu li a:focus-visible,
#nav ul li a:focus-visible,
.fusion-secondary-menu a:focus-visible,
.fusion-mobile-menu-icons a:focus-visible,
.fusion-main-menu .fusion-menu-element-list a:focus,
.fusion-main-menu li a:focus,
#nav ul li a:focus,
.fusion-secondary-menu a:focus,
.fusion-mobile-menu-icons a:focus {
    outline: 3px solid #5BA4F5 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #0E3D4A, 0 0 0 5px #5BA4F5 !important;
    border-radius: 2px;
}

/* Social links in footer — 2-ring pattern on dark bg (WCAG 2.4.11 AAA) */
.fusion-social-links a:focus-visible {
    outline: 3px solid #5BA4F5 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #0E3D4A, 0 0 0 5px #5BA4F5 !important;
    border-radius: 50%;
}


/* ── 2. SKIP LINK ─────────────────────────────────────────────────────
 *
 * WCAG 2.4.1 — Bypass Blocks (AA)
 * Avada renders <a class="skip-link screen-reader-text" href="#content">
 */

.skip-link,
.screen-reader-text {
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
    color: #000 !important;
    background: #fff !important;
}

.skip-link:focus,
a[href="#content"]:focus {
    clip: auto !important;
    clip-path: none !important;
    height: auto !important;
    overflow: visible !important;
    position: fixed !important;
    top: 8px !important;
    left: 8px !important;
    width: auto !important;
    z-index: 99999 !important;
    background: #0E3D4A !important;
    color: #ffffff !important;
    padding: 10px 20px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    border-radius: 4px !important;
    text-decoration: none !important;
    box-shadow: 0 0 0 3px #5BA4F5 !important;
}


/* ── 3. SCREEN-READER UTILITIES ──────────────────────────────────────
 *
 * .sr-only — visually hidden, available to screen readers.
 * Used by the JS script when injecting labels.
 */

.sr-only,
.hal-newtab-notice,
.gt-sr-only {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
    color: #000 !important;
    background: #fff !important;
}

/* Visually-hidden label injected by JS for search input */
#hal-label-search {
    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;
}


/* ── 4. NAVIGATION — DESKTOP ──────────────────────────────────────────
 *
 * Keyboard dropdown behaviour is handled in the JS script.
 * These rules support the visual states that JS controls.
 *
 * WCAG 2.4.3 — Focus Order
 * WCAG 2.4.7 — Focus Visible
 */

/* Remove Avada's hover-triggered caret — replaced by JS toggle button */
.fusion-main-menu .fusion-caret,
.fusion-secondary-menu .fusion-caret {
    display: none !important;
}

/* Dropdown parents need relative positioning for toggle button */
.fusion-main-menu li.fusion-dropdown-menu,
.fusion-secondary-menu li.menu-item-has-children {
    position: relative !important;
}

/* Parent links get right padding to accommodate the JS toggle button */
.fusion-main-menu li.fusion-dropdown-menu > a,
.fusion-secondary-menu li.menu-item-has-children > a {
    padding-right: 28px !important;
}

/* Ensure focused menu items are visually prominent */
.fusion-menu > li > a:focus-visible,
.fusion-secondary-menu > li > a:focus-visible {
    background-color: rgba(0, 87, 184, 0.08);
    border-radius: 2px;
}

/* HAL submenu toggle button — injected by JS */
.hal-submenu-toggle {
    position: absolute !important;
    right: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 28px !important;
    background: transparent !important;
    border: none !important;
    cursor: pointer !important;
    padding: 0 !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: inherit !important;
    font-size: 0.85em !important;
    transition: opacity 0.15s !important;
    z-index: 1 !important;
}

.hal-submenu-toggle:hover {
    opacity: 1 !important;
}

.hal-submenu-toggle:focus-visible,
.hal-submenu-toggle:focus {
    outline: 3px solid #5BA4F5 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #0E3D4A, 0 0 0 5px #5BA4F5 !important;
    border-radius: 3px !important;
}

/* Dropdown submenu — closed by default, opened by JS only */
.fusion-main-menu li.fusion-dropdown-menu:not(:hover) > .sub-menu,
.fusion-secondary-menu li.menu-item-has-children:not(:hover) > .sub-menu {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.fusion-main-menu li[data-hal-open="true"] > .sub-menu,
.fusion-secondary-menu li[data-hal-open="true"] > .sub-menu {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}

/* Submenu link focus */
.fusion-main-menu .sub-menu a:focus-visible,
.fusion-secondary-menu .sub-menu a:focus-visible,
.fusion-main-menu .sub-menu a:focus,
.fusion-secondary-menu .sub-menu a:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
    border-radius: 2px !important;
}

/* Accordion / toggle */
.fusion-accordion .fusion-panel-title a:focus-visible,
.fusion-toggle .fusion-toggle-heading a:focus-visible,
.fusion-accordion .fusion-panel-title a:focus,
.fusion-toggle .fusion-toggle-heading a:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #0057B8 !important;
}


/* ── 5. NAVIGATION — MOBILE ───────────────────────────────────────────
 *
 * Force mobile-only nav below 1024px.
 * WCAG 1.4.3 — Contrast (text on dark background)
 */

@media screen and (max-width: 1024px) {

    /* Hide desktop nav, show mobile */
    .fusion-main-menu,
    .fusion-secondary-menu {
        display: none !important;
    }

    .fusion-mobile-menu-icons {
        display: flex !important;
    }

    .fusion-mobile-nav-holder {
        display: block !important;
    }

    /* Dark brand background */
    .fusion-mobile-nav-holder,
    .fusion-flyout-menu,
    .fusion-flyout-menu-content,
    .fusion-mobile-menu-overlay {
        background-color: #0a2642 !important;
    }

    /* Menu item links — force white text on EVERY state */
    .fusion-mobile-nav-holder .menu-item > a,
    .fusion-mobile-nav-holder .menu-item > a:link,
    .fusion-mobile-nav-holder .menu-item > a:visited,
    .fusion-mobile-nav-holder .menu-item > a:hover,
    .fusion-mobile-nav-holder .menu-item > a:focus,
    .fusion-mobile-nav-holder .menu-item > a:active,
    .fusion-flyout-menu .menu-item > a,
    .fusion-flyout-menu .menu-item > a:link,
    .fusion-flyout-menu .menu-item > a:visited,
    .fusion-flyout-menu .menu-item > a:hover,
    .fusion-flyout-menu .menu-item > a:focus,
    .fusion-flyout-menu .menu-item > a:active,
    .fusion-mobile-nav-holder .menu-item > a .menu-text,
    .fusion-flyout-menu .menu-item > a .menu-text {
        color: #ffffff !important;
        font-size: 16px !important;
        font-weight: 500 !important;
        padding: 16px 24px !important;
        display: flex !important;
        align-items: center !important;
        border-bottom: 1px solid rgba(255, 255, 255, 0.12) !important;
        text-decoration: none !important;
        min-height: 44px !important;
    }

    /* Hover state */
    .fusion-mobile-nav-holder .menu-item > a:hover,
    .fusion-flyout-menu .menu-item > a:hover {
        color: #ffffff !important;
        background-color: #036897 !important;
        padding-left: 30px !important;
        text-decoration: none !important;
    }

    /* Focus state */
    .fusion-mobile-nav-holder .menu-item > a:focus,
    .fusion-mobile-nav-holder .menu-item > a:focus-visible,
    .fusion-flyout-menu .menu-item > a:focus,
    .fusion-flyout-menu .menu-item > a:focus-visible {
        color: #ffffff !important;
        background-color: #036897 !important;
        outline: 3px solid #5BA4F5 !important;
        outline-offset: -3px !important;
        text-decoration: none !important;
    }

    /* Hover on mobile/flyout — light ring on dark bg, white text preserved */
    .fusion-mobile-nav-holder .menu-item > a:hover,
    .fusion-flyout-menu .menu-item > a:hover {
        outline: 3px solid #5BA4F5 !important;
        outline-offset: -3px !important;
        box-shadow: none !important;
        color: #ffffff !important;
        background-color: #036897 !important;
    }

    /* Active / current page */
    .fusion-mobile-nav-holder .current-menu-item > a,
    .fusion-mobile-nav-holder .current_page_item > a,
    .fusion-mobile-nav-holder .current-menu-ancestor > a,
    .fusion-flyout-menu .current-menu-item > a,
    .fusion-flyout-menu .current_page_item > a,
    .fusion-flyout-menu .current-menu-ancestor > a {
        color: #ffffff !important;
        background-color: #036897 !important;
        border-left: 4px solid #5BA4F5 !important;
        outline: 3px solid #5BA4F5 !important;
        outline-offset: -3px !important;
        box-shadow: none !important;
        text-decoration: none !important;
    }

    /* Submenu items */
    .fusion-mobile-nav-holder .sub-menu .menu-item > a,
    .fusion-mobile-nav-holder .sub-menu .menu-item > a:hover,
    .fusion-mobile-nav-holder .sub-menu .menu-item > a:focus,
    .fusion-flyout-menu .sub-menu .menu-item > a,
    .fusion-flyout-menu .sub-menu .menu-item > a:hover,
    .fusion-flyout-menu .sub-menu .menu-item > a:focus {
        color: #ffffff !important;
        padding-left: 36px !important;
        font-size: 15px !important;
        background-color: #0a2e38 !important;
        text-decoration: none !important;
    }

    .fusion-mobile-nav-holder .sub-menu .menu-item > a:hover,
    .fusion-flyout-menu .sub-menu .menu-item > a:hover {
        background-color: #036897 !important;
        padding-left: 42px !important;
    }

    /* Hamburger toggle button */
    .fusion-flyout-menu-toggle {
        display: flex !important;
        flex-direction: column !important;
        justify-content: center !important;
        gap: 5px !important;
        visibility: visible !important;
        opacity: 1 !important;
        padding: 8px !important;
        min-width: 44px !important;
        min-height: 44px !important;
        align-items: center !important;
    }

    /* Hamburger lines — dark on light header */
    .fusion-flyout-menu-toggle .fusion-toggle-icon-line {
        background-color: #0a2642 !important;
        height: 3px !important;
        width: 24px !important;
        display: block !important;
        border-radius: 2px !important;
    }

    /* Lines go white when menu is open */
    .fusion-flyout-menu-open .fusion-flyout-menu-toggle .fusion-toggle-icon-line,
    .fusion-flyout-menu .fusion-flyout-menu-toggle .fusion-toggle-icon-line {
        background-color: #ffffff !important;
    }

    /* X close / hamburger toggle — focus ring on hover + focus */
    .fusion-flyout-menu-toggle:hover,
    .fusion-flyout-menu-toggle:focus,
    .fusion-flyout-menu-toggle:focus-visible {
        outline: 3px solid #5BA4F5 !important;
        outline-offset: 2px !important;
        border-radius: 4px !important;
    }

    /* Page title bar — search form positioning */
    .fusion-page-title-bar {
        position: relative !important;
    }

    .fusion-page-title-bar .searchform,
    .fusion-page-title-bar form[role="search"],
    .fusion-page-title-bar .fusion-search-form {
        position: absolute !important;
        right: 10px !important;
        top: 50% !important;
        transform: translateY(-50%) !important;
        margin: 0 !important;
        width: auto !important;
    }

    .fusion-page-title-bar input.s[type="search"] {
        width: 140px !important;
        max-width: 140px !important;
    }

}

/* Flyout toggle — non-mobile (desktop fallback for Avada flyout mode) */
.fusion-flyout-menu-toggle {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.fusion-flyout-menu-toggle .fusion-toggle-icon-line {
    background-color: #0a2642 !important;
    height: 3px !important;
    width: 24px !important;
    display: block !important;
    border-radius: 2px !important;
}

.fusion-flyout-menu-open .fusion-flyout-menu-toggle .fusion-toggle-icon-line,
.fusion-flyout-menu .fusion-flyout-menu-toggle .fusion-toggle-icon-line {
    background-color: #ffffff !important;
}


/* ── 5b. ZOOM / REFLOW (WCAG 1.4.10) ─────────────────────────────────
 *
 * Avada handles the flyout overlay at normal zoom. These rules only
 * supplement Avada's behavior:
 *   - Full-screen overlay fix for the flyout at any zoom
 *   - White bg on X button and globe for contrast (WCAG 1.4.11)
 *   - At ≤320px (400%+ zoom) hide header so menu fills viewport
 */

/* Flyout open → full-screen overlay at all widths */
.fusion-flyout-menu-open .fusion-flyout-menu,
.fusion-flyout-menu-open .fusion-flyout-menu-content {
    position: fixed !important;
    inset: 0 !important;
    z-index: 999999 !important;
    overflow-y: auto !important;
    padding-top: 60px !important;  /* room for the X button */
}

/* X button — white bg, pinned top-right (WCAG 1.4.11 non-text contrast) */
.fusion-flyout-menu-open .fusion-flyout-menu-toggle {
    position: fixed !important;
    top: 8px !important;
    right: 8px !important;
    z-index: 1000000 !important;
    background: #ffffff !important;
    border: 2px solid #003366 !important;
    border-radius: 4px !important;
    padding: 6px !important;
}

.fusion-flyout-menu-open .fusion-flyout-menu-toggle .fusion-toggle-icon-line {
    background-color: #003366 !important;
}

.fusion-flyout-menu-open .fusion-flyout-menu-toggle:hover,
.fusion-flyout-menu-open .fusion-flyout-menu-toggle:focus {
    background: #e6eef7 !important;
    outline: 3px solid #5BA4F5 !important;
    outline-offset: 2px !important;
}

/* idioma.chat globe (#gt-globe-btn) — white bg when flyout is open */
body.fusion-flyout-menu-open #gt-globe-btn {
    background: #ffffff !important;
    border-color: #003366 !important;
    color: #003366 !important;
}

body.fusion-flyout-menu-open #gt-globe-btn svg {
    stroke: #003366 !important;
    color: #003366 !important;
    fill: none !important;
}


/* ── 200% zoom (~640px) — widget and search stacking ─────────────── */
@media screen and (max-width: 640px) {

    .fusion-page-title-bar .searchform,
    .fusion-page-title-bar form[role="search"],
    .fusion-page-title-bar .fusion-search-form {
        position: static !important;
        transform: none !important;
        width: 100% !important;
        margin-top: 8px !important;
    }

    .fusion-page-title-bar input.s[type="search"] {
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* ── High zoom (≤640px / 200%+ on 1280px) — flyout fills viewport ─ */
@media screen and (max-width: 640px) {

    /* Hide header content so menu starts at top */
    body.fusion-flyout-menu-open .fusion-logo,
    body.fusion-flyout-menu-open .fusion-header .fusion-row {
        display: none !important;
    }

    /* BG overlay covers full viewport */
    body.fusion-flyout-menu-open .fusion-flyout-menu-bg {
        position: fixed !important;
        inset: 0 !important;
        z-index: 999998 !important;
        background: #0a2642 !important;
        opacity: 1 !important;
    }

    /* Menu items fill viewport over the bg */
    body.fusion-flyout-menu-open .fusion-mobile-navigation {
        position: fixed !important;
        inset: 0 !important;
        z-index: 999999 !important;
        background: #0a2642 !important;
        overflow-y: auto !important;
        padding: 52px 0 80px !important;
    }
}


/* ── 6. SEARCH FORM ───────────────────────────────────────────────────
 *
 * WCAG 1.4.3 — placeholder contrast fix
 * WCAG 4.1.2 — name, role, value on form controls
 */

/* Placeholder text contrast */
input::placeholder,
textarea::placeholder {
    color: #767676;
    opacity: 1; /* Firefox reduces opacity by default */
}

input.s[type="search"]::placeholder,
.fusion-search-field.search-field input[type="search"]::placeholder {
    color: #595959 !important;
}

/* Search input */
input.s[type="search"] {
    color: #1a1a1a !important;
    border: 1px solid #595959 !important;
    background-color: #ffffff !important;
    border-radius: 5px !important;
}

input.s[type="search"]:focus {
    box-shadow: 0 0 0 4px rgba(0, 87, 184, 0.35) !important;
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    border-color: #0057B8 !important;
    border-radius: 5px !important;
}

/* Search input — header */
.fusion-header-wrapper .fusion-search-field input[type="search"]:focus,
.searchform input[type="search"]:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #0057B8 !important;
}

/* Search form focus (from JS) */
.searchform input:focus-visible,
.fusion-search-form input:focus-visible,
.fusion-search-form button:focus-visible,
.searchform input:focus,
.fusion-search-form input:focus,
.fusion-search-form button:focus {
    outline: 3px solid #0057B8 !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #0057B8 !important;
}

/* Search submit button */
input.fusion-search-submit.searchsubmit,
.fusion-header-wrapper .fusion-search-form button[type="submit"],
.searchform button[type="submit"] {
    background-color: #ffffff !important;
    color: #0057B8 !important;
    border: 1px solid #0057B8 !important;
    border-radius: 5px !important;
    cursor: pointer !important;
}

.fusion-header-wrapper .fusion-search-form button[type="submit"] i,
.fusion-header-wrapper .fusion-search-form button[type="submit"] svg,
.searchform button[type="submit"] i {
    color: #0057B8 !important;
    fill: #0057B8 !important;
}

input.fusion-search-submit.searchsubmit:focus,
.fusion-header-wrapper .fusion-search-form button[type="submit"]:focus,
.searchform button[type="submit"]:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #0057B8 !important;
    border-radius: 5px !important;
}

input.fusion-search-submit.searchsubmit:hover,
.fusion-header-wrapper .fusion-search-form button[type="submit"]:hover,
.searchform button[type="submit"]:hover {
    background-color: #0057B8 !important;
    color: #ffffff !important;
    border-color: #0057B8 !important;
}

input.fusion-search-submit.searchsubmit:active {
    background-color: #003d8a !important;
    color: #ffffff !important;
    border-color: #003d8a !important;
    box-shadow: 0 0 0 4px rgba(0, 61, 138, 0.4) !important;
}


/* Search results — full width when sidebar is removed */
.search-results #content {
    width: 100% !important;
    max-width: 100% !important;
}

/* ── 7. COLOR CONTRAST OVERRIDES ─────────────────────────────────────
 *
 * WCAG 1.4.3 — Contrast Minimum (AA) — 4.5:1 for normal text
 */

/* Footer text */
#footer .fusion-footer-copyright-area,
#footer .fusion-footer-copyright-area a {
    color: #e8e8e8; /* ~14.7:1 on standard dark footer */
}

/* Link contrast fix — widget/sidebar/contact links */
.widget a,
aside a,
a[href^="tel"],
a[href^="mailto"] {
    color: #0057B8 !important;
    text-decoration: underline !important;
}

a[href^="tel"]:focus,
a[href^="mailto"]:focus,
.widget a:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    border-radius: 2px !important;
}

/* Touch target size for contact links (WCAG 2.5.5 AAA — 44px min) */
a[href^="tel"],
a[href^="mailto"] {
    display: inline-block !important;
    padding: 8px 4px !important;
    min-height: 44px !important;
    line-height: 1.5 !important;
}

/* Main content area links */
.post-content a,
.entry-content a,
.fusion-post-content a,
.fusion-column-wrapper a,
.fusion-text a,
.fusion-builder-column a,
.fusion-layout-column a,
article a,
.page-content a {
    color: #0057B8 !important;
    text-decoration: underline !important;
}

.post-content a:focus,
.entry-content a:focus,
.fusion-post-content a:focus,
.fusion-column-wrapper a:focus,
.fusion-text a:focus,
article a:focus,
.page-content a:focus {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    border-radius: 2px !important;
}

/* Icon circle contrast fix */
.fusion-widget-area .icon,
.widget .contact-icon,
aside .fusion-icon-wrapper {
    background-color: #595959 !important;
}

/* Dropdown map links */
.drop_menu_map {
    color: #000000;
}

.drop_menu li:hover ul {
    background: #484f57;
}

.drop_menu li:hover ul li a,
.drop_menu li ul li a:focus {
    display: block;
    background-color: #484f57;
    color: #dddddd;
}

.drop_menu_map:focus-within {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
}

.drop_menu li ul li a:focus-visible {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
}

/* Map tile hover/focus */
.map_tiles:hover img {
    border: 3px solid #000000;
    border-radius: 5px;
}

.map_tiles:focus {
    border: 3px solid #000000;
    border-radius: 5px;
}

/* Form button */
#form input[type="button"] {
    background-color: #006ea0 !important;
    color: #ffffff !important;
}

#form input[type="button"]:focus-visible {
    outline: 3px solid #0057B8 !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px #0057B8 !important;
}

/* Plan focus */
.plan:focus {
    background-color: yellow;
    outline: 3px solid #0057B8 !important;
}

/* Checklist contrast — Avada checklist element (WCAG 1.4.3) */
.fusion-checklist li {
    color: #2e2e2e !important; /* 7:1 on white */
}

.fusion-checklist .icon-wrapper {
    background-color: #0057B8 !important; /* match site blue token */
}

.fusion-checklist .fusion-li-icon {
    color: #ffffff !important; /* white on blue */
}

/* Page-load link — hidden from tab order and AT (WCAG 2.4.3) */
.fusion-page-load-link,
.fusion-one-page-text-link {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
}


/* ── 8. TYPOGRAPHY LEGACY FIXES ───────────────────────────────────────
 *
 * Existing size overrides carried forward from before child theme.
 */

.avada-container h4 {
    font-size: 18px !important;
    font-weight: bold !important;
}

.tab-holder .tabs li a {
    font-size: 18px !important;
}

body.home .reading-box h2 {
    font-size: 22px !important;
    line-height: 42px !important;
}

/* Sidebar/widget menu padding */
.fusion-widget-menu ul,
.fusion-widget-menu a:visited {
    background-color: #ebebeb !important;
    padding: 5px 3px !important;
}


/* ── 9. TEXT REFLOW & SPACING ─────────────────────────────────────────
 *
 * WCAG 1.4.10 — Reflow (no horizontal scroll at 320px width)
 * WCAG 1.4.12 — Text Spacing (no loss of content when spacing is increased)
 */

.fusion-text p,
.fusion-text span,
.post-content p,
.entry-content p,
[data-fusion-font] {
    max-width: 100% !important;
    overflow-wrap: break-word !important;
    word-wrap: break-word !important;
    line-height: 1.6 !important;
    letter-spacing: 0.01em !important;
}


/* ── 10. REDUCED MOTION ────────────────────────────────────────────────
 *
 * WCAG 2.3.3 — Animation from Interactions (AAA, important for ILC audience)
 */

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    .fusion-slider-container,
    .hal-slider-wrapper {
        animation: none !important;
    }

    #toTop {
        transition: none !important;
    }

}


/* ══════════════════════════════════════════════════════════════════════════
 * 11. ERROR MESSAGING & VALIDATION
 *
 * WCAG 3.3.1 — Error Identification
 * WCAG 3.3.3 — Error Suggestion
 * ══════════════════════════════════════════════════════════════════════════ */

.error-message,
.wpcf7-not-valid-tip,
.fusion-alert-danger {
    color: #b71c1c !important;
    font-weight: 500 !important;
    margin-top: 4px !important;
}

.error-message::before,
.wpcf7-not-valid-tip::before {
    content: "Error: ";
    font-weight: 700;
    /* Decorative duplicate — real text injected via hal-accessibility.js */
    /* so AT reads the DOM span, not this pseudo-element                  */
}

input[aria-invalid="true"],
textarea[aria-invalid="true"],
select[aria-invalid="true"] {
    border: 2px solid #b71c1c !important;
    outline: 3px solid #b71c1c !important;
    outline-offset: 2px !important;
}

input[aria-invalid="true"]:focus,
textarea[aria-invalid="true"]:focus,
select[aria-invalid="true"]:focus {
    box-shadow: 0 0 0 3px rgba(183, 28, 28, 0.25) !important;
}

.success-message,
.fusion-alert-success {
    color: #1b5e20 !important;
    font-weight: 500 !important;
}

.success-message::before {
    content: "Success: ";
    font-weight: 700;
    /* Decorative duplicate — real text injected via hal-accessibility.js */
}


/* ══════════════════════════════════════════════════════════════════════════
 * 12. PRINT STYLES
 *
 * Ensures content is accessible when printed
 * ══════════════════════════════════════════════════════════════════════════ */

@media print {
    .fusion-header,
    .fusion-footer,
    .fusion-sliding-bar-wrapper,
    .fusion-flyout-menu,
    #toTop,
    .fusion-mobile-menu-icons {
        display: none !important;
    }

    .post-content a[href]::after,
    .entry-content a[href]::after {
        content: " (" attr(href) ")";
        font-size: 0.9em;
        word-break: break-all;
    }

    .post-content a[href^="#"]::after,
    .entry-content a[href^="#"]::after,
    .post-content a[href^="javascript:"]::after,
    .entry-content a[href^="javascript:"]::after {
        content: "";
    }

    body {
        font-size: 12pt !important;
        line-height: 1.5 !important;
        color: #000 !important;
        background: #fff !important;
    }

    h1, h2, h3, h4, h5, h6 {
        page-break-after: avoid;
        page-break-inside: avoid;
    }

    img, figure {
        page-break-inside: avoid;
    }
}


/* ══════════════════════════════════════════════════════════════════════════
 * 13. TOUCH TARGETS — PAGINATION & BUTTONS
 *
 * WCAG 2.5.5 — Target Size (AAA)
 * Scoped tightly to avoid breaking Avada nav or inline links.
 * ══════════════════════════════════════════════════════════════════════════ */

.pagination a,
.pagination span.current {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    min-width: 44px;
}

.pagination-next {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 1rem;
}

.fusion-button-small {
    min-height: 44px;
    padding: 0.75rem 1.5rem;
}


/* ══════════════════════════════════════════════════════════════════════════
 * 14. IMAGE LAYOUT SHIFT (CLS Prevention)
 *
 * Prevents Cumulative Layout Shift for Avada/Fusion lazy-loaded images.
 * ══════════════════════════════════════════════════════════════════════════ */

.fusion-image-wrapper {
    position: relative;
    overflow: hidden;
    background: #f5f5f5;
}

.fusion-image-wrapper::before {
    content: "";
    display: block;
    padding-top: 56.25%; /* 16:9 default — adjust per design */
}

.fusion-image-wrapper img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}


/* ══════════════════════════════════════════════════════════════════════════
 * 15. FORCED COLORS / HIGH CONTRAST MODE
 *
 * Windows High Contrast users — box-shadow is ignored, outline only.
 * WCAG 1.4.11 — Non-text Contrast
 * ══════════════════════════════════════════════════════════════════════════ */

@media (forced-colors: active) {
    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible,
    [role="button"]:focus-visible,
    [tabindex]:focus-visible {
        outline: 3px solid Highlight !important;
        outline-offset: 2px !important;
        box-shadow: none !important;
        forced-color-adjust: none;
    }

    a,
    a:visited {
        color: LinkText !important;
    }

    a:hover,
    a:focus {
        color: Highlight !important;
    }
}
