/* Vista panel-operaciones (#sec-panel-operaciones).
   Origen: <style id="panel-ope-figma"> de ui/figma 781453a (Figma «Panel de Operaciones» 608:1231),
   movido aquí y acotado a #sec-panel-operaciones. Cambios sobre el origen, por la norma
   (criterios-ui-esparq.md):
   · G02: colores con las variables de tokens.css; los que no tienen token van por valor
     con «sin token» al lado (lista en el reporte lote3-panel-operaciones.md).
   · G01: fuera todo text-transform:uppercase (sobretítulo, rótulos, cabeceras de tabla,
     chips de frente). El «CORTE:» escrito pasa a «Corte:» en el marcado.
   · G03: rótulos y detalle que hay que leer pasan del gris claro (#9CA3AF / #8E9093) a
     --gray-6; el gris claro queda para filetes y decoración.
   · G04: en ≤ 700 px ningún texto baja de 12 px.
   · G05: los botones llevan Heroicon (Descargar, Ver curva, lupas, lecturas, frentes).
   · G08: «Avance por frente» usa el componente de Resumen › Frentes de obra (680:8178:
     rz-fr-stat, rz-fr-cards, rz-fr…) y no la tabla de 608:1439.
   · M04: en el teléfono, frentes y tarjetas de plazo van en carrusel horizontal.
   Panel de Calidad sigue con las po-* compartidas del index; nada de aquí la toca. */

#sec-panel-operaciones .pz{ display:flex; flex-direction:column; gap:14px; }                        /* 608:1375: 287 − 273 = 14 entre bandas */
#sec-panel-operaciones .pz-card{ background:var(--gray-1); border-radius:16px; min-width:0; }
#sec-panel-operaciones .pz h3{ margin:0; }

/* ── cabecera (608:1348 · D02: la del Resumen, 680:7866) ── */
#sec-panel-operaciones .pz-cab{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px; min-height:70px; margin-bottom:-4px; }  /* 10 hasta la tarjeta · flex-wrap: la ficha (.pz-meta) baja a su propia fila completa siempre, no solo en angosto (01/10, mismo mecanismo que ya usaba el breakpoint de 1250px) */
#sec-panel-operaciones .pz-id{ display:flex; flex-direction:column; gap:4px; flex:none; min-width:0; }    /* 608:1349 */
#sec-panel-operaciones .pz-kick{ font:700 10px/normal 'Inter',sans-serif; color:var(--blue-300); }       /* 608:1351 · G01: sin mayúsculas */
#sec-panel-operaciones .pz-title{ font:700 28px/28px 'Inter',sans-serif; color:#111827; }                /* 608:1352 · sin token */
#sec-panel-operaciones .pz-title:empty::before{ content:'—'; }
#sec-panel-operaciones .pz-client{ font:400 14px/22px 'Inter',sans-serif; color:#4B5563; }               /* 608:1353 · sin token */
#sec-panel-operaciones .pz-client:empty{ display:none; }
#sec-panel-operaciones .pz-meta{ display:flex; flex-wrap:wrap; order:3; flex-basis:100%; gap:12px 20px; align-items:flex-start; min-width:0; }          /* 608:1354 · order+flex-basis: su propia fila debajo del titulo (antes solo <=1250px; generalizado el 01/10 para que cada campo tenga ancho real sin depender tanto del truncado) */
#sec-panel-operaciones .pz-m{ display:flex; flex-direction:column; gap:2px; min-width:0; }
#sec-panel-operaciones .pz-m-l{ font:400 10px/normal 'Inter',sans-serif; color:var(--gray-6); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }   /* 608:1356 · overflow: la etiqueta (fija, no dato) tambien se solapaba con la de al lado cuando el flex la encoge, mismo bug que .pz-m-v (30/09) */
#sec-panel-operaciones .pz-m-v{ font:500 12px/normal 'Inter',sans-serif; color:#1F2937; white-space:nowrap; max-width:140px; overflow:hidden; text-overflow:ellipsis; }         /* 608:1357 · sin token · max-width/ellipsis: sin esto, un valor real que no entra en el ancho que el flex le deja se solapa con el campo de al lado en vez de truncarse (30/09, ficha de obra) */
#sec-panel-operaciones .pz-m-dir .pz-m-v{ max-width:173px; }
#sec-panel-operaciones .pz-dl{ flex:none; display:inline-flex; align-items:center; gap:8px; padding:12px 24px; border:0; border-radius:50px;   /* 608:1373 */
  background:var(--blue-300); color:var(--gray-1); font:500 14px/normal 'Inter',sans-serif; cursor:pointer; white-space:nowrap; }
#sec-panel-operaciones .pz-dl svg{ width:18px; height:18px; flex:none; }                                  /* G05: Heroicon de descarga, como el modelo §1 */
#sec-panel-operaciones .pz-dl:hover{ filter:brightness(1.06); }
#sec-panel-operaciones .pz-dl:focus-visible{ outline:2px solid var(--blue-300); outline-offset:2px; }
/* «Guía de Operaciones»: secundario junto a «Descargar resumen» (contorno, mismo alto) */
#sec-panel-operaciones .pz-guia{ flex:none; margin-left:auto; margin-right:-8px; display:inline-flex; align-items:center; gap:8px; padding:11px 20px; border:1px solid var(--blue-300); border-radius:50px;
  background:transparent; color:var(--blue-300); font:500 14px/normal 'Inter',sans-serif; cursor:pointer; white-space:nowrap; }
