/* app.css - el diseño de la plataforma de Capacitación (37-CAPACITACIÓN SGI/plataforma/frontend/css/app.css), con sus
   nombres de tokens, y las pantallas elegidas en maquetas/MAQUETA_PREOPERACIONAL.html (DECISIONES.md, 01-oct-2026).
   Lo propio del PESV: área tocable de 48 px (guantes) y letra de 16 px en el contenido de campo (PROYECTO.md §1).
   El color vive SOLO en variables; cada tema es un bloque de valores. Cortes en pareja: 899.98 / 900. */
@font-face{font-family:"Montserrat";src:url("../fonts/montserrat.woff2") format("woff2");font-weight:100 900;font-display:swap}
:root{
  --bg:#F3F5F8; --card:#FFFFFF; --card-2:#F4F6F9; --ink:#0F2340; --ink-2:#52607A; --line:#E2E7EE;
  --lima:#93C021; --btn-ink:#0B1420; --acento:#3B6B12; --azul:#1C5D9B; --foco:#2E78B7;
  --nav-on-bg:#E2EEC8; --nav-on-ink:#2F5710;
  --st-al_dia-bg:#DFEEE2; --st-al_dia:#2A5212; --bar-al_dia:#2E8B4E;
  --st-por_vencer-bg:#F6E8D2; --st-por_vencer:#6E4600; --bar-por_vencer:#C27C00;
  --st-vencida-bg:#FAE4E2; --st-vencida:#9A1A10; --bar-vencida:#D23B3F;
  --st-pendiente-bg:#E5EAF3; --st-pendiente:#0F2340;
  --st-en_curso-bg:#DDECF8; --st-en_curso:#174F86;
  --st-inactiva-bg:#ECEEF1; --st-inactiva:#4E5A6B; --bar-pendiente:#7D8A9C;
  --badge-bg:#174F86; --badge-ink:#FFFFFF;
  --peligro:#A11C12; --peligro-ink:#FFFFFF;
  --firma-bg:#FFFFFF; --firma-ink:#0F2340;
  --inv-bg:#0F2340; --inv-ink:#FFFFFF;
  --velo:rgba(15,35,64,.45); --sombra:0 8px 24px rgba(15,35,64,.10); --sombra-hoja:0 -10px 30px rgba(15,35,64,.25);
  --logo-cla:block; --logo-osc:none;
  --tap:48px; --hdr:64px; --tab:64px; --accion:76px; --menu:248px;
  --f:"Montserrat","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  color-scheme:light;
}
html[data-tema="oscuro"]{
  --bg:#0B131D; --card:#132133; --card-2:#1A2B40; --ink:#EEF3F8; --ink-2:#A3B4C8; --line:#25384F;
  --lima:#93C021; --btn-ink:#0B1420; --acento:#A6D13A; --azul:#86BFF0; --foco:#7FBCEF;
  --nav-on-bg:#22432C; --nav-on-ink:#B5DC82;
  --st-al_dia-bg:#294328; --st-al_dia:#B5DC82; --bar-al_dia:#5CC27E;
  --st-por_vencer-bg:#4B3A14; --st-por_vencer:#FAD08A; --bar-por_vencer:#F2B233;
  --st-vencida-bg:#593231; --st-vencida:#F7B8B2; --bar-vencida:#F07075;
  --st-pendiente-bg:#24435E; --st-pendiente:#EAF1F8;
  --st-en_curso-bg:#224058; --st-en_curso:#A6D2F7;
  --st-inactiva-bg:#26384B; --st-inactiva:#BFCCDA; --bar-pendiente:#8FA0B5;
  --badge-bg:#A6D2F7; --badge-ink:#0B131D;
  --peligro:#F2A9A3; --peligro-ink:#2B0B08;
  --firma-bg:#FFFFFF; --firma-ink:#0F2340;
  --inv-bg:#EEF3F8; --inv-ink:#0B131D;
  --velo:rgba(0,0,0,.62); --sombra:0 10px 30px rgba(0,0,0,.45); --sombra-hoja:0 -10px 30px rgba(0,0,0,.5);
  --logo-cla:none; --logo-osc:block;
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{margin:0}
body{font:500 16px/1.45 var(--f);color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}
button,input{font:inherit;color:inherit}
svg{display:block;flex:none;width:20px;height:20px}
:focus-visible{outline:3px solid var(--foco);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- armazón: encabezado, menú, barra de acción ---------- */
.hdr{position:sticky;top:0;z-index:20;height:calc(var(--hdr) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 10px 0 14px;
  display:flex;align-items:center;gap:8px;background:var(--card);border-bottom:1px solid var(--line)}
.hdr img{height:30px;width:auto}
.hdr .l-cla{display:var(--logo-cla)}
.hdr .l-osc{display:var(--logo-osc)}
.hdr .esp{flex:1}
.hb{width:var(--tap);height:var(--tap);border-radius:12px;border:1px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;flex:none;cursor:pointer;padding:0}
.hb.sin{border:0;background:none}
.av{width:40px;height:40px;border-radius:50%;background:var(--lima);color:var(--btn-ink);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex:none}
.nav{position:fixed;z-index:15;background:var(--card);border-color:var(--line)}
.nav a{display:flex;align-items:center;gap:3px;font-weight:700;color:var(--ink-2);text-decoration:none;line-height:1.1;position:relative}
.nav a.on{color:var(--acento)}
.nav .tab-ic{position:relative;display:block}
.nav svg{width:22px;height:22px}
.badge{position:absolute;top:-6px;right:-12px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--badge-bg);color:var(--badge-ink);
  font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1}
.accion{position:fixed;left:0;right:0;z-index:14;background:var(--card);border-top:1px solid var(--line);padding:12px 14px;display:flex;gap:10px}
main{display:block;padding:12px 14px 24px;max-width:760px;margin:0 auto}
@media (max-width:899.98px){
  .nav{left:0;right:0;bottom:0;height:calc(var(--tab) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);display:flex;border-top:1px solid var(--line)}
  /* La palabra bajo el ícono va en 12 px y no en 16: en un renglón a 320 px (106 px por pestaña). Medido el 01-oct-2026.
     Pestañas de igual ancho (flex 1 1 0): con 6 (Maquinaria, líder, administración) a 320 px cada una mide 53 px. Con el
     ancho según la palabra, «Indicadores» se llevaba 74 y dejaba Mi obra, Cargas y Mi perfil en 42 px (06-oct-2026). */
  .nav a{flex:1 1 0;min-width:0;flex-direction:column;justify-content:center;font-size:12px;text-align:center}
  .nav a.solo-ancha{display:none}
  .accion{bottom:calc(var(--tab) + env(safe-area-inset-bottom,0px))}
  body{padding-bottom:calc(var(--tab) + env(safe-area-inset-bottom,0px))}
  body.con-accion{padding-bottom:calc(var(--tab) + var(--accion) + env(safe-area-inset-bottom,0px))}
}
@media (min-width:900px){
  .nav{left:0;top:0;bottom:0;width:var(--menu);padding:calc(var(--hdr) + 16px) 12px 16px;display:flex;flex-direction:column;gap:4px;border-right:1px solid var(--line)}
  .nav a{gap:12px;min-height:var(--tap);padding:0 12px;border-radius:12px;font-size:15px}
  .nav a.on{background:var(--nav-on-bg);color:var(--nav-on-ink)}
  .nav .badge{position:static;margin-left:auto}
  .hdr{z-index:16}
  body{padding-left:var(--menu)}
  .accion{left:var(--menu);bottom:0;justify-content:center}
  .accion>.btn{max-width:520px}
  body.con-accion{padding-bottom:var(--accion)}
}

/* ---------- piezas ---------- */
.tit-p h1{margin:0;font-size:24px;line-height:1.2}
.tit-p span{display:block;font-size:14px;color:var(--ink-2);margin-top:2px}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;border:0;border-radius:12px;background:var(--lima);color:var(--btn-ink);
  font-weight:800;font-size:16px;cursor:pointer;padding:0 16px;text-decoration:none;text-align:center}
.btn.sec{background:var(--card);border:1px solid var(--line);color:var(--ink)}
.btn.crit{background:var(--peligro);color:var(--peligro-ink)}
.btn.link{background:none;border:0;color:var(--azul);min-height:var(--tap);font-weight:700}
.btn.chico{width:auto;min-height:var(--tap);flex:none}
.btn[disabled]{background:var(--card-2);border:1px solid var(--line);color:var(--ink-2);cursor:not-allowed}
.btn+.btn{margin-top:10px}
.accion .btn+.btn{margin-top:0}
.grupo-t{margin:20px 4px 6px;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-2);display:flex;justify-content:space-between;gap:8px}
.filas{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.filas.mt{margin-top:14px}
.tarjeta{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-top:14px;display:grid;gap:10px}
/* anywhere: un nombre de archivo sin espacios (FLOTA_BORRADOR_PARA_MAQUINARIA.xlsx) estiraba Cargas a 432 px en 375 (02-oct-2026) */
.tarjeta h2{margin:0;font-size:17px;overflow-wrap:anywhere}
.tarjeta p{margin:0;font-size:14px;color:var(--ink-2)}
.tarjeta>.dato:first-child{border-top:0}
.pila{display:grid;gap:12px}
.mt{margin-top:14px}
.gv{display:inline-block;font-size:12px;font-weight:800;padding:3px 8px;border-radius:999px;white-space:nowrap}
.gv.critico{background:var(--st-vencida-bg);color:var(--st-vencida)}
.gv.mayor{background:var(--st-por_vencer-bg);color:var(--st-por_vencer)}
.gv.menor,.gv.falta{background:var(--st-pendiente-bg);color:var(--st-pendiente)}
.gv.bien{background:var(--st-al_dia-bg);color:var(--st-al_dia)}
.gv.pend{background:var(--st-en_curso-bg);color:var(--st-en_curso)}
.mal{color:var(--st-vencida)}
.volteado{transform:scaleX(-1)}
.res{display:flex;gap:12px;align-items:flex-start;border-radius:16px;padding:14px;margin-top:14px}
.res .ic{width:40px;height:40px;border-radius:50%;background:var(--card);display:flex;align-items:center;justify-content:center;flex:none}
.res small{display:block;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase}
.res b{display:block;font-size:19px;line-height:1.25}
.res .d{display:block;font-size:15px;font-weight:600;margin-top:2px}
.res.si{background:var(--st-al_dia-bg);color:var(--st-al_dia)}
.res.obs{background:var(--st-por_vencer-bg);color:var(--st-por_vencer)}
.res.no{background:var(--st-vencida-bg);color:var(--st-vencida)}
.res.pend{background:var(--st-en_curso-bg);color:var(--st-en_curso)}
.p-fila,.d-fila{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:10px 12px 10px 14px;border:0;border-top:1px solid var(--line);background:none;text-align:left}
.d-fila{cursor:pointer}
.filas>.p-fila:first-child,.filas>.d-fila:first-child{border-top:0}
.p-fila .tx,.d-fila .tx{flex:1;min-width:0}
.p-fila b,.d-fila b{display:block;font-size:16px;line-height:1.25}
.p-fila small,.d-fila small{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;margin-top:3px;font-size:14px;color:var(--ink-2);font-weight:600}
.d-fila>svg{width:18px;height:18px;color:var(--ink-2)}
.ic-c{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;background:var(--card-2);color:var(--ink-2)}
.ic-c.al_dia{background:var(--st-al_dia-bg);color:var(--st-al_dia)}
.ic-c.por_vencer{background:var(--st-por_vencer-bg);color:var(--st-por_vencer)}
.ic-c.vencida{background:var(--st-vencida-bg);color:var(--st-vencida)}
.ic-c.pend{background:var(--st-en_curso-bg);color:var(--st-en_curso)}
.aviso{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:12px 14px;font-weight:600;font-size:15px;margin-top:14px}
.aviso.critico{background:var(--st-vencida-bg);color:var(--st-vencida)}
.aviso.mayor{background:var(--st-por_vencer-bg);color:var(--st-por_vencer)}
.aviso.menor{background:var(--st-pendiente-bg);color:var(--st-pendiente)}
.aviso.pend{background:var(--st-en_curso-bg);color:var(--st-en_curso)}
.aviso svg{margin-top:1px}
.vacio{text-align:center;color:var(--ink-2);padding:28px 12px;font-size:15px}
.brindis{position:fixed;left:50%;bottom:calc(var(--tab) + var(--accion) + 20px);transform:translateX(-50%);z-index:40;max-width:calc(100% - 32px);background:var(--inv-bg);color:var(--inv-ink);
  font-size:14px;font-weight:700;padding:10px 16px;border-radius:999px;opacity:0;transition:opacity .2s;pointer-events:none;text-align:center}
.brindis.si{opacity:1}

/* ---------- la hoja que sube (como en Capacitación) ---------- */
.velo{position:fixed;inset:0;background:var(--velo);z-index:30}
.hoja{position:fixed;left:0;right:0;bottom:0;z-index:31;max-height:88vh;overflow-y:auto;background:var(--card);border-radius:22px 22px 0 0;
  padding:8px 16px calc(18px + env(safe-area-inset-bottom,0px));box-shadow:var(--sombra-hoja);display:grid;gap:12px;max-width:640px;margin:0 auto}
.asa{width:42px;height:5px;border-radius:3px;background:var(--line);margin:0 auto}
.hoja-cab{display:flex;align-items:flex-start;gap:6px}
.hoja-cab .tx{flex:1;min-width:0}
.hoja-cab h3{margin:0;font-size:19px;line-height:1.25}
.hoja-cab small{display:block;font-size:14px;color:var(--ink-2);font-weight:600;margin-top:2px}
.hoja-cab .hb{margin:-6px -10px 0 0}
.dato{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:15px}
.dato>span{color:var(--ink-2);font-weight:700}
.dato>b{text-align:right;max-width:62%}
.conse{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:10px 12px;font-weight:600;font-size:15px}
.conse.critico{background:var(--st-vencida-bg);color:var(--st-vencida)}
.conse.mayor{background:var(--st-por_vencer-bg);color:var(--st-por_vencer)}
.conse.menor{background:var(--st-pendiente-bg);color:var(--st-pendiente)}
.etq{margin:0;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-2)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{min-height:var(--tap);padding:0 16px;border-radius:999px;border:2px solid var(--line);background:var(--card);font-weight:700;cursor:pointer}
.chips button[aria-pressed="true"]{border-color:var(--bar-vencida);background:var(--st-vencida-bg);color:var(--st-vencida)}
.motivos{display:grid;gap:8px}
.motivos button{min-height:var(--tap);border-radius:12px;border:2px solid var(--line);background:var(--card);font-weight:700;text-align:left;padding:8px 14px;cursor:pointer}

/* ---------- fotos ---------- */
.foto{position:relative;min-height:var(--tap);width:100%;border-radius:12px;border:2px dashed var(--line);background:var(--card-2);display:flex;align-items:center;justify-content:center;gap:8px;font-weight:800;cursor:pointer;padding:0 12px}
.foto.hecha{border-style:solid;border-color:var(--bar-al_dia);background:var(--st-al_dia-bg);color:var(--st-al_dia)}
.foto input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.foto img{width:56px;height:40px;object-fit:cover;border-radius:6px}
.foto-fila{display:flex;gap:8px;margin-top:12px}
.foto-fila .foto{flex:1;min-width:0}
.foto-fila .btn{width:auto;flex:none}
.foto-fila .btn+.btn{margin-top:0}   /* en fila no se apilan: en Cargas «Cancelar» bajaba 10 px y «Aplicar» crecía a 62 */
.sin-foto{display:flex;gap:10px;align-items:flex-start;margin-top:12px;border-radius:12px;padding:10px 12px;background:var(--st-pendiente-bg);color:var(--st-pendiente);font-weight:600;font-size:15px}

/* ---------- teclado grande (PIN, cédula y lectura del tablero) ---------- */
.teclado{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.teclado button{min-height:56px;border-radius:14px;border:1px solid var(--line);background:var(--card-2);font-size:22px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center}
.teclado button.txt{font-size:15px}
.teclado span{min-height:56px}
.puntos{display:flex;justify-content:center;gap:16px;padding:6px 0 2px}
.puntos i{width:16px;height:16px;border-radius:50%;border:2px solid var(--ink-2)}
.puntos i.on{background:var(--ink);border-color:var(--ink)}

/* ---------- lectura del tablero (pantalla 3, idea B) ---------- */
.lect{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px;margin-top:12px;display:grid;gap:4px}
.lect-f{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.lect-f small{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-2)}
.lect-f span{font-size:14px;color:var(--ink-2);font-weight:600}
.cifra{display:flex;align-items:baseline;gap:8px;min-height:46px}
.cifra b{font-size:34px;line-height:1.1;font-weight:800;font-variant-numeric:tabular-nums}
.cifra b.vacia{color:var(--ink-2);font-weight:700;font-size:20px}
.cifra span{font-size:16px;font-weight:700;color:var(--ink-2)}
/* El aviso tiene siempre el alto de dos renglones, vacío o no: al aparecer bajaba el teclado 40,6 px bajo el dedo
   (medido el 02-oct-2026 a 375 px) y los toques caían en la tecla de abajo. */
.lect-msg{display:flex;gap:6px;align-items:center;margin:0;font-size:14px;line-height:20px;min-height:40px;font-weight:700}
.lect-msg svg{width:18px;height:18px}
.lect-msg.mal{color:var(--st-vencida)}
.lect-msg.obs{color:var(--st-por_vencer)}
.lect-msg.bien{color:var(--st-al_dia)}
.teclado.lec{margin-top:12px}

/* ---------- la lista (pantalla 1, idea B: botones de un toque) ---------- */
.b-ley{position:sticky;top:calc(var(--hdr) + env(safe-area-inset-top,0px));z-index:5;background:var(--bg);display:flex;justify-content:flex-end;gap:6px;margin:10px -14px 0;padding:8px 25px 2px 14px}
.b-ley span{width:var(--tap);text-align:center;font-size:12px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-2)}
.b-fila{display:flex;align-items:center;gap:8px;min-height:72px;padding:10px 10px 10px 12px;border-top:1px solid var(--line)}
.filas>.b-fila:first-child{border-top:0}
.b-fila .tx{flex:1;min-width:0}
.b-fila b{display:block;font-size:16px;line-height:1.25}
.b-fila small{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;margin-top:4px;font-size:13px;font-weight:700;color:var(--ink-2)}
.rds{display:flex;gap:6px;flex:none}
.rd{width:var(--tap);height:var(--tap);border-radius:50%;border:2px solid var(--line);background:var(--card-2);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;padding:0}
.rd.vacio{visibility:hidden;padding:0}
[data-v][aria-pressed="true"][data-v="B"]{background:var(--st-al_dia-bg);color:var(--st-al_dia);border-color:var(--bar-al_dia)}
[data-v][aria-pressed="true"][data-v="M"]{background:var(--st-vencida-bg);color:var(--st-vencida);border-color:var(--bar-vencida)}
[data-v][aria-pressed="true"][data-v="N"]{background:var(--st-inactiva-bg);color:var(--st-inactiva);border-color:var(--bar-pendiente)}
.cuenta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.cuenta div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 6px;text-align:center}
.cuenta b{display:block;font-size:22px;line-height:1.2}
.cuenta span{font-size:13px;font-weight:700;color:var(--ink-2)}
.pasos{display:flex;gap:6px;margin-top:10px}
.pasos i{flex:1;height:6px;border-radius:999px;background:var(--card-2)}
.pasos i.on{background:var(--bar-al_dia)}

