  /* ONMI — hoja de estilo compartida. Pasada de diseño 4-sep-2026:
     tipografía Inter, cabecera con logo, sombras suaves y microinteracciones.
     Los nombres de clase no cambian: el JS de las páginas no se toca. */
  :root{
    --tinta:#0e1a2b; --tinta-2:#1c2c47; --raya:#e4e8f1; --fondo:#f2f4f9;
    --papel:#fff; --suave:#69758c; --acento:#2563eb; --acento-2:#1d4fd7;
    --acento-suave:#eef4ff; --acento-rgb:37,99,235;
    --lateral-1:#101d33; --lateral-2:#0c1526;
    --ok:#0f9d58; --ok-suave:#e7f6ee; --curso:#d97f1d; --curso-suave:#fdf3e4;
    --np:#7c8698; --np-suave:#eef0f4; --alerta:#c73a2c; --alerta-suave:#fdeeec;
    --sombra:0 1px 2px rgba(14,26,43,.05),0 6px 20px rgba(14,26,43,.04);
    --sombra-alta:0 2px 6px rgba(14,26,43,.08),0 14px 34px rgba(14,26,43,.08);
  }
  *{box-sizing:border-box}
  html{scrollbar-gutter:stable}
  body{margin:0;background:var(--fondo);color:var(--tinta);
       font:14px/1.5 "Inter","Segoe UI",system-ui,-apple-system,sans-serif;
       -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
  ::selection{background:#c7dbff}
  *::-webkit-scrollbar{width:10px;height:10px}
  *::-webkit-scrollbar-thumb{background:#c9d2e2;border-radius:6px;border:2px solid var(--fondo)}
  *::-webkit-scrollbar-thumb:hover{background:#aab7cd}
  button,input,select,textarea{font-family:inherit}
  :focus-visible{outline:2px solid var(--acento);outline-offset:1px;border-radius:6px}

  /* ------------------------------------------------------------- cabecera */
  header{background:linear-gradient(180deg,var(--lateral-1) 0%,var(--lateral-2) 100%);color:#fff;
         padding:0 22px;min-height:58px;display:flex;align-items:center;gap:18px;
         flex-wrap:wrap;border-bottom:1px solid rgba(255,255,255,.06);
         position:sticky;top:0;z-index:10;box-shadow:0 2px 14px rgba(10,18,32,.25)}
  .marca{font-weight:800;font-size:16.5px;letter-spacing:.4px;display:flex;
         align-items:center;gap:10px;padding:11px 0}
  .marca .logo{width:30px;height:30px;border-radius:9px;display:inline-flex;
         align-items:center;justify-content:center;font-size:15px;font-weight:800;
         background:linear-gradient(135deg,var(--acento) 0%,var(--acento-2) 100%);
         box-shadow:0 3px 10px rgba(var(--acento-rgb),.4);letter-spacing:0}
  .marca span:not(.logo){opacity:.55;font-weight:400}
  .lateral .marca .txt{opacity:1;font-weight:800}
  header .sep{flex:1}
  header select{background:rgba(255,255,255,.07);color:#fff;
                border:1px solid rgba(255,255,255,.14);
                border-radius:8px;padding:7px 11px;font:inherit;cursor:pointer;
                transition:background .15s,border-color .15s}
  header select:hover{background:rgba(255,255,255,.12)}
  header select option{color:var(--tinta);background:#fff}
  main{padding:22px 22px 70px;max-width:1500px;margin:0 auto}

  .paginas{display:flex;gap:3px}
  .paginas a{color:#8fa0bd;text-decoration:none;padding:8px 14px;border-radius:9px;
             font-weight:600;font-size:13px;transition:background .15s,color .15s;
             position:relative}
  .paginas a:hover{background:rgba(255,255,255,.07);color:#fff}
  .paginas a.activa{background:rgba(255,255,255,.1);color:#fff;
             box-shadow:inset 0 0 0 1px rgba(255,255,255,.09)}

  /* ------------------------------------------ marco: lateral + superior */
  /* (pasada visual 19-sep-2026: barra lateral oscura, buscador global,
     cabecera de página con título y subtítulo, KPI con icono) */
  body.con-marco{display:grid;grid-template-columns:232px minmax(0,1fr);
       grid-template-rows:auto 1fr;min-height:100vh}
  .lateral{grid-row:1/3;background:linear-gradient(180deg,var(--lateral-1) 0%,var(--lateral-2) 100%);
       color:#c7d2e6;padding:14px 12px;position:sticky;top:0;height:100vh;
       display:flex;flex-direction:column;gap:2px;box-shadow:2px 0 16px rgba(10,18,32,.2)}
  .lateral .marca{color:#fff;text-decoration:none;padding:6px 10px 14px;font-size:17px}
  .lat-sec{font-size:10.5px;text-transform:uppercase;letter-spacing:1.2px;color:#6f7f9c;
       font-weight:700;padding:16px 12px 6px}
  .lat-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;
       color:#c7d2e6;text-decoration:none;font-weight:600;font-size:13.5px;
       transition:background .15s,color .15s}
  .lat-item svg{width:18px;height:18px;opacity:.85;flex:none}
  /* Los apartados de módulos no activados y los solo-gerencia van con `hidden`: el
     display:flex de arriba no debe ganarles (si no, la asesoría ve módulos que no tiene) */
  .lat-item[hidden]{display:none !important}
  .lat-item:hover{background:rgba(255,255,255,.06);color:#fff}
  .lat-item.on{background:rgba(var(--acento-rgb),.22);color:#fff;
       box-shadow:inset 0 0 0 1px rgba(var(--acento-rgb),.35)}
  .lat-cuerpo{display:flex;flex-direction:column;gap:2px}
  .lat-pie{margin-top:auto;padding:10px 12px;color:#6f7f9c;font-size:11px}
  .topbar{grid-column:2;position:sticky;top:0;z-index:10;
       background:rgba(242,244,249,.88);backdrop-filter:blur(8px);
       border-bottom:1px solid var(--raya);display:flex;align-items:center;gap:16px;
       padding:9px 26px;min-height:58px}
  .topbar .sep{flex:1}
  .topbar #quien.sesion{color:var(--tinta)}
  .topbar #quien .sesion-nombre{color:var(--tinta)}
  #tabla{overflow-x:auto}
  #tabla table{min-width:1040px}
  #tabla td,#tabla th{padding:8px 6px}
  #tabla .empresa{white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}
  #tabla td>.meta{white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}
  #tabla .acciones{white-space:nowrap;gap:4px}
  #tabla .acciones .btn{padding:4px 5px;font-size:11px}
  #tabla .acciones{gap:3px}
  #tabla .mas{padding:0 4px}
  #tabla .pres-pill{padding:2px 8px;font-size:11px}
  #tabla td.meta{font-size:12px}
  #tabla .vto{font-size:12.5px}
  #tabla .csv{font-size:10px}
  #tabla .coment-tag{max-width:110px}
  #tabla .imp-fila{width:74px}
  #tabla .mod{font-size:12px;padding:2px 7px}
  #tabla .sel-persona{min-width:66px;font-size:12.5px}
  #tabla .estado{font-size:11.5px;padding:3px 9px}
  #tabla td:nth-child(2),#tabla th:nth-child(2){width:22px;padding-left:0;padding-right:0}
  #tabla .empresa,#tabla td>.meta{max-width:180px}
  /* En portátiles la barra lateral se pliega a iconos: la tabla necesita el sitio */
  @media (max-width:1400px){
    body.con-marco{grid-template-columns:68px minmax(0,1fr)}
    .lateral{padding:14px 8px}
    .lat-item span,.lat-sec,.lat-pie,.lateral .marca .txt{display:none}
    .lat-item{justify-content:center;padding:11px 0}
    .lateral .marca{justify-content:center;padding:6px 0 14px}
  }
  .topbar #quien a{color:var(--suave)} .topbar #quien a:hover{color:var(--tinta)}
  .quien-chip{display:inline-flex;align-items:center;gap:9px;margin-right:6px}
  .avatar{width:34px;height:34px;border-radius:50%;color:#fff;display:inline-flex;
       align-items:center;justify-content:center;font-weight:700;font-size:12.5px;
       background:linear-gradient(135deg,var(--acento) 0%,var(--acento-2) 100%);letter-spacing:.3px}
  .quien-txt{display:flex;flex-direction:column;line-height:1.15}
  .quien-txt b{font-size:13px;color:var(--tinta)} .quien-txt small{font-size:11px;color:var(--suave)}
  body.con-marco main{grid-column:2;padding:22px 26px 70px;max-width:none;margin:0;width:100%;min-width:0}
  .pagina-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
       margin-bottom:18px;flex-wrap:wrap}
  .pagina-cab h1{margin:0;font-size:27px;font-weight:800;letter-spacing:-.5px;line-height:1.15}
  .pagina-cab .sub{color:var(--suave);margin-top:4px;font-size:14px}
  .pagina-cab .der{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
  .navmes{display:flex;align-items:center;background:var(--papel);border:1px solid var(--raya);
       border-radius:10px;overflow:hidden;box-shadow:var(--sombra)}
  .navmes button{border:0;background:none;padding:8px 12px;cursor:pointer;font-size:15px;
       color:var(--suave);font-weight:700}
  .navmes button:hover{background:var(--fondo);color:var(--tinta)}
  .navmes select{border:0;border-left:1px solid var(--raya);background:var(--papel);
       color:var(--tinta);font:inherit;font-weight:600;padding:8px 10px;cursor:pointer}
  .navmes select:focus{outline:none;background:var(--fondo)}
  .dos-col{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
  @media (max-width:1150px){.dos-col{grid-template-columns:1fr}}
  .fechas .f{display:flex;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid #f0f2f7}
  .fechas .f:last-child{border-bottom:none}
  .fechas .dia{background:var(--alerta-suave);color:var(--alerta);border-radius:9px;padding:6px 9px;
       font-weight:800;font-size:12px;min-width:66px;text-align:center;line-height:1.1;flex:none}
  .fechas .dia.ok{background:var(--acento-suave);color:var(--acento)}
  .fechas .txt b{display:block;font-size:13px} .fechas .txt span{font-size:12px;color:var(--suave)}

  /* ------------------------------------------------------------------ KPIs */
  .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
        gap:12px;margin-bottom:16px}
  .kpi{background:var(--papel);border:1px solid var(--raya);border-radius:14px;
       padding:16px 16px;box-shadow:var(--sombra);position:relative;display:flex;gap:14px;
       align-items:center;transition:transform .15s,box-shadow .15s}
  .kpi .ico{width:46px;height:46px;border-radius:12px;display:inline-flex;align-items:center;
       justify-content:center;background:var(--acento-suave);color:var(--acento);flex:none}
  .kpi .ico svg{width:22px;height:22px}
  .kpi.verde .ico{background:var(--ok-suave);color:var(--ok)}
  .kpi.ambar .ico{background:var(--curso-suave);color:var(--curso)}
  .kpi.rojo .ico{background:var(--alerta-suave);color:var(--alerta)}
  .kpi.gris .ico{background:var(--np-suave);color:var(--np)}
  .kpi.morado .ico{background:#f3e8ff;color:#7e22ce}
  .kpi .cuerpo{min-width:0}
  .kpi .n{font-size:27px;font-weight:800;line-height:1.1;letter-spacing:-.6px;
          font-variant-numeric:tabular-nums}
  .kpi .t{color:var(--suave);font-size:11px;text-transform:uppercase;
          letter-spacing:.7px;margin-top:3px;font-weight:700}
  .kpi .s{color:var(--suave);font-size:12px;margin-top:3px}
  .kpi.verde .n{color:var(--ok)} .kpi.ambar .n{color:var(--curso)} .kpi.rojo .n{color:var(--alerta)}

  /* --------------------------------------------------------------- paneles */
  .panel{background:var(--papel);border:1px solid var(--raya);border-radius:14px;
         padding:16px 18px;margin-bottom:16px;box-shadow:var(--sombra)}
  .panel h2{margin:0 0 12px;font-size:11.5px;text-transform:uppercase;
            letter-spacing:.9px;color:var(--suave);font-weight:700}
  .avance{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:11px}
  .prof{border:1px solid var(--raya);border-radius:11px;padding:11px 13px;cursor:pointer;
        transition:border-color .15s,box-shadow .15s,transform .15s}
  .prof:hover{border-color:var(--acento);box-shadow:0 4px 14px rgba(var(--acento-rgb),.14);
        transform:translateY(-1px)}
  .prof.activo{border-color:var(--acento);background:var(--acento-suave)}
  .prof .top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}
  .prof .nom{font-weight:700}
  .prof .pct{font-variant-numeric:tabular-nums;color:var(--suave);font-size:13px}
  .barra{height:7px;background:#e9edf4;border-radius:5px;overflow:hidden}
  .barra i{display:block;height:100%;border-radius:5px;transition:width .35s ease;
        background:linear-gradient(90deg,#12b467,#0f9d58)}
  .prof .det{font-size:12px;color:var(--suave);margin-top:6px}

  /* ---------------------------------------------------------------- filtros */
  .filtros{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
  .filtros select,.filtros input{border:1px solid var(--raya);border-radius:9px;
      padding:8px 11px;font:inherit;background:var(--papel);color:var(--tinta);
      min-width:125px;transition:border-color .15s,box-shadow .15s}
  .filtros select:hover,.filtros input:hover{border-color:#c9d2e2}
  .filtros select:focus,.filtros input:focus{border-color:var(--acento);
      box-shadow:0 0 0 3px rgba(var(--acento-rgb),.12);outline:none}
  .filtros input{min-width:230px}
  .chips{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
  .chip{border:1px solid var(--raya);background:var(--papel);border-radius:20px;
        padding:6px 14px;cursor:pointer;font-size:13px;font-weight:500;
        transition:background .15s,color .15s,border-color .15s,box-shadow .15s;
        user-select:none}
  .chip:hover{border-color:#b9c4d8;box-shadow:var(--sombra)}
  .chip.on{background:var(--tinta);color:#fff;border-color:var(--tinta);font-weight:600}
  .chip.neg{background:var(--alerta);color:#fff;border-color:var(--alerta);font-weight:600}
  .limpiar{background:none;border:none;color:var(--acento);cursor:pointer;font:inherit;
        padding:6px 8px;border-radius:7px;font-weight:600;transition:background .15s}
  .limpiar:hover{background:var(--acento-suave)}

  /* ----------------------------------------------------------------- tablas */
  /* OJO: sin overflow:hidden en la tabla. Con él, la tabla se convierte en
     contenedor del position:sticky y la cabecera se queda clavada 58px por
     DEBAJO del inicio de la tabla, con filas asomando por encima (bug visto
     en la reunión 4: "te coge dos pero no lo muestra"). Las esquinas
     redondeadas se hacen célula a célula, abajo. */
  table{width:100%;border-collapse:separate;border-spacing:0;background:var(--papel);
        border:1px solid var(--raya);border-radius:13px;
        box-shadow:var(--sombra)}
  thead tr:first-child th:first-child{border-top-left-radius:12px}
  thead tr:first-child th:last-child{border-top-right-radius:12px}
  tbody tr:last-child td:first-child{border-bottom-left-radius:12px}
  tbody tr:last-child td:last-child{border-bottom-right-radius:12px}
  /* Cabeceras de tabla SIN position:sticky. El sticky con top:58px provocaba
     cabeceras clavadas a media tabla con filas asomando por encima (visto en
     la reunión 4 y en cierres/modelos/planning). Hasta tener una implementación
     con contenedor de scroll propio, cabecera normal: aburrida pero correcta. */
  th{background:#f8fafd;text-align:left;font-size:11px;text-transform:uppercase;
     letter-spacing:.7px;color:var(--suave);padding:11px 12px;font-weight:700;
     border-bottom:1px solid var(--raya)}
  td{padding:10px 12px;border-bottom:1px solid #f0f2f7;vertical-align:middle}
  tr:last-child td{border-bottom:none}
  tr:hover td{background:#f8fafe}
  .empresa{font-weight:600}
  .meta{color:var(--suave);font-size:12px}
  .cif{font-variant-numeric:tabular-nums;letter-spacing:.2px;color:var(--tinta-2);font-weight:600}
  .mod{display:inline-block;font-weight:700;font-variant-numeric:tabular-nums;
       background:#edf1f8;border-radius:7px;padding:2.5px 9px;font-size:12.5px;
       border:1px solid #e2e8f3}
  .mod.intra{background:#f1ecfe;color:#5b21b6;border-color:#e4dafc}
  .vto{font-variant-numeric:tabular-nums;white-space:nowrap}
  .vto.pasado{color:var(--alerta);font-weight:600}
  .estado{display:inline-block;border-radius:20px;padding:3.5px 12px;font-size:12px;
       font-weight:600;white-space:nowrap;letter-spacing:.1px}
  .e-pendiente{background:var(--curso-suave);color:var(--curso)}
  .e-listo{background:var(--acento-suave);color:var(--acento)}
  .e-tramitado{background:var(--ok-suave);color:var(--ok)}
  .e-np{background:var(--np-suave);color:var(--np)}
  .lab{background:#f3e8ff;color:#7e22ce;border-radius:20px;padding:2px 9px;
       font-size:11px;font-weight:600}
  .acciones{display:flex;gap:5px;justify-content:flex-end}

  /* ---------------------------------------------------------------- botones */
  .btn{border:1px solid var(--raya);background:var(--papel);border-radius:8px;
       padding:5.5px 11px;cursor:pointer;font-size:12px;font-weight:600;
       color:var(--suave);white-space:nowrap;
       transition:border-color .15s,color .15s,box-shadow .15s,background .15s}
  .btn:hover{border-color:var(--acento);color:var(--acento);box-shadow:var(--sombra)}
  .btn.on{background:var(--tinta);color:#fff;border-color:var(--tinta)}
  .btn.grande{padding:9px 18px;font-size:13.5px;font-weight:600;color:#fff;
       background:linear-gradient(180deg,var(--acento),var(--acento-2));border-color:transparent;
       box-shadow:0 2px 8px rgba(var(--acento-rgb),.3);letter-spacing:.1px}
  .btn.grande:hover{filter:brightness(1.07);color:#fff;
       box-shadow:0 4px 14px rgba(var(--acento-rgb),.38)}
  .btn.grande:active{transform:translateY(1px)}

  .vacio{text-align:center;padding:52px 20px;color:var(--suave)}
  .vacio h3{color:var(--tinta);margin:0 0 8px;font-size:17px}
  #aviso{position:fixed;right:22px;bottom:22px;background:rgba(14,26,43,.96);color:#fff;
         padding:12px 18px;border-radius:11px;opacity:0;transform:translateY(8px);
         transition:opacity .22s,transform .22s;pointer-events:none;z-index:99;
         box-shadow:var(--sombra-alta);font-size:13.5px;max-width:420px;
         backdrop-filter:blur(6px)}
  #aviso.ver{opacity:1;transform:none}
  .cargando{padding:46px;text-align:center;color:var(--suave)}
  .cargando::after{content:"";display:block;width:26px;height:26px;margin:14px auto 0;
         border-radius:50%;border:3px solid var(--raya);border-top-color:var(--acento);
         animation:gira .8s linear infinite}
  @keyframes gira{to{transform:rotate(360deg)}}

  /* ------------------------------------------------- detalle de declaración */
  .asigna{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--suave);min-height:24px}
  .asigna+.asigna{margin-top:4px}
  .equipo-lista{border-top:1px solid var(--raya);margin-top:14px;padding-top:14px;
                display:flex;flex-direction:column;gap:8px}
  .persona{display:flex;align-items:center;gap:10px}
  .persona .ini{font-weight:700;min-width:52px}
  .persona input{border:1px solid var(--raya);border-radius:8px;padding:7px 10px;
                 font:inherit;flex:1;max-width:290px}
  .persona.nueva{border-top:1px dashed var(--raya);padding-top:12px;margin-top:5px}
  .persona select.rol{border:1px solid var(--raya);border-radius:8px;padding:6px 9px;font:inherit;
    font-weight:600;background:var(--papel)}
  .abrir{border:none;background:none;cursor:pointer;color:var(--suave);font-size:15px;
         padding:2px 4px;border-radius:6px;transition:color .15s}
  .abrir:hover{color:var(--acento)}
  tr.abierta td{background:var(--acento-suave)!important}
  .importe{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
  .importe.devolver{color:var(--ok)}
  /* Importe editable en la fila (reunión 4): parece texto hasta que lo tocas */
  .imp-fila{width:86px;font:inherit;font-variant-numeric:tabular-nums;font-weight:600;
       text-align:right;border:1px solid transparent;border-radius:7px;padding:4px 6px;
       background:transparent;color:inherit}
  .imp-fila:hover{border-color:var(--raya);background:var(--fondo)}
  .imp-fila:focus{outline:none;border-color:var(--acento);background:#fff}
  .importe.devolver .imp-fila{color:var(--ok)}
  /* La fila del planning entera despliega el detalle */
  tr[data-fila]{cursor:pointer}
  /* Aviso de comentarios en la fila, sin abrir el desplegable */
  .coment-tag{display:inline-flex;gap:4px;align-items:center;font-size:11px;
       color:var(--suave);background:var(--fondo);border:1px solid var(--raya);
       border-radius:20px;padding:1.5px 8px;max-width:190px;white-space:nowrap;
       overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
  .dom{font-size:11px;font-weight:600;color:#7e22ce}
  .csv{font-family:ui-monospace,Consolas,monospace;font-size:11px}
  .fila-detalle td{background:#f7f9fd;padding:0}
  .detalle{padding:16px 19px;border-left:3px solid var(--acento)}
  .campos{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px}
  .campos label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--suave)}
  .campos input[type=text],.campos input[type=number],.campos input:not([type]){
    border:1px solid var(--raya);border-radius:8px;padding:8px 10px;font:inherit;min-width:210px}
  .campos label.check{flex-direction:row;align-items:center;gap:7px;font-size:13px;color:var(--tinta)}
  .observaciones{background:#fffbeb;border:1px solid #fde68a;border-radius:9px;
                 padding:9px 12px;margin-bottom:12px;font-size:13px}
  .hilo{display:flex;flex-direction:column;gap:8px;max-width:820px}
  .comentario{background:var(--papel);border:1px solid var(--raya);border-radius:9px;padding:8px 11px}
  .comentario .cab{display:flex;align-items:center;gap:9px;margin-bottom:3px}
  .borrar{margin-left:auto;border:none;background:none;color:var(--suave);
          cursor:pointer;font-size:16px;line-height:1}
  .borrar:hover{color:var(--alerta)}
  .nuevo input{width:100%;border:1px solid var(--raya);border-radius:9px;padding:9px 11px;font:inherit}

  /* Iniciales de profesional/revisor: desplegable discreto con su flechita.
     El recuadro solo aparece al pasar por encima, para no llenar la tabla. */
  .sel-persona{height:24px;min-width:82px;border:1px solid transparent;border-radius:7px;
    padding:0 19px 0 5px;font:inherit;font-size:13px;font-weight:600;color:var(--tinta);
    cursor:pointer;appearance:none;text-align:left;background-color:transparent;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6' viewBox='0 0 9 6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' stroke='%2366748c' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}
  .sel-persona:hover{border-color:var(--raya);background-color:var(--papel)}
  .sel-persona:focus{border-color:var(--acento);background-color:var(--papel);outline:none}
  .sel-persona.vacio{color:var(--suave);font-weight:400}

  /* Insignia de presentación en lote + botones de modo */
  .lote-tag{background:#dcfce7;color:#15803d;border-radius:20px;padding:2px 9px;
    font-size:11px;font-weight:600}
  .btn.pres.on{background:#15803d;border-color:#15803d}

  /* Secciones del planning agrupado: cabecera con nombre, recuento y avance */
  tr.seccion td{background:#f4f6fb;padding:9px 12px;border-bottom:1px solid var(--raya);
    border-top:1px solid var(--raya);cursor:pointer}
  tr.seccion:hover td{background:#eef1f8}
  tr.seccion .sec{display:flex;align-items:center;gap:12px}
  tr.seccion .flecha{color:var(--suave);width:12px;font-size:13px}
  tr.seccion .nom{font-weight:700;font-size:13.5px}
  tr.seccion .pastilla{background:var(--papel);border:1px solid var(--raya);border-radius:20px;
    padding:1.5px 9px;font-size:11.5px;color:var(--suave);font-weight:600}
  tr.seccion .sec-avance{margin-left:auto;display:flex;align-items:center;gap:10px}
  tr.seccion .sec-avance .barra{width:130px}
  tr.seccion .pct{font-variant-numeric:tabular-nums;font-size:12.5px;color:var(--suave);
    font-weight:600;white-space:nowrap}
  tr.seccion .pct.ok{color:var(--ok)}
  tr.seccion.plegada td{border-bottom:1px solid #e9edf4}

  /* Pastillas compartidas (ficha del cliente y catálogo de modelos) */
  .per-pill{display:inline-block;background:var(--acento-suave);color:var(--acento);
       border-radius:20px;padding:3px 10px;font-size:11.5px;font-weight:600}
  .est-pill{display:inline-flex;align-items:center;gap:6px;border-radius:20px;padding:3px 10px;
       font-size:11.5px;font-weight:600;background:var(--ok-suave);color:var(--ok);white-space:nowrap}
  .est-pill i{width:7px;height:7px;border-radius:50%;background:currentColor}
  .est-pill.baja{background:var(--np-suave);color:var(--np)}
  .est-pill.limite{background:var(--acento-suave);color:var(--acento)}

  /* Panel de filtros en tres filas (Pablo, 19-sep: "ordénalos, más intuitivos") */
  .filtros-panel .fila+.fila{margin-top:12px;padding-top:12px;border-top:1px dashed var(--raya)}
  .etq{font-size:10.5px;text-transform:uppercase;letter-spacing:.9px;color:var(--suave);font-weight:700}
  .filtro{display:flex;flex-direction:column;gap:4px;flex:1;min-width:130px}
  .filtros .filtro select{width:100%;min-width:0}
  .filtros .buscar-local{display:flex;align-items:center;gap:8px;border:1px solid var(--raya);
       border-radius:9px;padding:0 11px;background:var(--papel);flex:1;max-width:520px;
       transition:border-color .15s,box-shadow .15s}
  .filtros .buscar-local:focus-within{border-color:var(--acento);box-shadow:0 0 0 3px rgba(var(--acento-rgb),.12)}
  .filtros .buscar-local svg{width:15px;height:15px;color:var(--suave);flex:none}
  .filtros .buscar-local input{border:0;outline:0;box-shadow:none;padding:8px 0;flex:1;min-width:0;background:transparent}
  .filtros .vista{margin-left:auto;display:flex;gap:8px;align-items:center}
  .barra-herr{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 10px;flex-wrap:wrap}
  .barra-herr .izq,.barra-herr .der{display:flex;gap:8px;align-items:center}

  /* Selección múltiple y acciones en lote (pasada visual 19-sep) */
  td.sel,th.sel{width:36px;padding-right:0}
  td.sel input,th.sel input{width:16px;height:16px;accent-color:var(--acento);cursor:pointer;
       vertical-align:middle}
  tr.marcada td{background:var(--acento-suave)}
  /* Fila que va a recibir un PDF arrastrado */
  tr.soltar td{background:#e7f6ee!important;box-shadow:inset 0 2px 0 var(--ok),inset 0 -2px 0 var(--ok)}
  tr.soltar td:first-child{box-shadow:inset 2px 2px 0 var(--ok),inset 0 -2px 0 var(--ok)}
  .lote-barra{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--tinta);
       color:#fff;border-radius:12px;padding:10px 14px;margin-bottom:10px;box-shadow:var(--sombra-alta)}
  .lote-barra b{font-size:13.5px;margin-right:6px}
  .lote-barra .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18);color:#fff}
  .lote-barra .btn:hover{background:rgba(255,255,255,.2);color:#fff;border-color:rgba(255,255,255,.3)}
  .lote-barra select{border-radius:8px;border:1px solid rgba(255,255,255,.18);
       background:rgba(255,255,255,.1);color:#fff;font:inherit;font-size:12px;padding:5px 8px}
  .lote-barra select option{color:var(--tinta)}
  .lote-barra .quitar{margin-left:auto;background:none;border:0;color:#c7d2e6;cursor:pointer;font:inherit;font-size:12.5px}
  .lote-barra .quitar:hover{color:#fff}
  .mas{border:1px solid transparent;background:none;cursor:pointer;font-size:18px;color:var(--suave);
       border-radius:7px;padding:0 8px;line-height:1.3}
  .mas:hover{border-color:var(--raya);color:var(--tinta);background:var(--papel)}
  .menu-fila{position:absolute;background:var(--papel);border:1px solid var(--raya);border-radius:10px;
       box-shadow:var(--sombra-alta);padding:6px;z-index:20;min-width:210px}
  .menu-fila button{display:block;width:100%;text-align:left;border:0;background:none;
       padding:8px 10px;border-radius:7px;font:inherit;font-size:13px;cursor:pointer;color:var(--tinta)}
  .menu-fila button:hover{background:var(--fondo)}
  .menu-fila button.peligro{color:var(--alerta)}
  .menu-fila button:disabled{color:var(--suave);cursor:default;background:none}
  .seg{display:inline-flex;border:1px solid var(--raya);border-radius:8px;overflow:hidden;background:var(--papel)}
  .seg button{border:0;background:none;padding:4px 9px;font:inherit;font-size:11.5px;font-weight:600;
       color:var(--suave);cursor:pointer;white-space:nowrap}
  .seg button+button{border-left:1px solid var(--raya)}
  .seg button:hover{background:var(--fondo);color:var(--tinta)}
  .seg button.on{background:var(--tinta);color:#fff}
  .seg button.on.lote{background:#15803d} .seg button.on.laboral{background:#7e22ce}
  .pres-pill{display:inline-block;border-radius:20px;padding:3px 10px;font-size:11.5px;font-weight:600;
       background:var(--np-suave);color:var(--np)}
  .pres-pill.lote{background:#dcfce7;color:#15803d} .pres-pill.laboral{background:#f3e8ff;color:#7e22ce}
  .pres-pill.click{cursor:pointer;box-shadow:inset 0 0 0 1px rgba(14,26,43,.12)}
  .pres-pill.click:hover{box-shadow:inset 0 0 0 1px var(--acento)}
  .pres-pill.click::after{content:" ↻";opacity:.55;font-size:10px}
  .ico-emp{width:36px;height:36px;border-radius:10px;background:var(--fondo);border:1px solid var(--raya);
       display:inline-flex;align-items:center;justify-content:center;color:var(--suave);flex:none}
  .ico-emp svg{width:17px;height:17px}
  .celda-emp{display:flex;align-items:center;gap:10px}

  /* "Modo yo" (reunión 5): encendido por defecto */
  .btn.yo{font-weight:700}
  .btn.yo.on{background:var(--acento);border-color:var(--acento);color:#fff}
  .btn:disabled{opacity:.45;cursor:not-allowed}
  .btn:disabled:hover{border-color:var(--raya);color:var(--suave);box-shadow:none}

  /* Importar los PDF del lote (reunión 5) */
  .lote-drop{border:2px dashed #c9d2e2;border-radius:12px;padding:26px;text-align:center;
    color:var(--suave);margin:12px 0;transition:border-color .15s,background .15s;cursor:pointer}
  .lote-drop.sobre{border-color:var(--acento);background:var(--acento-suave)}
  .lote-drop a{color:var(--acento);font-weight:600}
  .lote-tabla{margin:12px 0 4px;box-shadow:none;font-size:13px}
  .lote-tabla td{padding:7px 9px}
  .lote-tabla th{padding:8px 9px}
  .lt{display:inline-block;border-radius:20px;padding:2px 10px;font-size:11.5px;font-weight:600;white-space:nowrap}
  .lt-ok{background:var(--ok-suave);color:var(--ok)}
  .lt-ya{background:var(--np-suave);color:var(--np)}
  .lt-mal{background:var(--alerta-suave);color:var(--alerta)}
  .pdf-link{display:inline-block;margin-left:5px;background:#fdeeec;color:var(--alerta);border-radius:6px;
    padding:1px 7px;font-size:10.5px;font-weight:700;text-decoration:none;letter-spacing:.3px;vertical-align:middle}
  .pdf-link:hover{background:var(--alerta);color:#fff}
  .presentada-por{background:var(--ok-suave);border:1px solid #cfead9;border-radius:9px;
    padding:8px 12px;margin-bottom:12px;color:var(--tinta);font-size:13px}

  /* Obligación puntual: añadida a mano solo para un mes (reunión 5) */
  .puntual-tag{background:#fff4dc;color:#b45309;border-radius:20px;padding:2px 9px;
    font-size:11px;font-weight:600}

  /* Recuento junto a los chips cuando hay filtros de estado activos */
  .chip-suma{background:var(--tinta);color:#fff;border-radius:20px;padding:6px 14px;
    font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;
    box-shadow:var(--sombra)}

  /* -------------------------------------------------------------- sesión */
  /* Lo pinta static/sesion.js en el #quien de la cabecera */
  #quien.sesion{display:flex;align-items:center;gap:14px;font-size:12.5px}
  #quien .sesion-nombre{color:#fff;font-weight:600}
  #quien a{color:#8fa0bd;text-decoration:none}
  #quien a:hover{color:#fff;text-decoration:underline}
  .sesion-fondo{position:fixed;inset:0;background:rgba(15,27,45,.45);z-index:100;
                display:flex;align-items:center;justify-content:center}
  .sesion-caja{background:var(--papel);border-radius:14px;padding:26px 30px;
               width:min(380px,92vw);box-shadow:var(--sombra-alta)}
  .sesion-caja h3{margin:0 0 4px}
  .sesion-caja label{display:block;font-size:12px;text-transform:uppercase;
                     letter-spacing:.5px;color:var(--suave);margin:14px 0 0}
  .sesion-caja input{display:block;width:100%;font:inherit;padding:9px 12px;margin-top:5px;
                     border:1px solid var(--raya);border-radius:9px;background:var(--fondo)}
  .sesion-caja input:focus{outline:2px solid var(--acento);background:#fff}
  .sesion-caja select{display:block;width:100%;font:inherit;padding:9px 10px;margin-top:5px;
                      border:1px solid var(--raya);border-radius:9px;background:var(--fondo)}
  .sesion-fondo[hidden]{display:none}
  .sesion-error{margin-top:12px;background:var(--alerta-suave);color:var(--alerta);
                border-radius:9px;padding:8px 12px;font-size:13px}
  .sesion-pie{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}

  /* ------------------------------------------ módulo externo dentro de la app */
  .modulo-marco{padding:0;max-width:none;margin:0}
  #modulo{display:block;width:100%;height:calc(100vh - 58px);border:0;background:var(--fondo)}

  /* ------------------------------------------ bandeja de revisión */
  .campana{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:20px;
       background:var(--curso-suave);color:var(--curso);font-weight:700;font-size:12.5px;
       text-decoration:none;border:1px solid transparent}
  .campana[hidden]{display:none}   /* sin nada que revisar, no se ve */
  .campana svg{width:16px;height:16px}
  .campana:hover{border-color:var(--curso)}
  .campana.partes{background:#eef2ff;color:#3730a3}
  .campana.partes:hover{border-color:#3730a3}
  .bandeja{margin:0 0 12px;padding:12px 16px;border-radius:12px;background:var(--curso-suave);
       border:1px solid #f3d9a8;color:#7a4b06;font-size:13.5px}
  .bandeja a{color:inherit}
  .estado + small.por{display:block;color:var(--suave);font-size:10.5px;margin-top:2px}

  /* ------------------------------------------ historial de la declaración */
  .historial{margin:10px 0 6px;font-size:12.5px}
  .historial summary{cursor:pointer;font-weight:600;color:var(--tinta-2)}
  .historial ul{list-style:none;margin:6px 0 0;padding:0 0 0 4px;border-left:2px solid var(--raya)}
  .historial li{padding:3px 0 3px 10px}
  .historial li .meta{display:inline-block;min-width:112px;font-variant-numeric:tabular-nums}
  /* En lote / Laboral junto a Preparada (reunión 5): verde si está elegido */
  .acciones .btn.modo{font-size:11px;padding:4px 6px}
  /* con En lote / Laboral en la línea, los botones de estado se aprietan un poco */
  tr.con-modos .acciones .btn{padding:4px 5px;font-size:11px}
  tr.con-modos .acciones{gap:3px}
  .acciones .btn.modo.on{background:#15803d;border-color:#15803d;color:#fff}
  .lote-tag.mini,.lab.mini{font-size:10px;padding:1px 7px;vertical-align:1px}

  /* ------------------------------------------ soltar el justificante en el desplegable */
  .soltar-pdf{margin:8px 0;padding:14px 16px;border:2px dashed #b9c4d8;border-radius:12px;background:var(--papel);
       cursor:pointer;font-size:13px;line-height:1.5;transition:border-color .15s,background .15s}
  .soltar-pdf .meta{display:block;margin-top:2px}
  .soltar-pdf:hover,.soltar-pdf.sobre{border-color:var(--ok);background:var(--ok-suave)}
  .soltar-pdf.hecho{border-style:solid;border-color:#bfe3cc;background:var(--ok-suave);cursor:default;color:#14532d}
  .soltar-pdf .resultado{margin-top:8px;padding:8px 10px;border-radius:8px;font-weight:600}
  .soltar-pdf .resultado.bien{background:var(--ok-suave);color:var(--ok)}
  .soltar-pdf .resultado.mal{background:var(--alerta-suave);color:var(--alerta)}
  .soltar-pdf.hecho .quitar-pdf{margin-left:12px;font-size:11.5px;color:var(--alerta);border-color:#f1c9c3;background:#fff}

  /* tarjetas KPI pulsables: filtran la tabla */
  .kpi.click{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s}
  .kpi.click:hover{border-color:var(--acento);box-shadow:var(--sombra-alta)}
  .kpi.click.activo{border-color:var(--acento);box-shadow:inset 0 0 0 2px var(--acento),var(--sombra)}

  /* ------------------------------------------ pasos del modelo (checklist) */
  .pasos{margin:8px 0 6px;padding:10px 14px;background:var(--fondo);border-radius:12px;font-size:13px}
  .pasos b{display:block;margin-bottom:6px;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--suave)}
  .pasos .paso{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer}
  .pasos .paso.hecho span{color:var(--ok)}
  .pasos .paso small{margin-left:auto}
  .pasos-mini{color:var(--acento)!important}
