/* =====================================================================
   WINIW DELIVERY — CAPA MOVIL GLOBAL
   v 1.22  2026-07-28  rcordoba+Claude  Header movil menos pequeño: logo 34->44px y
                                        header 52->56px (el logo quedaba diminuto
                                        frente a los botones). Sticky sub-headers a 56.
   v 1.21  2026-07-28  rcordoba+Claude  Fix: los inputs con icono (login, buscadores)
                                        conservan su padding-left (el icono ya no pisa
                                        el placeholder). Solo padding vertical.
   v 1.20  2026-07-28  rcordoba+Claude  Ronda 2 de auditoria (medicion pantalla a
                                        pantalla a 390px): botones nunca parten el
                                        texto (nowrap, no word-break), nota de
                                        calidad, bandeja seguimiento_wa, cabecera
                                        .section-header, rejillas repeat() de
                                        vehiculos, inputs de fichero. + login (index.php).
   v 1.10  2026-07-28  rcordoba+Claude  Reescritura sobre la auditoria de
                                        las 9 familias de pantallas.
   v 1.00  2026-07-28  rcordoba+Claude  ORIGINAL

   ---------------------------------------------------------------------
   REGLA DE ORO: NINGUNA declaracion vive fuera de un @media.
   El escritorio queda intacto POR CONSTRUCCION. Vaciar este fichero
   revierte el 100% de la capa movil. Se usa 'screen' a proposito porque
   calidad.php y flota/ficha.php tienen @media print de verdad.

   BREAKPOINTS (elegidos para encajar con lo que YA existe, sin crear
   franjas muertas):
     TABLET  991px -> justo por debajo de .col-md-* de Bootstrap 3 y del
                      @media 992 de winiw-global.css
     MOVIL   767px -> justo por debajo de .form-inline / .container de
                      Bootstrap 3, y coincide con el @media 767 de
                      winiw-global.css
     TACTIL  (hover:none) -> sin limite de ancho, a proposito

   POR QUE TANTO !important: casi todos los anchos que rompen la pantalla
   estan en atributos style INLINE (logo height:200px, botonera
   position:absolute right:40px, min-width:200px en los selects,
   grid-template-columns:repeat(6,1fr)). Un atributo inline gana a
   cualquier hoja. Sin !important esta hoja no haria absolutamente nada.

   LO QUE ESTA HOJA NO HACE, Y ES DELIBERADO:
     - NO convierte tablas en tarjetas. llamamientos_admin abre la fila de
       detalle con display='table-row', preasig y coord filtran con
       style.display, y jqGrid/DataTables alinean cabecera y cuerpo por
       pixeles. Se usa scroll horizontal + primera columna congelada.
     - NO declara display sobre overlays de modal: coord_incorporaciones y
       llamamientos_ett los abren con style.display='flex'. Declararlo los
       dejaria abiertos para siempre o impediria abrirlos.
     - NO oculta ningun boton. La visibilidad de #botones2 la deciden PHP
       por rol/centro y el JS con show()/hide().
     - NO toca transform/filter/will-change de body ni de contenedores:
       crearia un containing block nuevo y romperia los position:fixed.
   ===================================================================== */


/* =====================================================================
   TABLET  (<= 991px)
   ===================================================================== */
@media screen and (max-width: 991px) {

	/* Bootstrap 3 clava .container en 750px entre 768 y 991 */
	.container, .container-fluid { width: 100% !important; max-width: 100% !important; }

	/* Rejillas de N columnas fijas: primer escalon, a dos columnas */
	.kpi-grid, .kpi-grid[style], .form-grid, .ro-panel, .datos-grid, .ficha-meta,
	.ficha-tco-panel, .cm-cobertura, .cm-prod-stats, .stat-grid, .reportes-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}


/* =====================================================================
   MOVIL  (<= 767px)
   ===================================================================== */
