.intelligence-side{display:flex;flex-direction:column;gap:12px;height:100%;min-width:0}
.ddos-preview{display:flex;flex-direction:column;flex:1;min-height:280px}
.ddos-preview-controls{display:flex;justify-content:space-between;gap:8px;padding:10px 16px;color:var(--muted);font:10px/1.5 var(--mono)}
.ddos-preview-controls button{border:1px solid var(--rule2);background:var(--bg2);color:var(--cyan);padding:3px 6px;cursor:pointer}
.ddos-preview-map{display:flex;align-items:center;justify-content:center;flex:1;min-height:220px;padding:10px;color:var(--muted)}
.ddos-preview-map .dmap{width:100%;height:auto;display:block}
.ddos-preview-caption{padding:10px 16px;color:var(--muted);font:11px/1.6 var(--sans);margin:0;border-top:1px solid var(--rule)}
.ddos-preview .dmap-land path{fill:#0b2230;stroke:#235266;stroke-width:.5;vector-effect:non-scaling-stroke}
.ddos-preview .dmap-ocean text{font:10px var(--mono);fill:#587482;opacity:.6}
.ddos-preview .dmap .arc,.ddos-preview .dmap .halo{fill:none;stroke-linecap:round}
.ddos-preview .dmap .chev{fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ddos-preview .dmap path.dash{fill:none;stroke-linecap:round;stroke-dasharray:1.5 14.5;opacity:.95;animation:ddos-preview-flow linear infinite}
@keyframes ddos-preview-flow{to{stroke-dashoffset:-160}}
.ddos-preview .dmap .ring{fill:none;stroke-width:1.1;transform-box:fill-box;transform-origin:center}
.ddos-preview .dmap-motion .ring{animation:ddos-preview-ring 3s ease-out infinite}
@keyframes ddos-preview-ring{0%{transform:scale(.7);opacity:.75}100%{transform:scale(2);opacity:0}}
/* r87.8 — the DDoS panel is shown on phones too (it was display:none at ≤ 760 px, so DDoS was missing from the mobile
   homepage); the map scales with the column and the caption stays legible. */
@media(max-width:760px){.intelligence-side{height:auto}.ddos-preview{min-height:0}.ddos-preview-map{min-height:160px;padding:6px}
 .ddos-preview-controls{flex-wrap:wrap;font-size:11px}.ddos-preview-caption{font-size:13px}}
@media(prefers-reduced-motion:reduce){.ddos-preview .dmap *{animation:none!important}}
/* r88.1.3 — trend and most-targeted-industry rows under the map (ddos-preview-summary.js) */
.ddos-preview-summary{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:10px 16px;border-top:1px solid var(--rule)}
.ddos-preview-summary[hidden]{display:none}
.dps-h{font:600 10px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text);margin-bottom:6px}
.dps-h small{font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted);margin-left:6px}
.dps-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dps-kpi{min-width:0}
.dps-big{font:600 20px/1.15 var(--sans);color:var(--text);font-variant-numeric:tabular-nums}
.dps-big.na{font-size:14px;color:var(--muted)}
.dps-d{font-size:11px;margin-left:4px;vertical-align:2px}.dps-d.up{color:var(--orange,#f0904c)}.dps-d.down{color:var(--green,#5fd19a)}
.dps-lbl{font:600 11px/1.35 var(--sans);color:var(--text);margin-top:2px}
.dps-sub{font:10px/1.4 var(--mono);color:var(--muted);margin-top:2px}
/* r88.1.4 — the /ddos page's sparkline (ddos-map-render renderSparkline), a relative shape */
.ddos-preview-summary svg.spark{display:block;width:100%;height:32px;margin-top:6px}
.dps-note{font:11px/1.5 var(--sans);color:var(--muted);margin:6px 0 0}
.dps-sec{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.dps-sec li{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;row-gap:2px;font:12px/1.3 var(--sans);color:var(--text)}
.dps-n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dps-v{font-variant-numeric:tabular-nums;color:var(--muted)}
.dps-b{grid-column:1/-1;height:3px;background:var(--rule)}.dps-b i{display:block;height:100%;background:var(--cyan)}
@media(max-width:760px){.ddos-preview-summary{padding:10px 12px}.dps-sub{font-size:11px}.dps-note{font-size:12px}}
