/* Las variables de color viven en tokens.css (4 ambientes); aquí solo se usan. */
*{box-sizing:border-box}
body{margin:0;background:var(--fx),var(--bg);background-attachment:fixed;color:var(--texto);font:16px/1.5 var(--f-txt)}
a{color:var(--acento)}
:focus-visible{outline:3px solid var(--foco);outline-offset:2px}
.solo-lector{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.barra{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--borde);background:var(--tarjeta);flex-wrap:wrap}
.marca{font-weight:700;text-decoration:none;color:var(--texto)}.marca span{color:var(--suave);font-weight:400}
.barra nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.barra form{margin:0}
.barra nav a,button.enlace{display:inline-flex;align-items:center;min-height:44px}
.contenido{max-width:1200px;margin:0 auto;padding:16px}
.tarjeta{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:20px}
.angosta{max-width:380px;margin:40px auto}.centro{max-width:520px;margin:40px auto;text-align:center}
h1{font-size:1.4rem;margin:0 0 12px}
label{display:block;margin:0 0 12px;font-size:.9rem;color:var(--suave)}
input,select,button{font:inherit;color:var(--texto);background:var(--tarjeta);border:1px solid var(--borde);border-radius:7px;padding:8px 10px;min-height:44px}
label input,label select{display:block;width:100%;margin-top:4px}
button{background:var(--acento);color:var(--acento-txt);border-color:var(--acento);cursor:pointer;font-weight:600}
button.enlace{background:none;border:0;color:var(--acento);padding:0 4px;font-weight:400}
button.tema{background:var(--tarjeta);color:var(--texto);border-color:var(--borde);font-weight:400;padding:4px 12px}
.aviso{color:var(--aviso)}.nota,.meta{color:var(--suave);font-size:.88rem}.meta{margin-top:2px}
.encabezado{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.filtros{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}
.filtros input[type=number]{width:90px}.filtros input[type=search]{flex:1 1 180px}
.tabla-envoltura{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px}
.tabla{width:100%;border-collapse:separate;border-spacing:0}
.tabla th,.tabla td{padding:10px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:top}
.tabla th{position:sticky;top:0;z-index:1;background:var(--tarjeta);font-size:.82rem;color:var(--suave);font-weight:600;box-shadow:0 1px 0 var(--borde)}
.tabla tbody tr:hover td{background:var(--hover)}
.tabla tr td:first-child{border-left:4px solid transparent}
.tabla tr.alerta td{background:var(--alerta)}
.tabla tr.alerta td:first-child{border-left-color:var(--alerta-borde)}
.tabla tr.prio-alta td:first-child{border-left-color:var(--aviso)}
.tabla tr.fila-hecha td{opacity:.75}.tabla tr.fila-anulada td:nth-child(-n+3){text-decoration:line-through}.hora-accion{margin:2px 0}.hora-accion summary{cursor:pointer}.tabla tr.fila-hecha .titulo{text-decoration:line-through;text-decoration-thickness:1px}
.mono{font-family:ui-monospace,Consolas,monospace;font-size:.88rem;font-weight:600;white-space:nowrap}.num{text-align:right}.cod{display:none}
.semana{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
.chip{display:inline-block;padding:1px 9px;border-radius:999px;border:1px solid transparent;font-size:.8rem;font-weight:600;white-space:nowrap;background:var(--c-pend);color:var(--t-pend)}
.estado-pendiente{background:var(--c-pend);color:var(--t-pend)}.estado-en_curso{background:var(--c-curso);color:var(--t-curso)}.estado-esperando{background:var(--c-esp);color:var(--t-esp)}.estado-hecha{background:var(--c-hecha);color:var(--t-hecha)}.estado-descartada{background:var(--c-desc);color:var(--t-desc);text-decoration:line-through}
.ruta-manual{background:var(--c-manual);color:var(--t-manual)}.ruta-asistida{background:var(--c-asist);color:var(--t-asist)}.ruta-fabrica{background:var(--c-fab);color:var(--t-fab)}.ruta-automatica{background:var(--c-auto);color:var(--t-auto)}.ruta-por_definir{background:transparent;border:1px dashed var(--suave);color:var(--suave)}
.marca-alta{display:inline-block;margin-left:6px;padding:0 6px;border-radius:4px;border:1px solid var(--aviso);color:var(--aviso);font-size:.75rem;font-weight:700;text-transform:uppercase}
.marca-mov{color:var(--alerta-borde);font-weight:700}
.vacio{padding:24px;text-align:center;color:var(--suave);background:var(--tarjeta);border:1px dashed var(--borde);border-radius:10px}
.tabla th.col-cod,.tabla td.celda-cod{width:64px;max-width:64px;white-space:nowrap}.tabla th.col-acc,.tabla td.acciones-rapidas{width:1%;white-space:nowrap}.tabla td.celda-titulo{width:auto;min-width:0}
@media (min-width:901px){
  .contenido:has(.tabla-tareas){max-width:none}
  .tabla-tareas{width:100%}
  .tabla-tareas th.col-cod,.tabla-tareas td.celda-cod{width:84px;max-width:84px;overflow:hidden;text-overflow:ellipsis}
  .tabla-tareas th.col-horas{white-space:nowrap}
  .tabla-tareas td.acciones-rapidas{min-width:0;max-width:100%}
  .enlace-origen{margin-left:4px;text-decoration:none}
  .mas-filtros{flex:1 1 100%;order:9}.mas-filtros summary{cursor:pointer;color:var(--suave);font-weight:600}
  .mas-filtros-campos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
}
@media (max-width:900px){
  .tabla-envoltura{background:none;border:0}
  .tabla,.tabla tbody,.tabla tr,.tabla td{display:block;width:100%}
  .tabla thead{display:none}
  .tabla td.celda-titulo,.tabla td.acciones-rapidas{width:100%}
  .cod{display:inline}
  .tabla tr{margin-bottom:12px;border:1px solid var(--borde);border-radius:10px;background:var(--tarjeta);overflow:hidden}
  .tabla td,.tabla tr td:first-child{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--borde);border-left:0;text-align:right}
  .tabla tr td.celda-cod:first-child{display:none}
  .tabla td:last-child{border-bottom:0}
  .tabla td::before{content:attr(data-label);color:var(--suave);font-size:.82rem;font-weight:600;text-align:left;flex:0 0 38%}
  .tabla tr.alerta,.tabla tr.prio-alta{border-left:6px solid var(--alerta-borde)}
  .tabla tr.prio-alta{border-left-color:var(--aviso)}
  .tabla td.celda-titulo{display:block;text-align:left}.tabla td.celda-titulo::before{display:block;margin-bottom:2px}
  .contenido{padding:12px}
  .filtros select,.filtros input[type=number]{flex:1 1 40%;width:auto}
  .datos{grid-template-columns:1fr}
  .tabla td.acciones-rapidas{display:block;text-align:left}.tabla td.acciones-rapidas::before{display:block;margin-bottom:4px}
}
/* Issue #5: formulario, acciones, carga del Sprint, línea de tiempo */
a.boton,button.secundario,button.peligro{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 14px;border-radius:7px;border:1px solid var(--acento);background:var(--acento);color:var(--acento-txt);font-weight:600;text-decoration:none}
a.boton.secundario,button.secundario{background:var(--tarjeta);color:var(--acento)}
button.peligro{background:var(--tarjeta);color:var(--aviso);border-color:var(--aviso)}
textarea{font:inherit;color:var(--texto);background:var(--tarjeta);border:1px solid var(--borde);border-radius:7px;padding:8px 10px;display:block;width:100%;margin-top:4px}
.mensaje{padding:10px 14px;border-radius:8px;border:1px solid var(--borde);background:var(--tarjeta);font-weight:600}
.mensaje-ok{border-color:var(--t-hecha);background:var(--c-hecha);color:var(--t-hecha)}
.mensaje-error{border-color:var(--aviso);color:var(--aviso)}
.formulario{max-width:760px}.rejilla{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 14px}
.botones{display:flex;gap:10px;flex-wrap:wrap}
h2{font-size:1.1rem;margin:20px 0 8px}h3{font-size:.98rem;margin:0 0 6px}
.datos{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}.datos dt{color:var(--suave);font-size:.88rem}.datos dd{margin:0;overflow-wrap:anywhere}.notas{white-space:pre-wrap}
.rejilla-acciones{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
form.accion{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:4px}
form.accion button{margin-top:auto}
.linea-tiempo{list-style:none;margin:0;padding:0 0 0 14px;border-left:3px solid var(--borde)}
.linea-tiempo li{padding:0 0 14px 12px;position:relative}
.linea-tiempo li::before{content:"";position:absolute;left:-23px;top:6px;width:11px;height:11px;border-radius:50%;background:var(--acento);border:2px solid var(--fondo)}
.acciones-rapidas form{display:inline-block;margin:0 6px 4px 0}
.acciones-rapidas button,.acciones-rapidas a.boton{min-height:40px;padding:4px 10px;font-size:.88rem}
.carga{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.carga-linea{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.barra-carga{height:12px;border-radius:6px;background:var(--c-pend);overflow:hidden;margin:6px 0}
.barra-carga span{display:block;height:100%;background:var(--acento)}
.carga.sobrecarga{border-color:var(--alerta-borde)}.carga.sobrecarga .barra-carga span{background:var(--alerta-borde)}
.atencion{background:var(--alerta);border:1px solid var(--alerta-borde);border-radius:10px;padding:4px 14px 14px;margin-top:16px}
/* Issue #8: prioridad en línea y acciones rápidas en la fila */
.mini{margin:0;display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.mini input[type=text],.mini select,select.sel-prio{width:auto;margin:0;min-height:40px;padding:4px 8px;font-size:.88rem;color:var(--texto);background:var(--tarjeta);border:1px solid var(--borde);border-radius:7px}
.mini input.horas{width:6.5rem}
select.sel-prio.prio-alta{border-color:var(--aviso);color:var(--aviso);font-weight:700}
.acciones-rapidas .mini{display:flex;margin:0 0 6px}
.mas{margin:0 0 6px}.mas summary{cursor:pointer;display:inline-flex;align-items:center;min-height:40px;padding:4px 10px;border:1px solid var(--borde);border-radius:7px;background:var(--tarjeta);font-size:.88rem;font-weight:600;list-style:none}
.mas summary::-webkit-details-marker{display:none}.mas[open] summary{border-color:var(--acento)}
.mas-cuerpo{display:flex;flex-direction:column;gap:8px;margin-top:6px;padding:8px;border:1px solid var(--borde);border-radius:8px;background:var(--fondo)}
.mas-cuerpo .mini{flex-direction:column;align-items:stretch;padding-bottom:8px;border-bottom:1px solid var(--borde)}.mas-cuerpo .mini:last-child{border-bottom:0;padding-bottom:0}
.mas-cuerpo .mini input[type=text],.mas-cuerpo .mini select{width:100%}
.mas-cuerpo .mini button{min-height:44px}
.celda-prio .mini{flex-wrap:nowrap}
label.casilla input{display:inline;width:auto;margin:0 6px 0 0}
@media (max-width:900px){
  .tabla td.celda-prio{align-items:center}
  .tabla td.acciones-rapidas .mini{display:flex;width:100%}
  .tabla td.acciones-rapidas .mini button,.tabla td.acciones-rapidas .mas summary,.mini select,.mini input[type=text],select.sel-prio{min-height:44px}
  .tabla td.acciones-rapidas .mini input.horas{flex:1}
}
/* Issue #11: tablero */
.barra nav a[aria-current]{font-weight:700;text-decoration:underline}
.ritmo{list-style:none;margin:0 0 8px;padding:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;text-align:center}
.ritmo li{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}
.ritmo-barra{display:flex;align-items:flex-end;width:100%;height:80px;background:var(--c-pend);border-radius:6px;overflow:hidden}
.ritmo-barra span{display:block;width:100%;background:var(--acento);min-height:2px}
.ritmo-n{font-weight:700}.ritmo-etq{font-size:.82rem;font-weight:600}.ritmo .meta{font-size:.72rem}
.alertas{margin:0;padding-left:20px}.alertas li{margin-bottom:6px}
.proyectos-rejilla{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.proyecto header{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.proyecto h3{margin:0}
.proyecto{border-left:6px solid var(--borde)}
.proyecto[class*=sem-]{border-left-color:var(--sem)}
.semaforo{font-weight:700;white-space:nowrap}
.conteos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.conteos div{text-align:center}
.conteos dt{color:var(--suave);font-size:.78rem}.conteos dd{margin:0;font-size:1.25rem;font-weight:700}
.bloque-avance{margin:8px 0}.bloque-avance a{margin-right:6px}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0}
@media (max-width:700px){.ritmo{grid-template-columns:repeat(4,minmax(0,1fr))}.proyectos-rejilla{grid-template-columns:1fr}}
/* Issue #21: listado compacto, acciones con ícono y ventanas */
.tabla .titulo{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tabla .celda-titulo .meta{font-size:.78rem;margin-top:2px}
.acciones-rapidas{white-space:nowrap}.acciones-linea{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
.btn-icono,.acciones-rapidas .btn-icono{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:0 8px;margin:0;border:1px solid var(--borde);border-radius:7px;background:var(--tarjeta);color:var(--texto);font-size:1.05rem;font-weight:600;line-height:1;text-decoration:none;cursor:pointer;list-style:none}
.btn-icono:hover{border-color:var(--acento);background:var(--hover)}
.acciones-rapidas .mas{position:relative;margin:0}
.acciones-rapidas .mas-cuerpo{position:absolute;right:0;top:100%;z-index:5;min-width:11rem;margin-top:4px;padding:4px;display:flex;flex-direction:column;gap:0;border:1px solid var(--borde);border-radius:8px;background:var(--tarjeta);box-shadow:0 4px 14px rgba(0,0,0,.25)}
.mas-cuerpo a{display:block;padding:10px 12px;border-radius:6px;color:var(--texto);text-decoration:none;font-size:.9rem}
.mas-cuerpo a:hover{background:var(--hover)}
.tabla select.sel-prio{min-height:32px;padding:2px 6px;font-size:.82rem}
dialog.ventana{width:min(640px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:18px;border:1px solid var(--borde);border-radius:12px;background:var(--tarjeta);color:var(--texto);overflow:auto}
dialog.ventana::backdrop{background:rgba(0,0,0,.55)}
.formulario-accion h2{font-size:1.15rem;margin:0 0 4px}
.formulario-accion .meta{margin:0 0 12px}
.formulario-accion textarea{width:100%}
.pagina-accion{max-width:640px}
@media (max-width:900px){
  .tabla td.acciones-rapidas{display:block;white-space:normal;text-align:left;padding:8px 10px}
  .tabla td.acciones-rapidas::before{display:none}
  .acciones-linea{justify-content:space-between}
  .acciones-linea .btn-icono{flex:1;min-height:44px}
  .acciones-linea .mas{flex:1}.acciones-linea .mas>summary{width:100%}
  .acciones-linea form.mini{flex:1;display:flex}.acciones-linea form.mini button{flex:1;min-height:44px}
  dialog.ventana{width:calc(100vw - 16px);padding:14px}
}
.efe-selector{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:8px 0 16px}
.efe-selector label{display:flex;flex-direction:column;gap:4px;font-size:.9rem}
.efe-selector input{min-width:min(260px,100%)}
.efe-tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}
.efe-tarjeta{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:12px 16px}
.efe-tarjeta h3{margin:0 0 6px;font-size:1rem}
.efe-tarjeta dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:2px 12px}
.efe-tarjeta dt{color:var(--suave)}.efe-tarjeta dd{margin:0;font-weight:700;text-align:right}
.efe-serie{list-style:none;margin:8px 0;padding:0}
.efe-serie li{display:grid;grid-template-columns:2.2em 1fr auto;gap:8px;align-items:center;padding:2px 0}
.efe-serie .efe-valor{font-size:.85rem;color:var(--suave);white-space:nowrap}
.efe-barra{display:flex;height:14px;border-radius:7px;background:var(--c-pend);overflow:hidden;min-width:60px}
.efe-b-dia{background:var(--acento)}.efe-b-noche{background:var(--t-curso)}
.efe-leyenda{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 3px 0 6px}
.efe-proyecto td{background:var(--hover)}
@media (max-width:600px){.efe-serie li{grid-template-columns:2.2em 1fr}.efe-serie .efe-valor{grid-column:1 / -1;white-space:normal}}
.chip.sev-bloqueante{background:transparent;border:1px solid var(--aviso);color:var(--aviso);font-weight:700}.chip.sev-alta{background:var(--c-esp);color:var(--t-esp)}.chip.sev-normal,.chip.sev-baja{background:var(--c-pend);color:var(--t-pend)}
.tabla tr.sop-bloqueante td:first-child{border-left-color:var(--aviso)}
@media (max-width:899px){.tabla tr.sop-bloqueante{border-left:6px solid var(--aviso)}}
.sop-resumen{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:8px 0 16px}
.sop-resumen div{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:10px 12px}
.sop-resumen dt{color:var(--suave);font-size:.85rem}.sop-resumen dd{margin:0;font-size:1.3rem;font-weight:700}
.consola-enc{margin:0 0 12px}.consola-fecha{margin:0 0 6px;font-size:1.05rem}
.consola-nav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}
.consola-selector{display:inline-flex;border:1px solid var(--borde);border-radius:8px;overflow:hidden}
.consola-selector a{padding:6px 12px;text-decoration:none;color:var(--texto);min-height:36px;display:inline-flex;align-items:center}
.consola-selector a[aria-current]{background:var(--acento);color:var(--acento-txt);font-weight:700}
.consola-flecha{padding:4px 10px;border:1px solid var(--borde);border-radius:8px;text-decoration:none;color:var(--texto);min-height:36px;display:inline-flex;align-items:center}
.consola-periodo{font-weight:700}
.consola-frase{margin:8px 0;padding:8px 12px;border-radius:8px;border:1px solid var(--borde);border-left-width:6px;background:var(--tarjeta)}
.consola-frase[class*=sem-],.tarjeta-c.sem-riesgo,.tarjeta-c.sem-alerta{border-left-color:var(--sem)}
.consola-tarjetas{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:8px 0 16px}
.tarjeta-c{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--tarjeta);border:1px solid var(--borde);border-left-width:6px;border-radius:10px;text-decoration:none;color:var(--texto);min-width:0}
.tarjeta-c.sem-riesgo .t-valor,.tarjeta-c.sem-alerta .t-valor{color:var(--sem)}
.t-titulo{color:var(--suave);font-size:.85rem}.t-valor{font-size:1.5rem;font-weight:700;line-height:1.2}
.delta{font-size:.8rem;color:var(--suave)}.delta.ayuda{color:var(--acento)}.delta.perjudica{color:var(--aviso)}
.linea-dia{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:10px 12px;margin:6px 0 16px}
.linea-carril{display:grid;grid-template-columns:4.5em 1fr;gap:8px;align-items:center;margin:4px 0}.linea-nombre{font-size:.85rem;color:var(--suave)}
.linea-pista{position:relative;height:22px;background:var(--c-pend);border-radius:4px;overflow:hidden}
.linea-noche{position:absolute;top:0;bottom:0;background:var(--hover);box-shadow:inset 0 0 0 100px rgba(0,0,0,.12)}
.linea-bloque{position:absolute;top:3px;bottom:3px;border-radius:3px;border:0;padding:0;min-height:0;cursor:pointer}
.carril-tu{background:var(--az)}.carril-claude{background:var(--vi)}.carril-fabrica{background:var(--ve)}
.leyenda{margin:0 0 6px;font-size:.85rem;color:var(--suave)}.punto{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 2px 0 8px}.punto:first-child{margin-left:0}
.detalle-toque{margin:8px 0 0;min-height:1.5em;font-size:.88rem;color:var(--texto)}
.terceros{margin:0 0 16px}.terceros a{display:inline-flex;align-items:center;min-height:44px}
.consola-acumulado h2 .meta{font-weight:400;margin-left:8px}
.bullet{margin:8px 0 14px;padding:10px 12px;background:var(--tarjeta);border:1px solid var(--borde);border-left-width:6px;border-radius:10px}
.bullet[class*=sem-]{border-left-color:var(--sem)}
.bullet-pista{position:relative;height:16px;background:var(--hover);border-radius:8px;overflow:visible}
.bullet-relleno{position:absolute;left:0;top:0;bottom:0;border-radius:8px;background:var(--acento)}
.bullet[class*=sem-] .bullet-relleno{background:var(--sem)}
.bullet-meta{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1px;background:var(--texto);border-radius:2px}
.bullet-texto{margin:8px 0 0;font-size:.95rem}
.consola-tarjetas.tres{grid-template-columns:repeat(3,1fr)}
.tarjeta-c .delta{font-size:.82rem}.spark{width:100%;height:28px;color:var(--acento);margin-top:4px}
.dias{display:flex;gap:6px;align-items:flex-end}
.dia-barra{flex:1 1 0;min-width:0;min-height:44px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;background:none;border:1px solid transparent;color:var(--texto);font-weight:400;border-radius:6px}
.dia-barra.es-hoy{border-color:var(--acento);background:var(--hover)}.dia-barra.es-futuro{color:var(--suave)}
.dia-valor{font-size:.85rem;min-height:1.2em}.dia-etq{font-size:.8rem;color:var(--suave);white-space:nowrap}
.dia-columna{display:flex;flex-direction:column-reverse;justify-content:flex-start;width:70%;height:90px;background:var(--hover);border-radius:4px;overflow:hidden}
.dia-columna span{display:block;width:100%}
.dias-grafico{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:10px 12px;margin:6px 0 10px}
.linea-ahora{position:absolute;top:0;bottom:0;width:2px;background:var(--aviso)}
.linea-horas{display:flex;justify-content:space-between;margin-left:calc(4.5em + 8px);font-size:.75rem;color:var(--suave)}
.decision{margin:6px 0 16px;padding-left:18px}.decision li{margin:3px 0}
@media (max-width:600px){.consola-tarjetas,.consola-tarjetas.tres{grid-template-columns:repeat(2,1fr)}.t-valor{font-size:1.25rem}.linea-carril{grid-template-columns:4.2em 1fr}.linea-horas{margin-left:calc(4.2em + 8px)}.linea-pista{height:44px}.linea-bloque{top:2px;bottom:2px;min-width:6px}.linea-nombre{font-size:.8125rem}.delta,.meta,.leyenda,.dia-etq,.dia-valor,.linea-horas,.detalle-toque{font-size:.8125rem}.dia-columna{height:70px}.dias{gap:3px}}
/* Issue #39: piso 3 Proyectos, hoja de proyecto, costos de IA y carga del equipo */
.consola-proyectos h2 .meta,.consola-carga h2 .meta{font-weight:400;margin-left:8px;font-size:.8125rem}
.tabla-piso{width:100%;border-collapse:separate;border-spacing:0;background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px}
.tabla-piso th,.tabla-piso td{padding:8px 10px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:middle}
.tabla-piso th{font-size:.82rem;color:var(--suave);font-weight:600}
.tabla-piso tbody tr:last-child td{border-bottom:0}
.tabla-piso td.p-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla-piso tr td:first-child{border-left:6px solid var(--borde)}
.tabla-piso tr[class*=sem-] td:first-child{border-left-color:var(--sem)}
.p-nombre a{font-weight:700;display:inline-flex;align-items:center;min-height:44px}
.avance-btn{display:flex;flex-direction:column;gap:6px;width:100%;min-width:140px;min-height:44px;justify-content:center;padding:4px 0;background:none;border:0;color:var(--texto);font-weight:400;text-align:left;cursor:pointer}
.avance-cod{font-size:.8125rem;font-weight:600}
.avance-pista{position:relative;display:block;height:10px;background:var(--hover);border-radius:5px;min-width:90px}
.avance-relleno{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--acento)}
.avance-raya{position:absolute;top:-3px;bottom:-3px;width:3px;margin-left:-1px;background:var(--texto);border-radius:2px}
.estado-p{font-weight:700;white-space:nowrap}.estado-p.sem-alerta,.estado-p.sem-riesgo,.estado-p.sem-atencion{color:var(--sem)}
.p-spark .spark{width:90px;height:24px;margin:0}
.bloques-hoja{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:10px}
.bloques-hoja li{display:flex;flex-direction:column;gap:4px;padding:8px 12px;background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px}
.enlace-toque{display:inline-flex;align-items:center;min-height:44px}
.chip-toque{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;text-decoration:none}
.barras-rejilla{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin:8px 0 16px}
.barras-h{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:10px 12px}
.barras-h h3{margin:0 0 6px;font-size:1rem}.barras-h ul{list-style:none;margin:0;padding:0}
.barras-h li{display:grid;grid-template-columns:minmax(70px,28%) 1fr auto;gap:8px;align-items:center;margin:6px 0;font-size:.9rem}
.bh-pista{display:block;height:12px;background:var(--hover);border-radius:6px;overflow:hidden}.bh-pista span{display:block;height:100%;background:var(--acento)}
.bh-val{font-variant-numeric:tabular-nums;white-space:nowrap}.bh-etq{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.consola-carga .nota{margin:8px 0}
@media (max-width:900px){
  .tabla-piso{border:0;background:none}
  .tabla-piso thead{display:none}
  .tabla-piso,.tabla-piso tbody{display:block}
  .tabla-piso tr{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-areas:"n n e" "a a a" "s b c";gap:4px 10px;margin-bottom:10px;padding:8px 10px;border:1px solid var(--borde);border-left-width:6px;border-radius:10px;background:var(--tarjeta)}
  .tabla-piso tr[class*=sem-]{border-left-color:var(--sem)}
  .tabla-piso td,.tabla-piso tr td:first-child{display:block;padding:0;border:0}
  .tabla-piso tbody tr:last-child td{border:0}
  .p-nombre{grid-area:n}.p-estado{grid-area:e;text-align:right}.p-avance{grid-area:a}.p-spark{grid-area:s}.p-abiertas{grid-area:b;text-align:left!important}.p-costo{grid-area:c;text-align:right!important}
  .p-spark::before,.p-abiertas::before,.p-costo::before{content:attr(data-label);display:block;color:var(--suave);font-size:.8125rem;font-weight:600}
  .barras-rejilla{grid-template-columns:1fr}.barras-h li{font-size:.8125rem}
}
/* E4a (Issue #41): celular — barra inferior, Decidir, hojas y alta rápida */
.nav-inferior{display:none}
.decidir-filtro{margin:0 0 12px}.decidir-filtro label{display:flex;flex-direction:column;gap:4px;font-size:.9rem;max-width:360px}
.decidir-lista{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.decidir-item{padding:12px;margin:0}.decidir-item.es-soporte{border-left:6px solid var(--aviso)}
.decidir-cab{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.decidir-titulo{margin:6px 0;font-weight:600}
.decidir-acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.decidir-acciones form{margin:0}
.decidir-acciones .boton,.decidir-acciones button{min-height:44px}
dialog.hoja .hoja-enlaces{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}
dialog.hoja .hoja-enlaces a,dialog.hoja .hoja-enlaces button{display:flex;align-items:center;min-height:44px;width:100%;padding:8px 12px;border:1px solid var(--borde);border-radius:8px;text-decoration:none;box-sizing:border-box}
dialog.hoja .hoja-enlaces form{margin:0}
.rapida-fila{display:flex;gap:12px;flex-wrap:wrap;align-items:end}
fieldset.segmento{display:flex;gap:12px;border:0;padding:0;margin:0}fieldset.segmento legend{padding:0;font-size:.9rem}
fieldset.segmento label{display:inline-flex;align-items:center;gap:6px;min-height:44px;flex-direction:row}
fieldset.segmento input{min-height:0;width:auto}
.rapida-mas{margin:8px 0}.rapida-mas summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
.rapida-mas label{display:flex;flex-direction:column;gap:4px;margin:6px 0}
#form-rapida>label{display:flex;flex-direction:column;gap:4px;margin:8px 0}
#form-rapida input[type=text],#form-rapida select,#form-rapida textarea{width:100%;box-sizing:border-box}
.botones-fijos{position:sticky;bottom:0;background:var(--tarjeta);padding:8px 0 0}
@media (max-width:900px){
  .barra{padding:6px 12px}
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .nav-inferior{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--tarjeta);border-top:1px solid var(--borde);padding-bottom:env(safe-area-inset-bottom)}
  .nav-inferior a,.nav-inferior button{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-height:56px;padding:4px 2px;border:0;border-radius:0;background:none;color:var(--suave);font-size:.75rem;font-weight:500;text-decoration:none}
  .nav-inferior span{font-size:1.3rem;line-height:1}
  .nav-inferior [aria-current]{color:var(--acento);font-weight:700}
  .nav-inferior .nav-nueva span{color:var(--acento-txt);display:flex;align-items:center;justify-content:center;width:44px;height:36px;border-radius:18px;background:var(--acento);margin-top:-14px}
  .nav-inferior .contador{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;padding:0 5px;border-radius:9px;background:var(--aviso);color:#fff;font-size:.7rem;line-height:18px;text-align:center}
  dialog.hoja{margin:auto 0 0;width:100%;max-width:none;max-height:calc(var(--vv-alto,100dvh) - 8px);border-radius:14px 14px 0 0;box-sizing:border-box}
  .consola-selector{flex:1 0 100%;display:flex}.consola-selector a{flex:1;justify-content:center;min-height:44px}
  .consola-nav{flex-wrap:wrap}.consola-flecha{min-height:44px;min-width:44px;justify-content:center}.consola-periodo{flex:1;text-align:center}
}
/* E4b (Issue #43): listados en tarjetas, hoja de filtros, detalle y proyecto en celular */
.solo-movil,.barra-lista-movil,.barra-accion-movil,.acciones-rapidas .btn-icono.solo-movil{display:none}
.razon{display:block;font-size:.8125rem;color:var(--suave);margin-top:2px;font-weight:400}
.lista-bloques{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}.lista-bloques .tarjeta{padding:4px 12px;margin:0}
.lista-bloques summary{min-height:44px;display:flex;align-items:center;flex-wrap:wrap;gap:6px;cursor:pointer}
.plegable>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.plegable>summary h2{margin:0}
.chips-filtros{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.chip-quitar{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;text-decoration:none;color:var(--texto);border:1px solid var(--borde);background:var(--tarjeta)}
#hoja-filtros label{display:flex;flex-direction:column;gap:4px;margin:8px 0}#hoja-filtros label.casilla{flex-direction:row;align-items:center;min-height:44px}
#hoja-filtros select,#hoja-filtros input[type=date]{width:100%;min-height:44px;box-sizing:border-box}
@media (max-width:900px){
  .solo-escritorio{display:none!important}
  .solo-movil,.acciones-rapidas .btn-icono.solo-movil,.barra-accion-movil .btn-icono.solo-movil{display:inline-flex}
  body{overflow-x:clip}
  .tabla-envoltura{overflow-x:auto;max-width:100%}
  .rejilla{grid-template-columns:1fr}
  select,input,textarea{max-width:100%}
  dialog.ventana{max-width:calc(100vw - 8px)}
  .barra-lista-movil{display:block;position:sticky;top:0;z-index:20;margin:0 -12px 8px;padding:8px 12px;background:var(--fondo);border-bottom:1px solid var(--borde)}
  .busqueda-fija{display:flex;gap:6px;align-items:center}.busqueda-fija input[type=search]{flex:1;min-width:0;min-height:44px;margin:0}.busqueda-fija button{min-height:44px;white-space:nowrap}
  .tabla-tareas tr{display:flex;flex-wrap:wrap;align-items:center;gap:0 10px;padding:8px 10px}
  .tabla-tareas td,.tabla-tareas td:last-child{display:block;width:auto;padding:2px 0;border:0;text-align:left}
  .tabla-tareas td::before{display:none}
  .tabla-tareas td.celda-titulo{flex:1 0 100%}
  .tabla-tareas td[data-label="Responsable"],.tabla-tareas td[data-label="Ruta"],.tabla-tareas td[data-label="h real / est."],.tabla-tareas td.sin-costo{display:none}
  .tabla-tareas td.celda-prio{margin-left:auto}
  .tabla-tareas td.acciones-rapidas{flex:1 0 100%;margin-top:4px;padding-top:6px;border-top:1px solid var(--borde)}
  .barra-accion-movil{display:flex;position:fixed;left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:25;gap:6px;padding:6px 10px;background:var(--tarjeta);border-top:1px solid var(--borde)}
  .barra-accion-movil>*{flex:1}.barra-accion-movil .btn-icono{width:100%;min-height:44px}.barra-accion-movil form.mini{display:flex}.barra-accion-movil form.mini button{flex:1}
  .barra-accion-movil .mas-cuerpo{top:auto;bottom:100%;right:0;margin:0 0 4px}
  body:has(.barra-accion-movil){padding-bottom:calc(128px + env(safe-area-inset-bottom))}
  .encabezado a.boton[data-accion]{min-height:44px}
  .lista-bloques .rejilla label{margin:6px 0}
}
/* Issue #45: En vivo */
.en-vivo-resumen{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:8px 0}
.vivo-lista{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.vivo-item{padding:10px 14px;border-left-width:6px;min-width:0;overflow-wrap:anywhere}
.vivo-item p{margin:2px 0}.vivo-titulo{font-weight:600}
.vivo-corre{border-left-color:var(--acento)}.vivo-cola,.vivo-esperando{border-left-color:var(--alerta-borde)}.vivo-error{border-left-color:var(--aviso)}
.vivo-cab{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
/* Issue #46: Vitrina de la fábrica */
.fabrica-filtros{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:end;margin:8px 0}.fabrica-filtros label{display:flex;flex-direction:column;font-size:.85rem;color:var(--suave);min-width:0}
.fabrica-nav{display:flex;gap:12px;align-items:center;margin:4px 0 8px}
.fabrica-tarjetas{grid-template-columns:repeat(3,1fr)}
.fabrica-frase{font-size:1.05rem}
.fabrica-linea-caja{background:var(--tarjeta);border:1px solid var(--borde);border-radius:10px;padding:10px 12px;margin:6px 0 16px;min-width:0}
.fabrica-linea{width:100%;overflow:hidden;color:var(--texto)}.fabrica-linea svg{display:block;max-width:100%}
.fabrica-herramientas{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px}.fabrica-herramientas button{min-height:36px;min-width:36px;padding:2px 10px}
.tabla-scroll{overflow-x:auto;max-width:100%}
.barrita{display:inline-block;height:8px;background:var(--acento);border-radius:4px;vertical-align:middle;max-width:60px}
.histo{display:flex;gap:2px;align-items:flex-end;height:110px;margin:6px 0 16px}.histo-col{flex:1 1 0;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.histo-col span{display:block;width:100%;background:var(--acento);border-radius:2px 2px 0 0;min-height:1px}.histo-col.histo-noche span{background:#8b5cf6}.histo-col small{font-size:.65rem;color:var(--suave)}
.cadena{list-style:none;margin:8px 0;padding:0 0 0 12px;border-left:3px solid var(--borde)}.cadena li{margin:0 0 10px;padding-left:8px}.cadena-salto{display:block;font-size:.8rem;color:var(--suave)}
body.vitrina .barra,body.vitrina .nav-inferior,body.vitrina .fabrica-filtros,body.vitrina .fabrica-nav,body.vitrina .fabrica-herramientas,body.vitrina .fabrica-entregas,body.vitrina .encabezado h1{display:none}
body.vitrina .t-valor{font-size:2.4rem}body.vitrina .fabrica-frase{font-size:1.6rem}
@media (max-width:900px){.fabrica-tarjetas{grid-template-columns:repeat(2,1fr)}.fabrica-filtros label{flex:1 1 40%}}

/* YARBI (manual de marca v1, claude/32-yarbi-identidad.md) */
.yarbi{display:inline-block;flex:none;vertical-align:middle}
.marca{display:inline-flex;align-items:center;gap:8px}
.con-yarbi{display:flex;align-items:center;gap:12px}
.consola-frase.con-yarbi{padding:10px 14px}
.yarbi-firma{font-family:'Exo 2','Space Grotesk',sans-serif;font-style:italic;font-weight:800;letter-spacing:.01em;margin-right:4px}
.ir-a .yarbi{margin-right:8px}
/* Issue #73: semáforos y alertas de /adopcion (usan --sem de .sem-*). */
.adop-sem{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:8px 0;padding:0}
.adop-sem li{display:inline-flex;gap:6px;align-items:center;min-height:44px;padding:0 12px;border:1px solid color-mix(in srgb,var(--sem) 40%,transparent);border-left-width:6px;border-radius:10px;background:var(--tarjeta)}
.adop-alerta{margin:8px 0;padding:10px 14px;border-radius:10px;color:var(--texto);background:color-mix(in srgb,var(--sem) 12%,transparent);border:1px solid color-mix(in srgb,var(--sem) 30%,transparent);overflow-wrap:anywhere}
.adop-alerta strong{color:var(--sem)}
