/* CTRL-C · dirección visual "Runway" (night ops board / FIDS).
   Tokens y specs: AVIO_tokens_y_componentes.md (handoff Claude Design).
   Tema oscuro único. Nunca solo color: color + forma + etiqueta. */

@font-face { font-family:'IBM Plex Sans'; font-weight:400; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexSans-400.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-weight:500; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexSans-500.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-weight:600; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexSans-600.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-weight:700; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexSans-700.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-weight:400; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexMono-400.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-weight:500; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexMono-500.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-weight:600; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexMono-600.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-weight:700; font-style:normal; font-display:swap; src:url('../fonts/IBMPlexMono-700.woff2') format('woff2'); }

:root {
  --avio-bg-app:#080d13; --avio-panel:#0e1620; --avio-panel-2:#0b121a;
  --avio-inset:#0a1119; --avio-hairline:#131e29; --avio-border:#1d2a37;
  --avio-border-strong:#2b3d4e; --avio-text:#e8eef4; --avio-text-2:#c6d3df;
  --avio-text-mut:#8296a8; --avio-text-dim:#5a6b7c;
  --avio-amber:#f4a52b; --avio-amber-ink:#05080b;
  --avio-st-actv:#64798d; --avio-st-inwork:#2fb9d6; --avio-st-complete:#3cbd6b;
  --avio-st-unassign:#a1927d; --avio-st-cancel:#8a5560;
  --avio-st-pause:#9486d6;   /* PAUSE: arrancada y detenida sin cerrar */
  --avio-alert-crit:#ff5257; --avio-alert-warn:#f4a52b; --avio-alert-info:#5aa9ff;
  --avio-pri-1:#ff7a45; --avio-pri-2:#e0a83a; --avio-pri-3:#6b8296;
  --avio-req-insp:#39d0b0; --avio-event:#b08cff;
  --avio-crit-bg:#2a0e10; --avio-hazard-a:#ff5257; --avio-hazard-b:#3a0d0e;
  --avio-stale-bg:#241708; --avio-stale-border:#e0972f; --avio-stale-text:#f0b968;
  --avio-wpopen:#e0972f;   /* marco naranja: A/C Liberado con WP Open */
  --avio-noexec:#c23b47;   /* marco rojo sólido: W/P NO EJECUTAR (cancelado);
                              carmesí apagado, distinto del hazard rayado */
  --avio-insp-bg:#0c1a18; --avio-insp-border:#2a7d6c;
  --font-text:'IBM Plex Sans',system-ui,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,monospace;
  --sh-pop:0 12px 30px rgba(0,0,0,.5); --sh-overlay:0 10px 30px rgba(0,0,0,.55);
  --glow-now:0 0 6px var(--avio-amber);
}

* { box-sizing:border-box; margin:0; padding:0; }
[hidden] { display:none !important; }
html { color-scheme:dark; }
body {
  background:var(--avio-bg-app); color:var(--avio-text);
  font-family:var(--font-text); font-size:14px; min-height:100vh;
}
button { font-family:inherit; }
a { color:var(--avio-amber); text-decoration:none; }
.mono { font-family:var(--font-mono); }
:focus-visible { outline:2px solid var(--avio-amber); outline-offset:1px; }

@keyframes avioLive { 0%,100%{opacity:1} 50%{opacity:.4} }
@keyframes avioSkel { 0%,100%{opacity:1} 50%{opacity:.55} }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation:none !important; transition:none !important; }
}