@media screen and (max-width: 767px) {

/* ---------------------------------------------------------------------
   01. CABECERA CORPORATIVA
   El mismo bloque copiado literal en ~30 pantallas: un <img> con
   style="height:200px" (el SVG proyecta ~600px de ancho) recortado por un
   div de 60px, y el bloque usuario/SALIR en position:absolute;right:40px.
   En 390px el logo desborda por los dos lados y los botones se le montan
   encima. La regla .logo-box img{height:38px} que winiw-global.css ya
   tenia es codigo muerto: el estilo inline gana.
   --------------------------------------------------------------------- */
	.header-win .header-main {
		position: relative !important;
		display: flex !important; flex-wrap: wrap !important;
		align-items: center !important; justify-content: space-between !important;
		gap: 6px !important;
		height: auto !important; min-height: 56px !important;
		padding: 6px 10px !important;
	}
	.header-win .header-main > div[style*="absolute"] {
		position: static !important;
		right: auto !important; left: auto !important; top: auto !important;
		display: flex !important; align-items: center !important;
		flex-wrap: wrap !important; gap: 6px !important;
	}
	/* El :not(.flota-app) NO es cosmetico: flota/css/flota.css ya recorta su
	   logo a mano (.flota-logo-clip 40px + img 132px, su pasada movil del
	   25-jul). Sin esta exclusion, estas dos reglas ganan por especificidad
	   y deshacen ese trabajo. */
	/* v1.22: el logo quedaba diminuto (34px) frente a los botones — en escritorio es 50px.
	   Se sube a 44px (el header pasa a 56px para acomodarlo). El SVG es compacto (~1.4:1),
	   asi que a 44px de alto ~62px de ancho: cabe de sobra en el centro entre hamburguesa y botones. */
	body:not(.flota-app) .header-win .logo-box > div { height: 46px !important; overflow: hidden !important; }
	body:not(.flota-app) .header-win .logo-box img { height: 44px !important; width: auto !important; max-width: 56vw !important; }
	.header-win .header-main > div[style*="absolute"] > span {
		max-width: 38vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	}
	.header-win .btn-exit-win, .header-win .btn-header,
	.header-win .btn-salir, .header-win .btn-menu {
		min-height: 40px !important; display: inline-flex !important; align-items: center !important;
		padding: 8px 12px !important; font-size: 12px !important;
	}
	.page-header-win { padding: 10px 12px !important; flex-wrap: wrap !important; gap: 8px !important; }
	.page-header-win h2 { font-size: 14px !important; line-height: 1.25 !important; }
	.header-stats { display: none !important; }


/* ---------------------------------------------------------------------
   02. ZOOM AUTOMATICO DE iOS
   Safari amplia la pagina al enfocar cualquier control con font-size<16px
   y NO vuelve al zoom original: el layout se queda desplazado. Es el
   hallazgo que aparecio en las 9 auditorias sin excepcion.
   --------------------------------------------------------------------- */
	html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

	input:not([type=checkbox]):not([type=radio]):not([type=file]),
	select, textarea,
	.form-control, .form-input, .win-input, .form-control-modal, .flota-select,
	.filter-input, .filter-select, .search-input, .selbox, .hbtn-date, .fsel,
	.cal-bar select, .rango-sel .rg-sel, .bar select, .bar input,
	.dataTables_filter input, .dataTables_length select,
	.ui-widget input, .ui-widget select, .ui-widget textarea {
		font-size: 16px !important;
	}
	input:not([type=checkbox]):not([type=radio]):not([type=file]),
	select, .form-control, .form-input, .win-input {
		min-height: 44px !important; height: auto !important; line-height: 1.3 !important;
		/* v1.21: SOLO padding vertical. Antes 'padding:8px 10px' pisaba el
		   padding-left:42px que deja hueco al icono de .input-wrapper (login,
		   buscadores): el candado/persona se comia el inicio del placeholder
		   ("Introduce" salia como "troduce"). El horizontal lo pone la hoja base. */
		padding-top: 8px !important; padding-bottom: 8px !important; box-sizing: border-box;
	}
	textarea { min-height: 88px !important; }
	input[type=file] { width: 100% !important; min-height: 44px !important; display: block !important; }
	progress { width: 100% !important; display: block !important; }

	/* EXCEPCION OBLIGATORIA: dentro de un grid, el alto de fila lo calcula
	   el JS. Se sube la letra del editor, pero NUNCA su alto. */
	.ui-jqgrid td input:not([type=checkbox]), .ui-jqgrid td select,
	.tbl-forecast td.fc-edit input {
		font-size: 16px !important; min-height: 0 !important; height: auto !important;
		padding: 2px 4px !important;
	}


/* ---------------------------------------------------------------------
   03. AREAS TACTILES DE 44px
   Botones de 22-33px por toda la app, varios de ellos destructivos: la X
   de 12px que borra documentacion, el SI/NO del dispatcher que dispara
   bajas, el .btn-xs que es la unica via de editar un incentivo.
   --------------------------------------------------------------------- */
	.btn, .btn-win, .btn-action, .btn-mini, .btn-mini-ok, .btn-mini-info, .btn-icon,
	.btn-act, .btn-dec, .btn-tog, .btn-contacto, .btn-export, .btn-add, .btn-search,
	.btn-generate, .btn-back, .excel-btn, .filter-clear, .hbtn, .fpill, .subpill,
	.chip, .cwchip, .doc-chip, .cm-tab, .cm-export-btn, .act, .tab-btn, .hist-tab,
	.win-tab-btn, .ficha-tab, .rg, .btn-bulk,
	a.btn, [role="button"] {
		min-height: 44px !important;
		display: inline-flex !important; align-items: center !important; justify-content: center !important;
		/* v1.11: NUNCA word-break en botones. Rompia el texto DENTRO de la palabra
		   ("Nuevo" -> N/u/e/v/o en vertical) cuando el boton estaba en una barra flex
		   apretada: word-break:break-word baja el min-content del flex-item al ancho de
		   UN caracter, y el contenedor lo encogia a ~1 letra. Con nowrap el boton conserva
		   el ancho de su etiqueta y no se deforma. */
		white-space: nowrap !important; word-break: normal !important;
	}
	/* En <button> e <input> basta con el alto: forzarles display cambia el
	   flujo de barras enteras y no hace falta (ya centran su contenido). */
	button, input[type=submit], input[type=button] {
		min-height: 44px !important; white-space: nowrap !important; word-break: normal !important;
	}
	.btn-xs, .btn.btn-xs { padding: 9px 14px !important; font-size: 13px !important; }

	/* Agrandar SIN juntar: cambiar un fallo de precision por otro es peor,
	   sobre todo cuando los botones contiguos son Validar y Devolver. */
	td .btn + .btn, td .btn-mini + .btn-mini, td a.btn-mini + a.btn-mini,
	td .btn-act + .btn-act, .btn-group-decision .btn-dec + .btn-dec,
	.row-actions > * + *, .dcard-actions > * + * { margin-left: 10px !important; }

	input[type=checkbox], input[type=radio] { width: 22px !important; height: 22px !important; }
	.chk-veh, #chkAll { width: 22px !important; height: 22px !important; }

	/* El icono no debe robarle el click al boton */
	button > i, button > svg, .btn > i, a.btn > i,
	.flota-hamburger i, .flota-hamburger svg { pointer-events: none !important; }

	/* EXCEPCIONES: controles internos de jqGrid, posicionados por px */
	.ui-jqgrid button, .ui-jqgrid td .btn { min-height: 0 !important; display: inline-block !important; }
	.ui-jqgrid .ui-pg-button { min-width: 40px !important; min-height: 40px !important; }
	.ui-jqgrid td input[type=checkbox] {
		width: auto !important; height: auto !important;
		transform: scale(1.6); transform-origin: center;
	}


/* ---------------------------------------------------------------------
   05. CONTENEDORES, PADDINGS E IMAGENES
   Paddings de escritorio que se comen entre el 15% y el 21% de los 390px.
   Y no existia ninguna regla img{max-width:100%}: hay tres selectores de
   elemento desnudos img{width:190px} que sacan las galerias de pantalla.
   --------------------------------------------------------------------- */
	.content-area, .content-area-informe, .content-area-rep, .page-content, .main-content,
	.cal-wrap, .wrap, .report-container, .cm-container, .flota-main, #grid, #div_grid {
		padding-left: 10px !important; padding-right: 10px !important;
		max-width: 100% !important; width: auto !important;
		margin-left: 0 !important; margin-right: 0 !important;
	}
	.content-main { padding: 12px 10px !important; }
	.win-card, .card, .card-check, .win-section-body, .panel-b, .card-b, .cm-panel,
	.report-body, .report-header, .form-card, .cand-body { padding: 12px !important; }
	.cand-head { padding: 12px !important; gap: 10px !important; }
	.win-section { border-radius: 12px !important; margin-bottom: 14px !important; }
	.panel-body, .well { padding: 12px 10px !important; }

	/* .flota-app excluido: flota.css ya gestiona sus imagenes y el clip del logo */
	body:not(.flota-app) img { max-width: 100% !important; height: auto !important; }
	svg, canvas, video, iframe, embed, object { max-width: 100% !important; }

	.pictures > li {
		float: none !important; display: inline-block !important;
		width: 50% !important; height: auto !important; vertical-align: top;
	}
	.pictures > li > img, #galley img, #panelDocsBody img, #panelFotosBody img {
		width: 100% !important; height: auto !important; max-width: 100% !important;
	}
	.welcome-logo img { width: 60% !important; max-width: 240px !important; }

	/* dashboard_completo_template_head.html clava body{min-width:960px} */
	body { min-width: 0 !important; }


