/* trafico-widget.css — ajustes del widget embebido, ENCIMA de trafico-engine.css.
   Bespoke: generar-widget-trafico.js NO lo toca. */

html, body { margin: 0; padding: 0; background: #fff; }
.main { max-width: 1100px; margin: 0 auto; padding: 6px 14px 18px; }

/* La sección Zona Sur siempre visible (en el dashboard depende de la clase .active del tab) */
#sec-zonasur.section { display: block !important; opacity: 1 !important; visibility: visible !important; transform: none !important; }

/* Mensaje de error de carga */
.zs-error {
  background: #fff4f2; border: 1px solid #f6c9bd; color: #9a3412;
  padding: 12px 14px; border-radius: 12px; font-size: 14px; margin: 6px 0 14px;
}

/* Contadores (capturas + destinos) — bajo el subtítulo, solo en modo completo */
.zs-stats { display: flex; flex-wrap: wrap; gap: 8px 26px; margin: 4px 0 16px; }
.zs-stat { font-family: 'Open Sans', system-ui, sans-serif; font-size: 13px; color: #475569; display: inline-flex; align-items: baseline; gap: 7px; }
.zs-stat strong { font-family: 'Montserrat', system-ui, sans-serif; font-weight: 800; font-size: 19px; color: #1a2547; }

/* Compartir (descargar imagen / PDF) — solo en modo completo */
.zs-share { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 2px 0 18px; }
.zs-share-lbl { font-family: 'Open Sans', system-ui, sans-serif; font-size: 13px; color: #475569; }
.zs-share-btn { display: inline-flex; align-items: center; gap: 7px; font-family: 'Montserrat', system-ui, sans-serif; font-weight: 700; font-size: 13px; color: #1a2547; background: #fff; border: 1px solid #e2e8f0; border-radius: 999px; padding: 8px 15px; cursor: pointer; transition: background .15s, border-color .15s; }
.zs-share-btn:hover { background: #fff4e8; border-color: #fe881a; }
.zs-share-btn[disabled] { opacity: .55; cursor: progress; }
.zs-share-btn svg { width: 15px; height: 15px; }
.zs-share-primary { background: #fe881a; border-color: #fe881a; color: #fff; }
.zs-share-primary:hover { background: #e9760f; border-color: #e9760f; }

/* Export: forzar layout de escritorio (Ida y Vuelta lado a lado) durante la captura, aunque sea
   móvil → el archivo compartido se ve como la versión web, no el sentido del switch. */
.zs-export .main { width: 1100px !important; max-width: 1100px !important; padding: 22px 28px !important; }
.zs-export .grid-2 { grid-template-columns: 1fr 1fr !important; }
.zs-export #sec-zonasur .grid-2 > [data-sent] { display: block !important; }
.zs-export .zs-sent-toggle { display: none !important; }
.zs-export .zs-share { display: none !important; }   /* la barra de compartir no va en la captura */

/* Enlace "ver estudio completo" — oculto por defecto, visible solo en modo compacto */
.zs-ver-completo { display: none; }
.zs-ver-completo {
  margin-top: 14px; align-items: center; gap: 6px;
  font-family: 'Montserrat', system-ui, sans-serif; font-weight: 700; font-size: 14px;
  color: #fff; background: #1a2547; text-decoration: none;
  padding: 11px 18px; border-radius: 999px; transition: background .15s, transform .15s;
}
.zs-ver-completo:hover { background: #fe881a; transform: translateY(-1px); }
.zs-ver-completo span { transition: transform .15s; }
.zs-ver-completo:hover span { transform: translateX(3px); }

/* ===== MODO COMPACTO (fichas de propiedad / fraccionamiento) =====
   Solo el toggle de origen + la barra de minutos a cada destino + el enlace al estudio completo. */
body.modo-compacto .section-title,
body.modo-compacto .section-sub,
body.modo-compacto .zs-stats,
body.modo-compacto .zs-share,
body.modo-compacto .zs-step,
body.modo-compacto #zs-bloque-hora,
body.modo-compacto #zs-destinos,
body.modo-compacto #zs-detalle-wrap { display: none !important; }

body.modo-compacto .zs-ver-completo { display: inline-flex; }
/* Con ?cta=0 el botón NO se esconde aquí: se quita del DOM en el JS de trafico-zonasur.html.
   Este archivo se sirve con caché de una semana y SIN `?v=`, así que una regla nueva no le llega
   al que ya visitó el sitio; el HTML del widget, en cambio, revalida en cada carga. */
body.modo-compacto .main { padding-top: 2px; }

/* ═══════════════════════════════════════════════════════════════════════════
   LA MARCA DE CASAS EN VENTA TIJUANA, ENCIMA DEL MOTOR
   ═══════════════════════════════════════════════════════════════════════════
   Todo lo de arriba viene del widget de Zona Sur y trae su navy y su naranja.
   Esto lo reviste sin tocarlo, para que el dia que se resincronice el motor no
   haya que volver a peinar el archivo.

   POR QUE EL ACENTO NO ES VERDE, QUE ES EL COLOR DE LA MARCA:
   el motor pinta los tiempos en una escala verde -> rojo donde el verde SIGNIFICA
   "aqui se hace rapido". Y el verde de texto de la marca (#14803e) es, literalmente,
   el mismo verde que el motor usa para el tramo mas rapido (#15803d): un punto de
   diferencia en dos canales, indistinguibles en pantalla. Pintar de verde un boton
   al lado de esa escala es pedirle a la gente que lea como dato lo que es adorno.
   La escala, ademas, NO se puede tematizar: vive quemada en el JS del motor.
   Asi que cede el cromo, no el dato — y el acento se va al azul marino #004878,
   que es el color dominante del sitio y esta FUERA de la rampa verde-amarillo-rojo.
   Contrasta 9.57:1 con blanco, que es lo que --accent necesita porque se usa en las
   dos direcciones: como fondo con texto encima y como texto sobre casi-blanco.
   El verde de marca se queda donde no compite con una medicion: el foco y el hover.
*/
:root {
  --bg: #f5f7f9;
  --surface: #ffffff;
  --surface2: #eef1f4;
  --border: #e6e9ed;
  --border2: #c3cedb;
  --navy: #00304f;
  --navy-dark: #00304f;
  --accent: #004878;
  --accent-dk: #00304f;
  --accent-bg: #eaf1f7;
  --footer: #004878;
}

/* Los naranjas que el motor lleva quemados y que ninguna variable alcanza. */
.zs-chip.active,
.zs-btn.active { border-color: #004878 !important; box-shadow: 0 0 0 3px rgba(0,72,120,.14) !important; }
/* El anillo de foco va en el verde OSCURO de la marca, no en el de logotipo: #20b058 contra
   blanco da 2.83:1 y un indicador de foco pide 3:1 como minimo (WCAG 2.2, 1.4.11). #14803e
   pasa de sobra. Se queda verde porque el foco es transitorio: aparece y se va, nadie lo lee
   como una medicion. */
select:focus,
input:focus,
button:focus-visible,
a:focus-visible { outline: 3px solid #14803e !important; outline-offset: 2px; }

/* El popup que abre al tocar una barra. El motor lo coloca con position:fixed suponiendo que
   mide 420 px con la lista por hora (showBarPopup: `ph = hasList ? 420 : 290`), pero su alto
   real es 482. En el tablero sobra pantalla y no se nota; dentro de un iframe, la ventana ES
   el recuadro, y esos 62 px de mas partian el boton de Google Maps contra el borde de abajo.
   Se le pone el tope que el motor ya da por hecho, y lo que no quepa rueda por dentro: asi la
   cuenta de posicion del motor vuelve a ser cierta sin tocar el motor. */
.cell-popup { max-height: 420px; overflow-y: auto; }

/* Los de este archivo, heredados de Zona Sur. */
.zs-stat strong { color: #00304f; }
.zs-ver-completo { background: #004878; }
.zs-ver-completo:hover { background: #00304f; }

/* Dos gestos del sitio que el motor no trae, para que el texto del recuadro pese
   igual que el de la pagina que lo hospeda y no se note el injerto. */
body { -webkit-font-smoothing: antialiased; }
.section-sub, .zs-step { line-height: 1.65; }

/* El contador de capturas se apaga. No por estetica: contaba 19,352 para la Zona Este —ida y
   vuelta, todos los dias— mientras el parrafo que va al lado dice 4,838, que son las medianas de
   dias habiles de ida. Los dos numeros son ciertos y miden cosas distintas, pero juntos en la
   misma pantalla solo se leen como un error. Las cifras las da el parrafo, que ademas es lo que
   Google y las IA pueden leer; el recuadro dibuja. */
.zs-stats { display: none !important; }
