/* Panel de líneas de Viajes (3-nov-2026): lo propio del giro sobre la base del panel de rentadoras (panel.css):
   filas de solicitudes y corridas, ocupación por tramo, taquilla, editor de rutas, tarifas en matriz, horarios,
   paquetes, reportes, planes y administración. */

body[data-pagina="viajes-panel"], body[data-pagina="viajes-admin"], body[data-pagina="viajes-registro"] { background: var(--blanco); }
.vj-panel .panel__titulo + .panel__sub { margin-bottom: 8px; }
.vj-plan-chip {
  display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border-radius: var(--r-pildora);
  background: var(--tema-fondo); color: var(--tema-a); font-size: 12px; font-weight: 700; box-shadow: inset 0 0 0 1px var(--tema-borde);
  white-space: nowrap;
}
.vj-plan-chip svg { width: 14px; height: 14px; }
.vj-plan-chip[data-plan="basico"] { background: var(--gris-1); color: var(--texto-2); box-shadow: inset 0 0 0 1px var(--borde-2); }
.vj-volver { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; font-weight: 600; font-size: 14px; color: var(--texto-2); }
.vj-volver svg { width: 12px; height: 12px; }
.vj-espacio-arriba { margin-top: 24px; }
.vj-botones { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.vj-h3 { margin: 24px 0 8px; font-size: 16px; font-weight: 700; }
.vj-h3 small { font-weight: 500; color: var(--texto-2); }
.vj-de { font-size: 13px; font-weight: 500; color: var(--texto-2); }
.vj-falta { color: var(--alerta); font-size: 14px; }
.vj-peligro { border-color: var(--alerta); color: var(--alerta); }
.vj-no { color: var(--texto-3); text-decoration: line-through; }
.alerta-panel .boton-oscuro { flex: none; }
.alerta-panel--revision { background: var(--tema-fondo); }
.alerta-panel--revision .alerta-panel__icono { color: var(--tema-a); }
.alerta-panel--aviso { background: var(--alerta-fondo); }
.alerta-panel--aviso .alerta-panel__icono { color: var(--alerta); }
.alerta-panel--aviso p { color: var(--alerta); }
.alerta-panel--aviso a.boton-oscuro, .alerta-panel--revision a.boton-oscuro { color: var(--blanco); text-decoration: none; }
.vj-panel .alerta-panel { margin: 16px 0 0; }

/* Ocupación */
.vj-ocupacion { display: block; width: 100%; height: 6px; margin-top: 6px; border-radius: 3px; background: var(--gris-2); overflow: hidden; }
.vj-ocupacion > span { display: block; height: 100%; border-radius: 3px; background: var(--degradado-marca); }
.vj-ocupacion--tabla { display: inline-block; width: 80px; vertical-align: middle; margin: 0 6px 0 0; }
.vj-corrida-tarjeta[data-estado="cancelada"] { opacity: .6; }
.vj-servicios-dia { display: grid; gap: 8px; margin: 8px 0 0; padding: 0; list-style: none; font-size: 14px; }
.vj-servicios-dia li { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: var(--r-12); background: var(--gris-1); }
.vj-servicios-dia svg { width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--tema-a); }
.vj-salieron { margin-top: 12px; }
.vj-salieron summary { cursor: pointer; font-weight: 600; color: var(--texto-2); }