/* ---------------------------------------------------------------------
   06. CONTENCION HORIZONTAL: EL SCROLL VA EN LA TABLA, NO EN LA PAGINA
   Este es el hallazgo estructural. winiw-global.css:27 pone
   html,body{overflow-x:hidden}: hoy nada se ve desbordar, pero todo lo
   ancho queda RECORTADO E INALCANZABLE — las columnas de acciones
   sencillamente no existen en movil. Ese overflow-x:hidden se MANTIENE
   (quitarlo cambiaria el comportamiento de toda la app) y se abre el eje
   X dentro de los contenedores. El patron ya estaba escrito en el propio
   codigo, en flota/exceso_km.php:328.
   --------------------------------------------------------------------- */
	html, body { max-width: 100% !important; overflow-x: hidden !important; }

	.table-wrapper, .tbl-scroll, .tabla-scroll, .scroll-wrapper, .flota-table-card, .pa-section,
	.dataTables_wrapper, .dataTables_scroll, .dataTables_scrollHead, .dataTables_scrollBody,
	.win-card.acard, #gbWrap, #segBox, #resultados, #tablaInternas, #resultadoGlobal,
	#preAsigDeficit > div, details.inv-full, details.fr-full, .inv-full-body, .fr-full-body,
	.informe-grid-tabs .tab-pane, tr.row-detalle > td > div {
		overflow-x: auto !important; -webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain; max-width: 100% !important;
	}
	/* esas cards recortaban con overflow:hidden; al abrir el eje X hay que liberar el Y */
	.flota-table-card, details.inv-full, details.fr-full, .pa-section { overflow-y: visible !important; }

	/* La tabla NO se comprime: 12 columnas de 24px son ilegibles. Mejor scroll. */
	.table-wrapper > table, .tbl-scroll > table, .tabla-scroll > table, .scroll-wrapper > table,
	.flota-table-card > table.flota-table, table.tbl-pre, table.win-table, table.flota-table,
	table.pg, table.prem, table.wa, table.gb-table, #tblHist {
		width: auto !important; min-width: 100% !important;
	}
	table.tbl-pre th, table.tbl-pre td, table.win-table th, table.win-table td,
	table.flota-table th, table.flota-table td, table.pg th, table.pg td {
		padding: 9px 8px !important; font-size: 12.5px !important;
	}
	table.table > thead > tr > th, table.table > tbody > tr > td {
		padding: 8px 8px !important; font-size: 12.5px !important;
	}
	/* min-width por columna escritos inline en llamamientos_*: relajarlos */
	table.tbl-pre th[style*="min-width"] { min-width: 0 !important; }

	/* Congelar la primera columna: sin ella, al desplazarse en horizontal no
	   se sabe de que fila es el dato que se esta mirando. */
	table.tbl-pre tbody td:first-child, table.flota-table tbody td:first-child {
		position: sticky; left: 0; z-index: 1; background: #fff;
		box-shadow: 2px 0 4px rgba(0,0,0,.06);
	}
	table.tbl-pre thead th:first-child, table.flota-table thead th:first-child {
		position: sticky; left: 0; z-index: 4;
	}

	/* Envoltorio que monta winiw-mobile.js para las tablas que no tienen
	   contenedor propio (ver el fichero JS). La sombra de la derecha solo
	   aparece cuando de verdad quedan columnas escondidas. */
	.winmob-scroll-wrap { position: relative; max-width: 100%; }
	.winmob-scroll {
		max-width: 100%; overflow-x: auto; overflow-y: hidden;
		-webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
	}
	.winmob-scroll > table { margin-bottom: 0; }
	.winmob-scroll-wrap::after {
		content: ""; position: absolute; top: 0; right: 0; bottom: 0; width: 26px;
		pointer-events: none; opacity: 0; transition: opacity .15s ease;
		background: linear-gradient(to left, rgba(0,0,0,.16), rgba(0,0,0,0));
	}
	.winmob-scroll-wrap.winmob-hay-mas::after { opacity: 1; }

	/* Bootstrap ya trae su envoltorio: que se comporte igual */
	.table-responsive { -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; border: 0; }


/* ---------------------------------------------------------------------
   07. jqGrid  (gestion, maestro, reporte_economico, forecast2, informeKms,
       borrar_informe)
   jqGrid 4.6 con shrinkToFit:false escribe px inline y no se encoge
   (gestion ~4.815px de columnas). setFrozenColumns crea una capa
   absoluta que en 390px tapa la pantalla entera (~730px en gestion).
   Se apaga la CAPA, no la funcionalidad: esas columnas siguen estando en
   la tabla normal, que ahora scrollea.
   --------------------------------------------------------------------- */
	.ui-jqgrid, .ui-jqgrid-view { max-width: 100% !important; width: 100% !important; }
	.ui-jqgrid .ui-jqgrid-bdiv {
		width: 100% !important; overflow-x: auto !important; -webkit-overflow-scrolling: touch;
	}
	.ui-jqgrid .ui-jqgrid-hdiv, .ui-jqgrid .ui-jqgrid-sdiv {
		width: 100% !important; overflow: hidden !important;
	}
	.ui-jqgrid .frozen-div, .ui-jqgrid .frozen-bdiv,
	.frozen-div, .frozen-bdiv { display: none !important; }

	/* Legibilidad y dedo SIN tocar el ancho de htable/btable: jqGrid alinea
	   cabecera, cuerpo y pie por pixeles. */
	.ui-jqgrid .ui-jqgrid-btable td { height: 40px !important; font-size: 13px !important; line-height: 1.3 !important; }
	.ui-jqgrid .ui-jqgrid-htable th { font-size: 11.5px !important; }
	.ui-jqgrid .ui-jqgrid-titlebar { padding: 8px 10px !important; font-size: 12.5px !important; }

	.ui-jqgrid .ui-jqgrid-pager { height: auto !important; white-space: normal !important; overflow-x: auto !important; }
	.ui-jqgrid .ui-jqgrid-pager .ui-pg-table { width: auto !important; }
	.ui-jqgrid .ui-paging-info { display: block !important; width: 100% !important; }
	.ui-jqgrid .ui-pg-input, .ui-jqgrid .ui-pg-selbox {
		height: auto !important; min-height: 40px !important; line-height: normal !important; font-size: 16px !important;
	}

	/* Dialogos de alta/borrado del grid: hoy width:300px absolute anclados al grid */
	.ui-jqdialog {
		position: fixed !important; top: 8px !important; left: 8px !important; right: 8px !important;
		width: auto !important; max-width: none !important;
		max-height: 80vh !important; overflow: auto !important; font-size: 14px !important;
	}
	.ui-jqdialog input, .ui-jqdialog select, .ui-jqdialog textarea { font-size: 16px !important; width: 100% !important; }
	.ui-jqgrid .ui-jqconfirm {
		position: fixed !important; right: 8px !important; bottom: 8px !important;
		width: auto !important; max-width: calc(100vw - 16px) !important; height: auto !important;
	}


