/* ============================================================
   Goal Imports · Dashboard v2 — Estilo referencia usuario
   ============================================================
   Look sobrio, plano, con acentos vibrantes en ribbons y valores.
   Sin gradients, sin sparklines, sin hero azul.
   ============================================================ */

:root {
  --gd2-cyan: #10c8d1;              /* turquesa botones y acento activo */
  --gd2-cyan-strong: #0ab4bc;
  --gd2-blue: #1E6BC6;
  --gd2-red: #DC2626;
  --gd2-amber: #F59E0B;
  --gd2-green: #16A34A;
  --gd2-violet: #7C3AED;
  --gd2-orange: #EA580C;
  --gd2-pink: #DB2777;
  --gd2-ink: #0B1B2E;
  --gd2-ink-2: #2A3A4E;
  --gd2-muted: #5C6B7F;
  --gd2-muted-2: #8895A6;
  --gd2-line: #E3E8F0;
  --gd2-line-soft: #EEF2F8;
  --gd2-bg: #F4F6FA;
  --gd2-surface: #FFFFFF;
  --gd2-surface-soft: #F8FBFF;
  --gd2-shadow-sm: 0 1px 2px rgba(15,30,60,.05), 0 1px 3px rgba(15,30,60,.04);
  --gd2-shadow-md: 0 4px 12px rgba(15,30,60,.08), 0 2px 4px rgba(15,30,60,.05);
  --gd2-radius-sm: 8px;
  --gd2-radius: 10px;
  --gd2-radius-lg: 14px;
  --gd2-font: "Inter", "Segoe UI", Arial, sans-serif;
}

/* =============== TOPBAR override (Control Ejecutivo) =============== */
.gd2-topbar-override .topbar h2,
.topbar h2 {
  font-family: var(--gd2-font) !important;
  font-size: 28px !important;
  font-weight: 900 !important;
  color: var(--gd2-ink) !important;
  letter-spacing: -0.03em !important;
  margin: 0 !important;
  line-height: 1.1 !important;
}
.topbar p {
  font-family: var(--gd2-font) !important;
  font-size: 12px !important;
  color: var(--gd2-muted) !important;
  margin: 4px 0 0 !important;
}

/* Reloj con "HORA LOCAL" arriba y hora grande abajo */
.dashboard-clock-box {
  display: inline-flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 100px !important;
  padding: 8px 14px !important;
  border-radius: 10px !important;
  background: #fff !important;
  border: 1px solid var(--gd2-line) !important;
  box-shadow: var(--gd2-shadow-sm) !important;
  font-family: var(--gd2-font) !important;
  gap: 2px !important;
}
.dashboard-clock-box .dashboard-live-indicator__text {
  display: grid !important;
  gap: 0 !important;
  text-align: center !important;
}
.dashboard-clock-box .dashboard-live-indicator__text strong {
  font-size: 9px !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
  color: var(--gd2-muted-2) !important;
  font-weight: 800 !important;
}
.dashboard-clock-box .dashboard-live-indicator__text small {
  font-size: 16px !important;
  font-weight: 900 !important;
  color: var(--gd2-ink) !important;
  line-height: 1.1 !important;
  font-variant-numeric: tabular-nums !important;
}

/* Botón "Actualizar" turquesa (btn--secondary) */
.topbar__actions .btn--secondary,
#refreshAllBtn {
  background: var(--gd2-cyan) !important;
  color: #fff !important;
  border: 1px solid var(--gd2-cyan) !important;
  font-weight: 800 !important;
  padding: 9px 16px !important;
  border-radius: 8px !important;
}
.topbar__actions .btn--secondary:hover,
#refreshAllBtn:hover {
  background: var(--gd2-cyan-strong) !important;
  border-color: var(--gd2-cyan-strong) !important;
  box-shadow: 0 4px 12px rgba(16, 200, 209, .30) !important;
}
/* Nota: el botón "Nueva importación" (#goToImportBtn) se retiró del topbar. */
/* Las tarjetas KPI de #dashboardStats ahora usan su propio sistema de estilos,
   ver el bloque <style id="dashboard-kpi-styles"> en index.html. */

/* =============== Sección: header con badge numerado =============== */
#dashboard.gd2-shell,
#dashboard.handoff-dashboard {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
  font-family: var(--gd2-font) !important;
}