/* Filas (solicitudes y corridas) */
.vj-filas-cabeza, .vj-fila { display: grid; grid-template-columns: 190px minmax(150px, 1.2fr) minmax(160px, 1.3fr) 140px 120px; gap: 16px; align-items: center; }
.vj-filas-cabeza { margin-top: 20px; padding: 0 12px 10px; border-bottom: 1px solid var(--borde); font-size: 12px; font-weight: 600; color: var(--texto-2); }
.vj-filas-cabeza span:last-child, .vj-fila__total { text-align: right; }
.vj-filas { margin: 0; padding: 0; list-style: none; }
.vj-filas > li { border-bottom: 1px solid var(--borde-2); }
.vj-fila { padding: 14px 12px; border-radius: 8px; transition: background-color var(--dur-fast) ease; font-size: 14px; }
@media (hover: hover) and (pointer: fine) { .vj-fila:hover { background: var(--gris-1); } }
.vj-fila small { display: block; font-size: 12px; color: var(--texto-2); }
.vj-fila__estado { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.vj-fila__total { font-weight: 600; font-variant-numeric: tabular-nums; }
.vj-fila--corrida { grid-template-columns: 110px minmax(180px, 1.3fr) minmax(160px, 1fr) minmax(160px, 1fr); }
.vj-fila--corrida[data-estado="cancelada"] { opacity: .55; }
.vj-fila--simple { grid-template-columns: 170px 1fr 110px; }
.vj-hora { font-size: 18px; font-variant-numeric: tabular-nums; }
@media (max-width: 899px) {
  .vj-filas-cabeza { display: none; }
  .vj-fila, .vj-fila--corrida, .vj-fila--simple { grid-template-columns: 1fr 1fr; gap: 6px 12px; }
  .vj-fila__total { text-align: left; }
}
.vj-buscar-panel { display: flex; align-items: center; gap: 10px; max-width: 420px; margin-top: 16px; padding: 0 14px; height: 44px; border-radius: var(--r-pildora); box-shadow: inset 0 0 0 1px var(--borde); }
.vj-buscar-panel span { width: 16px; height: 16px; flex: none; color: var(--texto-2); }
.vj-buscar-panel input { flex: 1; border: 0; outline: 0; font: inherit; background: none; }
.vj-dias--panel { margin: 20px 0 0; padding: 4px 0 6px; }
.vj-dia--otra { position: relative; justify-content: center; }
.vj-dia--otra input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }

/* Detalle de solicitud */
.vj-acciones { display: flex; flex-wrap: wrap; gap: 8px; margin: 24px 0 8px; }
.vj-acciones .boton-oscuro, .vj-acciones .boton-borde { height: 44px; font-size: 15px; }
.vj-detalle { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 16px; margin-top: 16px; align-items: start; }
@media (max-width: 899px) { .vj-detalle { grid-template-columns: minmax(0, 1fr); } }
.panel-apartado__cabeza p { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }

