/* =====================================================================
   PLANIFICADOR DE TALLER (unificado con la Torre de Control, 19/10/2026)
   Solo variables de app.css: el modo claro y el oscuro salen solos.
   fst- = componentes que nacieron en la Torre (tarjetas, chips, diálogos);
   tw-  = contenedor y vistas del módulo unificado. No chocan con .tc- ni .jpcb-.
   ===================================================================== */
.fst .sub{margin-bottom:0;}
.fst-cab{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;}
.fst-cab-acc{display:flex;align-items:center;gap:8px;}
.fst-kpis{margin:14px 0 4px;}
.fst-tabs{display:flex;align-items:center;gap:6px;margin:16px 0 12px;flex-wrap:wrap;
  border-bottom:1px solid var(--linea);padding-bottom:10px;}
.fst-tabs button{background:transparent;border-color:transparent;color:var(--txt2);font-weight:600;padding:7px 12px;}
.fst-tabs button.on{background:var(--azul2);color:var(--azulc);}
.fst-tabs select{margin-left:auto;}
.fst-aviso{margin:0 0 12px;display:flex;align-items:center;gap:8px;}

.fst-tablero{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(210px,1fr);gap:12px;
  overflow-x:auto;padding-bottom:8px;align-items:start;}
.fst-col{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r);min-width:0;
  display:flex;flex-direction:column;max-height:calc(100vh - 290px);}
.fst-col-cab{padding:11px 12px;border-bottom:1px solid var(--linea);}
.fst-col-tit{font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:6px;text-transform:capitalize;}
.fst-col-res{font-size:11.5px;color:var(--txt3);margin-top:3px;}
.fst-col-cuerpo{padding:10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;}
.fst-n{font-size:11px;font-weight:700;color:var(--txt3);background:var(--panel2);border-radius:99px;padding:1px 8px;}
.fst-col-por_asignar .fst-col-tit{color:var(--ambarc);}
.fst-col-en_trabajo .fst-col-tit{color:var(--verdec);}

.fst-card{background:var(--panel2);border:1px solid var(--linea);border-radius:10px;padding:9px 10px;
  display:flex;flex-direction:column;gap:4px;font-size:12.5px;}
.fst-card-alerta{border-color:var(--ambar);}
.fst-card-l1{font-size:13px;display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.fst-card-l2{color:var(--txt2);overflow:hidden;text-overflow:ellipsis;}
.fst-card-chips{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:2px;}
.fst-card-acc{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:4px;}
.fst-card-acc button,.fst-card-acc .gh{font-size:12px;padding:5px 8px;}
.fst-card-acc select{font-size:12px;padding:5px 6px;max-width:160px;}
.fst-pat{font-weight:700;letter-spacing:.04em;}
.fst-origen{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--cyanc);
  background:var(--cyan2);border-radius:99px;padding:1px 7px;}
.fst-wsp{color:var(--verdec);text-decoration:none;border-radius:8px;}
.fst-nota{font-size:11.5px;color:var(--txt3);}

.chip.fst-e-agendada{background:var(--sutil-bg);color:var(--txt2);}
.chip.fst-e-preparacion{background:var(--azul2);color:var(--azulc);}
.chip.fst-e-alerta{background:var(--ambar2);color:var(--ambarc);}
.chip.fst-e-rojo{background:var(--rojo2);color:var(--rojoc);}
.chip.fst-e-neutro{background:var(--neutro-bg);color:var(--neutro-txt);}
.chip.fst-e-recepcion{background:var(--cyan2);color:var(--cyanc);}
.chip.fst-e-asignar{background:var(--morado2);color:var(--moradoc);}
.chip.fst-e-trabajo{background:var(--verde2);color:var(--verdec);}
.chip.fst-p-firme{background:var(--verde2);color:var(--verdec);}
.chip.fst-p-tentativo{background:var(--sutil-bg);color:var(--txt3);}
.chip.fst-p-sin{background:transparent;color:var(--txt3);box-shadow:inset 0 0 0 1px var(--linea2);}