/* =============== Pestañas del dashboard (Control de Stock / Importaciones) =============== */
.gd2-tabs {
  display: flex !important;
  gap: 6px !important;
  padding: 4px !important;
  background: var(--gd2-line-soft) !important;
  border-radius: 12px !important;
  width: fit-content !important;
  font-family: var(--gd2-font) !important;
}
.gd2-tab {
  appearance: none !important;
  border: 0 !important;
  background: transparent !important;
  color: var(--gd2-muted) !important;
  font-family: var(--gd2-font) !important;
  font-size: 13px !important;
  font-weight: 800 !important;
  padding: 9px 18px !important;
  border-radius: 9px !important;
  cursor: pointer !important;
  transition: background .15s ease, color .15s ease, box-shadow .15s ease !important;
}
.gd2-tab:hover {
  color: var(--gd2-ink) !important;
}
.gd2-tab.is-active {
  background: #fff !important;
  color: var(--gd2-ink) !important;
  box-shadow: var(--gd2-shadow-sm) !important;
}
.gd2-tabpanel.hidden {
  display: none !important;
}

.gd2-section {
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
}
.gd2-section__head {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  gap: 16px !important;
  flex-wrap: wrap !important;
}
.gd2-section__title {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex-wrap: wrap !important;
}
.gd2-section__num,
.handoff-section__num {
  font-size: 11px !important;
  font-weight: 900 !important;
  color: #fff !important;
  background: var(--gd2-ink) !important;
  padding: 4px 8px !important;
  border-radius: 5px !important;
  letter-spacing: .05em !important;
}
.gd2-section__title h3 {
  margin: 0 !important;
  font-size: 20px !important;
  font-weight: 900 !important;
  color: var(--gd2-ink) !important;
  letter-spacing: -0.02em !important;
}
.gd2-section__count,
.handoff-section__count {
  font-size: 11px !important;
  font-weight: 700 !important;
  color: var(--gd2-muted) !important;
  background: transparent !important;
  border: 1px solid var(--gd2-line) !important;
  padding: 3px 10px !important;
  border-radius: 999px !important;
}

/* Legend simple */
.gd2-legend,
.handoff-legend {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  font-size: 11px !important;
  color: var(--gd2-muted) !important;
  font-weight: 600 !important;
}
.gd2-legend__item,
.handoff-legend__item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
}
.gd2-dot,
.handoff-dot {
  width: 8px !important;
  height: 8px !important;
  border-radius: 50% !important;
  display: inline-block !important;
}
.gd2-dot--ok, .handoff-dot--ok { background: var(--gd2-green) !important; }
.gd2-dot--warn, .handoff-dot--warn { background: var(--gd2-amber) !important; }
.gd2-dot--danger, .handoff-dot--danger { background: var(--gd2-red) !important; animation: gd2Pulse 1.4s infinite !important; }

/* =============== GRID de stock e imports =============== */
#inventoryProductList,
#dashboardCards,
.gd2-grid {
  display: grid !important;
  gap: 10px !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  font-family: var(--gd2-font) !important;
}
@media (max-width: 1300px) {
  #inventoryProductList, #dashboardCards, .gd2-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
@media (max-width: 780px) {
  #inventoryProductList, #dashboardCards, .gd2-grid {
    grid-template-columns: 1fr !important;
  }
}

/* Las tarjetas de importación tienen más datos por tarjeta que las de stock, así que
   van en 2 columnas (no 3) para que los seis campos (DIN, cantidad, ETA, valor, gastos,
   margen) tengan espacio y no se corte el texto. */
#dashboardCards {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
@media (max-width: 1300px) {
  #dashboardCards {
    grid-template-columns: 1fr !important;
  }
}

/* =============== STOCK CARD (versión referencia) =============== */
#inventoryProductList > article,
.gd2-stock-card {
  background: #fff !important;
  border: 1px solid var(--gd2-line) !important;
  border-radius: var(--gd2-radius-lg) !important;
  overflow: hidden !important;
  box-shadow: var(--gd2-shadow-sm) !important;
  transition: transform .2s, box-shadow .2s !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: auto !important;
  animation: gd2FadeInUp .35s ease-out both !important;
  padding: 0 !important;
  font-family: var(--gd2-font) !important;
}
#inventoryProductList > article:hover,
.gd2-stock-card:hover {
  transform: translateY(-3px) !important;
  box-shadow: var(--gd2-shadow-md) !important;
}