/* Ocupación por tramo */
.vj-tramos-ocupacion { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.vj-tramo { display: grid; grid-template-columns: minmax(140px, 1fr) minmax(120px, 1.2fr) 60px; gap: 12px; align-items: center; font-size: 13px; }
.vj-tramo__barra { display: flex; height: 12px; border-radius: 6px; background: var(--gris-2); overflow: hidden; }
.vj-tramo__linea { background: var(--tema-a); }
.vj-tramo__taquilla { background: var(--bien); }
.vj-tramo__bloqueo { background: var(--texto-3); }
.vj-tramo__cifra { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.vj-leyenda { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 14px; font-size: 12px; color: var(--texto-2); }
.vj-leyenda span { display: inline-block; width: 10px; height: 10px; border-radius: 3px; }
.vj-form-corrida .campos { max-width: 100%; }
.vj-taquilla-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: end; margin-top: 12px; max-width: 980px; }
.vj-taquilla-form .campos { display: grid; grid-template-columns: 1.3fr 1.4fr 1.4fr .6fr; }
.vj-taquilla-form .campos__fila + .campos__fila { border-top: 0; border-left: 1px solid #B0B0B0; border-radius: 0; }
.vj-taquilla-form .campos__fila:first-child:not(:last-child) { border-radius: 8px 0 0 8px; }
.vj-taquilla-form .campos__fila:last-child { border-radius: 0 8px 8px 0; }
@media (max-width: 743px) { .vj-taquilla-form { grid-template-columns: 1fr; } .vj-taquilla-form .campos { grid-template-columns: 1fr 1fr; } }
.vj-taquilla-lista { display: grid; gap: 6px; margin: 16px 0 0; padding: 0; list-style: none; font-size: 14px; }
.vj-taquilla-lista li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; padding: 10px 12px; border-radius: 10px; background: var(--gris-1); }
.vj-taquilla-lista li small { color: var(--texto-2); }
.vj-taquilla-lista li .enlace-sub { margin-left: auto; }
.vj-taquilla-lista li[data-deshecho="true"] { opacity: .5; text-decoration: line-through; }
.vj-tabla--pasajeros small { display: block; color: var(--texto-2); font-size: 12px; }
.vj-tabla--pasajeros td, .vj-tabla--paquetes td { vertical-align: top; }
.vj-tabla--pasajeros td:last-child, .vj-tabla--pasajeros th:last-child { text-align: left; }
.vj-tabla__taquilla td { background: var(--bien-fondo); font-weight: 600; }
.vj-tabla--paquetes small { display: block; color: var(--texto-2); font-size: 12px; }
.vj-tabla--paquetes td:last-child, .vj-tabla--paquetes th:last-child { text-align: right; }

/* Candado de plan */
.vj-candado { display: flex; align-items: center; gap: 16px; margin-top: 16px; padding: 20px 24px; border-radius: var(--r-16); border: 1px dashed var(--borde); }
.vj-candado__icono { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 12px; background: var(--tema-fondo); color: var(--tema-a); }
.vj-candado__icono svg { width: 20px; height: 20px; }
.vj-candado > div { flex: 1; }
.vj-candado p { margin-top: 2px; font-size: 14px; color: var(--texto-2); }
@media (max-width: 743px) { .vj-candado { flex-direction: column; align-items: flex-start; } }

/* Rutas */
.vj-rutas-panel { display: grid; gap: 16px; margin: 20px 0 0; padding: 0; list-style: none; }
.vj-ruta-panel { padding: 20px; border: 1px solid var(--borde-2); border-radius: var(--r-16); }
.vj-ruta-panel[data-activa="false"] { opacity: .65; }
.vj-ruta-panel__cabeza { display: flex; align-items: center; gap: 10px; }
.vj-ruta-panel__cabeza h2 { font-size: 18px; font-weight: 700; }
.vj-ruta-panel__paradas { margin-top: 6px; font-weight: 500; }
.vj-ruta-panel .vj-servicios { margin-top: 10px; }
.vj-ruta-panel__pie { margin-top: 14px; }
.vj-editor { padding: 24px; border: 1px solid var(--borde-2); border-radius: var(--r-16); }
.vj-editor > h2 { margin-bottom: 6px; }
.vj-paradas-edit { display: grid; gap: 10px; margin: 20px 0 12px; padding: 0; list-style: none; }
.vj-parada-edit { display: grid; grid-template-columns: 28px minmax(170px, 1.2fr) minmax(150px, 1.2fr) minmax(130px, 1fr) 110px auto; gap: 10px; align-items: end; }
.vj-parada-edit__num { width: 28px; height: 28px; margin-bottom: 10px; display: grid; place-items: center; border-radius: 50%; background: var(--tema-a); color: var(--blanco); font-weight: 700; font-size: 13px; }
.vj-parada-edit__botones { display: flex; gap: 4px; margin-bottom: 6px; }
.vj-parada-edit__botones .circulo-plano { width: 32px; height: 32px; }
.vj-parada-edit__botones svg { width: 12px; height: 12px; }
@media (max-width: 899px) {
  .vj-parada-edit { grid-template-columns: 28px 1fr 1fr; padding-bottom: 12px; border-bottom: 1px solid var(--borde-2); }
  .vj-parada-edit > .vj-mini:nth-of-type(1) { grid-column: 2 / 4; }
}
.vj-mini { display: flex; flex-direction: column; gap: 4px; min-width: 0; font-size: 12px; color: var(--texto-2); }
.vj-mini input, .vj-mini select {
  width: 100%; height: 42px; padding: 0 10px; border: 1px solid #B0B0B0; border-radius: 8px; background: var(--blanco);
  font: inherit; font-size: 14px; color: var(--texto);
}
.vj-mini input:focus, .vj-mini select:focus { outline: 2px solid var(--texto); outline-offset: -1px; }
.vj-mini input[readonly] { background: var(--gris-1); color: var(--texto-2); }
.vj-mini--corto { max-width: 130px; }
.vj-mini--ancho { flex: 1; }
.vj-matriz { margin-top: 16px; overflow-x: auto; }
.vj-matriz table { border-collapse: separate; border-spacing: 4px; font-size: 13px; }
.vj-matriz th { padding: 6px 8px; text-align: left; font-weight: 600; white-space: nowrap; }
.vj-matriz thead th { font-size: 12px; color: var(--texto-2); vertical-align: bottom; max-width: 110px; white-space: normal; }
.vj-celda { width: 92px; height: 38px; padding: 0 8px; border: 1px solid #B0B0B0; border-radius: 8px; font: inherit; text-align: right; font-variant-numeric: tabular-nums; }
.vj-celda:placeholder-shown { background: #FFFDF6; border-style: dashed; }
.vj-celda--no { background: var(--gris-1); border-radius: 8px; }
.vj-servicios-edit { display: grid; gap: 12px; margin: 16px 0 12px; padding: 0; list-style: none; }
.vj-servicio-edit { display: grid; gap: 12px; padding: 16px; border-radius: var(--r-12); background: var(--gris-1); }
.vj-servicio-edit__fila { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.vj-servicio-edit__fila .circulo-plano { margin-left: auto; }
.vj-servicio-edit__fila .circulo-plano svg { width: 16px; height: 16px; }
.vj-dias-sem { display: flex; gap: 4px; flex-wrap: wrap; }
.vj-dia-sem { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--borde); background: var(--blanco); font-size: 12px; font-weight: 600; text-transform: capitalize; }
.vj-dia-sem[aria-pressed="true"] { background: var(--texto); border-color: var(--texto); color: var(--blanco); }
.vj-temporada summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--texto-2); }
.vj-temporada .vj-servicio-edit__fila { margin-top: 10px; }
.vj-sin-servicio { display: grid; gap: 6px; margin: 12px 0; padding: 0; list-style: none; font-size: 14px; }
.vj-sin-servicio li { display: flex; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: 10px; background: var(--gris-1); }
.vj-sin-form { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.vj-activa { flex: 1 1 320px; }
.vj-terminales-panel { display: grid; gap: 8px; margin: 16px 0 0; padding: 0; list-style: none; }
.vj-terminales-panel li { display: flex; gap: 12px; align-items: center; padding: 14px 16px; border: 1px solid var(--borde-2); border-radius: var(--r-12); }
.vj-terminales-panel li > span { width: 18px; height: 18px; color: var(--tema-a); }
.vj-terminales-panel li > div { flex: 1; display: flex; flex-direction: column; }
.vj-terminales-panel small { color: var(--texto-2); }
.vj-perfil { max-width: 760px; }
.vj-tabla--unidades input[type="text"], .vj-tabla--unidades input:not([type]) , .vj-tabla--unidades input[type="number"] {
  width: 100%; height: 36px; padding: 0 8px; border: 1px solid var(--borde); border-radius: 8px; font: inherit;
}
.vj-tabla--unidades td:last-child { text-align: right; }

/* Historial y planes */
.vj-cambios { display: grid; gap: 0; margin: 20px 0 0; padding: 0; list-style: none; }
.vj-cambios li { display: grid; grid-template-columns: 110px 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--borde-2); font-size: 14px; }
.vj-cambios__tipo { align-self: start; justify-self: start; padding: 3px 8px; border-radius: 6px; background: var(--gris-2); font-size: 12px; font-weight: 700; color: var(--texto-2); }
.vj-cambios small { display: block; color: var(--texto-2); font-size: 12px; }
.vj-cambios__detalle { margin: 6px 0 0; padding-left: 18px; font-size: 13px; color: var(--texto-2); list-style: disc; }
.vj-planes { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; margin-top: 20px; }
.vj-plan { display: flex; flex-direction: column; gap: 10px; padding: 22px; border: 1px solid var(--borde-2); border-radius: var(--r-16); }
.vj-plan[data-actual="true"] { border-color: var(--tema-a); box-shadow: inset 0 0 0 1px var(--tema-a); }
.vj-plan h2 { font-size: 20px; font-weight: 700; }
.vj-plan__precio { font-size: 28px; font-weight: 800; }
.vj-plan__precio small { font-size: 14px; font-weight: 500; color: var(--texto-2); }
.vj-plan__resumen { font-size: 14px; color: var(--texto-2); }
.vj-plan__lista { display: grid; gap: 8px; margin: 6px 0 auto; padding: 0; list-style: none; font-size: 14px; }
.vj-plan__lista li { display: flex; gap: 8px; align-items: flex-start; }
.vj-plan__lista svg { width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--bien); }
.vj-plan .boton-oscuro, .vj-plan .estado-chip { align-self: flex-start; margin-top: 8px; }

