/* Central de despacho: consola de la mesa. Usa las variables de styles.css. */
.cd-despacho .dash { gap: 16px; }
.ds-etq { display: block; font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.7; }

/* Franja superior: hora y disponibilidad, siempre a la vista */
.ds-consola {
  display: grid; grid-template-columns: 1.3fr repeat(3, 1fr) 1.2fr; gap: 1px;
  background: rgba(255, 255, 255, 0.08); border-radius: var(--radius); overflow: hidden;
  color: #fff; box-shadow: var(--shadow);
}
.ds-consola > div { background: var(--navy); padding: 12px 16px; min-width: 0; }
.ds-consola b { display: block; font-size: 22px; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; margin-top: 2px; }
.ds-consola small { display: block; font-size: 12px; opacity: 0.65; margin-top: 2px; }
.ds-reloj b { font-size: 30px; color: var(--amber); font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
.ds-operador { display: flex; flex-direction: column; }
.ds-operador b { font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ds-ajustes { margin-top: 6px; align-self: flex-start; background: transparent; border: 1px solid rgba(255, 255, 255, 0.25); color: #fff; border-radius: 8px; padding: 4px 10px; font-size: 12px; font-weight: 700; }

.ds-grilla { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 16px; align-items: start; }
.ds-grilla-b { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }

/* Formulario del llamado */
.ds-cron { font-size: 13px; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
.ds-cron.activo { color: var(--red); }
.ds-cron.activo::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--red); margin-right: 6px; animation: latido 1.2s ease-in-out infinite; }
#form-llamado { display: grid; gap: 12px; padding: 16px 18px 18px; }
#form-llamado label { display: grid; gap: 4px; font-size: 12px; font-weight: 700; color: var(--muted); }
#form-llamado input { border: 1px solid var(--line); border-radius: 10px; padding: 11px 12px; font-size: 15px; color: var(--ink); background: #fff; min-width: 0; }
#f-clave, #f-direccion { font-size: 17px; font-weight: 700; }
.ds-fila2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ds-clave-nombre { color: var(--red-dark); font-weight: 800; font-size: 13px; min-height: 16px; margin-top: -6px; }
.ds-carros { border: 0; padding: 0; margin: 0; }
.ds-carros legend { font-size: 12px; font-weight: 700; color: var(--muted); padding: 0; margin-bottom: 6px; }
.ds-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.ds-chip {
  display: grid; gap: 2px; text-align: left; padding: 10px 12px; min-height: 56px;
  border: 2px solid var(--line); border-radius: 12px; background: #fff; position: relative;
  transition: border-color 0.15s ease, background-color 0.15s ease, transform 0.12s ease;
}
.ds-chip:active { transform: scale(0.97); }
.ds-chip b { font-size: 17px; }
.ds-chip small { font-size: 11px; color: var(--muted); line-height: 1.25; }
.ds-chip::after { content: ""; position: absolute; top: 10px; right: 10px; width: 9px; height: 9px; border-radius: 50%; background: var(--green); }
.ds-chip.est-observacion::after { background: var(--amber); }
.ds-chip.est-fuera_servicio::after, .ds-chip.est-emergencia::after { background: var(--red); }
.ds-chip:not(.est-operativo):not(.est-observacion):not(.est-fuera_servicio):not(.est-emergencia)::after { display: none; }
.ds-chip.elegido { border-color: var(--navy); background: #eef2f8; box-shadow: inset 0 0 0 1px var(--navy); }
.ds-chip[disabled] { opacity: 0.5; }
.ds-acciones { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ds-despachar { background: var(--red); border-color: var(--red); color: #fff; font-size: 16px; min-height: 52px; padding: 12px 22px; flex: 1 1 220px; }
.ds-despachar:not([disabled]):hover { background: var(--red-dark); }
.btn-texto { border-color: transparent; background: transparent; color: var(--muted); }
.ds-nota { margin: 0; font-size: 12px; color: var(--muted); }

/* En curso */
.ds-vacio { padding: 34px 20px; text-align: center; color: var(--muted); }
.ds-vacio b { display: block; color: var(--ink); font-size: 16px; margin-bottom: 6px; }
.ds-vacio p { margin: 0 auto; max-width: 380px; font-size: 14px; }
.ds-incidente { display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center; padding: 14px 18px; background: #fff6f6; border-bottom: 1px solid var(--line); }
.ds-inc-clave { background: var(--red); color: #fff; border-radius: 10px; padding: 8px 12px; text-align: center; }
.ds-inc-clave b { display: block; font-size: 22px; }
.ds-inc-clave span { display: block; font-size: 11px; font-weight: 700; max-width: 120px; }
.ds-inc-lugar b { display: block; font-size: 17px; }
.ds-inc-lugar small { display: block; color: var(--muted); font-size: 13px; }
.ds-inc-tiempo { text-align: right; }
.ds-inc-tiempo b { display: block; font-size: 24px; font-variant-numeric: tabular-nums; font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
.ds-inc-tiempo small { color: var(--muted); font-size: 12px; }
.ds-moviles { display: grid; }
.ds-movil { display: grid; grid-template-columns: 110px 1fr; gap: 12px; align-items: center; padding: 12px 18px; border-bottom: 1px solid var(--line); }
.ds-movil.de-vuelta { background: #f3faf6; }
.ds-movil-id b { display: block; font-size: 20px; }
.ds-movil-id small { color: var(--muted); font-size: 12px; }
.ds-codigos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.ds-codigo {
  display: grid; gap: 1px; justify-items: center; padding: 8px 4px; min-height: 58px;
  border: 2px solid var(--navy3); border-radius: 12px; background: #fff; color: var(--navy);
  transition: background-color 0.15s ease, transform 0.12s ease;
}
.ds-codigo:active { transform: scale(0.96); }
.ds-codigo b { font-size: 18px; font-variant-numeric: tabular-nums; }
.ds-codigo small { font-size: 11px; color: var(--muted); text-align: center; line-height: 1.2; }
.ds-codigo.hecho { background: var(--navy); color: #fff; border-color: var(--navy); }
.ds-codigo.hecho small { color: var(--amber); font-weight: 800; font-size: 13px; font-variant-numeric: tabular-nums; }
.ds-curso-acciones { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 18px 4px; align-items: center; }
.ds-curso-acciones .btn-primario { margin-left: auto; }
.ds-controlado { font-weight: 800; color: var(--green); font-size: 14px; }
.ds-curso .ds-nota { padding: 6px 18px 14px; }

/* Libro */
.ds-libro-filtro { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.ds-libro-filtro input { border: 1px solid var(--line); border-radius: 8px; padding: 5px 8px; font-size: 13px; }
.ds-novedad { display: flex; gap: 8px; padding: 12px 18px; border-bottom: 1px solid var(--line); }
.ds-novedad input { flex: 1; min-width: 0; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; font-size: 14px; }
.ds-libro { list-style: none; margin: 0; padding: 0; max-height: 460px; overflow-y: auto; }
.ds-libro li { display: grid; grid-template-columns: 46px 22px 1fr; gap: 8px; padding: 9px 18px; border-bottom: 1px solid var(--line); font-size: 14px; }
.ds-libro li:last-child { border-bottom: 0; }
.ds-libro time { font-weight: 800; font-variant-numeric: tabular-nums; }
.ds-libro small { display: block; color: var(--muted); font-size: 12px; }
.ds-libro .t-despacho { background: #fff6f6; }
.ds-libro .t-radio { background: #f5f8fe; }
.ds-libro .t-cierre { background: #f3faf6; }
.ds-libro .t-correccion { color: var(--muted); }
.ds-ico { text-align: center; }
.ds-vacio-li { color: var(--muted); padding: 18px !important; display: block !important; text-align: center; }

/* Últimos llamados */
.ds-tabla-caja { overflow-x: auto; }
.ds-tabla { width: 100%; border-collapse: collapse; font-size: 13px; }
.ds-tabla th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); padding: 10px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.ds-tabla td { padding: 9px 12px; border-bottom: 1px solid var(--line); font-variant-numeric: tabular-nums; }
.ds-tabla td small { color: var(--muted); }
.ds-res { font-weight: 800; font-size: 12px; padding: 2px 8px; border-radius: 999px; background: #eef2f8; white-space: nowrap; }
.ds-res.r-despachado { background: #fde8e8; color: var(--red-dark); }
.ds-res.r-sin_despacho { background: #f1f1f1; color: var(--muted); }

@media (max-width: 1100px) {
  .ds-consola { grid-template-columns: repeat(3, 1fr); }
  .ds-reloj { grid-column: span 3; }
  .ds-operador { grid-column: span 3; flex-direction: row; align-items: center; gap: 10px; flex-wrap: wrap; }
  .ds-operador .ds-ajustes { margin: 0 0 0 auto; }
  .ds-grilla, .ds-grilla-b { grid-template-columns: 1fr; }
  .ds-curso { order: -1; }
}
@media (max-width: 600px) {
  .cd-despacho .dash { padding: 12px; }
  .ds-consola > div { padding: 10px 12px; }
  .ds-consola b { font-size: 18px; }
  .ds-reloj b { font-size: 24px; }
  .ds-fila2 { grid-template-columns: 1fr; }
  .ds-incidente { grid-template-columns: auto 1fr; }
  .ds-inc-tiempo { grid-column: 1 / -1; text-align: left; display: flex; gap: 10px; align-items: baseline; }
  .ds-movil { grid-template-columns: 1fr; gap: 8px; }
  .ds-movil-id { display: flex; gap: 10px; align-items: baseline; }
  .ds-codigos { gap: 6px; }
  .ds-tabla thead { display: none; }
  .ds-tabla tr { display: grid; grid-template-columns: 1fr 1fr; padding: 8px 6px; border-bottom: 1px solid var(--line); }
  .ds-tabla td { border: 0; padding: 3px 6px; }
  .ds-tabla td::before { content: attr(data-l); display: block; font-size: 10px; text-transform: uppercase; color: var(--muted); letter-spacing: 0.05em; }
}

/* ---------- Sistema propio: ingreso, varias emergencias y configuración ---------- */
body.cd-despacho { min-height: 100vh; }
.ds-ingreso { min-height: 100vh; display: grid; place-items: center; padding: 24px 16px; background: var(--navy); }
.ds-ingreso-caja { background: #fff; border-radius: 18px; padding: 28px 24px; width: min(400px, 100%); box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35); }
.ds-ingreso-caja h1 { margin: 12px 0 2px; font-size: 22px; }
.ds-ingreso-caja .sub { color: var(--muted); margin: 0 0 18px; font-size: 14px; }
.ds-ingreso-caja .campo select { width: 100%; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; font-size: 16px; min-height: 48px; background: #fff; }
.ds-ingreso-caja .ds-nota { margin-top: 12px; }
.barra .marca span { font-weight: 800; }
.ds-emergencia + .ds-emergencia { border-top: 6px solid var(--bg); }
.ds-envios { list-style: none; margin: 0; padding: 8px 18px; display: grid; gap: 4px; font-size: 13px; border-bottom: 1px solid var(--line); }
.ds-envios small { display: block; color: var(--muted); font-size: 12px; }
.ds-envios .env-recibido b { color: var(--green); }
.ds-envios .env-error { color: var(--red-dark); font-weight: 700; }
.ds-envios .env-enviando { color: var(--muted); }
.ds-libro .t-error { background: #fff1e6; color: var(--red-dark); }
.ds-res.r-activa { background: #fde8e8; color: var(--red-dark); }
.ds-res.r-cerrada { background: #e8f5ee; color: var(--green); }
.ds-carros + .ds-carros { margin-top: 10px; }
dialog.ds-dialogo-ancho { width: min(760px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); }
.ds-cfg h3 { margin: 18px 0 6px; font-size: 15px; }
.ds-cfg input, .ds-cfg textarea { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; font-size: 14px; min-width: 0; width: 100%; }
.ds-cfg-fila { display: grid; grid-template-columns: 1fr 1.4fr 1.2fr 1fr auto; gap: 6px; margin-bottom: 8px; align-items: center; }
.ds-cfg-fila2 { display: grid; grid-template-columns: 90px 1fr; gap: 6px; margin-bottom: 6px; }
.ds-cfg-ops { list-style: none; padding: 0; margin: 0 0 8px; }
.ds-cfg-ops li { display: flex; gap: 8px; align-items: center; padding: 4px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.ds-cfg-ops li b { margin-right: auto; }
.check-linea { display: flex; gap: 8px; align-items: center; font-size: 14px; }
.check-linea input { width: auto; }
@media (max-width: 700px) { .ds-cfg-fila { grid-template-columns: 1fr; } }