.fst-modal{max-width:520px;width:100%;}
.fst-m-res{margin:0 0 14px;font-size:13px;color:var(--txt2);line-height:1.5;}
.fst-chk{display:flex;align-items:center;gap:8px;font-size:13px;margin:4px 0 8px;}
.fst-hist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.fst-hist li{border-left:2px solid var(--linea2);padding-left:10px;font-size:13px;}
.fst-hist-t{display:block;font-size:11px;color:var(--txt3);}


/* ---------------- Contenedor ---------------- */
.tw{display:flex;flex-direction:column;padding:0;overflow:hidden;}
.tw-cab{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 20px 0;}
.tw-cab .sub{margin:0;}
.tw-ctrl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tw-kpis{padding:0 20px;}
.tw-kpis .kpis{margin-top:10px;}
.tw-kpi-atencion .v{color:var(--ambarc);}
.tw-kpi-critica .v{color:var(--rojoc);}
.tw-vistas{margin-top:10px;padding:0 12px;overflow-x:auto;flex:0 0 auto;}
.tw-vistas .subtab{padding:11px 13px;white-space:nowrap;}
#tw-avisos .aviso{margin:10px 20px 0;}
.tw-cuerpo{flex:1;min-height:0;overflow:auto;padding:14px 20px 20px;display:flex;flex-direction:column;}
.tw-cuerpo-tablero,.tw-cuerpo-ct,.tw-cuerpo-vt,.tw-cuerpo-prod,.tw-cuerpo-prodtaller,.tw-cuerpo-metas,.tw-cuerpo-jpcb{padding:0;overflow:hidden;}
.tw-plan{flex:1;min-height:0;display:flex;}
.tw-sp{flex:1;}
.tw-barra{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.tw-buscar{min-width:220px;flex:0 1 320px;}

/* Franja de capacidad (vista Planificación) */
.tw-capacidad{display:flex;flex-wrap:wrap;gap:6px 18px;padding:9px 16px;font-size:12.5px;color:var(--txt2);
  border-bottom:1px solid var(--linea);background:var(--panel);}
.tw-capacidad:empty{display:none;}
.tw-cap-alerta{color:var(--ambarc);}

/* ---------------- Tablero de Flujo ---------------- */
.tw-tablero{display:flex;gap:10px;align-items:flex-start;overflow-x:auto;padding-bottom:8px;flex:1;min-height:0;}
.tw-col{flex:0 0 232px;background:var(--panel);border:1px solid var(--linea);border-radius:var(--r);
  display:flex;flex-direction:column;max-height:100%;min-height:120px;}
.tw-col-critica{border-top:3px solid var(--rojo);}
.tw-col-atencion{border-top:3px solid var(--ambar);}
.tw-col-cab .fst-col-tit{text-transform:none;}
.tw-col-cerrar{margin-left:auto;padding:0 6px;background:transparent;border-color:transparent;color:var(--txt3);}
.tw-col-cuerpo{flex:1;min-height:60px;}
.tw-col-cuerpo.sobre{outline:2px dashed var(--azul);outline-offset:-4px;}
.tw-col-cerrada{flex:0 0 44px;min-height:180px;}
.tw-col-abrir{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;width:100%;
  color:var(--txt2);font-size:12px;}
.tw-col-abrir:focus-visible{outline:2px solid var(--azul);border-radius:var(--r);}
.tw-col-vert{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:600;white-space:nowrap;}

.tw-card{background:var(--panel2);border:1px solid var(--linea);border-left:3px solid var(--linea2);border-radius:10px;
  padding:8px 9px;display:flex;flex-direction:column;gap:3px;font-size:12.5px;cursor:pointer;}
.tw-card:hover{border-color:var(--linea2);}
.tw-card:focus-visible{outline:2px solid var(--azul);}
.tw-card.arrastrando{opacity:.45;}
.tw-card[draggable="true"]{cursor:grab;}
.tw-n-atencion{border-left-color:var(--ambar);}
.tw-n-critica{border-left-color:var(--rojo);background:color-mix(in srgb,var(--rojo2) 45%,var(--panel2));}
.tw-l1{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:13px;}
.tw-l2{color:var(--txt2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tw-l3{color:var(--txt3);font-size:11.5px;}
.tw-com{font-size:11.5px;color:var(--txt2);background:var(--panel3);border-radius:6px;padding:3px 6px;}
.tw-reloj,.tw-hora{font-size:11px;font-weight:700;color:var(--txt2);font-variant-numeric:tabular-nums;white-space:nowrap;}
.tw-n-atencion .tw-reloj{color:var(--ambarc);}
.tw-n-critica .tw-reloj{color:var(--rojoc);}
.tw-alertas{display:flex;gap:4px;flex-wrap:wrap;}
.tw-alerta{font-size:10px;font-weight:700;border-radius:99px;padding:1px 7px;}
.tw-alerta-atencion{background:var(--ambar2);color:var(--ambarc);}
.tw-alerta-critica{background:var(--rojo2);color:var(--rojoc);}
.tw-alerta-ok{background:var(--panel3);color:var(--txt2);}
.tw-acc{margin-top:5px;}

/* Ficha de la OT */
.modal-box.tw-modal-ancho{max-width:680px;}
.tw-ficha th{width:38%;text-align:left;color:var(--txt3);font-weight:600;}
.tw-sub{margin:16px 0 8px;font-size:13px;}

/* ---------------- Métricas ---------------- */
.tw-metricas{display:flex;flex-direction:column;gap:18px;max-width:1200px;}
.tw-grupo h4{margin:0 0 8px;font-size:13.5px;}
.tw-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;}
.tw-tile{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r);padding:12px 14px;}
.tw-tile-v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;}
.tw-tile-k{font-size:11.5px;color:var(--txt3);margin-top:2px;}
.tw-tile-n{font-size:11.5px;color:var(--txt2);margin-top:4px;}
.tw-tile-atencion{border-left:3px solid var(--ambar);}
.tw-tile-critica{border-left:3px solid var(--rojo);}
.tw-tabla-col th[scope="row"]{text-align:left;font-weight:600;white-space:nowrap;}
.tw-barra-dato{display:flex;align-items:center;gap:8px;min-width:160px;}
.tw-barra-marca{display:block;height:8px;border-radius:0 4px 4px 0;background:var(--azul);min-width:2px;}
.tw-barra-num{font-size:12px;color:var(--txt);font-variant-numeric:tabular-nums;}
.tw-link{padding:2px 8px;font-size:12px;}

