/**
 * NEBO Phase 2 — Accessibility
 * Load after tokens.css and nebo-theme-overrides.css
 */

/* ─── Skip link ─────────────────────────────────────────────── */

.nebo-skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  z-index: 10050;
  padding: 0.75rem 1.25rem;
  border-radius: var(--token-radius-md, 0.375rem);
  background: var(--token-brand-primary);
  color: #fff;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  box-shadow: var(--token-shadow-md, 0 4px 12px rgba(15, 23, 42, 0.15));
}

.nebo-skip-link:focus,
.nebo-skip-link:focus-visible {
  position: fixed;
  left: 1rem;
  top: 1rem;
  width: auto;
  height: auto;
  overflow: visible;
  outline: 2px solid #fff;
  outline-offset: 2px;
}

#main-content:focus {
  outline: none;
}

/* ─── Focus visibility (keyboard only) — buttons/links, not inputs ─ */

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

a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.nav-link:focus-visible,
.dropdown-item:focus-visible,
.page-link:focus-visible,
.filter-btn:focus-visible,
.nebo-path-hero__tab:focus-visible,
.nebo-challenge-card-link:focus-visible,
.nebo-module-section__link:focus-visible,
.nebo-module-sections__expand-all:focus-visible,
.nebo-console-quick-action-tile:focus-visible,
.nebo-docs-search__filter:focus-visible,
.settings-nav-item:focus-visible,
.leaderboard-tab:focus-visible,
.nebo-classic-dropdown .dropdown-item:focus-visible,
.app-modal-close:focus-visible,
.app-modal-btn:focus-visible,
.nebo-public-header .nav-link:focus-visible,
.nebo-docs-shell-header__menu:focus-visible,
.nebo-docs-search__clear:focus-visible,
.nebo-console-search__scope:focus-visible,
.nebo-console-search__submit:focus-visible,
.toggle-password:focus-visible,
.toggle-passwords:focus-visible,
.toggle-passworda:focus-visible {
  outline: 2px solid var(--token-brand-primary);
  outline-offset: 2px;
  box-shadow: none;
}

/* Inputs — no focus ring or glow */
input:focus,
input:focus-visible,
textarea:focus,
textarea:focus-visible,
select:focus,
select:focus-visible,
.form-control:focus,
.form-control:focus-visible,
.form-select:focus,
.form-select:focus-visible,
.nebo-console-search__input:focus,
.nebo-console-search__input:focus-visible,
.nebo-docs-search__input:focus,
.nebo-docs-search__input:focus-visible,
.nebo-public-contact__input:focus,
.nebo-public-contact__input:focus-visible,
.nebo-public-contact__textarea:focus,
.nebo-public-contact__textarea:focus-visible,
.flag-input:focus,
.flag-input:focus-visible,
.form-check-input:focus,
.form-check-input:focus-visible,
.reg-field input:focus,
.reg-field input:focus-visible {
  outline: none !important;
  box-shadow: none !important;
}

.input-group:focus-within,
.nebo-console-search__field:focus-within {
  outline: none !important;
  box-shadow: none !important;
}

.card:focus-visible,
.modal:focus-visible {
  outline: 2px solid var(--token-brand-primary);
  outline-offset: 2px;
}

/* ─── Contrast improvements ─────────────────────────────────── */

body.nebo-dreams-app .text-muted,
body.nebo-dreams-public .text-muted,
body.nebo-dreams-auth .text-muted,
.nebo-console .text-muted {
  color: var(--token-text-subtle) !important;
}

.badge.bg-success-transparent.text-success {
  color: var(--token-brand-primary-active, #047857) !important;
}

.btn-primary,
.btn-primary:focus-visible {
  color: #fff;
}

.btn-outline-secondary.filter-btn.active {
  color: var(--token-text-on-light-primary);
  border-color: var(--token-border-light-strong);
  background-color: var(--token-surface-light-muted);
}

.nebo-field-error {
  color: var(--token-status-danger);
  font-size: 0.8125rem;
  margin-top: 0.35rem;
}

/* ─── Reduced motion ────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }

  .nebo-event-card:hover,
  .nebo-blog-card-thumb:hover img {
    transform: none;
  }

  .nebo-inline-spin,
  .nebo-auth-spin {
    animation: none;
  }
}