/* El primer div dentro del article que app.js genera es el ribbon de color */
#inventoryProductList > article > div:first-child,
#dashboardCards > article > div:first-child {
  height: 5px !important;
  position: relative !important;
  overflow: hidden !important;
}
/* Brillo continuo sobre el ribbon de color, para que se note el movimiento en la tarjeta */
#inventoryProductList > article > div:first-child::after,
#dashboardCards > article > div:first-child::after {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.65) 50%, transparent 100%) !important;
  background-size: 200% 100% !important;
  animation: gd2RibbonShine 3.2s linear infinite !important;
}
@keyframes gd2RibbonShine {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Header interno (nombre + código + semáforo) */
#inventoryProductList > article > div:nth-child(2) {
  padding: 10px 14px 7px !important;
  background: #fff !important;
  border-bottom: 0 !important;
  display: flex !important;
  justify-content: space-between !important;
  align-items: flex-start !important;
  gap: 10px !important;
}
/* Nombre producto */
#inventoryProductList > article > div:nth-child(2) > div:first-child > div:first-child {
  font-size: 13px !important;
  font-weight: 800 !important;
  color: var(--gd2-ink) !important;
  letter-spacing: -0.01em !important;
}
/* Código pill */
#inventoryProductList > article > div:nth-child(2) > div:first-child > div:nth-child(2) {
  padding: 2px 6px !important;
  border-radius: 4px !important;
  background: var(--gd2-line-soft) !important;
  color: var(--gd2-muted) !important;
  font-size: 9.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  margin-top: 3px !important;
}
/* Semáforo pill */
#inventoryProductList > article > div:nth-child(2) > span {
  padding: 4px 8px !important;
  font-size: 9px !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
  border-radius: 999px !important;
}

/* Body: filas de métricas simples */
#inventoryProductList > article > div:nth-child(3) {
  padding: 2px 14px 10px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}
/* Cada fila (Stock actual, Stock seguridad, En tránsito, Cobertura) */
#inventoryProductList > article > div:nth-child(3) > div {
  display: flex !important;
  justify-content: space-between !important;
  align-items: baseline !important;
  gap: 10px !important;
  padding: 6px 0 !important;
  border-bottom: 1px solid var(--gd2-line-soft) !important;
}
#inventoryProductList > article > div:nth-child(3) > div:last-child,
#inventoryProductList > article > div:nth-child(3) > div:nth-last-child(2) {
  border-bottom: 0 !important;
}
#inventoryProductList > article > div:nth-child(3) > div > span:first-child {
  font-size: 11px !important;
  color: var(--gd2-muted) !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
#inventoryProductList > article > div:nth-child(3) > div > span:nth-child(2) {
  font-size: 15px !important;
  font-weight: 900 !important;
  color: var(--gd2-ink) !important;
  letter-spacing: -0.02em !important;
  font-variant-numeric: tabular-nums !important;
}
#inventoryProductList > article > div:nth-child(3) > div > span:nth-child(2) small {
  font-size: 10px !important;
  color: var(--gd2-muted-2) !important;
  font-weight: 600 !important;
  margin-left: 3px !important;
}

/* La fila del "big value" (primer valor de Disponible / Stock actual): valor grande en color */
#inventoryProductList > article > div:nth-child(3) > div:first-child > span:nth-child(2),
.gd2-stock-big-val {
  font-size: 19px !important;
  font-weight: 900 !important;
}

/* Progress bar */
#inventoryProductList > article > div:nth-child(3) > div:nth-last-child(2) {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 4px !important;
  border-bottom: 0 !important;
  padding: 6px 0 0 !important;
}
#inventoryProductList > article > div:nth-child(3) > div:nth-last-child(2) > div:first-child {
  display: flex !important;
  justify-content: space-between !important;
  font-size: 9px !important;
  color: var(--gd2-muted-2) !important;
  font-weight: 700 !important;
  letter-spacing: .04em !important;
  text-transform: uppercase !important;
}
#inventoryProductList > article > div:nth-child(3) > div:nth-last-child(2) > div:nth-child(2) {
  height: 5px !important;
  background: var(--gd2-line-soft) !important;
  border-radius: 999px !important;
  overflow: hidden !important;
}

/* Footer: Proveedor sugerido */
#inventoryProductList > article > div:nth-child(3) > div:last-child {
  padding: 8px 0 0 !important;
  margin-top: 4px !important;
  border-top: 1px solid var(--gd2-line-soft) !important;
  border-bottom: 0 !important;
  align-items: center !important;
}
#inventoryProductList > article > div:nth-child(3) > div:last-child > span:first-child {
  font-size: 9px !important;
  color: var(--gd2-muted-2) !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  letter-spacing: .06em !important;
}
#inventoryProductList > article > div:nth-child(3) > div:last-child > span:nth-child(2) {
  font-size: 11px !important;
  color: var(--gd2-ink) !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}

/* =============== IMPORT CARD =============== */
#dashboardCards > article {
  background: #fff !important;
  border: 1px solid var(--gd2-line) !important;
  border-radius: var(--gd2-radius-lg) !important;
  overflow: hidden !important;
  box-shadow: var(--gd2-shadow-sm) !important;
  transition: transform .2s, box-shadow .2s !important;
  display: flex !important;
  flex-direction: column !important;
  font-family: var(--gd2-font) !important;
  animation: gd2FadeInUp .35s ease-out both !important;
}
#dashboardCards > article:hover {
  transform: translateY(-3px) !important;
  box-shadow: var(--gd2-shadow-md) !important;
}