/* ---- Shell -------------------------------------------------------------- */
.shell { min-height:100vh; display:flex; flex-direction:column; }
.topbar {
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 22px; border-bottom:1px solid var(--avio-border);
  background:var(--avio-panel-2); position:sticky; top:0; z-index:20;
  gap:12px; flex-wrap:wrap;
}
.topbar-izq { display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.logo { font-family:var(--font-mono); font-size:16px; font-weight:700; letter-spacing:2px; color:var(--avio-amber); }
.logo small { color:var(--avio-text-dim); font-weight:400; letter-spacing:1px; margin-left:8px; font-size:11px; }
.nav-tabs { display:flex; gap:4px; flex-wrap:wrap; }
.nav-tab {
  font-family:var(--font-mono); font-size:12px; letter-spacing:.5px;
  padding:6px 12px; border-radius:6px; cursor:pointer;
  background:transparent; border:1px solid transparent; color:var(--avio-text-mut);
  display:inline-block;
}
.nav-tab:hover { color:var(--avio-text-2); border-color:var(--avio-border); }
.nav-tab.activo { background:#16232f; border-color:var(--avio-border-strong); color:var(--avio-text); }
.topbar-der { display:flex; align-items:center; gap:16px; }
.mxi-estado { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:11px; }
.mxi-punto { width:7px; height:7px; border-radius:50%; animation:avioLive 2s ease-in-out infinite; }
.usuario-chip { font-family:var(--font-mono); font-size:11px; color:var(--avio-text-mut); }
.btn-salir {
  background:transparent; border:1px solid var(--avio-border); color:var(--avio-text-mut);
  border-radius:5px; padding:4px 10px; font-family:var(--font-mono); font-size:11px; cursor:pointer;
}
.btn-salir:hover { border-color:var(--avio-border-strong); color:var(--avio-text-2); }

/* barra de impersonación (3.14) */
.imp-bar {
  display:flex; align-items:center; justify-content:center; gap:14px;
  padding:8px 18px; background:#2a1c07; border-bottom:1px solid var(--avio-stale-border);
  color:var(--avio-stale-text); font-family:var(--font-mono); font-size:12px; letter-spacing:.3px;
}
.imp-bar strong { color:#ffce7a; }
.imp-bar button {
  background:transparent; border:1px solid var(--avio-stale-border); color:var(--avio-stale-text);
  border-radius:5px; padding:3px 12px; font-family:var(--font-mono); font-size:11px; cursor:pointer;
}

/* banner stale (3.7) */
.banner-stale {
  display:flex; align-items:center; gap:12px; padding:10px 22px;
  background:var(--avio-stale-bg); border-bottom:1px solid var(--avio-stale-border);
  font-family:var(--font-mono); font-size:12px; color:var(--avio-stale-text);
}
.banner-stale strong { color:#ffce7a; }
.tri-warn { width:0; height:0; border-left:6px solid transparent; border-right:6px solid transparent; border-bottom:11px solid var(--avio-stale-border); flex:none; }

main.contenido { flex:1; padding:20px 22px 120px; width:100%; max-width:1720px; margin:0 auto; }

/* ---- KPIs (3.11) --------------------------------------------------------- */
.kpis { display:flex; border:1px solid var(--avio-border); border-radius:10px; overflow:hidden; background:var(--avio-inset); overflow-x:auto; }
.kpi { flex:1; min-width:110px; padding:13px 18px; border-right:1px solid var(--avio-hairline); display:flex; flex-direction:column; gap:3px; }
.kpi:last-child { border-right:none; }
.kpi b { font-family:var(--font-mono); font-size:24px; font-weight:700; letter-spacing:.5px; color:var(--avio-text); }
.kpi span { font-size:11px; letter-spacing:.5px; color:var(--avio-text-mut); text-transform:uppercase; }
.kpi.verde b { color:var(--avio-st-complete); }
.kpi.cian b { color:var(--avio-st-inwork); }
.kpi.rojo b { color:#ff8a8d; }

/* ---- Controles: chips, orden, fecha -------------------------------------- */
.controles { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.chips { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.chip {
  font-family:var(--font-mono); font-size:12px; letter-spacing:.3px; padding:6px 13px;
  border-radius:20px; cursor:pointer; background:transparent;
  border:1px solid var(--avio-border-strong); color:var(--avio-text-mut);
}
.chip.activo { background:var(--avio-amber); border-color:var(--avio-amber); color:var(--avio-amber-ink); font-weight:600; }
.controles-der { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.sel-orden { position:relative; }
.sel-orden > button {
  display:inline-flex; align-items:center; gap:10px; font-family:var(--font-mono); font-size:12px;
  color:var(--avio-text-2); background:var(--avio-panel); border:1px solid var(--avio-border-strong);
  padding:7px 13px; border-radius:7px; cursor:pointer;
}
.sel-orden > button .flecha { color:var(--avio-amber); }
.sel-orden .pop {
  position:absolute; top:calc(100% + 6px); right:0; z-index:30; min-width:230px;
  background:var(--avio-panel); border:1px solid var(--avio-border-strong); border-radius:8px;
  padding:5px; box-shadow:var(--sh-pop); display:none; flex-direction:column;
}
.sel-orden .pop.abierto { display:flex; }
.sel-orden .pop button {
  display:flex; align-items:center; justify-content:space-between; gap:10px; text-align:left;
  font-family:var(--font-mono); font-size:12px; padding:8px 11px; border-radius:6px;
  cursor:pointer; background:transparent; border:none; color:var(--avio-text-mut);
}
.sel-orden .pop button:hover { background:var(--avio-inset); color:var(--avio-text-2); }
.sel-orden .pop button .check { color:var(--avio-amber); }
.sel-fecha, select.sel-fecha {
  display:inline-flex; align-items:center; gap:8px; font-family:var(--font-mono); font-size:12px;
  color:var(--avio-text-2); border:1px solid var(--avio-border-strong); padding:7px 13px;
  border-radius:7px; background:var(--avio-panel);
}

/* ---- Grilla y tarjeta de WP (3.1) ---------------------------------------- */
.grilla { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; }
.grilla.stale { opacity:.62; }
.card {
  position:relative; background:var(--avio-panel); border:1px solid var(--avio-border);
  border-radius:8px; padding:14px 16px; cursor:pointer; display:flex; flex-direction:column; gap:10px;
  overflow:hidden;
}
.card:hover { border-color:var(--avio-border-strong); }
.card.fuera { border:1.5px solid var(--avio-hazard-a); }
.card.fuera::before {
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:repeating-linear-gradient(45deg,var(--avio-hazard-a) 0 8px,var(--avio-hazard-b) 8px 16px);
}
.card.atenuada { opacity:.5; }
/* W/P cerrado: marco verde (además del chip "CERRADO" — nunca solo color) */
.card.cerrada { border:1.5px solid var(--avio-st-complete); }
.card.cerrada::before {
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:var(--avio-st-complete);
}
/* W/P "A/C Liberado con WP Open": marco naranja (además del chip
   "LIBERADO · WP OPEN" — nunca solo color) */
.card.liberada { border:1.5px solid var(--avio-wpopen); }
.card.liberada::before {
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:var(--avio-wpopen);
}
.chip-estado.chip-liberada { color:var(--avio-wpopen); border-color:var(--avio-wpopen); }
.tl-ventana.liberada { border:1.5px solid var(--avio-wpopen); }
.tl-etq .liberada-marca { color:var(--avio-wpopen); font-weight:700; }
/* W/P "NO EJECUTAR": cancelado por el operador — marco rojo SÓLIDO (además
   del chip "⛔ NO EJECUTAR" — nunca solo color). El rayado hazard queda
   reservado a "fuera de tiempo". */
.card.no-ejecutar { border:1.5px solid var(--avio-noexec); opacity:.75; }
.card.no-ejecutar::before {
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:var(--avio-noexec);
}
.chip-estado.chip-no-ejecutar { color:#ff9aa5; border-color:var(--avio-noexec); }
.tl-ventana.no-ejecutar { border:1.5px solid var(--avio-noexec); }
.tl-etq .noexec-marca { color:var(--avio-noexec); font-weight:700; }
.card-cab { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.matricula { font-family:var(--font-mono); font-size:22px; font-weight:700; color:var(--avio-text); line-height:1.1; }
.wp-cod { font-family:var(--font-mono); font-size:11px; color:var(--avio-text-dim); }
.card-chips { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.chip-estado {
  font-family:var(--font-mono); font-size:10px; font-weight:600; letter-spacing:.5px;
  padding:3px 8px; border-radius:4px; border:1px solid; background:transparent; white-space:nowrap;
}
.chip-insp {
  font-family:var(--font-mono); font-size:10px; font-weight:600; letter-spacing:.5px;
  padding:3px 8px; border-radius:4px; border:1px solid var(--avio-insp-border);
  background:var(--avio-insp-bg); color:var(--avio-req-insp); white-space:nowrap;
}
.pill-fuera {
  align-self:flex-start; font-family:var(--font-mono); font-size:10px; font-weight:700; letter-spacing:.5px;
  padding:3px 9px; border-radius:4px; background:var(--avio-crit-bg);
  border:1px solid var(--avio-hazard-a); color:#ff8a8d;
}
.tag-noini {
  align-self:flex-start; font-family:var(--font-mono); font-size:10px; letter-spacing:.5px;
  padding:3px 9px; border-radius:4px; border:1px solid var(--avio-border-strong); color:var(--avio-text-dim);
}
.tag-stale {
  position:absolute; top:8px; right:8px; font-family:var(--font-mono); font-size:9px; font-weight:600;
  letter-spacing:.5px; padding:2px 7px; border-radius:4px;
  background:var(--avio-stale-bg); border:1px solid var(--avio-stale-border); color:var(--avio-stale-text);
}
.grilla.stale .card { padding-top:30px; }
.grilla.stale .card.fuera { padding-top:32px; }
.card-meta { display:flex; gap:16px; font-family:var(--font-mono); font-size:11px; color:var(--avio-text-mut); flex-wrap:wrap; }
.card-meta b { color:var(--avio-text-2); font-weight:600; }
.seg-bar { display:flex; height:8px; border-radius:4px; overflow:hidden; background:var(--avio-inset); border:1px solid var(--avio-hairline); }
.seg-bar span { display:block; }
.card-pie { display:flex; justify-content:space-between; font-family:var(--font-mono); font-size:11px; color:var(--avio-text-mut); }
.card-badges { display:flex; flex-direction:column; gap:5px; }

/* badge de alerta corto (3.2) */
.badge-alerta {
  display:flex; align-items:baseline; gap:7px; padding:5px 9px; background:var(--avio-inset);
  border-left:3px solid; border-radius:0 4px 4px 0; font-family:var(--font-mono); font-size:11px;
  flex-wrap:wrap;
}
.badge-alerta .forma { font-size:10px; flex:none; }
.badge-alerta .barcode { font-weight:700; color:var(--avio-text); }
.badge-alerta.critica { border-color:var(--avio-alert-crit); color:#ff8a8d; }
.badge-alerta.critica .forma { color:var(--avio-alert-crit); }
.badge-alerta.advertencia { border-color:var(--avio-alert-warn); color:#ffce7a; }
.badge-alerta.advertencia .forma { color:var(--avio-alert-warn); }
.badge-alerta.informativa { border-color:var(--avio-alert-info); color:#9cc8ff; }
.badge-alerta.informativa .forma { color:var(--avio-alert-info); }

/* estados de pantalla */
.skeleton { height:168px; background:var(--avio-panel); border:1px solid var(--avio-border); border-radius:8px; animation:avioSkel 1.4s ease-in-out infinite; }
.estado-panel {
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  padding:90px 20px; border-radius:12px; background:var(--avio-inset);
  border:1px dashed var(--avio-border-strong); text-align:center;
}
.estado-panel .glifo {
  width:54px; height:54px; border-radius:50%; border:2px solid var(--avio-border-strong);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-size:22px; color:var(--avio-text-dim);
}
.estado-panel b { font-size:16px; font-weight:600; color:var(--avio-text-2); }
.estado-panel p { font-size:13px; color:var(--avio-text-mut); max-width:360px; }
.estado-panel.error { border:1px solid var(--avio-alert-crit); background:#1a0e10; }
.estado-panel.error .glifo { border-color:var(--avio-alert-crit); color:#ff8a8d; }
.estado-panel.error b { color:#ff8a8d; }
.btn-sec {
  padding:9px 18px; background:transparent; border:1px solid var(--avio-border-strong);
  color:var(--avio-text-2); border-radius:7px; font-family:var(--font-mono); font-size:12px; cursor:pointer;
}

/* ---- Drawer de detalle (3.9 / §C) ---------------------------------------- */
.drawer-backdrop { position:fixed; inset:0; background:rgba(3,6,10,.6); z-index:40; display:none; }
.drawer-backdrop.abierto { display:block; }
.drawer {
  position:fixed; top:0; right:0; bottom:0; width:min(640px,100%); z-index:41;
  background:var(--avio-panel-2); border-left:1px solid var(--avio-border-strong);
  transform:translateX(100%); transition:transform .18s ease-out; overflow-y:auto;
}
.drawer.abierto { transform:none; }
.drawer-cab {
  position:sticky; top:0; background:var(--avio-panel-2); border-bottom:1px solid var(--avio-border);
  padding:18px 22px; display:flex; flex-direction:column; gap:8px; z-index:2;
}
.drawer-cab .fila1 { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.drawer-cab .matricula { font-size:26px; }
.drawer-cerrar {
  background:transparent; border:1px solid var(--avio-border); color:var(--avio-text-mut);
  width:32px; height:32px; border-radius:6px; cursor:pointer; font-size:14px;
}
.tabla-tareas { width:100%; border-collapse:collapse; font-size:12px; }
.tabla-tareas th {
  text-align:left; font-family:var(--font-mono); font-size:10px; letter-spacing:.5px;
  text-transform:uppercase; color:var(--avio-text-dim); padding:10px 12px;
  background:var(--avio-panel-2); border-bottom:1px solid var(--avio-border); position:sticky; top:97px;
}
.tabla-tareas td { padding:9px 12px; border-bottom:1px solid var(--avio-hairline); font-family:var(--font-mono); color:var(--avio-text-2); vertical-align:top; }
.tabla-tareas tr:nth-child(even) td { background:var(--avio-panel); }
.tabla-tareas tr.fuera td { background:rgba(255,82,87,.08); }
.tabla-tareas tr.fuera td.lim { color:var(--avio-alert-crit); font-weight:600; }
.tabla-tareas .nombre-t { color:var(--avio-text-mut); font-family:var(--font-text); font-size:11px; }
.tabla-tareas tr.cancel .nombre-t, .tabla-tareas tr.cancel .cod-t { text-decoration:line-through; }
.pill-pri {
  font-family:var(--font-mono); font-size:10px; font-weight:600; padding:2px 7px;
  border-radius:4px; border:1px solid; background:transparent;
}
.pill-pri.p1 { color:var(--avio-pri-1); border-color:var(--avio-pri-1); }
.pill-pri.p2 { color:var(--avio-pri-2); border-color:var(--avio-pri-2); }
.pill-pri.p3 { color:var(--avio-pri-3); border-color:var(--avio-pri-3); }
.estado-celda { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.estado-punto { width:8px; height:8px; border-radius:50%; flex:none; }

/* ---- Línea de tiempo (3.5/3.6/3.8) ---------------------------------------- */
.tl-controles { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.btn-play {
  width:38px; height:38px; border-radius:50%; background:var(--avio-amber); color:var(--avio-amber-ink);
  border:none; cursor:pointer; font-size:14px; display:flex; align-items:center; justify-content:center;
}
.btn-vel {
  font-family:var(--font-mono); font-size:12px; background:var(--avio-panel);
  border:1px solid var(--avio-border-strong); color:var(--avio-text-2);
  padding:7px 13px; border-radius:7px; cursor:pointer; min-width:52px;
}
.tl-slider { flex:1; min-width:200px; accent-color:var(--avio-amber); height:28px; }
.tl-reloj { font-family:var(--font-mono); font-size:14px; font-weight:700; color:var(--avio-amber); white-space:nowrap; }
.tl-panel { background:var(--avio-panel); border:1px solid var(--avio-border); border-radius:12px; padding:16px 18px; }
.tl-eje { position:relative; height:26px; margin-left:118px; border-bottom:1px solid var(--avio-border); }
.tl-tick { position:absolute; top:0; bottom:0; border-left:1px solid var(--avio-hairline); }
.tl-tick span { position:absolute; top:2px; left:4px; font-family:var(--font-mono); font-size:9px; color:var(--avio-text-dim); }
.tl-evento { position:absolute; top:2px; transform:translateX(-50%); color:var(--avio-event); font-size:12px; cursor:default; }
/* sin tope de alto: el gantt muestra TODOS los W/P y el resto fluye abajo */
.tl-filas { overflow:visible; }
.tl-fila { display:flex; align-items:center; height:36px; cursor:pointer; }
.tl-fila:hover .tl-etq { color:var(--avio-text); }
.tl-etq {
  width:118px; flex:none; font-family:var(--font-mono); color:var(--avio-text-2);
  display:flex; flex-direction:column; justify-content:center; gap:1px; line-height:1.15;
}
.tl-etq .etq-ac { display:flex; gap:5px; align-items:center; font-size:11px; font-weight:600; }
.tl-etq .etq-wp { font-size:9px; color:var(--avio-text-dim); }
.tl-etq .insp { color:var(--avio-req-insp); font-size:10px; }
.tl-track { position:relative; flex:1; height:100%; background:var(--avio-inset); border-radius:3px; }
.tl-ventana {
  position:absolute; top:7px; bottom:7px; border:1px solid var(--avio-st-actv);
  border-radius:3px; display:flex; align-items:stretch; overflow:hidden;
}
.tl-ventana.fuera { border-color:var(--avio-alert-crit); }
.tl-ventana.cerrada { border:1.5px solid var(--avio-st-complete); }
.tl-seg { display:block; min-width:0; }
.tl-conteo {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--font-mono); font-size:9px; font-weight:600; color:var(--avio-text);
  text-shadow:0 1px 2px rgba(0,0,0,.85); white-space:nowrap; pointer-events:none;
}
.tl-etq .cerrada-marca { color:var(--avio-st-complete); font-weight:700; }
.tl-cursor { position:absolute; top:0; bottom:0; width:2px; background:var(--avio-amber); box-shadow:var(--glow-now); animation:avioLive 2s ease-in-out infinite; z-index:2; }
.tl-leyenda { display:flex; gap:18px; margin-top:12px; font-family:var(--font-mono); font-size:10px; color:var(--avio-text-dim); flex-wrap:wrap; }
.tl-reconstruccion { display:flex; flex-direction:column; gap:16px; margin-top:22px; }
.tl-encabezado { font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:1px; color:var(--avio-amber); }

/* ---- Feed de alertas ------------------------------------------------------ */
.feed { display:flex; flex-direction:column; border:1px solid var(--avio-border); border-radius:10px; overflow:hidden; }
.feed-fila {
  display:flex; gap:14px; align-items:baseline; padding:10px 16px;
  border-bottom:1px solid var(--avio-hairline); background:var(--avio-panel); font-size:13px; flex-wrap:wrap;
}
.feed-fila:last-child { border-bottom:none; }
.feed-fila.critica { background:rgba(255,82,87,.06); }
.feed-fila .hora { font-family:var(--font-mono); font-size:11px; color:var(--avio-text-dim); flex:none; width:44px; }
.feed-nivel { font-family:var(--font-mono); font-size:10px; font-weight:600; letter-spacing:.5px; flex:none; width:130px; }
.feed-nivel.critica { color:var(--avio-alert-crit); }
.feed-nivel.advertencia { color:var(--avio-alert-warn); }
.feed-nivel.informativa { color:var(--avio-alert-info); }
.feed-fila .matri { font-family:var(--font-mono); font-weight:600; color:var(--avio-text-2); flex:none; }
.feed-fila .texto { color:var(--avio-text-mut); flex:1; min-width:200px; }
.feed-fila .resuelta { font-family:var(--font-mono); font-size:10px; color:var(--avio-st-complete); }
.feed-vacio { padding:40px; text-align:center; color:var(--avio-text-dim); background:var(--avio-inset); }
.feed-titulo {
  margin:0; padding:10px 14px; font-family:var(--font-mono); font-size:11px; font-weight:600;
  letter-spacing:.08em; text-transform:uppercase; color:var(--avio-text-mut);
  background:var(--avio-inset); border-bottom:1px solid var(--avio-border);
}
.feed-titulo:not(:first-child) { border-top:1px solid var(--avio-border); }

/* línea "última actualización de datos" sobre los KPIs del tablero */
.act-datos { font-family:var(--font-mono); font-size:12px; color:var(--avio-text-mut); }
.act-datos b { color:var(--avio-text-2); font-weight:600; }

/* ---- Inspecciones (3.10) --------------------------------------------------- */
.grilla-insp { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:14px; }
.card-insp { border-color:var(--avio-insp-border); }
.mini-tareas { display:flex; flex-direction:column; gap:6px; }
.mini-tarea { display:flex; align-items:center; gap:9px; font-family:var(--font-mono); font-size:11px; color:var(--avio-text-2); }

/* ---- Login ----------------------------------------------------------------- */
.login-fondo {
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:22px; padding:30px 16px;
  background:radial-gradient(ellipse at 50% 30%, #0d1620 0%, #080d13 70%);
}
.login-caja { width:min(420px,100%); display:flex; flex-direction:column; gap:16px; }
.login-logo { text-align:center; display:flex; flex-direction:column; gap:6px; }
.login-logo .logo { font-size:26px; letter-spacing:4px; }
.login-logo span { font-size:12px; color:var(--avio-text-mut); letter-spacing:1px; }
.login-card {
  background:var(--avio-panel); border:1px solid var(--avio-border); border-radius:12px;
  padding:24px 22px; display:flex; flex-direction:column; gap:14px;
}
.login-card h2 { font-size:14px; font-weight:600; color:var(--avio-text-2); }
.login-card p { font-size:12px; color:var(--avio-text-mut); line-height:1.5; }
.btn-amber {
  display:block; width:100%; text-align:center; padding:12px 16px; border-radius:7px;
  background:var(--avio-amber); color:var(--avio-amber-ink); border:none;
  font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:.5px; cursor:pointer;
}
.btn-amber:hover { filter:brightness(1.07); }
.campo { display:flex; flex-direction:column; gap:6px; }
.campo label { font-size:11px; letter-spacing:.5px; text-transform:uppercase; color:var(--avio-text-mut); }
.campo input, .campo select {
  background:var(--avio-inset); border:1px solid var(--avio-border-strong); color:var(--avio-text);
  border-radius:7px; padding:10px 12px; font-family:var(--font-mono); font-size:13px;
}
.campo input:focus { outline:2px solid var(--avio-amber); outline-offset:0; border-color:transparent; }
.micro { font-size:11px; color:var(--avio-text-dim); text-align:center; }
.divisor { display:flex; align-items:center; gap:10px; color:var(--avio-text-dim); font-size:10px; letter-spacing:1px; }
.divisor::before, .divisor::after { content:""; flex:1; border-top:1px solid var(--avio-hairline); }
.flashes { display:flex; flex-direction:column; gap:8px; }
.flash { padding:10px 14px; border-radius:7px; font-size:12px; border:1px solid; }
.flash.info { border-color:var(--avio-border-strong); color:var(--avio-text-2); background:var(--avio-inset); }
.flash.error { border-color:var(--avio-alert-crit); color:#ff8a8d; background:var(--avio-crit-bg); }

/* ---- Admin / Sistema --------------------------------------------------------- */
.seccion { background:var(--avio-panel); border:1px solid var(--avio-border); border-radius:12px; padding:20px; display:flex; flex-direction:column; gap:14px; }
.seccion h2 { font-size:15px; font-weight:600; color:var(--avio-text); }
.seccion h3 { font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--avio-text-mut); }
.grid-2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:18px; align-items:start; }
.grid-form { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:12px; }
.tabla-admin { width:100%; border-collapse:collapse; font-size:12px; }
.tabla-admin th { text-align:left; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:var(--avio-text-dim); padding:8px 10px; border-bottom:1px solid var(--avio-border); }
.tabla-admin td { padding:8px 10px; border-bottom:1px solid var(--avio-hairline); color:var(--avio-text-2); }
.punto-activo { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--avio-st-complete); margin-right:6px; }
.punto-susp { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--avio-st-unassign); margin-right:6px; }
.btn-mini { background:transparent; border:1px solid var(--avio-border-strong); color:var(--avio-text-mut); border-radius:5px; padding:3px 10px; font-family:var(--font-mono); font-size:11px; cursor:pointer; }
.btn-mini:hover { color:var(--avio-text-2); }
.token-claro {
  font-family:var(--font-mono); font-size:12px; word-break:break-all; padding:12px;
  background:var(--avio-stale-bg); border:1px solid var(--avio-stale-border);
  color:var(--avio-stale-text); border-radius:7px;
}
.leyenda-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.leyenda-item { display:flex; align-items:center; gap:10px; background:var(--avio-inset); border:1px solid var(--avio-hairline); border-radius:7px; padding:10px 12px; font-family:var(--font-mono); font-size:11px; color:var(--avio-text-2); }
.leyenda-item .muestra { width:16px; height:16px; border-radius:4px; flex:none; }

/* ---- Mi trabajo (registro de trabajo del técnico, 2026-09-18) ----------------
   Se usa desde el celular en el hangar: una columna, botones de 48 px. */
.trabajo { display:flex; flex-direction:column; gap:16px; max-width:980px; width:100%; margin:0 auto; }
.trab-aviso { padding:12px 14px; border-radius:8px; border:1px solid; font-size:13px; line-height:1.45; }
.trab-aviso.ok { border-color:var(--avio-st-complete); color:#8fe0ad; background:#0c1d13; }
.trab-aviso.error { border-color:var(--avio-alert-crit); color:#ff8a8d; background:var(--avio-crit-bg); }
.trab-aviso.info { border-color:var(--avio-stale-border); color:var(--avio-stale-text); background:var(--avio-stale-bg); }
.trab-nota { font-size:11px; color:var(--avio-text-dim); line-height:1.45; }
.chip-auto {
  display:inline-block; margin-top:4px; padding:2px 6px; border-radius:4px; white-space:normal;
  border:1px solid var(--avio-stale-border); color:var(--avio-stale-text);
  font-family:var(--font-mono); font-size:10px; letter-spacing:.3px;
}
.trab-curso {
  background:var(--avio-panel); border:1px solid var(--avio-border); border-radius:12px;
  padding:16px 18px; display:flex; flex-direction:column; gap:12px;
}
.trab-curso.activo { border-color:var(--avio-st-inwork); box-shadow:inset 4px 0 0 var(--avio-st-inwork); }
.trab-curso .etq { font-family:var(--font-mono); font-size:11px; letter-spacing:.5px; text-transform:uppercase; color:var(--avio-text-mut); }
.trab-curso.activo .etq { color:var(--avio-st-inwork); }
.trab-curso-cab { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.trab-curso .tarea-cod { font-family:var(--font-mono); font-size:22px; font-weight:700; color:var(--avio-text); }
.trab-nom { font-size:12px; color:var(--avio-text-mut); margin-top:3px; }
.trab-nada { font-size:13px; color:var(--avio-text-mut); line-height:1.5; }
.trab-nada b { color:var(--avio-text-2); }
.trab-reloj { display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; font-family:var(--font-mono); font-size:12px; color:var(--avio-text-mut); }
.trab-reloj b { color:var(--avio-text-2); }
.trab-reloj .reloj { font-size:26px; font-weight:700; color:var(--avio-st-inwork); }
.btn-trab {
  min-height:48px; padding:11px 18px; border-radius:8px; border:1px solid; cursor:pointer;
  font-family:var(--font-mono); font-size:13px; font-weight:700; letter-spacing:.5px; white-space:nowrap;
}
.btn-iniciar { background:var(--avio-amber); border-color:var(--avio-amber); color:var(--avio-amber-ink); }
.btn-finalizar { background:var(--avio-st-complete); border-color:var(--avio-st-complete); color:#04120a; }
.btn-trab:hover:not(:disabled) { filter:brightness(1.08); }
.btn-trab:disabled { background:transparent; border-color:var(--avio-border); color:var(--avio-text-dim); cursor:not-allowed; }
/* banner de HH: abre «Mis trabajos» */
.trab-banner {
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; width:100%; text-align:left;
  padding:14px 16px; border-radius:12px; cursor:pointer;
  background:var(--avio-inset); border:1px solid var(--avio-border-strong); color:var(--avio-text-2);
}
.trab-banner:hover { border-color:var(--avio-amber); }
.trab-banner .bn-cifra { font-family:var(--font-mono); font-size:22px; font-weight:700; color:var(--avio-amber); }
.trab-banner .bn-texto { font-size:13px; color:var(--avio-text-mut); flex:1; }
.trab-banner .bn-flecha { font-size:14px; color:var(--avio-text-mut); }
.trab-tareas { display:flex; flex-direction:column; gap:12px; }
.trab-controles { display:flex; flex-direction:column; gap:10px; }
.trab-buscar {
  width:100%; min-height:44px; padding:10px 12px; border-radius:8px;
  background:var(--avio-inset); border:1px solid var(--avio-border-strong); color:var(--avio-text);
  font-family:var(--font-mono); font-size:14px;
}
.trab-buscar:focus { outline:2px solid var(--avio-amber); outline-offset:0; border-color:transparent; }
.trab-lista { display:flex; flex-direction:column; gap:12px; }
.trab-wp { border:1px solid var(--avio-border); border-radius:10px; background:var(--avio-panel-2); overflow:hidden; }
.trab-wp-cab {
  display:flex; align-items:baseline; gap:6px 12px; flex-wrap:wrap; padding:12px 14px;
  background:var(--avio-panel); border-bottom:1px solid var(--avio-border);
}
.trab-wp-cab .matricula { font-size:20px; }
.trab-tarea { border-bottom:1px solid var(--avio-hairline); }
.trab-tarea:last-child { border-bottom:none; }
.trab-tarea.mia { background:rgba(47,185,214,.08); box-shadow:inset 3px 0 0 var(--avio-st-inwork); }
.trab-tarea.abierta { background:var(--avio-inset); }
/* fila plegada: toda ella es el control que despliega la tarea */
.trab-fila {
  display:grid; grid-template-columns:1fr auto auto; gap:2px 12px; align-items:center;
  width:100%; padding:12px 14px; min-height:52px; text-align:left; cursor:pointer;
  background:transparent; border:none; color:inherit;
}
.trab-fila .cod { font-family:var(--font-mono); font-size:14px; font-weight:600; color:var(--avio-text); }
.trab-fila .nom { grid-column:1; font-size:12px; color:var(--avio-text-mut); overflow-wrap:anywhere; }
.trab-fila .marcas { grid-row:1 / span 2; grid-column:2; display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center; gap:6px; }
.trab-fila .flecha { grid-row:1 / span 2; grid-column:3; color:var(--avio-text-mut); font-size:13px; }
.marca-mia, .marca-ojt {
  font-family:var(--font-mono); font-size:10px; font-weight:600; letter-spacing:.5px;
  padding:3px 8px; border-radius:4px; border:1px solid; white-space:nowrap;
}
.marca-mia { color:var(--avio-st-inwork); border-color:var(--avio-st-inwork); }
.marca-ojt { color:var(--avio-req-insp); border-color:var(--avio-insp-border); background:var(--avio-insp-bg); }
.trab-detalle { display:flex; flex-direction:column; gap:12px; padding:0 14px 14px; }
.trab-detalle-datos { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; font-family:var(--font-mono); font-size:11px; color:var(--avio-text-mut); }
.trab-motivo { font-family:var(--font-mono); font-size:11px; color:var(--avio-text-dim); }
.trab-equipo { color:var(--avio-st-inwork); }
.chip-estado.chip-mia { color:var(--avio-st-inwork); border-color:var(--avio-st-inwork); font-size:11px; padding:6px 10px; }
.trab-encurso { color:var(--avio-st-inwork); font-family:var(--font-mono); }
.trab-tabla-envoltura { overflow-x:auto; }
.tabla-admin tfoot td { border-top:1px solid var(--avio-border); color:var(--avio-text-mut); font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.5px; }
.tabla-admin tfoot td b { color:var(--avio-text); font-size:13px; }
.trabajo .estado-panel { padding:48px 20px; }

/* ---- OJT: solicitud del técnico, panel del entrenador y evaluación -------- */
.btn-ojt { background:transparent; border-color:var(--avio-req-insp); color:var(--avio-req-insp); }
.btn-ojt:hover:not(:disabled) { background:var(--avio-insp-bg); }
.ojt-espera {
  display:flex; flex-direction:column; gap:12px; padding:14px; border-radius:10px;
  background:var(--avio-insp-bg); border:1px solid var(--avio-insp-border);
}
.btn-cancelar-ojt { background:transparent; border-color:var(--avio-border-strong); color:var(--avio-text-2); }
.btn-cancelar-ojt:hover:not(:disabled) { border-color:var(--avio-alert-crit); color:#ff8a8d; }
.ojt-panel {
  background:var(--avio-panel); border:1px solid var(--avio-insp-border); border-radius:12px;
  padding:16px 18px; display:flex; flex-direction:column; gap:12px;
}
.etq-ojt { font-family:var(--font-mono); font-size:11px; letter-spacing:.5px; text-transform:uppercase; color:var(--avio-req-insp); }
.ojt-panel-cab { display:flex; flex-wrap:wrap; gap:8px; align-items:baseline; }
.ojt-esperando { font-size:13px; color:var(--avio-text-2); line-height:1.5; }
.ojt-qr { margin:0; display:flex; flex-direction:column; align-items:center; gap:10px; }
.ojt-qr img { width:min(260px,70vw); height:auto; background:#fff; padding:10px; border-radius:10px; }
.ojt-qr figcaption { font-size:12px; color:var(--avio-text-mut); text-align:center; max-width:34ch; }
.ojt { display:flex; flex-direction:column; gap:16px; max-width:1100px; width:100%; margin:0 auto; }
.ojt-filtros { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.ojt-filtros .campo { flex:1 1 150px; }
.ojt-filtros .campo-ancho { flex:2 1 240px; }
.ojt-filtros-btn { display:flex; gap:8px; }
.ojt-pend {
  border:1px solid var(--avio-border-strong); border-radius:10px; padding:14px;
  display:flex; flex-direction:column; gap:12px; background:var(--avio-inset);
}
.ojt-pend-cab { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; flex-wrap:wrap; }
.ojt-pend-datos { display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12px; color:var(--avio-text-2); }
.chip-estado.chip-pend { color:var(--avio-req-insp); border-color:var(--avio-insp-border); }
.ojt-nota {
  display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; flex:none;
  border-radius:6px; font-family:var(--font-mono); font-weight:700; font-size:13px;
  border:1px solid; background:var(--avio-panel-2);
}
.ojt-nota.n5 { color:var(--avio-st-complete); border-color:var(--avio-st-complete); }
.ojt-nota.n4 { color:#8fd6a5; border-color:#8fd6a5; }
.ojt-nota.n3 { color:var(--avio-amber); border-color:var(--avio-amber); }
.ojt-nota.n2 { color:#ffa26b; border-color:#ffa26b; }
.ojt-nota.n1 { color:#ff8a8d; border-color:var(--avio-alert-crit); }
.ojt-criterios { list-style:none; display:flex; flex-direction:column; gap:8px; }
.ojt-criterios li { display:flex; gap:12px; align-items:flex-start; font-size:13px; color:var(--avio-text-2); }
.ojt-vacio { color:var(--avio-text-mut); text-align:center; padding:22px 10px; }
.chip-auto.ojt { border-color:var(--avio-insp-border); color:var(--avio-req-insp); }
.ojt-evaluar { display:flex; flex-direction:column; gap:16px; max-width:760px; width:100%; margin:0 auto; }
.ev-cab { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.ev-cab .tarea-cod { font-family:var(--font-mono); font-size:22px; font-weight:700; }
.ev-datos { display:flex; flex-wrap:wrap; gap:12px 26px; }
.ev-datos div { display:flex; flex-direction:column; gap:2px; }
.ev-datos dt { font-family:var(--font-mono); font-size:10px; letter-spacing:.5px; text-transform:uppercase; color:var(--avio-text-dim); }
.ev-datos dd { font-size:15px; color:var(--avio-text); }
.ev-ayuda { font-size:12px; color:var(--avio-text-mut); }
.ev-criterios { display:flex; flex-direction:column; gap:8px; }
.ev-criterio {
  display:flex; align-items:center; gap:12px; padding:12px; border-radius:9px; cursor:pointer;
  border:1px solid var(--avio-border); background:var(--avio-panel-2);
}
.ev-criterio:hover { border-color:var(--avio-border-strong); }
.ev-criterio:has(input:checked) { border-color:var(--avio-amber); background:#181206; }
.ev-criterio input { width:20px; height:20px; flex:none; accent-color:var(--avio-amber); }
.ev-texto { font-size:13px; color:var(--avio-text-2); line-height:1.45; }
.ev-acciones { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.ev-acciones .btn-sec { text-decoration:none; display:inline-block; }

/* ---- Modal de confirmación ------------------------------------------------ */
.modal-fondo {
  position:fixed; inset:0; z-index:60; background:rgba(3,6,10,.72);
  display:flex; align-items:center; justify-content:center; padding:18px;
}
.modal {
  width:min(440px,100%); background:var(--avio-panel); border:1px solid var(--avio-border-strong);
  border-radius:12px; padding:20px; display:flex; flex-direction:column; gap:14px; box-shadow:var(--sh-overlay);
}
.modal h3 { font-size:16px; font-weight:600; color:var(--avio-text); }
.modal p { font-size:13px; color:var(--avio-text-2); line-height:1.5; }
.modal-botones { display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap; }
.modal-botones .btn-amber { width:auto; }

@media (max-width: 767px) {
  main.contenido { padding:14px 12px 90px; }
  .topbar { padding:10px 12px; }
  .feed-nivel { width:auto; }
  .tl-etq { width:88px; }
  .tl-eje { margin-left:88px; }
  .trab-detalle .btn-trab, .btn-finalizar, .btn-ojt { width:100%; }
  .ev-acciones .btn-trab, .ev-acciones .btn-sec { width:100%; text-align:center; }
  .modal-botones { flex-direction:column-reverse; }
  .modal-botones button { width:100%; }
}

/* ---- Registro HH: HH de los técnicos no firmantes y sus OJT (2026-09-19) -- */
.registro { display:flex; flex-direction:column; gap:16px; }
.reg-cab { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap; }
.reg-cab .trab-nota { margin-top:6px; max-width:78ch; }
.reg-descargas { display:flex; gap:8px; flex-wrap:wrap; }
.reg-descargas .btn-sec { text-decoration:none; display:inline-block; white-space:nowrap; }
.reg-sub { font-family:var(--font-mono); font-size:11px; font-weight:400; color:var(--avio-text-mut); letter-spacing:.3px; }
.registro .kpis { flex-wrap:wrap; }
.registro .kpi { min-width:130px; }
.registro tr.reg-encurso td { background:rgba(47,185,214,.06); }
.registro .tabla-admin td.mono { white-space:nowrap; }
.registro .tabla-admin th { white-space:nowrap; }
.ojt-nota.ancha { width:auto; min-width:28px; padding:0 8px; }
.reg-pend { color:var(--avio-req-insp); font-weight:600; }
.chip-auto.reg-c-tec { border-color:var(--avio-st-complete); color:#8fe0ad; }
.chip-auto.reg-c-ojt { border-color:var(--avio-insp-border); color:var(--avio-req-insp); }
.chip-estado.reg-evaluada { color:var(--avio-st-complete); border-color:var(--avio-st-complete); }