/* ---------- ingreso ---------- */
.ingreso{max-width:420px;margin:0 auto;padding:24px 16px 32px;display:grid;gap:14px}
.ingreso .logo{display:flex;justify-content:center;padding:10px 0}
.ingreso .logo img{height:44px}
.ingreso .logo .l-cla{display:var(--logo-cla)}
.ingreso .logo .l-osc{display:var(--logo-osc)}
.ingreso h1{margin:0;font-size:24px;text-align:center}
.ingreso p{margin:0;text-align:center;color:var(--ink-2)}
.campo{min-height:56px;width:100%;border:2px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:800 22px/1 var(--f);padding:0 14px;font-variant-numeric:tabular-nums}
.campo:focus{border-color:var(--foco);outline:none}
.campo::placeholder{color:var(--ink-2);font-weight:600;font-size:17px}
.error{color:var(--st-vencida);font-weight:700;text-align:center;min-height:1.45em}

/* ---------- gestión: Mi obra, Equipos y Cargas (DECISIONES.md, pantallas de gestión) ---------- */
.franja{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:12px -14px 0;padding:0 14px 2px}
.franja::-webkit-scrollbar{display:none}
.franja button{flex:none;min-height:var(--tap);padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-weight:700;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:6px}
.franja button[aria-pressed="true"]{background:var(--inv-bg);color:var(--inv-ink);border-color:var(--inv-bg)}
.campo-t{min-height:var(--tap);width:100%;border:2px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:600 16px var(--f);padding:0 12px}
.campo-t:focus{border-color:var(--foco);outline:none}
.campo-t::placeholder{color:var(--ink-2)}
.fotos{display:flex;flex-wrap:wrap;gap:8px}
.fotos img{width:96px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--card-2)}
.cambios{display:grid;gap:6px}
.cambios div{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:10px;background:var(--card-2);font-size:15px}
.cifras{display:flex;gap:18px;flex-wrap:wrap}
.cifras div b{display:block;font-size:24px;font-variant-numeric:tabular-nums}
.cifras div span{font-size:13px;color:var(--ink-2);font-weight:700}
.duo{display:grid;gap:12px;margin-top:2px}
.duo .tarjeta{margin-top:12px}
.foto-btn{position:relative;overflow:hidden;cursor:pointer}
.foto-btn input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
@media (min-width:700px){.duo{grid-template-columns:1fr 1fr}}

