| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| *:focus { |
| outline: 2px solid var(--color-accent-blue); |
| outline-offset: 2px; |
| } |
|
|
| *:focus:not(:focus-visible) { |
| outline: none; |
| } |
|
|
| *:focus-visible { |
| outline: 2px solid var(--color-accent-blue); |
| outline-offset: 2px; |
| } |
|
|
| |
| a:focus-visible, |
| button:focus-visible, |
| input:focus-visible, |
| select:focus-visible, |
| textarea:focus-visible, |
| [tabindex]:focus-visible { |
| outline: 3px solid var(--color-accent-blue); |
| outline-offset: 3px; |
| } |
|
|
| |
|
|
| .skip-link { |
| position: absolute; |
| top: -100px; |
| left: 0; |
| background: var(--color-accent-blue); |
| color: white; |
| padding: var(--spacing-3) var(--spacing-6); |
| text-decoration: none; |
| font-weight: var(--font-weight-semibold); |
| border-radius: var(--radius-base); |
| z-index: var(--z-tooltip); |
| transition: top var(--duration-fast); |
| } |
|
|
| .skip-link:focus { |
| top: var(--spacing-md); |
| left: var(--spacing-md); |
| } |
|
|
| |
|
|
| .sr-only { |
| position: absolute; |
| width: 1px; |
| height: 1px; |
| padding: 0; |
| margin: -1px; |
| overflow: hidden; |
| clip: rect(0, 0, 0, 0); |
| white-space: nowrap; |
| border-width: 0; |
| } |
|
|
| .sr-only-focusable:active, |
| .sr-only-focusable:focus { |
| position: static; |
| width: auto; |
| height: auto; |
| overflow: visible; |
| clip: auto; |
| white-space: normal; |
| } |
|
|
| |
|
|
| [data-keyboard-hint]::after { |
| content: attr(data-keyboard-hint); |
| position: absolute; |
| bottom: calc(100% + 8px); |
| left: 50%; |
| transform: translateX(-50%); |
| background: var(--color-bg-elevated); |
| color: var(--color-text-primary); |
| padding: var(--spacing-2) var(--spacing-3); |
| border-radius: var(--radius-base); |
| font-size: var(--font-size-xs); |
| white-space: nowrap; |
| opacity: 0; |
| pointer-events: none; |
| transition: opacity var(--duration-fast); |
| box-shadow: var(--shadow-lg); |
| border: 1px solid var(--color-border-primary); |
| } |
|
|
| [data-keyboard-hint]:focus::after { |
| opacity: 1; |
| } |
|
|
| |
|
|
| @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; |
| } |
|
|
| .toast, |
| .modal, |
| .sidebar { |
| transition: none !important; |
| } |
| } |
|
|
| |
|
|
| @media (prefers-contrast: high) { |
| :root { |
| --color-border-primary: rgba(255, 255, 255, 0.3); |
| --color-border-secondary: rgba(255, 255, 255, 0.2); |
| } |
|
|
| .card, |
| .provider-card, |
| .table-container { |
| border-width: 2px; |
| } |
|
|
| .btn { |
| border-width: 2px; |
| } |
| } |
|
|
| |
|
|
| .aria-live-polite { |
| position: absolute; |
| left: -10000px; |
| width: 1px; |
| height: 1px; |
| overflow: hidden; |
| } |
|
|
| [aria-live="polite"], |
| [aria-live="assertive"] { |
| position: absolute; |
| left: -10000px; |
| width: 1px; |
| height: 1px; |
| overflow: hidden; |
| } |
|
|
| |
|
|
| [aria-busy="true"] { |
| cursor: wait; |
| } |
|
|
| [aria-busy="true"]::after { |
| content: " (Loading...)"; |
| position: absolute; |
| left: -10000px; |
| } |
|
|
| |
|
|
| [aria-disabled="true"], |
| [disabled] { |
| cursor: not-allowed; |
| opacity: 0.6; |
| pointer-events: none; |
| } |
|
|
| |
|
|
| [role="tooltip"] { |
| position: absolute; |
| background: var(--color-bg-elevated); |
| color: var(--color-text-primary); |
| padding: var(--spacing-2) var(--spacing-3); |
| border-radius: var(--radius-base); |
| font-size: var(--font-size-sm); |
| box-shadow: var(--shadow-lg); |
| border: 1px solid var(--color-border-primary); |
| z-index: var(--z-tooltip); |
| max-width: 300px; |
| } |
|
|
| |
|
|
| .text-high-contrast { |
| color: var(--color-text-primary); |
| font-weight: var(--font-weight-medium); |
| } |
|
|
| .bg-high-contrast { |
| background: var(--color-bg-primary); |
| color: var(--color-text-primary); |
| } |
|
|
| |
|
|
| body:not(.using-mouse) *:focus { |
| outline: 3px solid var(--color-accent-blue); |
| outline-offset: 3px; |
| } |
|
|
| |
| body.using-mouse *:focus { |
| outline: none; |
| } |
|
|
| body.using-mouse *:focus-visible { |
| outline: 2px solid var(--color-accent-blue); |
| outline-offset: 2px; |
| } |
|
|