/* Ajustes mínimos sobre Bootstrap (revisión del prototipo; sin rediseño). */

/* En las tablas, los enlaces de una sola pieza (patentes, fechas, N°) y los estados no se cortan
   en varias líneas: en pantallas chicas la tabla se desplaza dentro de .table-responsive. */
.table td > a:only-child,
.table .badge {
  white-space: nowrap;
}

/* Nombre y rol del usuario en el menú: acotados para que el menú quepa en una línea. */
.usuario-menu {
  max-width: 11rem;
}

/* Esquema superior de posiciones de neumáticos (doc 19). Colores de Bootstrap (variables). */
.esquema-contenedor { overflow-x: auto; }
.esquema {
  min-width: 324px;
  max-width: 460px;
  margin: 0 auto;
  padding: .5rem .25rem;
  border: 2px solid var(--bs-border-color);
  border-radius: 1.25rem .75rem .75rem .75rem;
  background: var(--bs-tertiary-bg);
}
.esquema-motriz { border-top-left-radius: 2.5rem; border-top-right-radius: 2.5rem; }
.esquema-frente {
  text-align: center;
  font-size: .75rem;
  color: var(--bs-secondary-color);
  border-bottom: 1px dashed var(--bs-border-color);
  margin-bottom: .5rem;
  padding-bottom: .25rem;
}
.esquema-cola { border-bottom: 0; border-top: 1px dashed var(--bs-border-color); margin: .5rem 0 0; padding-top: .25rem; }
/* Doc 21: ejes agrupados físicamente; un espacio visible entre grupos separados. */
.esquema-grupo { border: 1px solid var(--bs-border-color-translucent); border-radius: .6rem; padding: .05rem 0; margin: .3rem 0; }
.esquema-separacion { text-align: center; height: 1.6rem; line-height: 1.6rem; font-size: .7rem; color: var(--bs-secondary-color); position: relative; }
.esquema-separacion span { background: var(--bs-body-bg); padding: 0 .4rem; position: relative; z-index: 1; }
.esquema-separacion::before { content: ""; position: absolute; left: 30%; right: 30%; top: 50%; border-top: 2px dotted var(--bs-border-color); }
.esquema-eje { display: flex; align-items: center; justify-content: center; gap: .35rem; margin: .45rem 0; }
.esquema-lado { display: flex; gap: 3px; min-width: 111px; }
.esquema-lado:first-child { justify-content: flex-end; }
.esquema-chasis {
  flex: 0 0 78px;
  position: relative;
  text-align: center;
  font-size: .68rem;
  line-height: 1.1;
  color: var(--bs-secondary-color);
}
.esquema-chasis::before {
  content: "";
  position: absolute;
  left: -6px;
  right: -6px;
  top: 50%;
  border-top: 3px solid var(--bs-secondary-border-subtle);
  z-index: 0;
}
.esquema-chasis span { position: relative; z-index: 1; background: var(--bs-tertiary-bg); padding: 0 2px; }
.rueda {
  width: 54px;
  height: 66px;
  border-radius: 10px;
  border: 2px solid var(--bs-border-color);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  text-decoration: none;
  color: var(--bs-body-color);
  background: var(--bs-body-bg);
  user-select: none;
}
.rueda-num { font-weight: 700; font-size: .95rem; line-height: 1; }
.rueda-mf { font-size: .6rem; line-height: 1.1; margin-top: 2px; max-width: 51px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rueda.libre { border-style: dashed; color: var(--bs-secondary-color); }
.rueda.ocupada { background: var(--bs-success-bg-subtle); border-color: var(--bs-success-border-subtle); color: var(--bs-success-text-emphasis); }
.rueda.error { background: var(--bs-danger-bg-subtle); border-color: var(--bs-danger); color: var(--bs-danger-text-emphasis); }
.rueda.seleccionada, .rueda:has(input:checked) {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-border-subtle);
  background: var(--bs-primary-bg-subtle);
  color: var(--bs-primary-text-emphasis);
}
.rueda:hover { border-color: var(--bs-primary); }
.rueda:has(input:focus-visible), .rueda:focus-visible { outline: 3px solid var(--bs-primary); outline-offset: 2px; }
.esquema-leyenda { display: flex; flex-wrap: wrap; gap: .25rem .9rem; justify-content: center; margin-top: .5rem; }
.rueda-muestra { display: inline-block; width: 12px; height: 16px; border-radius: 3px; border: 2px solid var(--bs-border-color); vertical-align: -3px; }
.rueda-muestra.libre { border-style: dashed; }
.rueda-muestra.ocupada { background: var(--bs-success-bg-subtle); border-color: var(--bs-success-border-subtle); }
.rueda-muestra.seleccionada { background: var(--bs-primary-bg-subtle); border-color: var(--bs-primary); }
.rueda-muestra.error { background: var(--bs-danger-bg-subtle); border-color: var(--bs-danger); }

