/* Глобальные стили с поддержкой доступности */ /* Базовые стили */ * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Фокус для доступности */ *:focus-visible { outline: 2px solid #4a90e2; outline-offset: 2px; } button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #4a90e2; outline-offset: 2px; } /* Скрытие элементов для screen readers */ .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; } /* Улучшение контраста для ссылок */ a { color: #1e3a5f; text-decoration: none; } a:hover { text-decoration: underline; } a:focus-visible { outline: 2px solid #4a90e2; outline-offset: 2px; } /* Стили для disabled элементов */ button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: 0.6; } /* Улучшение читаемости */ p, li { line-height: 1.6; } /* Минимальный размер области клика (44x44px для touch) */ button, a[role="button"] { min-height: 44px; min-width: 44px; } /* Skip to main content link (для screen readers) */ .skip-to-main { position: absolute; top: -40px; left: 0; background: #1e3a5f; color: white; padding: 8px; text-decoration: none; z-index: 100; } .skip-to-main:focus { top: 0; } /* Улучшение контраста для текста */ .text-primary { color: #1e3a5f; /* Контраст с белым фоном: ~8.5:1 - AAA */ } .text-secondary { color: #666; /* Контраст с белым фоном: ~7.1:1 - AAA */ } .text-error { color: #c62828; /* Контраст с белым фоном: ~7.5:1 - AAA */ } /* Анимации с учетом prefers-reduced-motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Высокий контраст режим */ @media (prefers-contrast: high) { * { border-color: currentColor; } button, a { border: 2px solid currentColor; } }