/**
 * TVK · доступность WCAG 2.1 AA
 * Подключается после tvk-tokens.css
 */

/* ── 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;
    scroll-behavior: auto !important;
  }
}

/* ── Skip link ── */
.skip-link {
  position: absolute;
  top: var(--space-2, 8px);
  left: var(--space-2, 8px);
  z-index: 10060;
  padding: var(--space-2, 8px) var(--space-4, 16px);
  border-radius: var(--radius-sm, 8px);
  background: var(--color-bg-2, #0d1117);
  color: var(--color-text, #e8edf4);
  font-weight: 600;
  font-size: 0.875rem;
  text-decoration: none;
  border: 2px solid var(--color-accent, #dc2626);
  transform: translateY(-160%);
  transition: transform var(--duration-fast, 150ms) var(--ease-out, ease);
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  outline: none;
}

/* ── Фокус: видимый для клавиатуры, скрыт для мыши ── */
:focus-visible {
  outline: 2px solid var(--color-accent, #dc2626);
  outline-offset: 3px;
  border-radius: var(--radius-sm, 8px);
}

:focus:not(:focus-visible) {
  outline: none;
}

/* Поля форм: сохраняем кольцо при фокусе с клавиатуры */
.form input:focus-visible,
.form select:focus-visible,
.form textarea:focus-visible,
.lead-form input:focus-visible,
.lead-form select:focus-visible,
.lead-form textarea:focus-visible,
.form-select:focus-visible {
  outline: 2px solid var(--color-accent, #dc2626);
  outline-offset: 2px;
  border-color: var(--accent, #dc2626);
  box-shadow: 0 0 0 3px var(--accent-dim, rgba(220, 38, 38, 0.14));
}

.lead-form input:focus-visible,
.lead-form select:focus-visible,
.lead-form textarea:focus-visible {
  outline: 2px solid var(--color-accent, #dc2626) !important;
  outline-offset: 2px !important;
}

.lead-form input:focus:not(:focus-visible),
.lead-form select:focus:not(:focus-visible),
.lead-form textarea:focus:not(:focus-visible) {
  outline: none !important;
}

.calc-field input:focus-visible,
.calc-field select:focus-visible {
  outline: 2px solid var(--color-accent, #dc2626) !important;
  outline-offset: 2px !important;
}

/* Контраст вторичного текста (muted ≥ 4.5:1 на #080a0e) */
:root {
  --color-muted: #94a3b8;
  --text-muted: var(--color-muted);
  --t-low: #94a3b8;
  --ds-muted: #94a3b8;
  --tvk-ds-muted: color-mix(in srgb, var(--color-text) 78%, transparent);
}

/* Кнопки: белый текст на accent (≥ 4.5:1) */
.btn-accent,
.button-accent,
.tvk-cookie-banner__btn--primary {
  color: #ffffff;
}

/* Ссылки-акцент на тёмном фоне: accent-2 проходит AA */
a:not(.btn):not([class*="btn-"]):not(.button) {
  text-underline-offset: 2px;
}

.site-footer a:not(.btn),
.hero-copy a:not(.btn) {
  color: var(--data, #00c9a7);
}

/* Декоративные слои — не озвучивать */
.hero-lab__glow,
.hero-lab__particle,
.hero-lab__cross,
.tvk-orbit,
.tvk-orbit-dot,
.tvk-saturn-ring,
.tvk-hearth-glow,
.tvk-brand-stage::before,
.tvk-brand-stage::after,
.marquee-sep {
  pointer-events: none;
}

/* Touch targets ≥ 44×44px (WCAG 2.5.5) */
.quick-link,
.nav-item,
.icon-btn,
.menu-toggle,
.catalog-filter__btn,
.header-messenger,
.hero-lab__mode,
.hero-lab__hit,
.sticky-cta__btn,
.tvk-section-rail a,
.engineering-ribbon a {
  min-height: 44px;
  min-width: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

.menu-toggle {
  padding: 10px;
}

.catalog-filter__btn {
  padding-inline: 14px;
}

.hero-lab__hit {
  min-width: 44px;
  min-height: 44px;
}