#sec-panel-operaciones .pz-guia svg{ width:18px; height:18px; flex:none; }
#sec-panel-operaciones .pz-guia:hover{ background:var(--blue-50); }
#sec-panel-operaciones .pz-guia:focus-visible{ outline:2px solid var(--blue-300); outline-offset:2px; }

/* ── estado general, curva y lecturas (608:1376) ── */
#sec-panel-operaciones .pz-top{ border-radius:12px; padding:16px; display:flex; align-items:center; justify-content:space-between; gap:33px;
  box-shadow:0 1px 2px rgba(16,24,40,.04), 0 4px 12px rgba(16,24,40,.05); }                               /* G09: sombra suave */
#sec-panel-operaciones .pz-estado{ flex:0 0 189px; display:flex; flex-direction:column; align-items:center; gap:15px; }   /* 608:1378 */
#sec-panel-operaciones .pz-h2{ font:600 16px/22px 'Inter',sans-serif; color:#4B5563; align-self:stretch; }             /* 608:1379 · sin token */
#sec-panel-operaciones .pz-estado .pz-h2{ text-align:center; }
#sec-panel-operaciones .pz-ring{ position:relative; width:149px; height:149px; flex:none; }                              /* 608:1380 */
#sec-panel-operaciones .pz-ring svg{ display:block; width:149px; height:149px; }
#sec-panel-operaciones .pz-ring-fondo{ stroke:#E5E7EB; }                                                                  /* sin token */
#sec-panel-operaciones .pz-ring-arco{ stroke:var(--orange-400); }
#sec-panel-operaciones .pz-ring-c{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.5px; }
#sec-panel-operaciones .pz-ring-pct{ font:800 23.79px/normal 'Inter',sans-serif; color:#1F2937; }                      /* 608:1385 · sin token */
#sec-panel-operaciones .pz-ring-pct small{ font-size:.7em; font-weight:700; }
#sec-panel-operaciones .pz-ring-cap{ font:600 11.9px/normal 'Inter',sans-serif; color:var(--gray-6); }                 /* 608:1386 · G01 */
#sec-panel-operaciones .pz-corte{ display:flex; flex-direction:column; align-items:center; gap:4px; text-align:center; } /* 608:1387 */
#sec-panel-operaciones .pz-corte-f{ font:800 16px/normal 'Inter',sans-serif; color:#1F2937; white-space:nowrap; }      /* 608:1388 · sin token */
#sec-panel-operaciones .pz-corte-k{ font-weight:500; color:var(--gray-6); }
#sec-panel-operaciones .pz-corte-p{ font:400 12px/normal 'Inter',sans-serif; color:#4B5563; }                          /* 608:1389 · textoDelPlazo */
#sec-panel-operaciones .pz-corte-p b{ font-weight:600; }
/* rayas punteadas de 2 y 2 (608:1390 · 608:1600) */
#sec-panel-operaciones .pz-vl{ flex:none; align-self:center; width:1px; height:216px;
  background:linear-gradient(var(--gray-4) 50%,transparent 0) 0 0/1px 4px repeat-y; }
#sec-panel-operaciones .pz-curva{ flex:1 1 438px; min-width:0; min-height:241px; display:flex; flex-direction:column; gap:4px; align-self:stretch; }   /* 608:1391 */
#sec-panel-operaciones .pz-curva-h{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:3px; }
#sec-panel-operaciones .pz-curva-h .pz-h2{ align-self:auto; }
/* «Ver» de la curva: la lupa de main (resumenEvoOpen('curva')), como pastilla secundaria */
#sec-panel-operaciones .pz-ver{ display:inline-flex; align-items:center; gap:6px; flex:none; padding:6px 12px; border-radius:999px;
  border:1px solid var(--blue-75); background:var(--gray-1); color:var(--blue-300); font:600 12px/normal 'Inter',sans-serif; cursor:pointer; }
#sec-panel-operaciones .pz-ver svg{ width:16px; height:16px; }
#sec-panel-operaciones .pz-ver:hover{ background:var(--blue-50); }
#sec-panel-operaciones .pz-ver:focus-visible{ outline:2px solid var(--blue-300); outline-offset:2px; }
#sec-panel-operaciones .pz-curva-cmp{ font:400 12px/normal 'Inter',sans-serif; color:#4B5563; font-variant-numeric:tabular-nums; }   /* 608:1395 · sin token */
#sec-panel-operaciones .pz-curva-cmp b{ font-weight:700; color:var(--gray-7); }
#sec-panel-operaciones .pz-curva-cmp b.bad,#sec-panel-operaciones .pz-curva-cmp b.warn,#sec-panel-operaciones .pz-curva-cmp b.ok{ font-size:11px; font-weight:600; }   /* 608:1396 */
#sec-panel-operaciones .pz-curva-cmp b.bad{ color:#F92F2F; }                                                            /* sin token */
#sec-panel-operaciones .pz-curva-cmp b.warn{ color:var(--orange-400); }
#sec-panel-operaciones .pz-curva-cmp b.ok{ color:var(--green-400); }
#sec-panel-operaciones .pz-curva-svg{ min-height:152px; position:relative; }
#sec-panel-operaciones .pz-curva-svg svg{ display:block; width:100%; height:auto; max-height:none; }
/* G04: los rótulos de ejes los escribe renderRCurvaS (compartida con el Resumen) con font-size="8" y
   "8.5" como atributo; el CSS gana al atributo de presentación sin tocar la función */