/* ---------------- Modo TV (reunión diaria) ---------------- */
body.tw-tv-activo .lateral,body.tw-tv-activo .lat-toggle,body.tw-tv-activo .principal > .barra{display:none;}
body.tw-tv-activo .app{grid-template-columns:1fr;}
.tw-modo-tv .tw-vistas,.tw-modo-tv .tw-acc,.tw-modo-tv .tw-barra{display:none;}
.tw-modo-tv .tw-kpis .kpi .v{font-size:26px;}
.tw-modo-tv .tw-kpis .kpi .k{font-size:12px;}
.tw-modo-tv .tw-col{flex:1 1 0;min-width:170px;}
.tw-modo-tv .tw-card{font-size:14px;cursor:default;}
.tw-modo-tv .tw-l1{font-size:16px;}
.tw-modo-tv .tw-reloj{font-size:13px;}

@media (max-width:720px){
  .fst-tablero{grid-auto-columns:86%;}
  .fst-col{max-height:none;}
  .tw-cab,.tw-kpis{padding-left:16px;padding-right:16px;}
  .tw-cuerpo{padding:12px 16px 16px;}
  .tw-col{flex-basis:82%;}
  .tw-buscar{flex:1 1 100%;}
}
body.tw-tv-activo #puente-aviso{display:none;}
.tw-col-cerrada.sobre{outline:2px dashed var(--azul);outline-offset:-4px;}
.tw-hoja{display:flex;flex-direction:column;flex:1;min-height:0;}
.tw-kpis .kpis{gap:10px;}
