/* Web Analytics — estilos propios del módulo (no modifica styles.css). */
#view-webanalytics{
  /* Paleta validada (dataviz validator, superficie #161a23, modo oscuro, all-pairs):
     categórica para clases de tráfico; secuencial azul para el mapa; status fija. */
  --wa-human:#3987e5; --wa-bot:#d95926; --wa-dc:#199e70;
  --wa-pv:#3987e5; --wa-vis:#d55181;
  --wa-seq-1:#184f95; --wa-seq-2:#256abf; --wa-seq-3:#3987e5; --wa-seq-4:#6da7ec; --wa-seq-5:#b7d3f6;
  --wa-nodata:#1f2531;
  --wa-s2:#0ca30c; --wa-s3:#6b7280; --wa-s4:#fab219; --wa-s5:#d03b3b;
  --wa-grid:#232833;
}
.wa-select{background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:7px 10px;font-size:12.5px;font-family:inherit;max-width:220px}
.wa-select:focus{outline:none;border-color:var(--accent)}
.wa-banner{background:rgba(242,201,76,.1);border:1px solid #6b5b1f;color:var(--degraded);padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:13px}
.wa-kpi-main .kpi-tile .kpi-value{font-size:24px}
.wa-kpi-secondary .kpi-tile{padding:10px 13px}
.wa-kpi-secondary .kpi-tile .kpi-value{font-size:16px}
.wa-kpi-sub{font-size:11px;color:var(--text-faint);margin-top:2px}

/* gráficos */
.wa-chart{position:relative;min-height:190px}
.wa-chart svg{display:block;width:100%;height:auto;overflow:visible}
.wa-chart-mini{min-height:80px;margin-bottom:10px}
.wa-chart .wa-axis text{fill:var(--text-faint);font-size:10px;font-family:var(--mono)}
.wa-chart .wa-gridline{stroke:var(--wa-grid);stroke-width:1}
.wa-chart .wa-baseline{stroke:#2f3646;stroke-width:1}
.wa-chart .wa-hit{fill:transparent;cursor:crosshair}
.wa-chart .wa-hit:hover{fill:rgba(255,255,255,.035)}
.wa-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 8px;font-size:11.5px;color:var(--text-dim)}
.wa-legend span{display:inline-flex;align-items:center;gap:6px}
.wa-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
.wa-legend i.line{height:3px;border-radius:2px}
.wa-empty{color:var(--text-faint);font-size:12px;padding:30px 0;text-align:center}
.wa-gran{display:inline-flex;margin:0 0 0 auto;gap:4px}
.wa-gran button{padding:3px 9px;font-size:11px}
.habita-panel h2 .wa-gran{margin-left:auto}

.wa-tooltip{position:absolute;pointer-events:none;background:#0f1218;border:1px solid #2f3646;border-radius:8px;padding:8px 10px;font-size:11.5px;color:var(--text);box-shadow:0 6px 20px rgba(0,0,0,.45);z-index:20;min-width:140px;white-space:nowrap;display:none}
.wa-tooltip .tt-title{color:var(--text-dim);font-size:11px;margin-bottom:4px}
.wa-tooltip .tt-row{display:flex;justify-content:space-between;gap:14px;align-items:center}
.wa-tooltip .tt-row b{font-family:var(--mono);font-weight:600}
.wa-tooltip .tt-key{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim)}
.wa-tooltip .tt-key i{display:inline-block;width:8px;height:8px;border-radius:2px}
.wa-tooltip .tt-sub{color:var(--text-faint);font-size:10.5px;margin-top:4px}

/* mapa */
.wa-map-wrap{position:relative;width:100%}
.wa-map-wrap svg{display:block;width:100%;height:auto}
.wa-map-wrap path{stroke:#0b0d12;stroke-width:.5;transition:opacity .1s}
.wa-map-wrap path:hover{stroke:#e6e9ef;stroke-width:.9}
.wa-map-wrap circle{fill:var(--wa-bot);fill-opacity:.85;stroke:#161a23;stroke-width:1.5;cursor:pointer}
.wa-map-wrap circle:hover{fill-opacity:1;stroke:#e6e9ef}
.wa-map-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--text-faint);margin-top:8px}
.wa-map-legend .sw{width:22px;height:10px;border-radius:2px;display:inline-block}
.wa-map-legend .dot{width:10px;height:10px;border-radius:50%;background:var(--wa-bot);display:inline-block;margin-left:12px}

/* tablas */
.wa-tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(330px,100%),1fr));gap:14px}
.wa-tables > .habita-panel{min-width:0}
.wa-tables .habita-panel{margin-bottom:0}
.wa-tables .habita-panel.wide{grid-column:1/-1}
.wa-tables + .habita-panel{margin-top:14px}
.wa-bar-cell{position:relative}
.wa-bar-cell .wa-bar{position:absolute;left:0;top:3px;bottom:3px;background:rgba(57,135,229,.14);border-radius:3px;z-index:0}
.wa-bar-cell span{position:relative;z-index:1}
.ranking-table td.wa-key{color:var(--text);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranking-table td.wa-key small{color:var(--text-faint);margin-left:6px}
.ranking-table td.wa-dim{color:var(--text-faint);font-family:var(--mono);font-size:11px;white-space:nowrap}
.wa-cls{display:inline-block;border-radius:10px;padding:1px 8px;font-size:10.5px;border:1px solid var(--border)}
.wa-cls-human{color:#9ec5f4;border-color:#244a7a}
.wa-cls-bot{color:#f0a07e;border-color:#7a3a1f}
.wa-cls-datacenter{color:#7fd8b5;border-color:#1f6a50}
.wa-status{font-family:var(--mono);font-size:11px;font-weight:600}
.wa-status.s4{color:var(--wa-s4)}
.wa-status.s5{color:var(--wa-s5)}
.wa-attrib{font-size:10.5px;color:var(--text-faint);margin-top:10px}
.wa-health-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 18px}
.wa-new-row{animation:waFlash 1.6s ease-out}
@keyframes waFlash{from{background:rgba(57,135,229,.18)}to{background:transparent}}
@media (max-width:860px){.wa-tables{grid-template-columns:minmax(0,1fr)}.wa-select{max-width:100%}}
.wa-comp-error{color:var(--degraded);padding:18px 0}