#sec-panel-operaciones .pz-curva-svg svg text{ font-size:10px; fill:var(--gray-6); }
#sec-panel-operaciones .pz-curva-svg .rhc-vacio{ font-size:12px; color:var(--gray-6); padding:14px 0; }
#sec-panel-operaciones .pz-leg{ display:flex; gap:8px; align-items:center; }                                           /* 608:1398 */
#sec-panel-operaciones .pz-leg span{ display:inline-flex; align-items:center; gap:2px; font:600 12px/22px 'Inter',sans-serif; color:var(--gray-6); }
#sec-panel-operaciones .pz-leg i{ display:inline-block; width:10.48px; height:1.95px; border-radius:10px; }            /* 608:1400 */
#sec-panel-operaciones .pz-leg i.lg-real{ background:var(--orange-400); }
#sec-panel-operaciones .pz-leg i.lg-prog{ background:var(--blue-300); }
#sec-panel-operaciones .rhc-tip{ position:absolute; z-index:5; pointer-events:none; background:rgba(38,38,38,.94); color:var(--gray-1); border-radius:6px; padding:8px 10px; font:400 12px/16px 'Inter',sans-serif; white-space:nowrap; box-shadow:0 4px 12px rgba(0,0,0,.2); }
#sec-panel-operaciones .rhc-tip b{ display:block; font-weight:700; margin-bottom:2px; }
#sec-panel-operaciones .rhc-tip i{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px; vertical-align:-1px; border:1.5px solid var(--gray-1); }
#sec-panel-operaciones .rhc-guia{ position:absolute; z-index:4; pointer-events:none; width:0; border-left:1px dashed var(--gray-5); }
#sec-panel-operaciones .pz-lect{ flex:0 0 332px; display:flex; flex-direction:column; gap:10px; }                       /* 608:1406 */
#sec-panel-operaciones .pz-lec{ display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%;
  padding:0; border:0; background:none; text-align:left; font:inherit; color:inherit; cursor:pointer; }
#sec-panel-operaciones .pz-lec-t{ display:flex; flex-direction:column; gap:6px; min-width:0; }                          /* 608:1419 */
#sec-panel-operaciones .pz-lec-l{ font:700 11px/normal 'Inter',sans-serif; color:var(--gray-6); }                      /* 608:1420 · G01 · G03 */
#sec-panel-operaciones .pz-lec-v{ font:800 20px/normal 'Inter',sans-serif; color:#1F2937; white-space:nowrap; }         /* 608:1433 · sin token */
#sec-panel-operaciones .pz-lec-v small{ font-size:20px; font-weight:500; }                                              /* «días», «del CD» (608:1411) */
#sec-panel-operaciones .pz-lec-v.am{ color:var(--orange-400); }
#sec-panel-operaciones .pz-lec-v.ve{ color:var(--green-400); }
#sec-panel-operaciones .pz-lec-v.ro{ color:#EF4444; }                                                                   /* sin token */
#sec-panel-operaciones .pz-lec-s{ font:600 12px/normal 'Inter',sans-serif; color:#1F2937; }                             /* 608:1412 · sin token */
#sec-panel-operaciones .pz-lec > svg{ flex:none; width:20px; height:20px; color:var(--gray-6); }                        /* 608:1415: chevron a la derecha (Heroicon) */
#sec-panel-operaciones .pz-lec:hover .pz-lec-l{ color:var(--blue-300); }
#sec-panel-operaciones .pz-lec:focus-visible{ outline:2px solid var(--blue-300); outline-offset:4px; border-radius:6px; }
#sec-panel-operaciones .pz-hl{ display:block; height:1px; background:linear-gradient(90deg,var(--gray-3) 50%,transparent 0) 0 0/4px 1px repeat-x; }   /* 608:1417 */
/* Aviso «sin corte» (main 2aa81bf): la pieza de aviso informativo del sistema (crof-aviso v-info) */
#sec-panel-operaciones .pz-aviso{ display:flex; align-items:flex-start; gap:12px; padding:16px; border-radius:12px;
  background:var(--blue-50); border:1px solid var(--gray-1); color:var(--blue-400); }
#sec-panel-operaciones .pz-aviso svg{ flex:none; width:18px; height:18px; }
#sec-panel-operaciones .pz-aviso p{ margin:0; font:400 12px/18px 'Inter',sans-serif; color:inherit; }
#sec-panel-operaciones .pz-aviso b{ display:block; margin:0 0 6px; font-weight:700; }
/* Sin corte: se quedan la cabecera, el estado (anillo en blanco, plazo de la ficha) y el aviso.
   Lo que depende de una semana no se enseña vacío ni con lo de la obra anterior. */
#sec-panel-operaciones .pz.pz-sin-corte .pz-curva,
#sec-panel-operaciones .pz.pz-sin-corte .pz-top > .pz-vl:first-of-type,
#sec-panel-operaciones .pz.pz-sin-corte > .pz-sec,
#sec-panel-operaciones .pz.pz-sin-corte > .pz-prog{ display:none; }
#sec-panel-operaciones .pz.pz-sin-corte .pz-lect{ flex:1 1 auto; }

/* ── secciones con tarjeta (608:1439 · 608:1586 · 608:1628) ── */
#sec-panel-operaciones .pz-sec{ box-shadow:inset 0 0 0 1px var(--blue-50), 0 1px 2px rgba(16,24,40,.04), 0 4px 12px rgba(16,24,40,.05);   /* G09 */
  padding:24px; display:flex; flex-direction:column; gap:16px; }