/* Reportes */
.vj-barras { display: grid; gap: 8px; margin: 12px 0 0; padding: 0; list-style: none; font-size: 14px; }
.vj-barras li { display: grid; grid-template-columns: 170px 1fr 40px; gap: 12px; align-items: center; }
.vj-barras__barra { height: 10px; border-radius: 5px; background: var(--gris-2); overflow: hidden; }
.vj-barras__barra span { display: block; height: 100%; background: var(--degradado-marca); }
.vj-barras strong { text-align: right; }

/* Registro de línea */
.vj-registro { max-width: 760px; margin: 0 auto; padding: 40px var(--margen) 120px; }
.vj-registro h1 { font-size: 32px; line-height: 36px; font-weight: 700; letter-spacing: -.02em; }
.vj-registro .perfil__bloque { margin-top: 28px; }
.vj-registro .perfil__bloque h2 { font-size: 20px; font-weight: 600; margin-bottom: 4px; }
.vj-registro .perfil__bloque > p { margin-bottom: 12px; color: var(--texto-2); font-size: 14px; }
.vj-registro .campos + .campos { margin-top: 12px; }
.vj-registro-hecho { text-align: center; padding: 56px 0; }
.vj-registro-hecho .vj-folio__icono { margin: 0 auto 16px; }
.vj-registro-hecho p { max-width: 520px; margin: 10px auto 24px; color: var(--texto-2); }

