/* Monitoreo y registros de VNNOX (js/vnnox-monitoreo.js).
   Usa los tokens de styles.css, así que el modo oscuro sale solo. */

.vxm-monitoreo { display: grid; gap: 16px; margin-top: 20px; }
.vxm-monitoreo [data-parte="acceso"] { display: flex; justify-content: flex-end; }

.vxm {
  font-family: var(--body);
  color: var(--ink);
  min-width: 0;
}
.vxm-equipos, .vxm-registros {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  padding: 18px;
  display: grid;
  gap: 14px;
}
.vxm-acceso .btn, .vxm-cabeza .btn { display: inline-flex; align-items: center; gap: 6px; }

.vxm-ico { width: 16px; height: 16px; flex: none; }

.vxm-cabeza { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.vxm-cabeza h3 { margin: 0; font-family: var(--head); font-size: 17px; font-weight: 700; }

.vxm-vacio { margin: 0; padding: 18px; text-align: center; color: var(--ink-3); font-size: 14px; }
.vxm-nota { margin: 0; font-size: 13px; color: var(--ink-3); line-height: 1.5; }
.vxm-sub { margin: 2px 0 0; font-size: 12.5px; color: var(--ink-3); }
.vxm .t-rojo { color: var(--fg-red); font-weight: 700; }

/* Avisos */
.vxm-aviso {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 0; padding: 12px 14px; border-radius: var(--r);
  font-size: 13.5px; line-height: 1.45;
}
.vxm-aviso .vxm-ico { margin-top: 1px; }
.vxm-aviso-rojo { background: var(--bg-red); color: var(--fg-red); }
.vxm-aviso-ambar { background: var(--bg-amber); color: var(--fg-amber); }

/* Chips de estado */
.vxm-chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.vxm-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 999px;
  font-size: 12px; font-weight: 700; white-space: nowrap;
}
.vxm-chip .vxm-ico { width: 13px; height: 13px; }
.vxm-chip-verde { background: var(--bg-green); color: var(--fg-green); }
.vxm-chip-ambar { background: var(--bg-amber); color: var(--fg-amber); }
.vxm-chip-rojo { background: var(--bg-red); color: var(--fg-red); }
.vxm-chip-gris { background: var(--line-2); color: var(--ink-2); }

/* Tarjeta de cada equipo */
.vxm-equipo {
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 14px;
  display: grid; gap: 12px;
  background: var(--surface-2);
  animation: vxm-entra .25s ease both;
}
.vxm-equipo.tiene-falla { border-color: var(--fg-red); }
.vxm-equipo header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.vxm-equipo h4 { margin: 0; font-size: 15px; font-weight: 700; }
.vxm-equipo h4 small { font-weight: 400; color: var(--ink-3); font-size: 13px; }

.vxm-datos {
  margin: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px;
}
.vxm-datos div { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 10px 12px; }
.vxm-datos dt { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--ink-3); }
.vxm-datos dd { margin: 4px 0 0; font-size: 15px; font-weight: 700; }

.vxm-alertas { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.vxm-alertas li {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 10px 12px; border-radius: var(--r-sm); font-size: 13px;
}
.vxm-alertas li.es-falla { background: var(--bg-red); color: var(--fg-red); }
.vxm-alertas li.es-riesgo { background: var(--bg-amber); color: var(--fg-amber); }
.vxm-alertas b { display: block; }
.vxm-alertas span { opacity: .85; }

/* Registros: pestañas y filtro */
.vxm-pestanas {
  display: flex; gap: 4px; padding: 4px;
  background: var(--line-2); border-radius: 999px;
  overflow-x: auto; scrollbar-width: none;
}
.vxm-pestanas button {
  flex: 1 0 auto;
  border: 0; background: transparent; color: var(--ink-2);
  font: 600 13px var(--body);
  padding: 8px 14px; border-radius: 999px; cursor: pointer;
  transition: background .2s, color .2s;
}
.vxm-pestanas button[aria-selected="true"] { background: var(--surface); color: var(--ink); box-shadow: var(--shadow-sm); }

.vxm-filtro { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.vxm-filtro label { display: grid; gap: 4px; font-size: 12px; color: var(--ink-3); font-weight: 600; }
.vxm-filtro input, .vxm-filtro select {
  font: 14px var(--body); color: var(--ink);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm);
  padding: 7px 10px; min-height: 36px;
}
.vxm-filtro .btn { min-height: 36px; display: inline-flex; align-items: center; gap: 6px; }
.vxm-filtro [hidden] { display: none; }

.vxm-zona { display: grid; gap: 12px; min-width: 0; }

/* Tablas */
.vxm-tabla-caja { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r); }
.vxm-tabla { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.vxm-tabla th {
  text-align: left; font-size: 12px; font-weight: 700; color: var(--ink-3);
  background: var(--surface-2); padding: 9px 12px; border-bottom: 1px solid var(--line);
}
.vxm-tabla td { padding: 9px 12px; border-bottom: 1px solid var(--line-2); vertical-align: middle; }
.vxm-tabla tr:last-child td { border-bottom: 0; }
.vxm-tabla .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

.vxm-detalle summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink-2); padding: 4px 0 10px; }
.vxm-paginas { display: flex; align-items: center; justify-content: center; gap: 12px; font-size: 13px; color: var(--ink-3); }

/* Reporte de prueba de emisión (js/reporte-emision.js) */
.rpe {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  padding: 18px;
  display: grid;
  gap: 12px;
  margin-top: 16px;
}
.rpe-cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; animation: vxm-entra .25s ease both; }
.rpe-cifras div { background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 10px 12px; }
.rpe-cifras span { display: block; font-size: 12px; color: var(--ink-3); }
.rpe-cifras b { display: block; margin-top: 4px; font-size: 16px; }

@keyframes vxm-entra { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* Móvil: el filtro en columna y la tabla de registros como tarjetas apiladas */
@media (max-width: 640px) {
  .vxm-equipos, .vxm-registros { padding: 14px; border-radius: var(--r); }
  .vxm-equipo header { flex-direction: column; }
  .vxm-chips { justify-content: flex-start; }
  .vxm-filtro { display: grid; grid-template-columns: 1fr 1fr; }
  .vxm-filtro label:has(select) { grid-column: 1 / -1; }
  .vxm-filtro input, .vxm-filtro select { width: 100%; min-width: 0; }
  .vxm-filtro .btn { justify-content: center; }
  .vxm-tabla-caja { border: 0; }
  .vxm-tabla thead { display: none; }
  .vxm-tabla, .vxm-tabla tbody, .vxm-tabla tr, .vxm-tabla td { display: block; }
  .vxm-tabla tr { border: 1px solid var(--line); border-radius: var(--r-sm); padding: 8px 4px; margin-bottom: 8px; }
  .vxm-tabla td { border: 0; padding: 3px 10px; display: flex; justify-content: space-between; gap: 12px; }
  .vxm-tabla td::before { content: attr(data-et); color: var(--ink-3); font-size: 12px; font-weight: 600; flex: none; }
  .vxm-tabla td:first-child { font-weight: 700; }
  .vxm-tabla td:first-child::before { display: none; }
  .vxm-tabla .num { text-align: right; }
}

@media (prefers-reduced-motion: reduce) {
  .vxm-equipo { animation: none; }
}