#sec-panel-operaciones .pz-sec-mo{ gap:20px; }                                                                           /* 608:1586 */
#sec-panel-operaciones .pz-sec-h{ display:flex; align-items:center; justify-content:space-between; gap:12px; }           /* 608:1440 */
#sec-panel-operaciones .pz-sec-h h3{ margin:0; font:700 16px/normal 'Inter',sans-serif; color:var(--gray-7); }          /* 608:1442 */
#sec-panel-operaciones .pz-sub{ font:400 12px/normal 'Inter',sans-serif; color:var(--gray-6); }                         /* G12: la descripción de main («consumo, ratio MO/CD…») */
#sec-panel-operaciones .pz-orden{ font:700 12px/normal 'Inter',sans-serif; color:var(--blue-300); white-space:nowrap; } /* 608:1444 · G01 */
#sec-panel-operaciones .pz-vacio{ padding:14px 0; font:400 13px/1.5 'Inter',sans-serif; color:var(--gray-6); }

/* ── Avance por frente = Resumen › Frentes de obra (G08 · 680:8178) ── */
#sec-panel-operaciones .rz-fr-stat{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font:400 12px/15px 'Inter',sans-serif; }   /* 680:8182 */
#sec-panel-operaciones .rz-fr-stat i{ font-style:normal; color:var(--gray-5); }
#sec-panel-operaciones .rz-fr-stat b{ font-weight:700; }
#sec-panel-operaciones .rz-fr-stat .t-n{ color:#1F2937; }                                                         /* 680:8183 · sin token */
#sec-panel-operaciones .rz-fr-stat .t-av{ color:#1073E5; }                                                        /* 680:8185 · sin token */
#sec-panel-operaciones .rz-fr-stat .t-ce{ color:var(--green-400); }                                               /* 680:8187 */
#sec-panel-operaciones .rz-fr-stat .t-pr{ color:#4B5563; }                                                        /* 680:8189 · sin token */
#sec-panel-operaciones .rz-fr-cards{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; }     /* 680:8194 */
#sec-panel-operaciones .rz-fr{ display:flex; flex-direction:column; gap:10px; padding:16px; border-radius:12px; min-height:126px; min-width:0;   /* 680:8195 */
  border:0; text-align:left; font:inherit; color:inherit; cursor:pointer; }
#sec-panel-operaciones .rz-fr.cerrado{ background:var(--green-50); }
#sec-panel-operaciones .rz-fr.avance{ background:var(--blue-50); }                                                /* 680:8216 */
#sec-panel-operaciones .rz-fr:hover{ box-shadow:inset 0 0 0 1px var(--blue-75); }
#sec-panel-operaciones .rz-fr:focus-visible{ outline:2px solid var(--blue-300); outline-offset:2px; }
#sec-panel-operaciones .rz-fr-top{ display:flex; align-items:center; gap:4px; flex-wrap:wrap; }                    /* 680:8196 */
#sec-panel-operaciones .rz-fr-top svg{ width:16px; height:16px; margin-left:auto; flex:none; color:var(--gray-6); }
#sec-panel-operaciones .rz-fr-n1{ font:700 10px/12px 'Inter',sans-serif; color:var(--gray-6); }                   /* 680:8197 · G01 */
#sec-panel-operaciones .rz-fr-b{ padding:2px 6px; border-radius:4px; font:700 10px/12px 'Inter',sans-serif; }     /* 680:8198 · G01 */
#sec-panel-operaciones .rz-fr.cerrado .rz-fr-b{ background:var(--gray-1); color:var(--green-500); }
#sec-panel-operaciones .rz-fr.avance .rz-fr-b{ background:var(--gray-1); color:var(--blue-300); }                 /* 680:8219 */
#sec-panel-operaciones .rz-fr-pct{ font:800 28px/34px 'Inter',sans-serif; color:var(--gray-8); }                  /* 680:8200 */
#sec-panel-operaciones .rz-fr-nota{ font:400 10px/12px 'Inter',sans-serif; color:var(--gray-6); }                 /* 680:8201 */

/* tablas (adquisiciones): cabecera celeste de radio 6, filas de 12 arriba y abajo con filete */
#sec-panel-operaciones .pz-tabla{ display:flex; flex-direction:column; }
#sec-panel-operaciones .pz-tr{ display:grid; align-items:center; width:100%; padding:12px 0 11px; margin:0; border:0; border-bottom:1px solid var(--blue-50);
  background:none; text-align:left; font:inherit; color:inherit; }                                                        /* 608:1451 */
#sec-panel-operaciones .pz-tr:last-child{ border-bottom:0; padding-bottom:12px; }
#sec-panel-operaciones .pz-th{ padding:8px 0; background:var(--blue-50); border-radius:6px; border-bottom:0;              /* 608:1446 */
  font:700 11px/normal 'Inter',sans-serif; color:var(--gray-6); text-transform:none; }                                   /* G01 */
#sec-panel-operaciones .pz-ind{ display:flex; align-items:center; gap:8px; padding-left:12px; min-width:0;               /* 608:1452 */
  font:600 13px/normal 'Inter',sans-serif; color:var(--gray-7); white-space:nowrap; }