/* ---------------------------------------------------------------------
   08. DataTables
   Se carga dataTables.bootstrap5.css sin que exista Bootstrap 5 en el
   proyecto, asi que los .row/.col-* del wrapper salen sin estilar.
   --------------------------------------------------------------------- */
	.dataTables_wrapper { padding: 0 !important; }
	.dataTables_wrapper > .row { display: block !important; margin: 0 !important; }
	.dataTables_wrapper > .row > [class^="col-"],
	.dataTables_wrapper > .row > [class*=" col-"] {
		width: 100% !important; max-width: 100% !important; padding: 0 !important; float: none !important;
	}
	.dataTables_length, .dataTables_filter, .dataTables_info, .dataTables_paginate {
		float: none !important; width: 100% !important; text-align: left !important; margin: 0 0 8px !important;
	}
	.dataTables_filter input, .dataTables_length select { width: 100% !important; margin: 4px 0 0 !important; }
	.dataTables_filter label, .dataTables_length label { width: 100% !important; }
	.dataTables_paginate .paginate_button {
		padding: 10px 14px !important; font-size: 14px !important;
		min-width: 44px; text-align: center; display: inline-block;
	}
	/* Con scrollX el ancho lo manda DataTables: NO forzar width:100% */
	.dataTables_scrollHead, .dataTables_scrollBody { overflow-x: auto !important; max-width: 100% !important; }
	.dataTables_scrollBody { max-height: 55vh !important; }
	.informe-grid-tabs .tab-pane table.dataTable { width: auto !important; font-size: 12px !important; }
	table.dataTable th, table.dataTable td { padding: 9px 8px !important; font-size: 12.5px !important; }
	/* SOLO para tablas SIN scrollX que sufren autoWidth (por id, a proposito) */
	#tblInventario, #tblInventario > thead > tr > th,
	#tblHist, #tblHist > thead > tr > th { width: auto !important; min-width: 0 !important; }
	#tblInventario, #tblHist { min-width: max-content !important; }


/* ---------------------------------------------------------------------
   09. PESTAÑAS Y BARRAS DE PASTILLAS
   Barras en flex sin wrap ni overflow que suman mas de 390px: con el
   overflow-x:hidden del body, las ultimas pestañas quedan recortadas e
   inaccesibles. En check_factura eso deja "Facturas Internas" y "Resumen
   Global" fuera de alcance; en flota/ficha, "Datos tecnicos" y
   "Documentos".
   IMPORTANTE: este bloque va DESPUES del 03, que puso white-space:normal
   a .fpill/.tab-btn. Aqui se restablece nowrap para que las pastillas no
   se partan dentro de la barra deslizable. No reordenar.
   --------------------------------------------------------------------- */
	.tabs-nav, .tabs-container, .nav-tabs, .informe-grid-tabs .nav-tabs, .ficha-tabs,
	.cm-tabs, .toolbar-filtros, .rango-sel, #cwChips,
	#panelHistorial > div[style*="border-bottom"] {
		display: flex !important; flex-wrap: nowrap !important;
		overflow-x: auto !important; -webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain; scrollbar-width: none;
	}
	.tabs-nav::-webkit-scrollbar, .tabs-container::-webkit-scrollbar,
	.nav-tabs::-webkit-scrollbar, .ficha-tabs::-webkit-scrollbar,
	.toolbar-filtros::-webkit-scrollbar, .cm-tabs::-webkit-scrollbar { display: none; }

	.nav-tabs > li { float: none !important; flex: 0 0 auto !important; }
	.tabs-nav > *, .tabs-container > *, .toolbar-filtros > *, #cwChips > *,
	.nav-tabs > li > a, .ficha-tab, .win-tab-btn, .tab-btn, .hist-tab, .cm-tab, .rg, .fpill {
		flex: 0 0 auto !important; white-space: nowrap !important;
		padding: 12px 14px !important; font-size: 12.5px !important;
	}


/* ---------------------------------------------------------------------
   10. BARRAS DE FILTRO A UNA COLUMNA
   Selects con min-width de 130-240px pensados para una fila de
   escritorio. En 390px quedan en 55-90px y no se lee ni el nombre del
   centro ("AMZL OGA5 SANTIAGO XPT").
   --------------------------------------------------------------------- */
	.informe-filters, .filter-bar, .filtros, .cal-bar, .bar, .toolbar, .header-buttons,
	.report-filters, .filter-row, .search-row, .change-row, .form-row-check, .cm-ctls,
	.gb-controls, .sfe-grid, #botones1, .contact-q, .win-filtros, .barra-filtros {
		display: flex !important; flex-direction: column !important; align-items: stretch !important;
		gap: 10px !important; padding: 10px !important; margin-left: 0 !important;
	}
	.informe-filters .filter-group, .filter-group, .hbtn-group, .form-group-check, .cm-ctl,
	.filter-row > *, .search-row > *, .change-row > *, .cand-id {
		width: 100% !important; min-width: 0 !important; max-width: 100% !important; margin-left: 0 !important;
	}
	.filter-select, .filter-input, .fsel, .search, .selbox, .hbtn-date,
	.form-group-check select, .form-group-check input,
	.informe-filters select, .informe-filters input[type=text],
	.report-filters select, .report-filters input, .filtros .form-control,
	#sel-centro, #sel-mes, #sel-anio, #fecha-desde, #fecha-hasta,
	#centro-sel, #semana-sel, #mes-sel, #cmbcentro, #cmbcond, #cmbv, #cmbett, #cmbprov,
	#selCampana, #gbCentro, #buscar-conductor, #plantillaAnio, #preAsigDesde, #preAsigHasta {
		width: 100% !important; min-width: 0 !important; max-width: 100% !important;
	}
	.filter-row label, .report-filters label { min-width: 0 !important; width: 100% !important; }

	/* barras de filtro montadas con grid en el atributo style (flota) */
	form#filtrosForm, form#filtros, form#filtroMan, form#filtroCal, form#filtroSalud, form#filtroPA {
		grid-template-columns: 1fr !important; gap: 8px !important;
	}
	/* .card-title de importar_forecast: flex sin wrap con 2 selects + 2 botones */
	.card-title { flex-wrap: wrap !important; gap: 6px !important; font-size: 15px !important; }
	.card-title > span[style*="margin-left"] {
		margin-left: 0 !important; width: 100% !important;
		display: flex !important; flex-wrap: wrap !important; gap: 6px !important;
	}

	/* Bootstrap 3 .form-inline: desinlinear */
	form.form-inline .form-control { display: block !important; width: 100% !important; margin-bottom: 8px !important; }
	form.form-inline label { display: block !important; margin: 6px 0 2px !important; font-size: 13px !important; }
	form.form-inline input[type=checkbox] { display: inline-block !important; width: auto !important; margin-right: 6px !important; }
	.form-group { margin-bottom: 12px !important; }
	.input-group { width: 100% !important; }


