/* Pulse by Strategik · Análisis de rentabilidad (modulos/analisis.js). Todo va bajo .pa para no tocar el resto de la app. */
main:has(.pa) { max-width: 1360px; }

.pa {
  --pa-tinta: #15212b; --pa-tinta-2: #4a5966; --pa-tinta-3: #6b7a86;
  --pa-borde: #d5dde3; --pa-borde-suave: #e7ecf0; --pa-fondo: #f5f7f9; --pa-superficie: #fff; --pa-hover: #f3f6fe;
  --pa-marca: #2c5ff9; --pa-marca-osc: #1d47c9; --pa-marca-claro: #eaf0ff;
  /* Series (validadas con el comprobador de paletas: azul/naranja separables con daltonismo) */
  --pa-ing: #2c5ff9; --pa-cos: #eb6834; --pa-prev: #4a5966; --pa-pres: #dfe5ea;
  --pa-pos: #2c5ff9; --pa-neg: #c4321f;
  /* Estado (reservado: siempre con icono y texto) */
  --pa-ok: #2e7d4f; --pa-ok-claro: #e6f3ea; --pa-av: #9a6200; --pa-av-claro: #fdf2dc; --pa-mal: #b3261e; --pa-mal-claro: #fbe9e7;
  /* Rampa secuencial (una tinta, de claro a oscuro) */
  --pa-s1: #eaf0ff; --pa-s2: #c9d7fe; --pa-s3: #98b2fc; --pa-s4: #6187fa; --pa-s5: #2c5ff9;
  --pa-g1: #f1f3f5; --pa-g2: #e1e6ea; --pa-g3: #c8d0d7; --pa-g4: #a9b5bf; --pa-g5: #8a98a4;
  color: var(--pa-tinta);
  font-variant-numeric: tabular-nums;
}
.pa *, .pa *::before, .pa *::after { box-sizing: border-box; }
:where(.pa) button { min-height: 0; width: auto; font: inherit; padding: 0; text-align: inherit; }
:where(.pa) label { margin: 0; font-weight: 400; }
:where(.pa) input, :where(.pa) select { min-height: 0; }
.pa h1 { font-size: 26px; letter-spacing: -0.01em; margin: 0; line-height: 1.15; }
.pa h2 { font-size: 16px; margin: 0; line-height: 1.3; }
.pa-muted { color: var(--pa-tinta-3); }
.pa-peq { font-size: 13px; }
.pa-txt-malo { color: var(--pa-mal) !important; }
.pa-oculto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Botones */
.pa-btn { border-radius: 8px; padding: 9px 14px; font-weight: 600; font-size: 14px; cursor: pointer; border: 1px solid var(--pa-borde); background: var(--pa-superficie); color: var(--pa-tinta); line-height: 1.2; }
.pa-btn-pri { background: var(--pa-marca); border-color: var(--pa-marca); color: #fff; }
.pa-btn-pri:hover { background: var(--pa-marca-osc); }
.pa-btn-sec:hover { background: var(--pa-hover); border-color: #b9c6d0; }
.pa-btn-peq { padding: 6px 10px; font-size: 13px; font-weight: 500; }
.pa button:focus-visible, .pa [tabindex]:focus-visible, .pa input:focus-visible, .pa select:focus-visible, .pa summary:focus-visible { outline: 3px solid #7fa2fb; outline-offset: 2px; }

/* Cabecera */
.pa-cab { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px 20px; flex-wrap: wrap; margin: 4px 0 14px; }
.pa-alcance { margin: 4px 0 0; color: var(--pa-tinta-2); font-size: 14px; }
.pa-acciones { display: flex; gap: 8px; align-items: center; }
.pa-menu-desc { position: relative; }
.pa-nota-manager, .pa-incidencia { font-size: 14px; line-height: 1.5; margin: 0 0 12px; padding: 10px 14px; border-radius: 8px; background: var(--pa-marca-claro); border: 1px solid #cfdcfd; }
.pa-incidencia { background: var(--pa-av-claro); border-color: #efd9a8; }
.pa-tag-ajeno { display: inline-block; font-size: 11px; font-weight: 600; line-height: 1; padding: 3px 6px; border-radius: 4px; background: #fff; color: #6a4c00; border: 1px dashed #c69a2e; vertical-align: 1px; white-space: nowrap; }

/* Filtros */
.pa-filtros { background: var(--pa-superficie); border: 1px solid var(--pa-borde); border-radius: 12px; padding: 12px 14px; margin-bottom: 14px; display: grid; gap: 10px; }
.pa-filtros > *, .pa-filtros-cuerpo > *, .pa-periodo > *, .pa-panel > * { min-width: 0; }
.pa-periodo { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; }
.pa-seg { max-width: 100%; display: inline-flex; flex-wrap: wrap; background: var(--pa-fondo); border: 1px solid var(--pa-borde); border-radius: 10px; padding: 3px; gap: 2px; }
.pa-seg button { border: 0; background: transparent; border-radius: 7px; padding: 6px 11px; font-size: 14px; color: var(--pa-tinta-2); cursor: pointer; white-space: nowrap; }
.pa-seg button:hover { color: var(--pa-tinta); background: #fff; }
.pa-seg button[aria-pressed="true"] { background: #fff; color: var(--pa-marca-osc); font-weight: 600; box-shadow: 0 0 0 1px var(--pa-borde), 0 1px 2px rgba(21,33,43,.08); }
.pa-fechas { display: flex; gap: 10px; align-items: center; opacity: .75; }
.pa-fechas.pa-fechas-act { opacity: 1; }
.pa-fechas label { display: flex; align-items: center; gap: 6px; font-size: 14px; color: var(--pa-tinta-2); }
.pa-fechas input { width: auto; padding: 5px 8px; border-radius: 7px; font-size: 14px; border: 1px solid var(--pa-borde); }
.pa-dimfiltros { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.pa-filtro { position: relative; }
.pa-btn-filtro { display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--pa-borde); background: #fff; border-radius: 8px; padding: 7px 10px 7px 12px; font-size: 14px; cursor: pointer; color: var(--pa-tinta); }
.pa-btn-filtro:hover { border-color: #aebbc6; background: var(--pa-hover); }
.pa-btn-filtro.pa-activo { border-color: var(--pa-marca); background: var(--pa-marca-claro); color: var(--pa-marca-osc); font-weight: 600; }
.pa-cuenta:not(:empty) { background: var(--pa-marca); color: #fff; border-radius: 999px; font-size: 12px; padding: 1px 7px; margin-left: 2px; }
.pa-caret { width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid currentColor; margin-left: 4px; opacity: .6; }
.pa-interruptor { display: inline-flex !important; align-items: center; gap: 8px; font-size: 14px; color: var(--pa-tinta-2); margin-left: 4px !important; cursor: pointer; }
.pa-interruptor input { width: 18px; height: 18px; margin: 0; accent-color: var(--pa-marca); }
.pa-pop { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; min-width: 280px; max-width: min(380px, calc(100vw - 32px)); background: #fff; border: 1px solid var(--pa-borde); border-radius: 10px; box-shadow: 0 12px 32px rgba(21,33,43,.16); padding: 8px; }
.pa-pop-der { left: auto; right: 0; }
.pa-pop[hidden] { display: none; }
.pa-buscar { width: 100%; padding: 7px 10px; border: 1px solid var(--pa-borde); border-radius: 7px; margin-bottom: 6px; font-size: 14px; }
.pa-pop-lista { max-height: 300px; overflow-y: auto; }
.pa-op { display: flex !important; gap: 10px; align-items: flex-start; padding: 7px 8px; border-radius: 6px; cursor: pointer; font-size: 14px; }
.pa-op:hover { background: var(--pa-hover); }
.pa-op input { width: 17px; height: 17px; margin: 2px 0 0; flex: none; accent-color: var(--pa-marca); }
.pa-op small { display: block; color: var(--pa-tinta-3); font-size: 12px; }
.pa-pop-pie { display: flex; justify-content: space-between; gap: 8px; border-top: 1px solid var(--pa-borde-suave); padding-top: 8px; margin-top: 6px; }
#pa-desc-lista { width: 320px; padding: 6px; }
#pa-desc-lista button { display: block; width: 100%; text-align: left; border: 0; background: none; border-radius: 7px; padding: 9px 10px; cursor: pointer; }
#pa-desc-lista button:hover, #pa-desc-lista button:focus-visible { background: var(--pa-hover); }
#pa-desc-lista b { display: block; font-size: 14px; }
#pa-desc-lista span { display: block; font-size: 13px; color: var(--pa-tinta-3); line-height: 1.35; }
.pa-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 28px; }
.pa-chip { display: inline-flex; align-items: center; gap: 4px; background: var(--pa-fondo); border: 1px solid var(--pa-borde); border-radius: 999px; padding: 3px 4px 3px 11px; font-size: 13px; }
.pa-chip-t { color: var(--pa-tinta-3); }
.pa-chip button { border: 0; background: transparent; border-radius: 50%; width: 22px; height: 22px; line-height: 20px; font-size: 16px; color: var(--pa-tinta-2); cursor: pointer; padding: 0; }
.pa-chip button:hover { background: #dfe6ec; color: var(--pa-tinta); }
.pa-chip-periodo { background: var(--pa-marca-claro); border-color: #cfdcfd; padding-right: 11px; font-weight: 600; color: var(--pa-marca-osc); }
.pa-chip-periodo .pa-muted { font-weight: 400; }
.pa-limpiar { border: 0; background: none; color: var(--pa-marca-osc); text-decoration: underline; font-size: 13px; cursor: pointer; padding: 4px 6px; }

/* Pestañas */
.pa-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--pa-borde); margin-bottom: 16px; }
.pa-tabs button { border: 0; background: none; padding: 10px 14px; font-size: 15px; font-weight: 600; color: var(--pa-tinta-3); border-bottom: 3px solid transparent; margin-bottom: -1px; cursor: pointer; border-radius: 0; }
.pa-tabs button:hover { color: var(--pa-tinta); }
.pa-tabs button[aria-selected="true"] { color: var(--pa-marca-osc); border-bottom-color: var(--pa-marca); }
#pa-panel:focus { outline: none; }

/* Lectura y KPIs */
.pa-lectura { font-size: 19px; line-height: 1.5; margin: 2px 0 12px; max-width: 78ch; color: var(--pa-tinta); text-wrap: pretty; }
.pa-lectura b { font-weight: 650; }
.pa-aviso-parcial { font-size: 13px; color: var(--pa-tinta-3); margin: -4px 0 12px; }
.pa-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; }
.pa-kpis-2 { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 20px; }
.pa-kpi { background: var(--pa-superficie); border: 1px solid var(--pa-borde); border-radius: 12px; padding: 14px 16px; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pa-kpi-t { font-size: 13px; font-weight: 600; color: var(--pa-tinta-2); }
.pa-kpi-v { font-size: 30px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pa-kpi-v small { font-size: 17px; font-weight: 600; color: var(--pa-tinta-2); margin-left: 8px; letter-spacing: 0; }
.pa-kpi-2 .pa-kpi-v { font-size: 22px; }
.pa-kpi-l { font-size: 13px; color: var(--pa-tinta-2); line-height: 1.4; }
.pa-kpi-margen { border-top: 3px solid var(--pa-marca); padding-top: 12px; }
.pa-kpi-margen.pa-negativo { border-top-color: var(--pa-mal); }
.pa-kpi-margen.pa-negativo .pa-kpi-v { color: var(--pa-mal); }
.pa-delta { font-weight: 600; white-space: nowrap; }
.pa-bueno { color: var(--pa-ok); } .pa-malo { color: var(--pa-mal); } .pa-neutro { color: var(--pa-tinta-2); }
.pa-kpi-sem.pa-ok .pa-kpi-v, .pa-ok { color: var(--pa-ok); }
.pa-kpi-sem.pa-aviso .pa-kpi-v, .pa-aviso { color: var(--pa-av); }
.pa-kpi-sem.pa-mal .pa-kpi-v, .pa-mal { color: var(--pa-mal); }
.pa-kpi-sem .pa-kpi-l { color: var(--pa-tinta-2); }
.pa-sem-i { font-size: .7em; margin-right: 6px; vertical-align: .15em; }
.pa-esq { min-height: 96px; background: linear-gradient(90deg, #eef1f4 0%, #f7f9fa 50%, #eef1f4 100%); background-size: 200% 100%; animation: pa-brillo 1.4s ease-in-out infinite; border-color: var(--pa-borde-suave); }
.pa-esq-alto { min-height: 280px; }
@keyframes pa-brillo { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .pa-esq { animation: none; } }

/* Gráficos */
.pa-rejilla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.pa-graf { background: var(--pa-superficie); border: 1px solid var(--pa-borde); border-radius: 12px; padding: 16px 16px 14px; min-width: 0; }
.pa-graf.pa-ancho { grid-column: 1 / -1; }
.pa-graf header { margin-bottom: 10px; }
.pa-graf header p { margin: 3px 0 0; font-size: 13px; color: var(--pa-tinta-3); line-height: 1.4; }
.pa-vacio-graf { color: var(--pa-tinta-3); font-size: 14px; padding: 24px 4px; margin: 0; }
.pa-leyenda { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; color: var(--pa-tinta-2); margin-bottom: 8px; }
.pa-leyenda > span { display: inline-flex; align-items: center; gap: 6px; }
.pa-sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.pa-sw.pa-b-ing { background: var(--pa-ing); } .pa-sw.pa-b-cos { background: var(--pa-cos); }
.pa-sw-linea { width: 18px; height: 0; border-top: 2px dashed var(--pa-prev); border-radius: 0; }
.pa-sw-pres { background: var(--pa-pres); border: 1px solid #c3ccd4; }

.pa-hbs { display: grid; gap: 2px; }
.pa-hb, .pa-hb-cab { display: grid; grid-template-columns: minmax(96px, 1.3fr) minmax(80px, 2fr) 68px 68px 46px; align-items: center; gap: 10px; }
.pa-hb { width: 100%; text-align: left; border: 0; background: none; padding: 6px 6px; border-radius: 7px; color: inherit; font-size: 14px; }
button.pa-hb { cursor: pointer; }
button.pa-hb:hover { background: var(--pa-hover); }
.pa-hb.pa-sel { background: var(--pa-marca-claro); box-shadow: inset 3px 0 0 var(--pa-marca); }
.pa-hb-cab { font-size: 12px; color: var(--pa-tinta-3); padding: 0 6px 4px; border-bottom: 1px solid var(--pa-borde-suave); margin-bottom: 2px; }
.pa-hb-cab span:nth-child(n+3) { text-align: right; }
.pa-hb-etq { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pa-hb-etq small { display: block; font-size: 12px; color: var(--pa-tinta-3); overflow: hidden; text-overflow: ellipsis; }
.pa-hb-num { text-align: right; white-space: nowrap; font-size: 13px; }
.pa-hb-num small { color: var(--pa-tinta-3); }
.pa-hb-pct { color: var(--pa-tinta-2); }
.pa-hb-par { display: grid; gap: 2px; }
.pa-b { display: block; height: 9px; border-radius: 0 4px 4px 0; min-width: 2px; }
.pa-b-ing { background: var(--pa-ing); } .pa-b-cos { background: var(--pa-cos); }
.pa-b-pos { background: var(--pa-pos); } .pa-b-neg { background: var(--pa-neg); border-radius: 4px 0 0 4px; }
.pa-hb-ajeno { font-size: 13px; color: var(--pa-tinta-2); }
.pa-hb-srv, .pa-hb-cab-srv { grid-template-columns: minmax(110px, 1.4fr) minmax(80px, 2fr) 76px 46px; }
.pa-hb-div { position: relative; height: 14px; }
.pa-hb-div .pa-b { position: absolute; top: 2px; height: 10px; }
.pa-cero { position: absolute; top: -3px; bottom: -3px; width: 1px; background: var(--pa-tinta-3); }
.pa-hb-pry { grid-template-columns: minmax(110px, 1.4fr) minmax(80px, 1.8fr) 92px 120px; }
.pa-bullet { position: relative; height: 16px; }
.pa-bullet-pres { position: absolute; left: 0; top: 0; height: 16px; background: var(--pa-pres); border-radius: 0 4px 4px 0; }
.pa-bullet-real { position: absolute; left: 0; top: 4px; height: 8px; border-radius: 0 4px 4px 0; background: var(--pa-ok); }
.pa-bullet-real.pa-aviso { background: #d08a00; } .pa-bullet-real.pa-mal { background: var(--pa-mal); }
.pa-bullet-marca { position: absolute; top: -2px; width: 2px; height: 20px; background: var(--pa-tinta); margin-left: -1px; }
.pa-sem { font-size: 13px; white-space: nowrap; text-align: right; }
.pa-sem b { font-weight: 600; margin-left: 2px; }

.pa-svg { width: 100%; height: auto; display: block; overflow: visible; }
.pa-svg .pa-rejilla-l { stroke: #e9edf0; stroke-width: 1; }
.pa-svg .pa-base { stroke: #9aa7b1; stroke-width: 1; }
.pa-svg .pa-eje { font-size: 12px; fill: var(--pa-tinta-3); }
.pa-svg .pa-b-ing { fill: var(--pa-ing); } .pa-svg .pa-b-cos { fill: var(--pa-cos); }
.pa-svg .pa-hit { fill: transparent; }
.pa-svg .pa-col:hover .pa-hit, .pa-svg .pa-col:focus .pa-hit { fill: rgba(44,95,249,.06); }
.pa-svg .pa-col:focus { outline: none; }
.pa-svg .pa-col:focus-visible .pa-hit { stroke: #7fa2fb; stroke-width: 2; }
.pa-svg .pa-fuera path { opacity: .35; }
.pa-svg .pa-linea-prev { fill: none; stroke: var(--pa-prev); stroke-width: 2; stroke-dasharray: 5 4; pointer-events: none; }
.pa-svg .pa-punto-prev { fill: #fff; stroke: var(--pa-prev); stroke-width: 2; pointer-events: none; }

.pa-mapa-caja { overflow-x: auto; }
.pa-mapa { border-collapse: separate; border-spacing: 2px; width: 100%; font-size: 13px; }
.pa-mapa th { font-weight: 600; color: var(--pa-tinta-2); text-align: center; padding: 4px; vertical-align: bottom; }
.pa-mapa th.pa-mc-col span { display: block; max-width: 110px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pa-mapa th.pa-mc-colint { color: var(--pa-tinta-3); }
.pa-mapa th small { display: block; margin-top: 3px; }
.pa-mapa .pa-mc-etq { text-align: left; white-space: nowrap; color: var(--pa-tinta); padding-right: 10px; position: sticky; left: 0; background: #fff; }
.pa-mapa .pa-mc-etq small { display: block; font-weight: 400; font-size: 11px; color: var(--pa-tinta-3); }
.pa-mc-fuera .pa-mc-etq { color: var(--pa-tinta-2); }
.pa-mc { text-align: center; padding: 7px 4px; border-radius: 4px; min-width: 52px; white-space: nowrap; }
.pa-mc-n0, .pa-mc-g0 { background: #fafbfc; }
.pa-mc-n1 { background: var(--pa-s1); } .pa-mc-n2 { background: var(--pa-s2); } .pa-mc-n3 { background: var(--pa-s3); }
.pa-mc-n4 { background: var(--pa-s4); color: #fff; } .pa-mc-n5 { background: var(--pa-s5); color: #fff; }
.pa-mc-g1 { background: var(--pa-g1); } .pa-mc-g2 { background: var(--pa-g2); } .pa-mc-g3 { background: var(--pa-g3); } .pa-mc-g4 { background: var(--pa-g4); } .pa-mc-g5 { background: var(--pa-g5); color: #fff; }
.pa-mc-tot { text-align: right; padding: 4px 8px; white-space: nowrap; color: var(--pa-tinta-2); }
td.pa-mc-tot:nth-last-child(2) { font-weight: 600; color: var(--pa-tinta); }

/* Tabla dinámica */
.pa-piv-ctrl { margin-bottom: 10px; }
.pa-piv-conf { background: var(--pa-superficie); border: 1px solid var(--pa-borde); border-radius: 12px; padding: 0 14px; }
.pa-piv-conf > summary { cursor: pointer; padding: 12px 0; font-weight: 600; font-size: 15px; list-style-position: inside; }
.pa-piv-conf[open] > summary { border-bottom: 1px solid var(--pa-borde-suave); margin-bottom: 12px; }
.pa-piv-grid { display: grid; grid-template-columns: 1.1fr 0.9fr 1.6fr; gap: 16px; }
.pa-piv-grid fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.pa-piv-grid legend { font-weight: 600; font-size: 14px; padding: 0; margin-bottom: 8px; }
.pa-piv-grid legend .pa-muted { font-weight: 400; font-size: 13px; }
.pa-niveles { list-style: none; counter-reset: nivel; margin: 0; padding: 0; display: grid; gap: 6px; }
.pa-niveles li { display: flex; align-items: center; gap: 6px; counter-increment: nivel; }
.pa-niveles li:has(select)::before { content: counter(nivel); width: 22px; height: 22px; border-radius: 50%; background: var(--pa-marca-claro); color: var(--pa-marca-osc); font-size: 12px; font-weight: 700; display: grid; place-items: center; flex: none; }
.pa-niveles select, .pa-piv-cols select { padding: 6px 8px; font-size: 14px; border-radius: 7px; border: 1px solid var(--pa-borde); }
.pa-sub-label { display: block !important; font-size: 13px; color: var(--pa-tinta-2); margin-top: 10px !important; }
.pa-sub-label select { margin-top: 4px; }
.pa-icono { border: 1px solid var(--pa-borde); background: #fff; border-radius: 6px; width: 30px; height: 30px; font-size: 17px; line-height: 1; cursor: pointer; color: var(--pa-tinta-2); flex: none; padding: 0; }
.pa-icono:hover { background: var(--pa-mal-claro); color: var(--pa-mal); }
.pa-casillas { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 4px 10px; }
.pa-casillas label { display: flex; align-items: center; gap: 7px; font-size: 14px; cursor: pointer; padding: 3px 0; }
.pa-casillas input { width: 16px; height: 16px; margin: 0; accent-color: var(--pa-marca); }
.pa-presets { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 12px 0 14px; font-size: 13px; }
.pa-preset-piv { border: 1px solid var(--pa-borde); background: var(--pa-fondo); border-radius: 999px; padding: 4px 11px; font-size: 13px; cursor: pointer; color: var(--pa-tinta); }
.pa-preset-piv:hover { background: var(--pa-marca-claro); border-color: #b9cafc; }
.pa-piv-barra { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 13px; }
.pa-piv-botones { display: flex; gap: 6px; }
.pa-avisos { margin: 0 0 10px; padding: 0 0 0 18px; font-size: 13px; color: var(--pa-tinta-2); }

.pa-tabla-caja { overflow: auto; max-height: 75vh; border: 1px solid var(--pa-borde); border-radius: 12px; background: #fff; }
.pa-tabla { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 14px; }
.pa-tabla th, .pa-tabla td { padding: 8px 12px; border-bottom: 1px solid var(--pa-borde-suave); }
.pa-tabla thead th { position: sticky; top: 0; z-index: 2; background: #f7f9fb; border-bottom: 1px solid var(--pa-borde); font-size: 13px; font-weight: 600; color: var(--pa-tinta-2); white-space: nowrap; padding: 0; }
.pa-tabla thead th.pa-etq-cab { left: 0; z-index: 3; }
.pa-orden { border: 0; background: none; padding: 10px 12px; font: inherit; font-weight: 600; color: inherit; cursor: pointer; display: flex; gap: 5px; align-items: center; width: 100% !important; justify-content: flex-start; }
.pa-n .pa-orden { justify-content: flex-end; }
.pa-orden:hover { color: var(--pa-tinta); background: #eef2f6; }
.pa-flecha { font-size: 10px; opacity: .55; }
th[aria-sort="ascending"] .pa-flecha, th[aria-sort="descending"] .pa-flecha { opacity: 1; color: var(--pa-marca); }
.pa-tabla thead th:not(:has(.pa-orden)) { padding: 10px 12px; text-align: right; }
.pa-tabla .pa-n { text-align: right; white-space: nowrap; }
.pa-tabla th.pa-etq { text-align: left; font-weight: 400; position: sticky; left: 0; background: inherit; z-index: 1; min-width: 220px; max-width: 360px; padding-left: calc(8px + var(--pa-sangria, 0) * 20px); }
.pa-tabla tbody tr { background: #fff; }
.pa-tabla tbody tr:hover { background: #f8faff; }
.pa-tabla tbody tr.pa-nivel-0 { font-weight: 600; }
.pa-tabla tbody tr.pa-nivel-0 th.pa-etq { font-weight: 600; }
.pa-tabla tbody tr.pa-abierta { background: #f4f7fd; }
.pa-tabla tbody tr.pa-nivel-1, .pa-tabla tbody tr.pa-nivel-2, .pa-tabla tbody tr.pa-nivel-3 { font-weight: 400; }
.pa-tabla tbody tr.pa-nivel-2 td, .pa-tabla tbody tr.pa-nivel-3 td { color: var(--pa-tinta-2); }
.pa-despl { display: flex; align-items: flex-start; gap: 6px; border: 0; background: none; padding: 0; text-align: left; cursor: pointer; color: inherit; font: inherit; width: 100% !important; }
.pa-despl > span[aria-hidden] { width: 16px; flex: none; color: var(--pa-marca); font-size: 13px; line-height: 1.5; }
.pa-despl:hover .pa-etq-t { color: var(--pa-marca-osc); text-decoration: underline; text-underline-offset: 2px; }
.pa-despl-hueco { display: inline-block; width: 22px; flex: none; }
.pa-etq th, th.pa-etq > .pa-despl-hueco + .pa-etq-t { display: inline; }
.pa-etq-t small { display: block; font-size: 12px; font-weight: 400; color: var(--pa-tinta-3); }
.pa-celda-barra { display: block; position: relative; height: 4px; background: var(--pa-marca-claro); border-radius: 2px; margin-top: 4px; min-width: 70px; }
.pa-celda-barra i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--pa-marca); border-radius: 2px; max-width: 100%; }
.pa-celda-barra em { position: absolute; top: -3px; width: 2px; height: 10px; background: var(--pa-tinta); margin-left: -1px; }
.pa-cb-ing { background: #eef1f4; } .pa-cb-ing i { background: #6f8fb0; }
.pa-sem-celda span { font-size: 10px; vertical-align: 1px; }
.pa-tabla tfoot th, .pa-tabla tfoot td { position: sticky; bottom: 0; background: #f7f9fb; border-top: 2px solid var(--pa-tinta); border-bottom: 0; font-weight: 700; z-index: 2; }
.pa-tabla tfoot th.pa-etq { z-index: 3; padding-left: 30px; }
.pa-tabla tfoot th.pa-etq { background: #f7f9fb; }
.pa-tot-col { background: #fafbfc; font-weight: 600; border-left: 1px solid var(--pa-borde-suave); }
.pa-calor { background-image: linear-gradient(rgba(44,95,249,var(--pa-alfa)), rgba(44,95,249,var(--pa-alfa))); }
.pa-vacia { background: #fcfcfd; }

/* Vacío y método */
.pa-vacio { background: #fff; border: 1px dashed var(--pa-borde); border-radius: 12px; padding: 28px 20px; text-align: center; color: var(--pa-tinta-2); }
.pa-vacio-t { font-size: 17px; color: var(--pa-tinta); font-weight: 600; margin: 0 0 4px; }
.pa-vacio-acc { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 12px; }
.pa-metodo h2 { margin-top: 0; font-size: 20px; }
.pa-metodo dl { margin: 0; font-size: 14px; line-height: 1.5; }
.pa-metodo dt { font-weight: 700; margin-top: 12px; }
.pa-metodo dd { margin: 2px 0 0; color: #34434f; }
.pa-metodo-acc { text-align: right; margin-top: 16px; }
.pa-metodo .pa-btn { width: auto; min-height: 0; }

.pa-print-cab, .pa-pie-print { display: none; }
.pa-solo-movil { display: none; }
.pa-filtros-cuerpo { display: grid; gap: 10px; }

/* Pantallas medianas */
@media (max-width: 1100px) {
  .pa-piv-grid { grid-template-columns: 1fr 1fr; }
  .pa-piv-med { grid-column: 1 / -1; }
}
@media (max-width: 960px) {
  .pa-rejilla { grid-template-columns: minmax(0, 1fr); }
  .pa-kpis-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Móvil: primero los KPIs y una tabla sencilla */
@media (max-width: 640px) {
  .pa h1 { font-size: 22px; }
  .pa-cab { align-items: flex-start; }
  .pa-acciones { width: 100%; }
  .pa-acciones > * { flex: 1; }
  .pa-acciones .pa-btn { width: 100% !important; }
  .pa-pop, .pa-pop-der { position: fixed; left: 16px !important; right: 16px !important; top: auto; bottom: 16px; max-width: none; min-width: 0; width: auto !important; max-height: 70vh; overflow: auto; }
  .pa-filtros { padding: 10px; }
  .pa-solo-movil { display: block; width: 100% !important; }
  .pa-filtros:not(.pa-filtros-abiertos) .pa-filtros-cuerpo { display: none; }
  .pa-seg { display: flex; overflow-x: auto; flex-wrap: nowrap; max-width: 100%; scrollbar-width: none; }
  .pa-seg button { flex: none; }
  .pa-fechas { width: 100%; }
  .pa-fechas { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .pa-fechas label { min-width: 0; flex-direction: column; align-items: stretch; gap: 2px; font-size: 13px; } .pa-fechas input { width: 100%; min-width: 0; }
  .pa-interruptor { margin-left: 0 !important; }
  .pa-lectura { font-size: 16px; }
  .pa-kpis { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .pa-kpis-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pa-kpi { padding: 12px; }
  .pa-kpi-v { font-size: 26px; }
  .pa-kpi-2 .pa-kpi-v { font-size: 18px; }
  .pa-graf { padding: 14px 12px; }
  .pa-hb, .pa-hb-cab { grid-template-columns: minmax(80px, 1fr) minmax(50px, 1fr) 62px 40px; gap: 8px; }
  .pa-hb:not(.pa-hb-srv):not(.pa-hb-pry) > :nth-child(3), .pa-hb-cab:not(.pa-hb-cab-srv) > :nth-child(3) { display: none; }
  .pa-hb-srv, .pa-hb-cab-srv { grid-template-columns: minmax(80px, 1fr) minmax(50px, 1fr) 66px 40px; }
  .pa-hb-pry { grid-template-columns: minmax(80px, 1fr) minmax(50px, 1fr) 84px; }
  .pa-hb-pry .pa-sem { grid-column: 1 / -1; text-align: left; padding-left: 0; margin-top: -2px; }
  .pa-piv-grid { grid-template-columns: minmax(0, 1fr); }
  .pa-tabla { font-size: 13px; }
  .pa-tabla th.pa-etq { min-width: 140px; max-width: 180px; }
  .pa-tabla th, .pa-tabla td { padding: 7px 8px; }
  .pa-celda-barra { min-width: 44px; }
}

/* PDF / impresión: solo el informe, con cabecera «Pulse by Strategik», periodo y filtros */
@media print {
  body.pa-imprimiendo { background: #fff !important; }
  body.pa-imprimiendo > :not(main), body.pa-imprimiendo .cabecera, body.pa-imprimiendo .menu, body.pa-imprimiendo .pie, body.pa-imprimiendo .aviso, body.pa-imprimiendo .tip { display: none !important; }
  body.pa-imprimiendo main { max-width: none !important; padding: 0 !important; margin: 0 !important; }
  body.pa-imprimiendo .pa { font-size: 11px; }
  body.pa-imprimiendo .pa * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body.pa-imprimiendo .pa-cab, body.pa-imprimiendo .pa-filtros, body.pa-imprimiendo .pa-tabs, body.pa-imprimiendo .pa-piv-ctrl, body.pa-imprimiendo .pa-aviso-parcial { display: none !important; }
  body.pa-imprimiendo .pa-print-cab { display: flex !important; align-items: center; gap: 14px; border-bottom: 2px solid #2c5ff9; padding-bottom: 10px; margin-bottom: 14px; }
  body.pa-imprimiendo .pa-print-logo { height: 34px; width: auto; }
  body.pa-imprimiendo .pa-print-marca { font-size: 18px; color: #2c5ff9; }
  body.pa-imprimiendo .pa-print-sub { font-size: 11px; color: #34434f; white-space: pre-line; margin-top: 2px; }
  body.pa-imprimiendo .pa-pie-print { display: block !important; font-size: 9.5px; color: #4a5966; border-top: 1px solid #ccc; padding-top: 8px; margin-top: 14px; }
  body.pa-imprimiendo .pa-nota-manager { font-size: 10.5px; padding: 6px 10px; }
  body.pa-imprimiendo .pa-lectura { font-size: 13px; }
  body.pa-imprimiendo .pa-kpis { grid-template-columns: repeat(3, 1fr) !important; gap: 8px; }
  body.pa-imprimiendo .pa-kpis-2 { grid-template-columns: repeat(4, 1fr) !important; }
  body.pa-imprimiendo .pa-kpi { padding: 8px 10px; break-inside: avoid; }
  body.pa-imprimiendo .pa-kpi-v { font-size: 18px; }
  body.pa-imprimiendo .pa-kpi-2 .pa-kpi-v { font-size: 15px; }
  body.pa-imprimiendo .pa-rejilla { grid-template-columns: 1fr 1fr !important; gap: 10px; }
  body.pa-imprimiendo .pa-graf { break-inside: avoid; padding: 10px; }
  body.pa-imprimiendo .pa-tabla-caja { max-height: none; overflow: visible; border: 0; }
  body.pa-imprimiendo .pa-tabla { font-size: 10px; }
  body.pa-imprimiendo .pa-tabla thead th, body.pa-imprimiendo .pa-tabla tfoot th, body.pa-imprimiendo .pa-tabla tfoot td, body.pa-imprimiendo .pa-tabla th.pa-etq { position: static; }
  body.pa-imprimiendo .pa-tabla th, body.pa-imprimiendo .pa-tabla td { padding: 4px 6px; }
  body.pa-imprimiendo .pa-tabla tr { break-inside: avoid; }
  body.pa-imprimiendo .pa-flecha, body.pa-imprimiendo .pa-despl > span[aria-hidden] { display: none; }
  body.pa-imprimiendo .pa-mapa-caja { overflow: visible; }
  @page { size: A4 landscape; margin: 12mm; }
}