#sec-panel-operaciones .pz-ind i{ flex:none; width:8px; height:8px; border-radius:50%; }                                 /* 608:1453 */
#sec-panel-operaciones .pz-ind i.ve{ background:#22C55E; }                                                               /* sin token */
#sec-panel-operaciones .pz-ind i.am{ background:var(--blue-300); }
#sec-panel-operaciones .pz-ind i.ro{ background:#FF6D11; }                                                               /* 608:1666 · sin token */
#sec-panel-operaciones .pz-bar-t{ display:block; flex:none; width:180px; height:8px; border-radius:20px; background:var(--blue-50); overflow:hidden; }   /* 608:1456 */
#sec-panel-operaciones .pz-bar-t i{ display:block; height:100%; border-radius:20px; }
#sec-panel-operaciones .pz-bar-t i.cel{ background:var(--blue-200); }                                                    /* 608:1550 */
#sec-panel-operaciones .pz-bar-t i.gris{ background:var(--gray-4); }                                                     /* 608:1565 */
#sec-panel-operaciones .pz-bar-t i.nar{ background:var(--orange-400); }                                                  /* 608:1580 */
/* Hitos por estado (avance físico): la misma barra, con un tramo por estado. Lo «sin verificar» va HUECO: no está medido. */
#sec-panel-operaciones .pz-bar-apilada{ display:flex; }
#sec-panel-operaciones .pz-bar-apilada i{ flex:none; border-radius:0; }
#sec-panel-operaciones .pz-bar-apilada i.ve{ background:var(--green-400); }
#sec-panel-operaciones .pz-bar-apilada i.az{ background:var(--blue-200); }
#sec-panel-operaciones .pz-bar-apilada i.gr{ background:var(--gray-4); }
#sec-panel-operaciones .pz-bar-apilada i.sv{ background:transparent; box-shadow:inset 0 0 0 1px var(--gray-6); }   /* contorno: 5,7:1 contra el carril (con gray-5 eran 2,8:1) */
#sec-panel-operaciones .pz-k-v small{ font:600 12px/normal 'Inter',sans-serif; color:var(--gray-6); }                    /* «de 4 verificados» */

/* ── Hitos del contrato (avance físico): estado de cada hito y, lo sin verificar, por causa ── */
#sec-panel-operaciones .pz-hitos[hidden]{ display:none; }                                                                /* .pz-sec pone display:flex y pisaría el atributo */
#sec-panel-operaciones .pz-pill.az{ background:var(--blue-50); color:var(--blue-400); }                                  /* en curso: el azul de «en avance» */
#sec-panel-operaciones .pz-pill.sv{ background:transparent; color:var(--gray-6); box-shadow:inset 0 0 0 1px var(--gray-4); }   /* sin verificar: hueco, como su tramo de la barra */
#sec-panel-operaciones .pz-pill b{ font-weight:700; }
#sec-panel-operaciones .pz-hit-res{ display:flex; flex-wrap:wrap; gap:8px; }
#sec-panel-operaciones .pz-thit .pz-tr{ grid-template-columns:120px minmax(0,1fr) 130px minmax(0,1.7fr); column-gap:12px; }
#sec-panel-operaciones .pz-thit .pz-th > span:first-child{ padding-left:12px; }
#sec-panel-operaciones .pz-thit-e{ padding-left:12px; }
#sec-panel-operaciones .pz-thit-n{ font:600 13px/1.3 'Inter',sans-serif; color:var(--gray-7); min-width:0; }
#sec-panel-operaciones .pz-thit-f{ font:400 13px/1.3 'Inter',sans-serif; color:var(--gray-7); }
#sec-panel-operaciones .pz-thit-f.sin{ color:var(--gray-6); }
#sec-panel-operaciones .pz-thit-p{ font:400 12px/1.4 'Inter',sans-serif; color:var(--gray-6); min-width:0; padding-right:12px; }
#sec-panel-operaciones .pz-thit-p b{ font-weight:700; color:var(--gray-7); }
#sec-panel-operaciones .pz-thit-a{ display:block; margin-top:4px; font-weight:600; color:var(--blue-400); }
#sec-panel-operaciones .pz-thit-pl{ display:block; margin-top:4px; font-weight:600; color:var(--gray-7); }
#sec-panel-operaciones .pz-thit .pz-thit-g{ grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); margin-top:8px; padding:8px 12px; border-bottom:0; border-radius:6px; background:#F8FAFC; }   /* sin token, como .pz-mini */
#sec-panel-operaciones .pz-thit-gt{ font:700 12px/1.3 'Inter',sans-serif; color:var(--gray-7); }
#sec-panel-operaciones .pz-thit-gt i{ margin-left:8px; font-style:normal; font-weight:400; color:var(--gray-6); }
#sec-panel-operaciones .pz-thit-ga{ font:600 12px/1.4 'Inter',sans-serif; color:var(--blue-400); }
#sec-panel-operaciones .pz-thit-ga:empty{ display:none; }
#sec-panel-operaciones .pz-k-bar b{ font:700 13px/normal 'Inter',sans-serif; color:var(--gray-7); white-space:nowrap; }  /* 608:1458 */
#sec-panel-operaciones .pz-pill{ display:inline-block; vertical-align:top; padding:4px 8px; border-radius:4px; font:700 11px/13px 'Inter',sans-serif; font-style:normal; white-space:nowrap; }   /* 608:1460 */
#sec-panel-operaciones .pz-pill.ve{ background:#EBF7EE; color:var(--green-500); }                                        /* fondo sin token */
#sec-panel-operaciones .pz-pill.am{ background:#FEF3C7; color:#B45309; }                                                  /* 608:1649 · sin token */
#sec-panel-operaciones .pz-pill.ro,#sec-panel-operaciones .pz-pill.rojo{ background:#FEE2E2; color:#991B1B; }            /* 608:1675/1539 · sin token */
#sec-panel-operaciones .pz-pill.gris{ background:#F0F0F1; color:var(--gray-6); }                                         /* 608:1554 · fondo sin token */
#sec-panel-operaciones .pz-pill.nar{ background:#FFF4E6; color:var(--orange-400); }                                      /* 608:1584 · fondo sin token */
#sec-panel-operaciones .pz-tadq .pz-tr{ grid-template-columns:220px 160px minmax(0,1fr) 170px 130px; }                   /* 608:1638 */
#sec-panel-operaciones .pz-tadq .pz-th > span:first-child{ padding-left:15px; }                                          /* 608:1632 */
#sec-panel-operaciones .pz-res{ display:flex; align-items:center; gap:8px; }                                             /* 608:1642 */
#sec-panel-operaciones .pz-res .pz-bar-t{ width:80px; height:6px; border-radius:4px; }                                   /* 608:1643 */
#sec-panel-operaciones .pz-res .pz-bar-t i{ border-radius:0; background:var(--blue-300); }
#sec-panel-operaciones .pz-res b{ font:600 12px/normal 'Inter',sans-serif; color:var(--gray-7); }                       /* 608:1645 */
#sec-panel-operaciones .pz-ctx{ font:400 13px/normal 'Inter',sans-serif; color:var(--gray-6); min-width:0; padding-right:12px; }   /* 608:1646 · G03 */
#sec-panel-operaciones .pz-meta-t{ font:400 13px/normal 'Inter',sans-serif; color:var(--gray-7); }                      /* 608:1647 */