/* ---------- órdenes de trabajo (DECISIONES.md, 02-oct-2026: la A «Por urgencia» y la A «Marcar y cerrar») ---------- */
.marca{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:10px 12px;border:0;border-top:1px solid var(--line);background:none;text-align:left;cursor:pointer;color:var(--ink);font:inherit}
.filas>.marca:first-child{border-top:0}
.marca .cc{flex:none;width:32px;height:32px;border-radius:8px;border:2px solid var(--ink-2);display:flex;align-items:center;justify-content:center}
.marca .cc svg{width:20px;height:20px;opacity:0}
.marca[aria-pressed="true"] .cc{background:var(--st-al_dia);border-color:var(--st-al_dia);color:var(--card)}
.marca[aria-pressed="true"] .cc svg{opacity:1}
.marca .tx{flex:1;min-width:0}
.marca b{display:block;font-size:16px;line-height:1.25}
.marca small{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;margin-top:3px;font-size:14px;color:var(--ink-2);font-weight:600}
/* En el cierre lo elegido es bueno: verde, no el rojo de los hallazgos del preoperacional */
.chips.ok button[aria-pressed="true"]{border-color:var(--bar-al_dia);background:var(--st-al_dia-bg);color:var(--st-al_dia)}
.cierre{display:grid;gap:4px;padding:10px 0;border-top:1px solid var(--line);font-size:14px}
.cierre b{font-size:15px}
.cierre span{color:var(--ink-2);font-weight:600}
/* ---------- Indicadores (DECISIONES.md, 06-oct-2026: la A «Una tarjeta por indicador») ----------
   La gráfica es una serie y un tono: la barra elegida en --azul y las demás en --bar-pendiente (3,5 contra la tarjeta en
   claro y 6,1 en oscuro, medido en la maqueta). El valor va en texto, debajo, en el paso ‹ ›: sobre la barra, a 320 px
   «61,54 %» tapaba la barra vecina (06-oct-2026). Las barras no se tocan: el periodo se elige con ‹ › de 48 px. Barra de
   24 px como máximo, con la punta redonda y la base recta. */
