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