/* lupa del evolutivo (main: resumenEvoOpen) junto al rótulo */
#sec-panel-operaciones .pz-lupa{ display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; margin-left:6px; padding:0;
  border:0; border-radius:50%; background:none; color:var(--blue-300); cursor:pointer; vertical-align:middle; flex:none; }
#sec-panel-operaciones .pz-lupa svg{ width:16px; height:16px; }
#sec-panel-operaciones .pz-lupa:hover{ background:var(--blue-50); }
#sec-panel-operaciones .pz-lupa:focus-visible{ outline:2px solid var(--blue-300); outline-offset:1px; }

/* ── programación y plazo (608:1521): cuatro tarjetas teñidas ── */
#sec-panel-operaciones .pz-prog{ padding:16px 20px 20px; display:flex; flex-direction:column; gap:12px;
  box-shadow:0 1px 2px rgba(16,24,40,.04), 0 4px 12px rgba(16,24,40,.05); }
#sec-panel-operaciones .pz-prog-h{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }      /* 608:1522 */
#sec-panel-operaciones .pz-prog-h h3{ margin:0; font:700 16px/normal 'Inter',sans-serif; color:#1F2937; }              /* 608:1523 · sin token */
#sec-panel-operaciones .pz-prog-h span{ font:400 12px/normal 'Inter',sans-serif; color:var(--gray-6); }                /* 608:1524 */
#sec-panel-operaciones .pz-kpis{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }               /* 608:1525 */
/* Las cuatro tarjetas son partes de la tarjeta de sección (filete, sin sombra): G11 */
#sec-panel-operaciones .pz-k{ display:flex; flex-direction:column; gap:12px; min-width:0; min-height:256px; padding:20px;
  box-shadow:inset 0 0 0 1px var(--blue-50); border-radius:12px; }                                                        /* 608:1526 */
#sec-panel-operaciones .pz-k-rojo{ background:linear-gradient(180deg,#FEF3F3,var(--gray-1)); }                          /* sin token */
#sec-panel-operaciones .pz-k-azul{ background:linear-gradient(180deg,#F0FAFF,var(--gray-1)); }                          /* 608:1541 · sin token */
#sec-panel-operaciones .pz-k-gris{ background:linear-gradient(180deg,#F4F4F4,var(--gray-1)); }                          /* 608:1556 · sin token */
#sec-panel-operaciones .pz-k-nar{ background:linear-gradient(180deg,#FFFAEF,var(--gray-1)); }                           /* 608:1571 · sin token */
#sec-panel-operaciones .pz-k-l{ display:flex; align-items:center; font:700 11px/normal 'Inter',sans-serif; color:var(--gray-6); }   /* 608:1528 · G01 · G03 */
#sec-panel-operaciones .pz-k-v{ font:800 32px/normal 'Inter',sans-serif; color:#1F2937; white-space:nowrap; }          /* 608:1529 · sin token */
#sec-panel-operaciones .pz-k-s{ font:400 12px/normal 'Inter',sans-serif; color:#4B5563; }                              /* 608:1530 · sin token */
#sec-panel-operaciones .pz-k-d{ font:600 11px/normal 'Inter',sans-serif; color:var(--gray-6); }                        /* 608:1532 */
#sec-panel-operaciones .pz-k-d.up{ color:var(--green-400); }
#sec-panel-operaciones .pz-k-d.down{ color:#DC2626; }                                                                   /* sin token */
#sec-panel-operaciones .pz-k-d.az{ color:var(--blue-300); }
#sec-panel-operaciones .pz-k-d.nar{ color:var(--orange-400); }
#sec-panel-operaciones .pz-k-chart{ display:block; width:100%; height:60px; }                                            /* 608:1533 */
#sec-panel-operaciones .pz-k-chart .pz-linea{ stroke:#1073E5; }                                                          /* sin token */
#sec-panel-operaciones .pz-k-nota{ font:400 12px/1.4 'Inter',sans-serif; color:var(--gray-6); }
#sec-panel-operaciones .pz-k-bar{ display:flex; align-items:center; gap:12px; }                                          /* 608:1548 */
#sec-panel-operaciones .pz-k-bar .pz-bar-t{ flex:1 1 auto; width:auto; }
#sec-panel-operaciones .pz-k-f{ margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:8px; }   /* 608:1537 */
#sec-panel-operaciones .pz-k-f span{ font:400 11px/normal 'Inter',sans-serif; color:var(--gray-6); }                   /* 608:1553 · G03 */
#sec-panel-operaciones .pz-k-f .pz-pill{ flex:none; padding:2px 6px; font:600 10px/normal 'Inter',sans-serif; }          /* 608:1539 */