/* ---------------------------------------------------------------------
   11. REJILLAS DE N COLUMNAS FIJAS
   En vehiculos.php el bloque "Renting y Seguro" son 8 inputs de fecha de
   ~35px; en coord y centro_candidatos el .form-grid de 3 columnas deja el
   email y las contraseñas en ~75px.
   Los selectores [style*=...] van SCOPEADOS a proposito: uno suelto a
   nivel de documento captura tambien rejillas "1fr auto" legitimas.
   --------------------------------------------------------------------- */
	.form-grid, .ro-panel, .datos-grid, .cm-cobertura, .cm-bal-row, .cm-cprod-row,
	.modal-body .form-row, .modal-box .form-row, .form-grid.alta-6 {
		grid-template-columns: 1fr !important;
	}
	.kpi-grid, .kpi-grid[style] { grid-template-columns: 1fr !important; }
	.kpi-value { font-size: 24px !important; }

	#grid > div [style*="grid-template-columns"],
	#estadoVeh[style*="grid-template-columns"],
	#fichaVehiculo > div[style*="grid-template-columns"],
	#statsVehiculo[style*="grid-template-columns"],
	.flota-main > div[style*="grid-template-columns"],
	.modal-body > div[style*="grid-template-columns"] {
		grid-template-columns: 1fr 1fr !important; gap: 10px !important;
	}
	#indicadorTallerWrap { grid-column: 1 / -1 !important; }

	.sm-grid, .chart-grid, .charts-row, .cm-grid, .cm-grid-2, .grid2, .cards {
		grid-template-columns: 1fr !important;
	}
	.fr-row, .inv-crow, .cmp-row { grid-template-columns: 1fr auto !important; }
	.cmp-track { grid-column: 1 / -1 !important; height: 22px !important; }

	/* Bootstrap 3: col-xs-* es lo unico que no se apila solo */
	.row { margin-left: -8px !important; margin-right: -8px !important; }
	[class*="col-xs-"], [class*="col-sm-"], [class*="col-md-"], [class*="col-lg-"] {
		padding-left: 8px !important; padding-right: 8px !important;
	}
	.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6 {
		width: 100% !important; float: none !important;
	}


/* ---------------------------------------------------------------------
   12. KPIs, CHIPS Y BARRAS DE ESTADO
   Filas de 6-15 tarjetas que en 390px ocupan 400-500px de alto y empujan
   la tabla — que es lo unico que interesa — por debajo del pliegue.
   Los .stat-chip son ademas FILTROS clicables: se toca la rejilla
   contenedora, nunca su estructura interna.
   --------------------------------------------------------------------- */
	.stats-bar, .kpi-row, .kpis, .cm-kpis, .fr-pulse, .inv-pulse, .quick-actions, .reach,
	.stats-grid, .cards-grid, .win-grid {
		display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 8px !important; padding: 12px 10px !important; margin-bottom: 12px !important;
	}
	.stat-chip, .kpi, .kpi-card, .cm-kpi, .stat-card, .fr-stat, .inv-stat, .action-card {
		min-width: 0 !important; width: auto !important; padding: 10px 8px !important; margin: 0 !important;
	}
	.stat-chip b, .kpi .n, .kpi-value, .stat-num, .fr-stat b, .inv-stat b { font-size: 19px !important; }
	.stat-chip small, .kpi .k, .kpi-label, .stat-lbl, .cm-kpi .kpi-label {
		font-size: 10px !important; line-height: 1.2 !important; display: block !important;
	}
	.fr-pulse-title, .inv-pulse-title { grid-column: 1 / -1 !important; margin-right: 0 !important; }
	.fr-div, .inv-div { display: none !important; }
	.fr-card, .inv-card { grid-template-columns: auto 1fr !important; gap: 12px !important; padding: 14px !important; }
	.fr-b, .inv-b { grid-column: 1 / -1 !important; }


