/* WCAG 2.2 AA shared accessibility layer */
:root {
    --msc-a11y-focus-ring: #ffbf47;
    --msc-a11y-focus-shadow: rgba(17, 24, 39, .55);
    --msc-a11y-focus-offset: 3px;
}

.visually-hidden,
.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;
}

.visually-hidden-focusable:not(:focus):not(:focus-within),
.sr-only-focusable:not(:focus):not(:focus-within) {
    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 {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: var(--msc-z-system, 2000);
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: .65rem 1rem;
    border-radius: .25rem;
    color: #111827;
    background: #fff;
    border: 3px solid var(--msc-a11y-focus-ring);
    box-shadow: 0 6px 20px rgba(17, 24, 39, .28);
    font-weight: 700;
    text-decoration: none;
    transform: translateY(-140%);
    transition: transform .12s ease;
}

.skip-link:focus,
.skip-link:focus-visible {
    color: #111827;
    transform: translateY(0);
    outline: 0;
}

.msc-live-region {
    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;
}

a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.custom-select:focus-visible,
.custom-control-input:focus-visible ~ .custom-control-label,
.dropdown-item:focus-visible,
.nav-link:focus-visible,
.page-link:focus-visible,
.close:focus-visible {
    outline: 3px solid var(--msc-a11y-focus-ring) !important;
    outline-offset: var(--msc-a11y-focus-offset) !important;
    box-shadow: 0 0 0 5px var(--msc-a11y-focus-shadow) !important;
}

a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
input:focus:not(:focus-visible),
select:focus:not(:focus-visible),
textarea:focus:not(:focus-visible) {
    outline: none;
}

button,
[type="button"],
[type="submit"],
[type="reset"],
.btn,
a.btn,
[role="button"],
.page-link,
.close {
    min-width: 24px;
    min-height: 24px;
}

.close,
.modal .close,
.alert .close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.dropdown-item,
.nav-link {
    min-height: 24px;
}

.touch-target {
    min-width: 44px !important;
    min-height: 44px !important;
}

[aria-disabled="true"],
.disabled,
:disabled {
    cursor: not-allowed;
}

[aria-invalid="true"],
.input-validation-error {
    border-color: #b91c1c !important;
}

.field-validation-error,
.validation-summary-errors {
    color: #991b1b !important;
}

.alert[role="alert"],
.alert[role="status"] {
    overflow-wrap: anywhere;
}

@media (pointer: coarse) {
    button,
    [type="button"],
    [type="submit"],
    [type="reset"],
    .btn,
    a.btn,
    [role="button"],
    .page-link,
    .close {
        min-width: 44px;
        min-height: 44px;
    }

    .dropdown-item,
    .nav-link {
        min-height: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}