/* Administración */
.vj-admin-tabla td { vertical-align: top; }
.vj-admin-tabla small { display: block; color: var(--texto-2); font-size: 12px; }
.vj-interruptor-general { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 20px; padding: 20px 24px; border-radius: var(--r-16); background: var(--gris-1); }
.vj-interruptor-general[data-activo="true"] { background: var(--bien-fondo); }
.vj-reporte { padding: 14px 16px; border: 1px solid var(--borde-2); border-radius: var(--r-12); }
.vj-reporte + .vj-reporte { margin-top: 10px; }
.vj-reporte[data-estado="atendido"] { opacity: .6; }
.vj-reporte p { margin: 6px 0; }

/* Imprimir la lista de pasajeros (PDF desde el navegador) */
@media print {
  .panel-enc, .panel-barra, .vj-acciones, .vj-volver, .vj-taquilla-form, .vj-form-corrida, [data-cancelar-corrida], .vj-botones, .vj-candado { display: none !important; }
  .panel-cuerpo { padding: 0; }
  .vj-caja { border: 0; padding: 0; }
}

/* Botones grises con icono y fechas dentro de datos (3-nov-2026) */
.vj-panel .boton-gris { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; }
.vj-panel .boton-gris svg, .vj-panel .boton-oscuro svg { width: 14px; height: 14px; }
.vj-datos dd small { display: block; font-weight: 500; color: var(--texto-2); }

/* ---------- Formas de operar, boletos, asientos y unidades (4-nov-2026) ---------- */