/* ---------------------------------------------------------------------
   13. MODALES Y DIALOGOS
   Anchos de escritorio sin max-width, sobre overlays sin padding. Y
   max-height:90vh en todos: con el teclado abierto, vh no se recalcula y
   el boton Guardar queda DEBAJO del teclado.
   OJO: aqui solo se toca padding/alineacion de los overlays. Su display
   lo controla el JS (style.display='flex', clase .active, clase .show).
   --------------------------------------------------------------------- */
	.modal-overlay, .modal-overlay-ficha, .modal-bg, .overlay,
	#modal-activo-bg, #modal-noinc-bg, #modal-excep, #campModal, #modalOverlay {
		padding: 10px !important; align-items: flex-start !important;
	}
	.modal-box, .modal-box.small, .modal-card, .modal-card.large, .modal-card-ficha,
	.cs-modal-card, .modal-dialog, .jconfirm .jconfirm-box, .ui-dialog, dialog {
		width: calc(100vw - 20px) !important; max-width: calc(100vw - 20px) !important;
		margin: 8px auto !important; padding: 16px !important;
		max-height: 90vh !important;      /* Safari < 15.4 */
		max-height: 90dvh !important;
	}
	.modal-card, .modal-card-ficha, .cs-modal-card, .modal-content {
		display: flex !important; flex-direction: column !important;
		max-height: 90vh !important;
		max-height: 90dvh !important;
	}
	.modal-body, .modal-body-ficha, .cs-modal-body {
		overflow-y: auto !important; -webkit-overflow-scrolling: touch; max-height: none !important;
	}
	.modal-body-preview { font-size: 11px !important; overflow-x: auto !important; word-break: break-word !important; }
	.modal-footer, .modal-actions { flex-wrap: wrap !important; gap: 10px !important; }
	.modal-footer > *, .modal-actions > * { flex: 1 1 45% !important; }
	/* scroll anidado a tres niveles: dejarlo solo en .modal-body */
	#ctc_historial { max-height: none !important; overflow-y: visible !important; }

	/* Cierre siempre visible, dentro del contenedor y de 44px */
	.pistol .close, .delivery1 .close, .modal-header .close,
	.modal-close, .modal-close-ficha, .ui-dialog-titlebar-close {
		position: absolute !important; right: 6px !important; top: 6px !important; margin: 0 !important;
		width: 44px !important; height: 44px !important; line-height: 44px !important;
		text-align: center !important; font-size: 20px !important;
		border-radius: 8px !important; opacity: 1 !important;
	}
	.ui-dialog { position: fixed !important; top: 8px !important; left: 8px !important; right: 8px !important; }
	.ui-dialog .ui-resizable-handle { display: none !important; }
	.ui-pnotify { position: fixed !important; top: 8px !important; left: 8px !important; right: 8px !important; width: auto !important; }


/* ---------------------------------------------------------------------
   14. POPOVERS POSICIONADOS POR JS -> HOJA INFERIOR
   #svc-dropdown de preasig es la UNICA via de asignar o quitar servicio, y
   su posicion se calcula con getBoundingClientRect: al tocar la mitad
   derecha de la matriz queda recortado e inalcanzable.
   NO añadir aqui transform/filter/will-change a ningun ancestro: crearia
   un containing block y estos position:fixed dejarian de funcionar.
   --------------------------------------------------------------------- */
	#svc-dropdown, #dd-baja-global, .dropdown-baja, .flota-alertas-pop, .quick-search-results {
		position: fixed !important;
		left: 8px !important; right: 8px !important; top: auto !important; bottom: 0 !important;
		width: auto !important; min-width: 0 !important; max-width: none !important;
		max-height: 62vh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch;
		border-radius: 12px 12px 0 0 !important; z-index: 100000 !important;
	}
	#svc-dd-options { max-height: 48vh !important; }
	.svc-opt, .dd-baja-item {
		min-height: 46px !important; display: flex !important; align-items: center !important;
		font-size: 14px !important; padding: 12px 16px !important;
	}


/* ---------------------------------------------------------------------
   15. DATEPICKER DE jQuery UI
   Es absolute con left/top en px calculados a partir del input; si el
   input esta en la mitad derecha (edita_vehiculo tiene 11 datepickers en
   rejillas de 5-7 columnas), el calendario se sale del viewport.
   Anclarlo abajo puede tapar el propio input: es un compromiso
   consciente, preferible a que quede fuera de pantalla.
   --------------------------------------------------------------------- */
	#ui-datepicker-div, #ui-datepicker-div.ui-datepicker, .ui-datepicker {
		position: fixed !important; left: 8px !important; right: 8px !important;
		top: auto !important; bottom: 8px !important;
		width: auto !important; max-width: none !important; min-width: 0 !important;
		font-size: 16px !important; z-index: 100002 !important;
	}
	.ui-datepicker td a, .ui-datepicker td span { padding: 12px 0 !important; text-align: center !important; min-height: 40px; }
	.ui-datepicker .ui-datepicker-title select { font-size: 16px !important; max-width: 46% !important; }
	.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { width: 44px !important; height: 44px !important; }


/* ---------------------------------------------------------------------
   16. OVERLAYS LEGACY DE gestion.php
   Once dialogos que no son modales: .pistol > div esta en
   position:absolute;left:350px — en una pantalla de 390px el dialogo
   arranca a 350px del borde, o sea, practicamente fuera. Y
   #ventana-flotante1 esta en top:2%;left:30% respecto al DOCUMENTO, asi
   que aparece al principio de la pagina aunque el usuario este al final.
   --------------------------------------------------------------------- */
	.pistol {
		position: fixed !important; top: 0 !important; right: 0 !important;
		bottom: 0 !important; left: 0 !important;
		overflow-y: auto !important; -webkit-overflow-scrolling: touch;
		padding: 12px !important; background: rgba(10,37,64,.35);
	}
	.pistol > div {
		position: static !important; left: auto !important; top: auto !important;
		width: auto !important; max-width: 100% !important;
		margin: 8px 0 !important; padding: 14px !important; box-sizing: border-box;
	}
	.delivery1 { position: static !important; }
	.delivery1 > div {
		position: static !important; left: auto !important; top: auto !important;
		width: auto !important; max-width: 100% !important;
		margin: 10px 0 !important; padding: 14px !important; box-sizing: border-box;
	}
	.pistol .form-control, .delivery1 .form-control,
	.pistol select, .pistol label, .delivery1 select, .delivery1 label,
	#rutaPist, #kminiPist, #kmfinPist, #cmbruta, #per, #obsv, #obsvp, #inci, #cmbCesion,
	#altaViaT, #altaTRepos, #altaCasco, #altaCourier_id, #altaCuenta_ssd, #div_horarios, #div_obsv {
		display: block !important; width: 100% !important; margin: 4px 0 !important;
	}
	#cmbCesion { min-height: 160px !important; }
	.pistol span[style*="font-size:25px"], .delivery1 span[style*="font-size:25px"] {
		font-size: 18px !important; display: block !important; margin-bottom: 8px !important;
	}
	/* despues de la regla generica de labels, para que estas NO ocupen linea entera */
	.pistol label[style*="font-size:25px"] {
		font-size: 14px !important; width: auto !important; height: auto !important;
		display: inline-block !important; padding: 10px 12px !important; margin: 3px !important;
	}
	#ventana-flotante1 {
		position: fixed !important; top: 0 !important; left: 0 !important;
		right: 0 !important; bottom: 0 !important;
		z-index: 100000 !important; overflow-y: auto !important;
		background: rgba(10,37,64,.5) !important; padding: 12px !important;
	}
	#ventana-flotante1 .modal-dialog { width: auto !important; max-width: 100% !important; margin: 20px auto !important; }


