/* Explain: Styles for accessibility features like skip links and text resizing. */
.skip-link {
    position: fixed;
    left: 1rem;
    top: -6rem;
    z-index: 120;
    border-radius: 9999px;
    background: var(--primary-color);
    color: #ffffff;
    padding: 0.75rem 1.25rem;
    font-weight: 600;
    font-size: 0.9rem;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.25);
    transition: top 0.2s ease;
}

.skip-link:focus {
    top: 1rem;
    outline: 3px solid var(--accent-color);
    outline-offset: 2px;
}

:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
}

html.a11y-text-lg {
    font-size: 112.5%;
}

html.a11y-text-xl {
    font-size: 125%;
}

html.a11y-contrast {
    --primary-color: #0B3D91;
    --primary-hover: #062A66;
    --primary-soft: #E6ECF7;
    --secondary-color: #1A1A1A;
    --accent-color: #0E7490;
    --background-color: #FFFFFF;
    --surface-color: #FFFFFF;
    --text-color: #000000;
    --text-muted: #1A1A1A;
    --border-color: #000000;
    --navy-color: #000000;
    --navy-soft: #1A1A1A;
}

html.a11y-contrast a {
    text-decoration: underline;
    text-underline-offset: 2px;
}

html.a11y-contrast .text-gradient {
    background: none;
    color: var(--primary-color);
    -webkit-text-fill-color: currentColor;
}

html.a11y-reduce-motion *,
html.a11y-reduce-motion *::before,
html.a11y-reduce-motion *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
}

@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;
    }
}