/* ── mano de obra y personal (608:1589): tres columnas con rayas punteadas ── */
#sec-panel-operaciones .pz-mo{ display:flex; gap:24px; align-items:stretch; }
#sec-panel-operaciones .pz-mo .pz-vl{ align-self:stretch; height:auto; background-image:linear-gradient(var(--gray-3) 50%,transparent 0); }   /* 608:1600 */
#sec-panel-operaciones .pz-mo-c{ display:flex; flex-direction:column; gap:16px; min-width:0; }                          /* 608:1590 */
#sec-panel-operaciones .pz-mo-1{ flex:437 1 0; }
#sec-panel-operaciones .pz-mo-2{ flex:291 1 0; }
#sec-panel-operaciones .pz-mo-3{ flex:243 1 0; display:flex; flex-direction:column; gap:16px; min-width:0; }            /* 608:1619 */
#sec-panel-operaciones .pz-mo-tx{ display:flex; flex-direction:column; gap:4px; }                                        /* 608:1591 */
#sec-panel-operaciones .pz-mo-l{ display:flex; align-items:center; font:700 11px/normal 'Inter',sans-serif; color:var(--gray-6); }   /* 608:1592 · G01 · G03 */
#sec-panel-operaciones .pz-mo-v{ font:800 28px/normal 'Inter',sans-serif; color:var(--gray-7); }                       /* 608:1593 */
#sec-panel-operaciones .pz-mo-v small{ font-size:.6em; font-weight:700; }
#sec-panel-operaciones .pz-mo-s{ font:400 12px/normal 'Inter',sans-serif; color:var(--gray-6); }                       /* 608:1594 */
#sec-panel-operaciones .pz-mo-s b{ font-weight:700; color:var(--gray-7); }
#sec-panel-operaciones .pz-mo-d{ font:700 12px/normal 'Inter',sans-serif; color:var(--gray-6); }                       /* 608:1595 */
#sec-panel-operaciones .pz-mo-d.up{ color:var(--green-400); }
#sec-panel-operaciones .pz-mo-d.down{ color:#DC2626; }                                                                  /* sin token */
#sec-panel-operaciones .pz-mo-c > .pz-k-f{ margin-top:auto; padding-top:12px; border-top:1px solid var(--blue-50); }
#sec-panel-operaciones .pz-area{ display:block; width:100%; height:80px; }                                              /* 608:1596 */
#sec-panel-operaciones .pz-area-base{ stroke:var(--blue-50); }
#sec-panel-operaciones .pz-area-relleno{ fill:var(--blue-50); fill-opacity:.6; }
#sec-panel-operaciones .pz-area .pz-linea{ stroke:var(--blue-300); }
#sec-panel-operaciones .pz-pax{ display:flex; align-items:flex-end; gap:6px; height:80px; }                             /* 608:1607 */
#sec-panel-operaciones .pz-pax i{ flex:1 1 0; min-width:0; border-radius:4px; background:var(--blue-75); }
#sec-panel-operaciones .pz-pax i:last-child{ background:var(--blue-300); }                                               /* la semana elegida resaltada, como el Resumen */
#sec-panel-operaciones .pz-mini{ display:flex; flex-direction:column; gap:4px; padding:12px; border-radius:12px; background:#F8FAFC; }   /* 608:1620 · sin token */
#sec-panel-operaciones .pz-mini-v{ font:800 18px/normal 'Inter',sans-serif; color:var(--gray-7); }                     /* 608:1622 */
#sec-panel-operaciones .pz-mini-s{ font:400 11px/normal 'Inter',sans-serif; color:var(--gray-6); }                     /* 608:1623 */