/* ---------------------------------------------------------------------
   17. RESTOS DE MAQUETACION LEGACY
   El mismo copia-pega en ~9 pantallas: un div#resultado con
   float:left;position:relative;left:50% que empuja el contenido ~195px a
   la derecha, y un div#respuesta con class=form-control que pinta una
   caja con borde aunque este vacia.
   --------------------------------------------------------------------- */
	#resultado {
		float: none !important; position: static !important;
		left: auto !important; top: auto !important; right: auto !important;
		width: 100% !important; margin: 8px 0 !important;
		overflow-x: auto !important; -webkit-overflow-scrolling: touch;
	}
	#respuesta, #respuesta.form-control {
		left: 0 !important; width: 100% !important; height: auto !important; min-height: 0 !important;
		border: none !important; box-shadow: none !important; background: transparent !important;
		padding: 0 8px !important;
	}
	#grid, #div_grid { width: 100% !important; margin-left: 0 !important; padding: 6px !important; }
	#grid > .btn, #grid > input.btn, #grid > button.btn {
		display: block !important; width: 100% !important; margin: 6px 0 !important; min-height: 44px !important;
	}
	#archivo { width: 100% !important; height: auto !important; padding: 10px !important; display: block !important; }
	#barra_progreso_paradas, #barra_de_progreso, #progress1, #progress2 {
		width: 100% !important; display: block !important; margin-top: 6px !important;
	}


/* ---------------------------------------------------------------------
   18. BOTONERAS DENSAS
   #botones2 de gestion.php son ~40 botones en 5 secciones. En 390px, sin
   tocar nada, son varias pantallas de scroll.
   PROHIBIDO usar display:none sobre botones concretos: su visibilidad la
   deciden PHP por rol/centro y el JS con show()/hide().
   --------------------------------------------------------------------- */
	#botones2 { padding: 10px !important; margin: 10px 0 !important; }
	#botones2 > div {
		display: grid !important; grid-template-columns: 1fr 1fr !important;
		gap: 8px !important; padding: 8px 0 !important;
	}
	#botones2 > div > div:first-child { grid-column: 1 / -1 !important; margin-right: 0 !important; }
	#botones2 .btn { width: 100% !important; font-size: 12px !important; padding: 12px 8px !important; }

	#botones { display: flex !important; flex-direction: column !important; align-items: stretch !important; gap: 6px !important; }
	#botones .btn { display: block !important; width: 100% !important; margin: 0 0 4px !important; text-align: left !important; }
	#botones br { display: none !important; }
	#botones label { display: block !important; margin-top: 8px !important; }

	.route-buttons-area { flex-direction: column !important; align-items: stretch !important; padding: 10px 12px !important; }
	.route-buttons-area .btn, .registros-select { width: 100% !important; white-space: normal !important; }

	.excel-section, .report-actions, .cm-export-actions, .form-actions {
		display: flex !important; flex-direction: column !important; gap: 10px !important;
	}
	.excel-section > *, .report-actions > *, .cm-export-actions > *,
	.btn-export, .btn-generate, .btn-back, .search-btn, .btn-win.btn-block {
		width: 100% !important; margin-left: 0 !important; justify-content: center !important;
	}

	/* barra flotante de comparacion de inventario: ~350px con left:50%+translateX */
	#cmpBar {
		left: 8px !important; right: 8px !important; transform: none !important; bottom: 8px !important;
		flex-wrap: wrap !important; justify-content: center !important; padding: 10px 14px !important;
	}
	/* Hueco para esa barra SOLO en la pantalla que la tiene. La clase la pone
	   winiw-mobile.js: si se pusiera a secas, las otras 24 pantallas de flota
	   se comerian 110px de hueco muerto al final. */
	body.winmob-cmpbar .flota-main { padding-bottom: 110px !important; }


/* ---------------------------------------------------------------------
   19. ELEMENTOS FIJOS: STICKY APILADOS, TOASTS Y CAJON LATERAL
   .header-win es sticky top:0 con z-index:1000, y varias pantallas ponen
   OTRO sticky top:0 debajo, que queda tapado. Los toasts estan anclados a
   top:80px, justo debajo de la cabecera cuando esta se apila.
   NO incluir .tbl-pre thead th: ese se pega a su propio .scroll-wrapper y
   funciona bien; desactivarlo dejaria preasig sin cabecera.
   --------------------------------------------------------------------- */
	.tabs-container, .flota-topbar { top: 56px !important; z-index: 900 !important; }
	table.cal th, table.pg th, #tab-uso table th, #tab-admin table th { position: static !important; }

	#toast, .toast {
		position: fixed !important; top: auto !important; bottom: 12px !important;
		left: 10px !important; right: 10px !important;
		width: auto !important; max-width: none !important;
		text-align: center !important; font-size: 14px !important; z-index: 100003 !important;
	}

	body.sidebar-open { overflow: hidden !important; }
	.sidebar-win { -webkit-overflow-scrolling: touch; padding-bottom: env(safe-area-inset-bottom); }
	/* el cajon de flota queda por debajo de la cabecera (z-index 1000) con su 100 original */
	.flota-sidebar { z-index: 1200 !important; }
	/* la pone flota.js v1.01 al abrir el cajon */
	body.flota-sidebar-abierto { overflow: hidden !important; }
	body.flota-sidebar-abierto::after {
		content: ""; position: fixed; inset: 0; z-index: 1100;
		background: rgba(0,26,46,.5);
	}
	.content-main { -webkit-overflow-scrolling: touch; }

	/* flota declara --flota-header-h:56px pero winiw-global baja el header a
	   50px: 6px de desfase visible entre la cabecera azul y la topbar. */
	:root { --flota-header-h: 50px; }


/* ---------------------------------------------------------------------
   20. GRAFICOS E IFRAMES
   NUNCA poner height:auto en un contenedor de canvas de Chart.js con
   maintainAspectRatio:false: el grafico colapsa a 0px. Tampoco
   display:none en el momento del new Chart(): saldria en blanco.
   --------------------------------------------------------------------- */
	.chart-canvas-wrap, .chw, .chart-wrap, .cm-chart-wrap {
		position: relative !important; height: 260px !important; min-height: 260px !important;
		padding: 10px 8px !important;
	}
	canvas { max-width: 100% !important; }
	[style*="min-width:360px"] { min-width: 0 !important; }

	#dash-container { height: auto !important; min-height: 72vh !important; min-height: 72svh !important; }
	#dash-container iframe { height: 72vh !important; height: 72svh !important; }
	#visorPdf, #previewDoc iframe, #previewParteDoc iframe { height: 60vh !important; height: 60svh !important; }
	#previewDoc img, #previewParteDoc img { max-height: 60vh !important; max-height: 60svh !important; width: auto !important; }

	/* SVG generado en servidor (calidad.php): los font-size son ATRIBUTOS de
	   presentacion, con menor especificidad que cualquier regla CSS. */
	.card svg text { font-size: 14px; }
	.card svg[viewBox^="0 0 340"] text { font-size: 16px; }


