| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| |
|
| |
|
| | *: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;
|
| | }
|
| |
|