.stat{display:grid;gap:2px}
.stat b{font-size:34px;line-height:1.1;font-weight:800}
.stat small{font-size:14px;color:var(--ink-2);font-weight:600}
.tarjeta p.nota-c,.nota-c{font-size:13px;color:var(--ink-2);font-weight:600;margin:0;overflow-wrap:anywhere}   /* un nombre de archivo sin espacios no estira la tarjeta */
.graf{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;height:110px;padding-top:6px;border-bottom:1px solid var(--line)}
.graf .c{position:relative;display:flex;align-items:flex-end;justify-content:center}
.graf i{display:block;width:min(24px,72%);height:var(--v);min-height:2px;background:var(--bar-pendiente);border-radius:4px 4px 0 0}
.graf .on i{background:var(--azul)}
.graf .c.sin i{background:none;border-bottom:2px dashed var(--line)}
.graf-x{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;font-size:12px;font-weight:700;color:var(--ink-2);text-align:center;margin-top:4px}
.graf-x .on{color:var(--ink)}
.paso-p{display:flex;align-items:center;gap:8px}
.paso-p .tx{flex:1;min-width:0;text-align:center;display:grid;gap:1px}
.paso-p .tx b{font-size:15px}
.paso-p .tx small{font-size:13.5px;color:var(--ink-2);font-weight:600}
.pb{flex:none;width:var(--tap);height:var(--tap);border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.pb svg{width:20px;height:20px}
.pb[disabled]{opacity:.45;cursor:default}
.tabla{width:100%;border-collapse:collapse;font-size:14px}
.tabla th{font-size:12.5px;color:var(--ink-2);text-align:right;font-weight:800;padding:6px 4px;border-bottom:1px solid var(--line)}
.tabla td{padding:0 4px;height:40px;border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums}
.tabla th:first-child,.tabla td:first-child{text-align:left}
.tabla tr.tot td{font-weight:800;border-bottom:0}
.sub-c{margin:4px 0 0;font-size:14.5px}

/* ---------- el reporte al MinTrabajo (DECISIONES.md, 07-oct-2026: la B «Indicadores y Reporte en la misma pantalla») ---------- */
.seg2,.seg3{display:grid;gap:6px;margin-top:10px}
.seg2{grid-template-columns:1fr 1fr}
.seg3{grid-template-columns:repeat(3,minmax(0,1fr))}
.seg2 button,.seg3 button{min-height:var(--tap);border-radius:12px;border:2px solid var(--line);background:var(--card);color:var(--ink);font:800 14.5px var(--f);cursor:pointer;padding:0 4px}
.seg2 button[aria-pressed="true"],.seg3 button[aria-pressed="true"]{border-color:var(--azul);background:var(--card-2)}
.res3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.res3 div{display:grid;gap:2px;padding:8px 10px;border-radius:12px;background:var(--card-2)}
.res3 b{font-size:22px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.res3 small{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.res3 .falta b{color:var(--st-vencida)}
.res3 .rev b{color:var(--st-por_vencer)}
.campo{display:grid;grid-template-columns:52px minmax(0,1fr) var(--tap);gap:8px;align-items:center;min-height:var(--tap);padding:6px 0;border-bottom:1px solid var(--line)}
.campo .n{font-size:12.5px;font-weight:800;color:var(--ink-2);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.campo .tx{display:grid;gap:2px;min-width:0}
.campo .tx small{font-size:12.5px;color:var(--ink-2);font-weight:600;overflow-wrap:anywhere}
.campo .tx b{font-size:15px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cp{width:var(--tap);height:var(--tap);border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.cp[disabled]{opacity:.45;cursor:default}
.cp svg,.chips svg{width:22px;height:22px;flex:none}
.chips button{display:inline-flex;align-items:center;gap:6px;color:var(--ink);font-family:var(--f)}

/* ---------- usuarios y accesos (DECISIONES.md, 07-oct-2026: la C «Por razón social») ---------- */
.d-fila.hueco{border:2px dashed var(--line)}