/* Reforzar animación de ondas en las cards de importación */
#dashboardCards > article [style*="linear-gradient(180deg,#EFF6FF"] > div:first-child {
  animation: gd2Wave 3s ease-in-out infinite !important;
}

/* Compactar tarjeta de importación (header, franja de tránsito, grilla de datos y pie) */
#dashboardCards > article > div:nth-child(2) {
  padding: 8px 10px !important;
}
#dashboardCards > article > div:nth-child(2) > div:nth-child(2) {
  font-size: 13px !important;
  margin-top: 3px !important;
}
#dashboardCards > article > div:nth-child(3) {
  padding: 8px 10px 6px !important;
}
#dashboardCards > article > div:nth-child(3) > div:first-child {
  height: 28px !important;
}
#dashboardCards > article > div:nth-child(4) {
  padding: 9px 12px 10px !important;
  gap: 7px 8px !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
#dashboardCards > article > div:nth-child(4) > div {
  padding: 6px 8px !important;
}
#dashboardCards > article > div:nth-child(4) > div > span:first-child {
  font-size: 9.5px !important;
  margin-bottom: 2px !important;
  white-space: nowrap !important;
}
#dashboardCards > article > div:nth-child(4) > div > span:nth-child(2) {
  font-size: 12.5px !important;
}
#dashboardCards > article > div:nth-child(5) {
  padding: 6px 10px 8px !important;
}

/* En pantallas más angostas, la tarjeta ya ocupa el ancho completo (ver regla de
   #dashboardCards arriba), así que la grilla de datos baja a 2 columnas igual. */
@media (max-width: 1300px) {
  #dashboardCards > article > div:nth-child(4) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* Panel de Importaciones: ahora vive en su propia pestaña (ver .gd2-tabs), así que se deja
   crecer con la página en vez de encerrarlo en una caja con scroll interno. */
#dashboardCards {
  align-content: start !important;
}
#dashboardCards::-webkit-scrollbar { width: 8px; }
#dashboardCards::-webkit-scrollbar-thumb { background: rgba(30,107,198,.35); border-radius: 8px; }
#dashboardCards::-webkit-scrollbar-track { background: transparent; }

.gd2-load-more {
  display: flex !important;
  justify-content: center !important;
  margin-top: 6px !important;
}
.gd2-load-more:empty {
  display: none !important;
}

/* Semáforos (reforzar clases) */
#inventoryProductList article span[style*="background:#DCFCE7"] { color: #14532D !important; }
#inventoryProductList article span[style*="background:#FEF3C7"] { color: #78350F !important; }
#inventoryProductList article span[style*="background:#FEE2E2"] { color: #7F1D1D !important; }

/* =============== EMPTY STATE =============== */
.gd2-empty {
  grid-column: 1 / -1 !important;
  padding: 30px !important;
  border-radius: var(--gd2-radius-lg) !important;
  background: #fff !important;
  border: 1.5px dashed #CFD6E3 !important;
  color: var(--gd2-muted) !important;
  text-align: center !important;
}

/* =============== ANIMACIONES =============== */
@keyframes gd2Pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .4; }
}
@keyframes gd2FadeInUp {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes gd2Wave {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(-6px); }
}
@keyframes gd2Shine {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* Animación del barco en importaciones */
#dashboardCards article svg {
  animation: gd2Bob 2.5s ease-in-out infinite !important;
}
@keyframes gd2Bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}

/* Usadas por las tarjetas de stock/importación generadas en app.js (entrada
   escalonada de las tarjetas y parpadeo de los indicadores de alerta). */
@keyframes dashboardCardIn {
  0% { opacity: 0; transform: translateY(12px) scale(.985); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes dashboardLivePulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.12); opacity: .78; }
}

/* Progress bar shine (para que se vea movimiento) */
#inventoryProductList article div[style*="height:100%"] {
  background-size: 200% 100% !important;
  animation: gd2Shine 2.5s linear infinite !important;
}

/* =============== SIDEBAR: item activo con acento cyan =============== */
.sidebar__nav .nav-link.active {
  position: relative !important;
  color: #fff !important;
}
.sidebar__nav .nav-link.active::before {
  content: "" !important;
  position: absolute !important;
  left: -18px !important;
  top: 6px !important;
  bottom: 6px !important;
  width: 3px !important;
  background: var(--gd2-cyan) !important;
  border-radius: 0 3px 3px 0 !important;
}

/* Estado sistema en verde */
.sidebar__info strong#healthStatus {
  color: var(--gd2-green) !important;
  font-weight: 800 !important;
}