/* Datos opcionales de formularios (doc 19): <details> nativo con apariencia de Bootstrap. */
details.opcionales > summary { cursor: pointer; color: var(--bs-link-color); margin-bottom: .5rem; }

/* Impresión de marcas de fuego asignadas (doc 20). */
@media print {
  .navbar, .no-imprimir, .alert, [role="status"] { display: none !important; }
  body { background: #fff !important; }
  .etiqueta-neumatico { break-inside: avoid; border: 1px solid #000; }
}

/* Dashboard y reportes (doc 22) ------------------------------------------------------------ */
:root {
  /* Series categóricas (orden fijo, nunca cicladas): neumáticos, repuestos, taller externo. */
  --serie-1: #2a78d6;
  --serie-2: #eb6834;
  --serie-3: #1baf7a;
}
.filtros .form-select, .filtros .form-control { font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; }
.bloque-titulo { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem 1rem; margin: 1.75rem 0 .75rem; }
.bloque-titulo h2 { font-size: 1.15rem; margin: 0; }
.alerta { border-left-width: 4px !important; }
.alerta .cifra { font-size: 1.9rem; font-weight: 600; line-height: 1.1; }
.alerta.vacia { opacity: .7; }
.cifra-mediana { font-size: 1.35rem; font-weight: 600; line-height: 1.2; }
.indicadores dt { font-weight: 400; color: var(--bs-secondary-color); font-size: .875rem; }
.indicadores dd { font-weight: 600; margin-bottom: .35rem; text-align: right; }
.muestra-serie { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: 0; margin-right: .3rem; }
/* Gráfico de columnas apiladas (costos por mes): HTML/CSS, sin librerías. */
.grafico-meses { display: flex; align-items: flex-end; gap: 6px; height: 170px; padding-top: .5rem; border-bottom: 1px solid var(--bs-border-color); }
.grafico-meses .mes { flex: 1 1 0; min-width: 0; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; position: relative; }
.grafico-meses .mes:hover { background: var(--bs-tertiary-bg); border-radius: 4px 4px 0 0; }
.grafico-meses .seg { width: 100%; max-width: 34px; margin: 0 auto; }
.grafico-meses .seg:first-child { border-radius: 4px 4px 0 0; }
.grafico-etiquetas { display: flex; gap: 6px; }
.grafico-etiquetas span { flex: 1 1 0; min-width: 0; text-align: center; font-size: .7rem; color: var(--bs-secondary-color); overflow: hidden; white-space: nowrap; }
.barra-horizontal { height: 8px; background: var(--bs-tertiary-bg); border-radius: 4px; overflow: hidden; }
.barra-horizontal > span { display: block; height: 100%; background: var(--serie-1); border-radius: 0 4px 4px 0; }
.barra-estados { display: flex; gap: 2px; height: 12px; border-radius: 4px; overflow: hidden; }
.barra-estados > span { display: block; height: 100%; }

/* Carga masiva (doc 23): zona para arrastrar o elegir el archivo .xlsx. */
.zona-archivo {
  border: 2px dashed var(--bs-border-color);
  border-radius: .75rem;
  background: var(--bs-tertiary-bg);
  cursor: pointer;
}
.zona-archivo:hover,
.zona-archivo-activa { border-color: var(--bs-primary); background: var(--bs-primary-bg-subtle); }
.zona-archivo-lista { border-style: solid; border-color: var(--bs-success); }
