|
|
|
|
|
|
|
@media (prefers-contrast: high) { |
|
.card { |
|
border: 2px solid currentColor; |
|
} |
|
|
|
.btn { |
|
border: 2px solid currentColor; |
|
} |
|
|
|
.form-input { |
|
border: 2px solid currentColor; |
|
} |
|
|
|
.nav-link { |
|
border: 1px solid currentColor; |
|
} |
|
|
|
.mobile-nav-item { |
|
border-bottom: 2px solid currentColor; |
|
} |
|
|
|
.mobile-menu-content { |
|
border-right: 2px solid currentColor; |
|
} |
|
} |
|
|
|
|
|
@media (prefers-reduced-motion: reduce) { |
|
*, |
|
*::before, |
|
*::after { |
|
animation-duration: 0.01ms !important; |
|
animation-iteration-count: 1 !important; |
|
transition-duration: 0.01ms !important; |
|
} |
|
|
|
.mobile-menu-content { |
|
transition: none; |
|
} |
|
|
|
.mobile-menu-button span { |
|
transition: none; |
|
} |
|
|
|
.mobile-overlay { |
|
transition: none; |
|
} |
|
|
|
.btn { |
|
transition: none; |
|
} |
|
|
|
.card { |
|
transition: none; |
|
} |
|
} |
|
|
|
|
|
@media (hover: hover) and (pointer: fine) { |
|
.btn:focus-visible, |
|
.clickable:focus-visible, |
|
.nav-link:focus-visible, |
|
.form-input:focus-visible, |
|
.mobile-nav-item:focus-visible, |
|
.mobile-menu-button:focus-visible { |
|
outline: 3px solid var(--primary-color); |
|
outline-offset: 2px; |
|
} |
|
|
|
.skip-link:focus-visible, |
|
.skip-link-mobile:focus-visible { |
|
outline: 2px solid var(--primary-color); |
|
outline-offset: 2px; |
|
} |
|
} |
|
|
|
|
|
@media (prefers-color-scheme: dark) { |
|
:root { |
|
--bg-primary: #1a1a1a; |
|
--bg-secondary: #2d2d2d; |
|
--text-primary: #ffffff; |
|
--text-secondary: #b0b0b0; |
|
--border-color: #404040; |
|
} |
|
} |
|
|
|
|
|
@media print { |
|
.no-print { |
|
display: none !important; |
|
} |
|
|
|
.print-break-before { |
|
page-break-before: always; |
|
} |
|
|
|
.print-break-inside-avoid { |
|
page-break-inside: avoid; |
|
} |
|
|
|
.print-black-text { |
|
color: black !important; |
|
} |
|
|
|
.print-no-background { |
|
background: none !important; |
|
} |
|
} |
|
|
|
|
|
.sr-only { |
|
position: absolute; |
|
width: 1px; |
|
height: 1px; |
|
padding: 0; |
|
margin: -1px; |
|
overflow: hidden; |
|
clip: rect(0, 0, 0, 0); |
|
white-space: nowrap; |
|
border: 0; |
|
} |
|
|
|
.sr-only:not(:focus):not(:active) { |
|
position: absolute; |
|
width: 1px; |
|
height: 1px; |
|
padding: 0; |
|
margin: -1px; |
|
overflow: hidden; |
|
clip: rect(0, 0, 0, 0); |
|
white-space: nowrap; |
|
border: 0; |
|
} |
|
|
|
|
|
.skip-link { |
|
position: absolute; |
|
top: -40px; |
|
left: 0; |
|
background: var(--primary-color); |
|
color: white; |
|
padding: 8px 16px; |
|
text-decoration: none; |
|
border-radius: 0 4px 4px 0; |
|
z-index: 100; |
|
font-size: 14px; |
|
font-weight: 500; |
|
} |
|
|
|
.skip-link:focus { |
|
top: 0; |
|
} |
|
|
|
|
|
.focus-visible { |
|
outline: 2px solid var(--primary-color); |
|
outline-offset: 2px; |
|
} |
|
|
|
|
|
.keyboard-nav { |
|
position: relative; |
|
} |
|
|
|
.keyboard-nav:focus { |
|
outline: 2px solid var(--primary-color); |
|
outline-offset: 2px; |
|
} |
|
|
|
|
|
@media (hover: none) and (pointer: coarse) { |
|
.btn, |
|
.clickable, |
|
.nav-link, |
|
.form-input, |
|
.mobile-nav-item { |
|
min-height: 44px; |
|
min-width: 44px; |
|
padding: 12px 16px; |
|
} |
|
|
|
.mobile-menu-button { |
|
min-height: 48px; |
|
min-width: 48px; |
|
} |
|
|
|
.btn-large { |
|
min-height: 48px; |
|
min-width: 48px; |
|
padding: 14px 20px; |
|
font-size: 16px; |
|
} |
|
|
|
.btn-group .btn { |
|
min-height: 44px; |
|
min-width: 44px; |
|
} |
|
|
|
|
|
input[type="text"], |
|
input[type="email"], |
|
input[type="password"], |
|
input[type="number"], |
|
input[type="tel"], |
|
input[type="url"], |
|
input[type="search"], |
|
input[type="date"], |
|
input[type="time"], |
|
input[type="datetime-local"], |
|
input[type="month"], |
|
input[type="week"], |
|
input[type="color"], |
|
textarea, |
|
select { |
|
font-size: 16px; |
|
} |
|
} |
|
|
|
|
|
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { |
|
.high-dpi { |
|
-webkit-font-smoothing: antialiased; |
|
-moz-osx-font-smoothing: grayscale; |
|
} |
|
} |
|
|
|
|
|
.text-readable { |
|
font-size: 16px; |
|
line-height: 1.5; |
|
} |
|
|
|
.text-readable-large { |
|
font-size: 18px; |
|
line-height: 1.6; |
|
} |
|
|
|
|
|
.text-fluid { |
|
font-size: clamp(1rem, 2.5vw, 1.25rem); |
|
line-height: 1.5; |
|
} |
|
|
|
.text-fluid-lg { |
|
font-size: clamp(1.25rem, 3vw, 1.5rem); |
|
line-height: 1.6; |
|
} |
|
|
|
.text-fluid-xl { |
|
font-size: clamp(1.5rem, 4vw, 2rem); |
|
line-height: 1.7; |
|
} |
|
|
|
.text-fluid-2xl { |
|
font-size: clamp(2rem, 5vw, 3rem); |
|
line-height: 1.8; |
|
} |
|
|
|
.text-fluid-3xl { |
|
font-size: clamp(3rem, 6vw, 4rem); |
|
line-height: 1.9; |
|
} |
|
|
|
|
|
@media (max-width: 768px) { |
|
.mobile-readable { |
|
font-size: 16px; |
|
line-height: 1.5; |
|
} |
|
|
|
.mobile-readable-large { |
|
font-size: 18px; |
|
line-height: 1.6; |
|
} |
|
} |
|
|
|
|
|
.high-contrast-text { |
|
color: #000000; |
|
background-color: #ffffff; |
|
} |
|
|
|
.high-contrast-text-inverse { |
|
color: #ffffff; |
|
background-color: #000000; |
|
} |
|
|
|
|
|
.focus-trap { |
|
outline: none; |
|
} |
|
|
|
.focus-trap:focus { |
|
outline: 2px solid var(--primary-color); |
|
outline-offset: 2px; |
|
} |
|
|
|
|
|
.aria-hidden { |
|
display: none !important; |
|
} |
|
|
|
.aria-hidden:not(:focus):not(:active) { |
|
position: absolute; |
|
width: 1px; |
|
height: 1px; |
|
margin: -1px; |
|
padding: 0; |
|
overflow: hidden; |
|
clip: rect(0, 0, 0, 0); |
|
white-space: nowrap; |
|
border: 0; |
|
} |
|
|
|
|
|
[dir="rtl"] { |
|
text-align: right; |
|
} |
|
|
|
[dir="rtl"] .flex-row { |
|
flex-direction: row; |
|
} |
|
|
|
[dir="rtl"] .flex-row-reverse { |
|
flex-direction: row; |
|
} |
|
|
|
[dir="rtl"] .ml-4 { |
|
margin-left: 0; |
|
margin-right: 1rem; |
|
} |
|
|
|
[dir="rtl"] .mr-4 { |
|
margin-right: 0; |
|
margin-left: 1rem; |
|
} |
|
|
|
|
|
@media (prefers-reduced-data: reduce) { |
|
.lazy-load { |
|
display: none; |
|
} |
|
|
|
.animation { |
|
display: none; |
|
} |
|
} |
|
|
|
|
|
@media (max-width: 767px) { |
|
.mobile-accessible { |
|
will-change: transform; |
|
backface-visibility: hidden; |
|
transform: translateZ(0); |
|
} |
|
|
|
.mobile-accessible-reduced { |
|
animation-duration: 0.3s !important; |
|
transition-duration: 0.3s !important; |
|
} |
|
} |
|
|
|
|
|
@media (prefers-reduced-motion: no-preference) { |
|
.cognitive-friendly { |
|
animation-duration: 2s; |
|
transition-duration: 2s; |
|
} |
|
} |
|
|
|
|
|
@media (prefers-reduced-motion: reduce) { |
|
.no-flashing { |
|
animation: none !important; |
|
} |
|
|
|
.no-blinking { |
|
animation: none !important; |
|
} |
|
} |
|
|
|
|
|
.text-responsive-xs { font-size: clamp(0.75rem, 2vw, 0.875rem); } |
|
.text-responsive-sm { font-size: clamp(0.875rem, 2.5vw, 1rem); } |
|
.text-responsive-base { font-size: clamp(1rem, 3vw, 1.125rem); } |
|
.text-responsive-lg { font-size: clamp(1.125rem, 3.5vw, 1.25rem); } |
|
.text-responsive-xl { font-size: clamp(1.25rem, 4vw, 1.5rem); } |
|
.text-responsive-2xl { font-size: clamp(1.5rem, 4.5vw, 1.875rem); } |
|
.text-responsive-3xl { font-size: clamp(1.875rem, 5vw, 2.25rem); } |
|
|
|
|
|
.leading-responsive-tight { line-height: clamp(1.25, 1.5, 1.75); } |
|
.leading-responsive-snug { line-height: clamp(1.375, 1.625, 1.875); } |
|
.leading-responsive-normal { line-height: clamp(1.5, 1.75, 2); } |
|
.leading-responsive-relaxed { line-height: clamp(1.625, 1.875, 2.125); } |
|
.leading-responsive-loose { line-height: clamp(1.75, 2, 2.25); } |
|
|
|
|
|
.text-xs { font-size: 0.75rem; } |
|
.text-sm { font-size: 0.875rem; } |
|
.text-base { font-size: 1rem; } |
|
.text-lg { font-size: 1.125rem; } |
|
.text-xl { font-size: 1.25rem; } |
|
.text-2xl { font-size: 1.5rem; } |
|
.text-3xl { font-size: 1.875rem; } |
|
|
|
@media (min-width: 640px) { |
|
.sm\:text-xs { font-size: 0.75rem; } |
|
.sm\:text-sm { font-size: 0.875rem; } |
|
.sm\:text-base { font-size: 1rem; } |
|
.sm\:text-lg { font-size: 1.125rem; } |
|
.sm\:text-xl { font-size: 1.25rem; } |
|
.sm\:text-2xl { font-size: 1.5rem; } |
|
.sm\:text-3xl { font-size: 1.875rem; } |
|
} |
|
|
|
@media (min-width: 768px) { |
|
.md\:text-xs { font-size: 0.75rem; } |
|
.md\:text-sm { font-size: 0.875rem; } |
|
.md\:text-base { font-size: 1rem; } |
|
.md\:text-lg { font-size: 1.125rem; } |
|
.md\:text-xl { font-size: 1.25rem; } |
|
.md\:text-2xl { font-size: 1.5rem; } |
|
.md\:text-3xl { font-size: 1.875rem; } |
|
} |
|
|
|
@media (min-width: 1024px) { |
|
.lg\:text-xs { font-size: 0.75rem; } |
|
.lg\:text-sm { font-size: 0.875rem; } |
|
.lg\:text-base { font-size: 1rem; } |
|
.lg\:text-lg { font-size: 1.125rem; } |
|
.lg\:text-xl { font-size: 1.25rem; } |
|
.lg\:text-2xl { font-size: 1.5rem; } |
|
.lg\:text-3xl { font-size: 1.875rem; } |
|
} |
|
|
|
@media (min-width: 1280px) { |
|
.xl\:text-xs { font-size: 0.75rem; } |
|
.xl\:text-sm { font-size: 0.875rem; } |
|
.xl\:text-base { font-size: 1rem; } |
|
.xl\:text-lg { font-size: 1.125rem; } |
|
.xl\:text-xl { font-size: 1.25rem; } |
|
.xl\:text-2xl { font-size: 1.5rem; } |
|
.xl\:text-3xl { font-size: 1.875rem; } |
|
} |
|
|
|
|
|
.leading-tight { line-height: 1.25; } |
|
.leading-snug { line-height: 1.375; } |
|
.leading-normal { line-height: 1.5; } |
|
.leading-relaxed { line-height: 1.625; } |
|
.leading-loose { line-height: 2; } |
|
|
|
@media (min-width: 640px) { |
|
.sm\:leading-tight { line-height: 1.25; } |
|
.sm\:leading-snug { line-height: 1.375; } |
|
.sm\:leading-normal { line-height: 1.5; } |
|
.sm\:leading-relaxed { line-height: 1.625; } |
|
.sm\:leading-loose { line-height: 2; } |
|
} |
|
|
|
@media (min-width: 768px) { |
|
.md\:leading-tight { line-height: 1.25; } |
|
.md\:leading-snug { line-height: 1.375; } |
|
.md\:leading-normal { line-height: 1.5; } |
|
.md\:leading-relaxed { line-height: 1.625; } |
|
.md\:leading-loose { line-height: 2; } |
|
} |
|
|
|
@media (min-width: 1024px) { |
|
.lg\:leading-tight { line-height: 1.25; } |
|
.lg\:leading-snug { line-height: 1.375; } |
|
.lg\:leading-normal { line-height: 1.5; } |
|
.lg\:leading-relaxed { line-height: 1.625; } |
|
.lg\:leading-loose { line-height: 2; } |
|
} |
|
|
|
@media (min-width: 1280px) { |
|
.xl\:leading-tight { line-height: 1.25; } |
|
.xl\:leading-snug { line-height: 1.375; } |
|
.xl\:leading-normal { line-height: 1.5; } |
|
.xl\:leading-relaxed { line-height: 1.625; } |
|
.xl\:leading-loose { line-height: 2; } |
|
} |