/* ── angosto ── */
@media (max-width:1250px){
  /* .pz-cab/.pz-meta: flex-wrap+order+flex-basis se generalizaron a la regla base
     el 01/10 (ya no son exclusivos de este breakpoint); lo que sigue angosto. */
  #sec-panel-operaciones .pz-top{ flex-wrap:wrap; align-items:flex-start; }
  #sec-panel-operaciones .pz-top > .pz-vl{ display:none; }
  #sec-panel-operaciones .pz-curva{ flex:1 1 320px; }
  #sec-panel-operaciones .pz-lect{ flex:1 1 100%; }
  #sec-panel-operaciones .pz-kpis{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  #sec-panel-operaciones .rz-fr-cards{ grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
  #sec-panel-operaciones .pz-tabla{ overflow-x:auto; }
  #sec-panel-operaciones .pz-tadq .pz-tr{ min-width:900px; }
  #sec-panel-operaciones .pz-thit .pz-tr{ min-width:760px; }
}
@media (max-width:700px){
  #sec-panel-operaciones .pz-mo{ flex-direction:column; }
  #sec-panel-operaciones .pz-mo .pz-vl{ display:none; }
  #sec-panel-operaciones .pz-mo-1,#sec-panel-operaciones .pz-mo-2,#sec-panel-operaciones .pz-mo-3{ flex:none; width:100%; }
  #sec-panel-operaciones .pz-estado{ flex:1 1 100%; }
  #sec-panel-operaciones .pz-sec,#sec-panel-operaciones .pz-top,#sec-panel-operaciones .pz-prog{ padding:16px; }
  #sec-panel-operaciones .pz-sec-h,#sec-panel-operaciones .pz-prog-h{ flex-wrap:wrap; }   /* la descripción baja a su línea */
  #sec-panel-operaciones .pz-orden{ white-space:normal; }
  /* hitos: en el teléfono cada hito es un bloque (estado, nombre, fecha, por qué) y no una fila de cuatro columnas */
  #sec-panel-operaciones .pz-thit .pz-th{ display:none; }
  #sec-panel-operaciones .pz-thit .pz-tr{ grid-template-columns:minmax(0,1fr); min-width:0; row-gap:4px; padding:12px 0; }
  #sec-panel-operaciones .pz-thit-e{ padding-left:0; }
  #sec-panel-operaciones .pz-thit .pz-thit-g{ grid-template-columns:minmax(0,1fr); padding:8px 12px; }
  #sec-panel-operaciones .pz-meta{ gap:10px 16px; }
  #sec-panel-operaciones .pz-dl,#sec-panel-operaciones .pz-guia{ width:100%; justify-content:center; }
  #sec-panel-operaciones .pz-guia{ margin:0; }                    /* G05 · M07: principal a todo el ancho */
  /* M04: tarjetas repetidas en carrusel horizontal; la tarjeta mide lo que su contenido */
  #sec-panel-operaciones .rz-fr-cards,
  #sec-panel-operaciones .pz-kpis{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:12px; padding-bottom:6px; }
  #sec-panel-operaciones .rz-fr-cards > .rz-fr{ flex:0 0 72%; scroll-snap-align:start; }
  #sec-panel-operaciones .pz-kpis > .pz-k{ flex:0 0 84%; scroll-snap-align:start; min-height:0; }
  /* G04: ≥ 12 px en el teléfono */
  #sec-panel-operaciones .pz-kick,#sec-panel-operaciones .pz-m-l,#sec-panel-operaciones .pz-lec-l,
  #sec-panel-operaciones .pz-k-l,#sec-panel-operaciones .pz-k-d,#sec-panel-operaciones .pz-k-f span,
  #sec-panel-operaciones .pz-k-f .pz-pill,#sec-panel-operaciones .pz-pill,#sec-panel-operaciones .pz-mo-l,
  #sec-panel-operaciones .pz-mini-s,#sec-panel-operaciones .pz-th,#sec-panel-operaciones .rz-fr-n1,
  #sec-panel-operaciones .rz-fr-b,#sec-panel-operaciones .rz-fr-nota,#sec-panel-operaciones .pz-ring-cap,
  #sec-panel-operaciones .pz-curva-cmp b.bad,#sec-panel-operaciones .pz-curva-cmp b.warn,#sec-panel-operaciones .pz-curva-cmp b.ok{ font-size:12px; line-height:1.35; }
  /* la marca «de muestra» la escribe marcaDeMuestra() (compartida) con font-size:10px en línea:
     solo !important la sube a 12 aquí, sin tocar la función */
  #sec-panel-operaciones .rz-fr-stat > span[title],#sec-panel-operaciones .pz-ctx > span[title]{ font-size:12px !important; }
  #sec-panel-operaciones .pz-curva-svg svg text{ font-size:12px; }
}
/* Toque en el teléfono: la lupa es un botón de solo icono, y la capa móvil (movil/tactil.js +
   [data-mv-icono]) le da su círculo y un ::after de 44 × 44 invisible. No se estira aquí. */
/* «Descargar resumen» → imprimir sólo el panel */
@media print{
  body.po-imprimiendo *{ visibility:hidden!important; }
  body.po-imprimiendo #sec-panel-operaciones,body.po-imprimiendo #sec-panel-operaciones *{ visibility:visible!important; }
  body.po-imprimiendo #sec-panel-operaciones{ position:absolute!important; left:0; top:0; width:100%!important; }
  body.po-imprimiendo,body.po-imprimiendo html,body.po-imprimiendo .app,body.po-imprimiendo .content-area,body.po-imprimiendo .scroll-area{
    overflow:visible!important; height:auto!important; max-height:none!important;
  }
  body.po-imprimiendo #sec-panel-operaciones .pz-dl,body.po-imprimiendo #sec-panel-operaciones .pz-ver,
  body.po-imprimiendo #sec-panel-operaciones .pz-lupa{ display:none!important; }
  body.po-imprimiendo #sec-panel-operaciones .pz-card{ break-inside:avoid; box-shadow:inset 0 0 0 1px var(--blue-50)!important; }
  body.po-imprimiendo #sec-panel-operaciones .pz-hitos{ break-inside:auto; }        /* una tabla larga se parte entre páginas, no se corta */
  body.po-imprimiendo #sec-panel-operaciones .pz-thit .pz-tr{ break-inside:avoid; }
}
