/* ============================================================
   RAST Divi Accessibility — v1.1.0
   ============================================================
   Each block is scoped to a body class set by the plugin, so a
   feature switched off in Settings applies no CSS at all rather
   than being applied and then overridden.

     .rast-focus      visible focus indicator      WCAG 2.4.7
     .rast-dropdowns  dropdowns on keyboard focus  WCAG 2.1.1
     .rast-srtext     screen-reader text repair    WCAG 1.3.1
     .rast-motion     reduced motion               WCAG 2.3.3

   The skip link block is unscoped — if the link is not output,
   there is nothing for it to style.
   ============================================================ */


/* Overridden inline by the plugin from the settings page. */
:root {
    --rast-focus-ring: #1C3A5E;
    --rast-focus-halo: #FFFFFF;
}


/* ------------------------------------------------------------
   1. VISIBLE FOCUS INDICATOR
   ------------------------------------------------------------ */

body.rast-focus a:focus-visible,
body.rast-focus button:focus-visible,
body.rast-focus input:focus-visible,
body.rast-focus select:focus-visible,
body.rast-focus textarea:focus-visible,
body.rast-focus summary:focus-visible,
body.rast-focus [tabindex]:focus-visible,
body.rast-focus [role="button"]:focus-visible,
body.rast-focus .et_pb_toggle_title:focus-visible,
body.rast-focus .et_pb_button:focus-visible,
body.rast-focus .et_pb_contact_submit:focus-visible,
body.rast-focus .mobile_nav:focus-visible {
    outline: 3px solid var(--rast-focus-ring) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 5px var(--rast-focus-halo) !important;
    border-radius: 2px;
}

/* Divi strips outlines inside the header specifically */
body.rast-focus #main-header a:focus-visible,
body.rast-focus #et-top-navigation a:focus-visible,
body.rast-focus #top-menu a:focus-visible,
body.rast-focus #et_mobile_nav_menu a:focus-visible,
body.rast-focus #et-secondary-menu a:focus-visible {
    outline: 3px solid var(--rast-focus-ring) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 5px var(--rast-focus-halo) !important;
}

/* The skip-link target takes programmatic focus; never ring it */
#main-content:focus,
#main-content:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}


/* ------------------------------------------------------------
   2. DROPDOWNS OPEN ON KEYBOARD FOCUS
   Divi keeps submenu links in the tab order while hiding them,
   so a keyboard user tabs through links they cannot see.
   ------------------------------------------------------------ */

body.rast-dropdowns #top-menu li:focus-within > ul.sub-menu,
body.rast-dropdowns #top-menu li ul.sub-menu:focus-within,
body.rast-dropdowns .nav li:focus-within > ul,
body.rast-dropdowns .et-menu li:focus-within > ul.sub-menu,
body.rast-dropdowns #et-secondary-nav li:focus-within > ul,
body.rast-dropdowns li:focus-within > ul {
    opacity: 1 !important;
    visibility: visible !important;
    display: block !important;
    pointer-events: auto !important;
    transform: none !important;
    clip: auto !important;
    height: auto !important;
    max-height: none !important;
}

/* Third-level menus, where they exist */
body.rast-dropdowns #top-menu li li:focus-within > ul.sub-menu {
    left: 240px !important;
}


/* ------------------------------------------------------------
   3. SKIP LINK — hidden until focused
   ------------------------------------------------------------ */

.rast-skip-link {
    position: absolute !important;
    left: -9999px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.rast-skip-link:focus {
    position: fixed !important;
    left: 1rem !important;
    top: 1rem !important;
    width: auto !important;
    height: auto !important;
    z-index: 999999 !important;
    padding: 0.75rem 1.25rem !important;
    background: var(--rast-focus-ring) !important;
    color: var(--rast-focus-halo) !important;
    font-size: 1rem !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-decoration: underline !important;
    border-radius: 3px;
    outline: 3px solid var(--rast-focus-halo) !important;
    outline-offset: 2px !important;
    overflow: visible !important;
}


/* ------------------------------------------------------------
   4. SCREEN-READER TEXT
   Divi applies display:none to its own screen-reader classes,
   which hides the text from screen readers entirely — the exact
   opposite of the intent. Restores the correct pattern:
   visually hidden, still announced.
   ------------------------------------------------------------ */

body.rast-srtext .screen-reader-text,
body.rast-srtext .et_pb_social_media_follow_network_name,
body.rast-srtext .wp-block-search__label.screen-reader-text,
.rast-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;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    border: 0 !important;
    display: block !important;
}

/* Visible again if it is itself focusable */
body.rast-srtext .screen-reader-text:focus {
    position: fixed !important;
    left: 1rem !important;
    top: 1rem !important;
    width: auto !important;
    height: auto !important;
    clip: auto !important;
    clip-path: none !important;
    white-space: normal !important;
    z-index: 999999 !important;
    padding: 0.75rem 1.25rem !important;
    background: var(--rast-focus-ring) !important;
    color: var(--rast-focus-halo) !important;
}


/* ------------------------------------------------------------
   5. REDUCED MOTION — WCAG 2.3.3
   Divi is animation-heavy and ignores the operating system
   setting. Only affects visitors who have asked for reduced
   motion; everyone else sees the site unchanged.
   ------------------------------------------------------------ */

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

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

    /* Parallax backgrounds are the worst offender */
    body.rast-motion .et_pb_section_parallax,
    body.rast-motion .et_parallax_bg,
    body.rast-motion .et_pb_parallax_css {
        background-attachment: scroll !important;
        transform: none !important;
    }

    /* Divi's scroll-triggered entrance animations */
    body.rast-motion .et_animated,
    body.rast-motion .et-waypoint {
        opacity: 1 !important;
        animation: none !important;
        transform: none !important;
    }
}
