/* ============================================================================
 *  ACCESIBILIDAD · Foco visible por teclado (WCAG 2.4.7) + skip link.
 *  Se carga la ÚLTIMA para ganar a reglas 'outline: none' previas.
 *  :focus-visible → el anillo solo aparece al navegar con teclado, no con ratón.
 * ========================================================================= */

a:focus-visible,
button:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
.btn:focus-visible,
.btn-icon:focus-visible,
.nav-item:focus-visible,
.kpi:focus-visible,
.cmd-chip:focus-visible,
.cmd-row:focus-visible,
.erp-tab:focus-visible,
.pill-tabs .tab:focus-visible,
.fac-tab:focus-visible,
.cmdk-item:focus-visible,
.row-ico:focus-visible,
.ajuste-item:focus-visible,
.add-row:focus-visible,
.modal-close:focus-visible,
.profile-logout:focus-visible,
.iconbtn:focus-visible {
  outline: 2px solid var(--seed);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Campos de formulario: anillo pegado al borde. */
.input:focus-visible,
.textarea:focus-visible,
.select:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--seed);
  outline-offset: 1px;
}

/* Sobre el sidebar navy el cobalto oscuro no se ve → cobalto claro. */
.sidebar a:focus-visible,
.sidebar button:focus-visible,
.sidebar select:focus-visible,
.nav-item:focus-visible {
  outline-color: var(--acc-navy);
}

/* Enlace "saltar al contenido" — primer tabulador, oculto hasta recibir foco. */
.skip-link {
  position: fixed;
  left: 12px; top: 12px;
  z-index: var(--z-snackbar);
  background: var(--seed); color: #fff;
  padding: 10px 16px; border-radius: var(--radius-md);
  font: 600 13.5px/1 var(--font-base);
  box-shadow: var(--shadow-pop);
  transform: translateY(-160%);
  transition: transform 160ms var(--ease-out);
}
.skip-link:focus {
  transform: translateY(0);
  outline: 2px solid #fff;
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .skip-link { transition: none; }
}