/* ---------------------------------------------------------------------
   21. CORRECCIONES DE AUDITORIA (ronda 2, 28-jul tarde)
   Fallos vistos midiendo pantalla a pantalla a 390px.
   --------------------------------------------------------------------- */

	/* (a) calidad.php: la nota larga de las mini-graficas usa .chart-legend span,
	   que esta a white-space:nowrap (correcto para las etiquetas de color cortas,
	   pero esa nota mide 758px y quedaba cortada). En movil, que envuelva. */
	.chart-legend span { white-space: normal !important; }

	/* (b) seguimiento_wa.php: la bandeja de conversaciones no cabia (filas de 603px).
	   Causa: .conv-snip a white-space:nowrap fuerza el ancho de min-content del texto
	   del ultimo mensaje. Se envuelve y se blindan los min-width:0 de la columna. */
	.convlist, .conv, .conv-main, .conv-r1 { max-width: 100% !important; min-width: 0 !important; }
	.conv { flex-direction: column !important; }
	.conv-main { width: 100% !important; }
	.conv-r1 { flex-wrap: wrap !important; }
	.conv-snip { white-space: normal !important; }
	.conv-nom { min-width: 0; overflow: hidden; text-overflow: ellipsis; }

	/* (c) telefonos.php (y cualquier .section-header): la cabecera de seccion es un
	   flex row con el titulo + botones Excel/Nuevo; en movil no cabian y comprimian
	   los botones (con la v1.10 el texto llegaba a apilarse en vertical). Que envuelva. */
	.section-header, .section-actions { flex-wrap: wrap !important; }
	.section-header { gap: 8px !important; row-gap: 8px !important; }

	/* (d) vehiculos.php / edita_vehiculo.php: rejillas de alta escritas inline con
	   repeat(6,1fr) / repeat(8,1fr) que no colapsaban y sacaban los inputs de fecha
	   fuera de pantalla. repeat(N) = N columnas IGUALES, siempre seguro colapsarlas
	   (a diferencia de "1fr auto", que NO se toca). */
	[style*="grid-template-columns:repeat("],
	[style*="grid-template-columns: repeat("] { grid-template-columns: 1fr 1fr !important; }

	/* (e) inputs de fichero: se dejaron sin subir a 16px y algunos quedaban a 12-14.
	   No provocan el zoom de iOS como los de texto, pero por coherencia visual. */
	input[type=file] { font-size: 16px !important; }

} /* fin @media 767 */


/* =====================================================================
   TACTIL  (@media hover:none) — SIN limite de ancho, a proposito
   En tactil el :hover se queda pegado tras el primer toque. Peor: hay
   funcionalidad que SOLO existe al hover — el lapiz de edicion de
   flota/ficha.php (opacity:0) convierte "Datos tecnicos" en solo lectura,
   y el icono de solicitar baja de preasig es un fantasma de 14px.
   NOTA: un portatil con pantalla tactil tambien reporta hover:none y
   entrara aqui. Es el comportamiento deseado, pero conviene saberlo.
   ===================================================================== */
@media (hover: none) {

	.btn:hover, .btn-win:hover, .stat-chip:hover, .fpill:hover, .chip:hover, .cwchip:hover,
	.btn-export:hover, .btn-dec:hover, .btn-act:hover, .fr-card:hover, .inv-card:hover,
	.action-card:hover, .pwa-menu-card:hover, .sm-cell:hover, .cm-tab:hover {
		transform: none !important; box-shadow: none !important; opacity: 1 !important;
	}
	table tbody tr:hover > td, .tbl-pre tbody tr:hover td,
	.ui-jqgrid .ui-jqgrid-btable tr:hover td, table.cal tbody tr:hover td { background: inherit !important; }
	.cell-asig:hover { opacity: 1 !important; }
	.cell-vacia:hover { background: transparent !important; }
	.svc-opt:hover, .dd-baja-item { background: #fff !important; }
	.svc-opt:active, .dd-baja-item:active { background: #e8f4fd !important; }
	#accordionMenu .nav > li > a:hover { padding-left: 40px !important; }
	img:hover { box-shadow: none !important; }

	/* ---- Aviso del toque largo sobre title= (winiw-mobile.js v1.20) ----
	   Media app guarda informacion util SOLO en el atributo title, y en
	   tactil no hay forma de leerla. Se recupera con pulsacion larga. */
	.winmob-aviso {
		position: fixed; left: 10px; right: 10px; bottom: 12px;
		z-index: 100004;
		background: rgba(0,37,61,.97); color: #fff;
		padding: 14px 16px; border-radius: 12px;
		font-size: 14px; line-height: 1.45;
		box-shadow: 0 8px 30px rgba(0,0,0,.35);
		max-height: 45vh; overflow-y: auto;
		opacity: 0; transform: translateY(12px);
		pointer-events: none;
		transition: opacity .18s ease, transform .18s ease;
	}
	.winmob-aviso.visible { opacity: 1; transform: translateY(0); pointer-events: auto; }

	/* Señal discreta de "aqui hay algo que leer". Solo en portadores de
	   texto: los botones y enlaces ya se ven pulsables de por si, y
	   subrayarlos todos ensuciaria la pantalla entera. */
	span[title]:not(.idx):not(.pill), td[title], th[title], abbr[title], .flota-tip-trigger {
		text-decoration: underline dotted rgba(0,51,84,.35);
		text-underline-offset: 3px;
	}

	/* lo que solo se ve al pasar el raton, en tactil debe verse siempre */
	.dato-pen {
		opacity: .55 !important; padding: 8px !important;
		min-width: 40px; min-height: 40px;
		display: inline-flex !important; align-items: center; justify-content: center;
	}
	.btn-baja {
		opacity: 1 !important; font-size: 15px !important;
		min-width: 34px !important; min-height: 34px !important; line-height: 34px !important;
		display: inline-block !important; text-align: center !important;
	}
	.flota-tip-trigger { border-bottom-style: solid; }
}
