/* Live Threat Map page styles. Scoped under .threatmap-wrap so no theme
   clash; dark to match the site. Loaded only on the threat page. */
.threatmap-wrap{max-width:1100px;margin:0 auto}
.threatmap-wrap .threat-intro{font-size:1.15em;line-height:1.6}
.threatmap-wrap .threat-counters{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}
.threatmap-wrap .threat-stat{background:#1a1d23;border:1px solid #2a2f3a;border-radius:8px;padding:14px 18px;min-width:150px}
.threatmap-wrap .threat-stat b{display:block;font-size:1.9em;color:#f59e0b;line-height:1.1}
.threatmap-wrap .threat-stat span{color:#9aa3b2;font-size:.9em}
#threatmap{height:520px;width:100%;border:1px solid #2a2f3a;border-radius:8px;background:#0b1220;z-index:0}
.threatmap-wrap h2{margin-top:28px}
.threatmap-wrap .threat-bar-row{display:flex;align-items:center;gap:10px;margin:6px 0}
.threatmap-wrap .threat-bar-label{width:190px;flex-shrink:0}
.threatmap-wrap .threat-bar-track{flex:1;background:#1a1d23;border-radius:4px;height:18px;overflow:hidden}
.threatmap-wrap .threat-bar-fill{display:block;height:100%;background:#f59e0b;border-radius:4px;transition:width .6s ease}
.threatmap-wrap .threat-bar-count{width:52px;text-align:right;color:#9aa3b2}
.threatmap-wrap .threat-hours{display:flex;align-items:flex-end;gap:3px;height:110px;margin:12px 0}
.threatmap-wrap .threat-hour-col{flex:1;background:#1a1d23;border-radius:3px 3px 0 0;position:relative;height:100%}
.threatmap-wrap .threat-hour-col i{position:absolute;bottom:0;left:0;display:block;background:#f59e0b;border-radius:3px 3px 0 0;width:100%}
.threatmap-wrap .threat-hour-labels{display:flex;gap:3px;color:#9aa3b2;font-size:.8em}
.threatmap-wrap .threat-hour-labels span{flex:1;text-align:center}
.threatmap-wrap .threat-feed{list-style:none;padding:0;margin:12px 0}
.threatmap-wrap .threat-feed li{padding:8px 0;border-bottom:1px solid #232833}
.threatmap-wrap .threat-feed li:last-child{border-bottom:0}
.threatmap-wrap .threat-feed .threat-when{color:#9aa3b2}
.threatmap-wrap .threat-note-line{color:#9aa3b2;font-size:.9em;margin:8px 0 0}
.threatmap-wrap .threat-note{border-left:4px solid #f59e0b;padding:10px 14px;background:#1a1d23;border-radius:0 8px 8px 0}
.threatmap-wrap .threat-credit{color:#9aa3b2;font-size:.85em}
.leaflet-container{background:#0b1220;font-family:inherit}
/* Colorful animated markers (Oct 28, 2026): pulsing dots colored by each
   country's dominant attack type; legend + LIVE badge as map controls. */
.threatmap-wrap .threat-pulse-icon{background:none;border:none}
.threatmap-wrap .threat-pulse-dot{position:relative;display:block;border-radius:50%;opacity:.9}
.threatmap-wrap .threat-pulse-dot::after{content:'';position:absolute;inset:-9px;border-radius:50%;border:2px solid var(--c,#f59e0b);animation:threat-ping 2s cubic-bezier(0,0,.2,1) infinite}
@keyframes threat-ping{0%{transform:scale(.55);opacity:.9}80%,100%{transform:scale(1.9);opacity:0}}
.threatmap-wrap .threat-legend{background:#0b1220;border:1px solid #2a2f3a;border-radius:8px;padding:10px 12px;font-size:12px;color:#d4d4d4;line-height:1.9}
.threatmap-wrap .threat-legend b{display:block;color:#9aa3b2;margin-bottom:2px}
.threatmap-wrap .threat-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;vertical-align:-1px}
.threatmap-wrap .threat-live-badge{background:#0b1220;border:1px solid #2a2f3a;border-radius:20px;padding:6px 12px;font-size:12px;color:#d4d4d4}
.threatmap-wrap .threat-live-badge i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;margin-right:7px;animation:threat-blink 1.6s ease-in-out infinite}
@keyframes threat-blink{50%{opacity:.25}}
/* Flowing arcs + server dot (Oct 28, 2026). Arc dash-flow animates the
   stroke; color comes from the polyline itself (source country's type). */
.threatmap-wrap .threat-arc{stroke-dasharray:5 9;animation:threat-arcflow 1.1s linear infinite}
@keyframes threat-arcflow{to{stroke-dashoffset:-14}}
.threatmap-wrap .threat-server-icon{background:none;border:none}
.threatmap-wrap .threat-server-dot{display:block;width:14px;height:14px;margin:3px;border-radius:50%;background:#fff;border:2px solid #f59e0b;box-shadow:0 0 0 5px rgba(245,158,11,.25),0 0 12px rgba(245,158,11,.6)}
/* Mobile layout (Oct 28, 2026): the base rules above have no breakpoint,
   so on a phone the 190px bar labels left almost no room for the bars
   and the 520px map + full legend crowded the screen. Scoped only. */
@media (max-width:640px){
.threatmap-wrap .threat-intro{font-size:1.05em}
.threatmap-wrap .threat-counters{gap:10px}
.threatmap-wrap .threat-stat{min-width:0;flex:1 1 42%;padding:10px 12px}
.threatmap-wrap .threat-stat b{font-size:1.5em}
#threatmap{height:360px}
.threatmap-wrap .threat-bar-row{gap:8px}
.threatmap-wrap .threat-bar-label{width:120px;font-size:.9em;line-height:1.3}
.threatmap-wrap .threat-bar-count{width:38px}
.threatmap-wrap .threat-bar-track{height:16px}
.threatmap-wrap .threat-hours{height:90px}
.threatmap-wrap .threat-legend{padding:8px 10px;font-size:11px;line-height:1.6}
.threatmap-wrap .threat-live-badge{padding:5px 10px;font-size:11px}
}
