.skip-link {
	position: absolute;
	top: -12.5rem;
	left: 0;
	background: #000;
	color: #fff;
	padding: 0.5rem 1rem;
	z-index: 100;
	text-decoration: none;
	border-radius: 0.25rem;
	transition: top 0.3s ease;
    z-index: 9999;
}

.skip-link:focus {
	top: 0.625rem;
	left: 0.625rem;
}

.skip-link.screen-reader-text:focus {
	position: absolute;
	top: 0.625rem;
	left: 0.625rem;
	clip: auto;
	clip-path: none;
	width: auto;
	height: auto;
	overflow: visible;
	white-space: normal;
	padding: 0.5rem 1rem;
	background: #000;
	color: #fff;
	border-radius: 0.25rem;
}

/* Focus management */
*:focus {
    outline: 0.125rem solid #0073aa;
    outline-offset: 0.125rem;
    box-shadow: 0 0 0 0.125rem rgba(0, 115, 170, 0.3);
}

/* Remove outline for mouse users, keep for keyboard users */
.js-focus-visible *:focus:not(.focus-visible) {
    outline: none;
    box-shadow: none;
}

/* High contrast focus for better visibility */
@media (prefers-contrast: high) {
    *:focus {
        outline: 0.1875rem solid #000;
        outline-offset: 0.1875rem;
        box-shadow: 0 0 0 0.1875rem #fff, 0 0 0 0.375rem #000;
    }
}

/* Ensure minimum touch target size (2.75rem) */
button,
input[type="submit"],
input[type="button"],
.button,
a.button {
    min-height: 2.75rem;
    min-width: 2.75rem;
    padding: 0.5rem 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

/* Form accessibility */
label {
    display: block;
    margin-bottom: 0.25rem;
    font-weight: 600;
}

input[required],
textarea[required],
select[required] {
    border-left: 0.25rem solid #d63638;
}

input:invalid,
textarea:invalid,
select:invalid {
    border-color: #d63638;
    box-shadow: 0 0 0 0.125rem rgba(214, 54, 56, 0.2);
}

input:valid,
textarea:valid,
select:valid {
    border-left-color: #00a32a;
}

/* Error and success states */
.error-message {
    color: #d63638;
    font-size: 0.875rem;
    margin-top: 0.25rem;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.success-message {
    color: #00a32a;
    font-size: 0.875rem;
    margin-top: 0.25rem;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* Motion preferences */
@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;
    }
}

/* Dark mode support */
@media (prefers-color-scheme: dark) {
    .skip-link {
        background: #fff;
        color: #000;
    }
    
    *:focus {
        outline-color: #4f94cd;
        box-shadow: 0 0 0 0.125rem rgba(79, 148, 205, 0.3);
    }
}

/* Print accessibility */
@media print {
    .skip-link,
    .screen-reader-text {
        display: none !important;
    }
    
    a[href^="http"]:after {
        content: " (" attr(href) ")";
        font-size: 0.75rem;
        color: #666;
    }
}

/* Language direction support */
[dir="rtl"] .skip-link {
    right: 0.375rem;
    left: auto;
}

/* Windows High Contrast Mode support */
@media screen and (-ms-high-contrast: active) {
    .skip-link {
        border: 0.0625rem solid windowText;
    }
    
    .body-block.low-contrast {
        border: 0.125rem solid windowText;
    }
}

/* Ensure images don't break layout in high zoom */
img {
    max-width: 100%;
    height: auto;
}

/* Ensure sufficient spacing for touch targets on mobile */
@media (max-width: 48rem) {
    button,
    input[type="submit"],
    input[type="button"] {
        min-height: 3.5rem;
        padding: 0.75rem 1.25rem;
    }
}