/* Buscar un boleto por su código o escanear su QR (Hoy). */
.vj-buscar-boleto { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.vj-buscar-boleto label { flex: 1 1 260px; display: flex; align-items: center; gap: 10px; height: 48px; padding: 0 14px; border-radius: var(--r-12); box-shadow: inset 0 0 0 1px var(--borde); }
.vj-buscar-boleto label span { width: 18px; height: 18px; flex: none; color: var(--tema-a); }
.vj-buscar-boleto input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font: inherit; font-size: 16px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.vj-buscar-boleto input::placeholder { font-weight: 400; letter-spacing: 0; text-transform: none; }
.vj-buscar-boleto .boton-oscuro, .vj-buscar-boleto .boton-borde { height: 48px; display: inline-flex; align-items: center; gap: 8px; }
.vj-buscar-boleto svg { width: 16px; height: 16px; }
.vj-boleto-buscar .vj-letra { margin-top: 8px; }
.vj-escaner { position: relative; overflow: hidden; border-radius: var(--r-12); background: var(--texto); aspect-ratio: 1; max-width: 360px; margin: 0 auto; }
.vj-escaner video { width: 100%; height: 100%; object-fit: cover; display: block; }
.vj-escaner__marco { position: absolute; inset: 18%; border: 3px solid var(--blanco); border-radius: 18px; box-shadow: 0 0 0 999px rgb(0 0 0 / .35); }

/* El boleto dentro de un folio. */
.vj-detalle__columna { display: grid; gap: 16px; align-content: start; }
.vj-boleto-panel { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: 16px; align-items: center; border-color: var(--tema-borde); }
.vj-boleto-panel img { width: 96px; height: 96px; image-rendering: pixelated; border-radius: 8px; box-shadow: 0 0 0 1px var(--borde-2); }
.vj-boleto-panel__codigo { font-size: 26px; line-height: 30px; font-weight: 800; letter-spacing: .14em; font-variant-numeric: tabular-nums; margin-bottom: 4px; }
.vj-boleto-panel .boton-borde { height: 40px; display: inline-flex; align-items: center; gap: 8px; }
.vj-boleto-panel svg { width: 16px; height: 16px; }
@media (max-width: 599px) { .vj-boleto-panel { grid-template-columns: 72px minmax(0, 1fr); } .vj-boleto-panel img { width: 72px; height: 72px; } .vj-boleto-panel .boton-borde { grid-column: 1 / -1; justify-content: center; } }

/* Cómo vendes en el sitio: opciones grandes. */
.vj-opciones-regla { display: grid; gap: 10px; }
.vj-opciones-regla + div, .vj-opciones-regla--chicas { margin-top: 14px; }
.vj-opciones-regla--chicas { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.vj-opcion-regla { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--r-12); box-shadow: inset 0 0 0 1px var(--borde); cursor: pointer; transition: box-shadow var(--dur-fast) ease, background var(--dur-fast) ease; }
.vj-opcion-regla input { margin-top: 3px; accent-color: var(--tema-a); width: 18px; height: 18px; flex: none; }
.vj-opcion-regla span { display: flex; flex-direction: column; gap: 2px; }
.vj-opcion-regla strong { font-size: 15px; }
.vj-opcion-regla small { font-size: 13px; line-height: 18px; color: var(--texto-2); }
.vj-opcion-regla:has(input:checked) { box-shadow: inset 0 0 0 2px var(--tema-a); background: var(--tema-fondo); }
.vj-opcion-regla[data-deshabilitada] { cursor: default; opacity: .55; }
.vj-reglas-form [data-plazo], .vj-reglas-form [data-transferencia], .vj-reglas-form [data-pago] { margin-top: 14px; }
.vj-reglas-form [hidden] { display: none !important; }

/* Taquilla por asiento y plano de la corrida. */
.vj-taquilla-form > .campos { order: 1; }
.vj-taquilla-form > button { order: 2; }
.vj-taquilla-plano { order: 3; grid-column: 1 / -1; margin: 4px 0 8px; }
.vj-taquilla-plano .vj-letra { margin-bottom: 8px; }

/* Unidades con su modelo y su numeración. */
.vj-unidades { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; margin-top: 20px; padding: 0; list-style: none; }
.vj-unidad { display: grid; gap: 14px; align-content: start; justify-items: start; padding: 18px; border-radius: var(--r-16); box-shadow: inset 0 0 0 1px var(--borde-2); }
.vj-unidad[data-activa="false"] { opacity: .6; }
.vj-unidad__cabeza { width: 100%; display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.vj-unidad__cabeza > div { display: flex; flex-direction: column; }
.vj-unidad__cabeza strong { font-size: 17px; }
.vj-unidad__cabeza small { font-size: 13px; color: var(--texto-2); }
input.vj-asiento--editable { padding: 0; border: 0; text-align: center; font: inherit; font-size: 12px; font-weight: 700; text-transform: uppercase; cursor: text; }
input.vj-asiento--editable:focus { outline: 2px solid var(--tema-a); outline-offset: 1px; }
.vj-form-unidad [data-numeracion] { margin: 16px 0 8px; display: grid; gap: 10px; justify-items: start; }
.vj-form-unidad [data-numeracion] .vj-plano { justify-content: center; width: 100%; }

/* Paradas en el mapa del editor de rutas. */
.vj-editor-mapa { height: 340px; margin-top: 8px; border-radius: var(--r-12); overflow: hidden; background: var(--gris-1); }
.vj-aviso-mapa { color: var(--tema-a); font-weight: 600; }

/* Administración: modelos de unidad y su armador (4-nov-2026). */
.vj-modelos { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin-top: 20px; padding: 0; list-style: none; }
.vj-modelo { display: grid; gap: 12px; align-content: start; justify-items: start; padding: 18px; border-radius: var(--r-16); box-shadow: inset 0 0 0 1px var(--borde-2); }
.vj-modelo[data-activo="false"] { opacity: .6; }
.vj-modelo__cabeza { width: 100%; display: flex; justify-content: space-between; gap: 8px; }
.vj-modelo__cabeza > div { display: flex; flex-direction: column; }
.vj-modelo__cabeza small { font-size: 13px; color: var(--texto-2); }
.vj-armador { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: start; margin-top: 16px; }
@media (max-width: 899px) { .vj-armador { grid-template-columns: 1fr; } }
.vj-armador__datos { display: grid; gap: 14px; }
.vj-armador__cuenta { font-weight: 700; }
.vj-herramientas { display: flex; flex-wrap: wrap; gap: 6px; }
.vj-herramientas button { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 14px; border-radius: var(--r-pildora); box-shadow: inset 0 0 0 1px var(--borde); font-weight: 600; font-size: 14px; }
.vj-herramientas button svg { width: 16px; height: 16px; }
.vj-herramientas button[aria-checked="true"] { background: var(--texto); color: var(--blanco); box-shadow: none; }
.vj-armador__plano { justify-self: center; }
.vj-armador__unidad { display: inline-flex; flex-direction: column; align-items: center; padding: 14px 16px 20px; border: 2px solid var(--borde); border-radius: 32px 32px 14px 14px; touch-action: none; user-select: none; }
.vj-armador__rejilla { display: grid; gap: 6px; }
.vj-armador__celda { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 10px; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; cursor: crosshair; }
.vj-armador__celda svg { width: 60%; height: 60%; }
.vj-armador__celda[data-tipo="A"] { background: var(--blanco); box-shadow: inset 0 0 0 1.5px var(--tema-a); color: var(--tema-a); }
.vj-armador__celda[data-tipo="C"] { background: var(--gris-2); color: var(--texto-2); }
.vj-armador__celda[data-tipo="P"] { font-size: 9px; text-transform: uppercase; color: var(--texto-3); box-shadow: inset 3px 0 0 var(--borde); }
.vj-armador__celda[data-tipo="pasillo"] { box-shadow: inset 0 0 0 1px var(--borde-2); background: repeating-linear-gradient(135deg, transparent 0 5px, var(--gris-1) 5px 10px); }
.vj-armador__celda[disabled] { cursor: default; }

/* ---------- Portada y logo de la línea, en «Tu línea» (4-nov-2026) ---------- */
.vj-imagenes__vista { position: relative; margin: 14px 0 56px; }
.vj-imagen__portada { position: relative; aspect-ratio: 4 / 1; min-height: 120px; overflow: hidden; border-radius: var(--r-16); }
.vj-imagen__portada img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vj-imagen__portada::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: url(/img/viajes/sierra.svg) center bottom / 100% auto no-repeat; }
.vj-imagen__portada.con-imagen::after { content: none; }
.vj-imagen__logo {
  position: absolute; left: 20px; bottom: -44px; width: 88px; height: 88px; border-radius: 22px; font-size: 36px;
  border: 4px solid var(--blanco); box-shadow: 0 4px 16px rgb(0 0 0 / .12);
}
.vj-imagenes__fila { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.vj-imagen { display: flex; flex-direction: column; gap: 4px; padding: 16px; border: 1px solid var(--borde-2); border-radius: var(--r-16); }
.vj-imagen small { font-size: 13px; line-height: 18px; color: var(--texto-2); }
.vj-imagen__botones { display: flex; align-items: center; gap: 14px; margin-top: auto; padding-top: 12px; }
.vj-imagen__subir { position: relative; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.vj-imagen__subir svg { width: 16px; height: 16px; }
.vj-imagen__subir:focus-within { outline: 2px solid var(--texto); outline-offset: 2px; }

/* Con «Visitas» en la barra de arriba, Paquetes y Reportes pasan al menú por debajo de 1280 px (4-nov-2026): con
   las siete secciones, la barra necesita unos 1,190 px. */
@media (max-width: 1279px) { .panel-nav .vj-solo-ancho { display: none; } }
@media (min-width: 1280px) { .menu .vj-solo-angosto { display: none; } }

/* El logo de la línea en la lista de «Tus líneas» y en el botón del menú. */
.vj-entrada__logo { width: 40px; height: 40px; border-radius: 10px; box-shadow: inset 0 0 0 1px var(--borde-2); }
.circulo--avatar.vj-avatar-logo { overflow: hidden; padding: 0; background: var(--blanco); box-shadow: inset 0 0 0 1px var(--borde); }
.circulo--avatar.vj-avatar-logo img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }

/* ---------- Visitas (4-nov-2026): estilos de analisis.css ---------- */
.vj-visitas__cabeza { align-items: flex-end; }
.vj-visitas__vacio { align-items: flex-start; }
.vj-visitas__vacio > span:last-child { font-size: 14px; color: var(--texto-2); }
.vj-visitas .panel-vacio { margin: 0; }
.vj-visitas > .vj-letra { margin-top: 16px; }
@media (max-width: 743px) {
  .vj-imagenes__fila { grid-template-columns: 1fr; }
  .vj-imagen__portada { aspect-ratio: 2.2 / 1; }
  .vj-visitas .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vj-visitas .analisis__rejilla { grid-template-columns: minmax(0, 1fr); }
}

/* Horario de la taquilla en el diálogo de terminal (4-nov-2026): el mismo todos los días o uno por día. */
.vj-taquilla-horario { display: grid; gap: 10px; padding-top: 14px; border-top: 1px solid var(--borde-2); }
.vj-taquilla-horario > strong { font-size: 15px; font-weight: 600; }
.vj-taquilla-horario > .vj-letra { margin: 0; }
.vj-semana { display: grid; gap: 8px; }
.vj-semana[hidden] { display: none; }
.vj-semana__dia { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; align-items: center; gap: 8px; font-size: 14px; }
.vj-semana__dia label { display: flex; align-items: center; gap: 8px; min-height: 40px; }
.vj-semana__dia label input { width: 18px; height: 18px; accent-color: var(--texto); }
.vj-semana__dia input[type="time"] { height: 40px; padding: 0 10px; border: 1px solid var(--borde); border-radius: var(--r-8, 8px); font: inherit; background: var(--blanco); }
.vj-semana__dia:has(label input:not(:checked)) input[type="time"] { opacity: .4; }
.vj-semana__dia > span { color: var(--texto-2); }

/* Teléfono (4-nov-2026, validación de punta a punta): Hoy, una corrida, Paquetes y Reportes se salían de la pantalla.
   Las tablas se recorren de lado dentro de su caja y la ocupación por tramo cabe en el ancho. */
@media (max-width: 743px) {
  .vj-tabla { display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .vj-caja, .vj-detalle__columna { min-width: 0; }
  .vj-tramo { grid-template-columns: minmax(0, 1fr) minmax(64px, .8fr) 48px; gap: 8px; }
  .vj-semana__dia { grid-template-columns: minmax(0, 1fr) auto auto auto; gap: 6px; }
  .vj-semana__dia input[type="time"] { padding: 0 6px; }
}
