/* Aventra — safety map */
.safetymap { position: relative; border-radius: var(--radius-md); overflow: hidden; background: linear-gradient(180deg, rgba(var(--globe-glow), 0.10), rgba(var(--globe-glow), 0.26)); border: 1px solid var(--glass-rim-2); min-height: 200px; }
html.dark .safetymap { background: linear-gradient(180deg, rgba(var(--globe-glow), 0.06), rgba(var(--globe-glow), 0.14)); }
.safetymap.is-empty { display: grid; place-items: center; min-height: 240px; }
.sm-svg { display: block; width: 100%; height: auto; cursor: grab; user-select: none; touch-action: none; }
.sm-svg.is-dragging { cursor: grabbing; }
.safetymap.compact .sm-svg { height: 300px; }
.sm-neighbour { fill: var(--surface-3); stroke: var(--line); stroke-width: 0.8; vector-effect: non-scaling-stroke; }
html.dark .sm-neighbour { fill: rgba(255, 255, 255, 0.05); }
.sm-neighbour-label { font: 600 11px var(--font-ui); letter-spacing: 0.16em; fill: var(--text-3); pointer-events: none; opacity: 0.85; }
.sm-country { fill: var(--surface); stroke: var(--accent); stroke-width: 1.4; vector-effect: non-scaling-stroke; opacity: 0.95; }
.tone-green .sm-country { fill: var(--risk-green-soft); } .tone-yellow .sm-country { fill: var(--risk-yellow-soft); } .tone-orange .sm-country { fill: var(--risk-orange-soft); } .tone-red .sm-country { fill: var(--risk-red-soft); }
html.dark .sm-country { opacity: 0.85; }
.sm-zone { opacity: 0.62; mix-blend-mode: multiply; }
html.dark .sm-zone { mix-blend-mode: screen; opacity: 0.5; }
.sm-hit { fill: transparent; stroke: transparent; cursor: pointer; transition: stroke var(--dur-fast); outline: none; }
.sm-hit:hover, .sm-hit:focus-visible { stroke: var(--heading); stroke-width: 1.5; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
.sm-hit.is-hi { stroke: var(--heading); stroke-width: 2.2; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; animation: sm-dash 0.9s linear infinite; }
@keyframes sm-dash { to { stroke-dashoffset: -20; } }
.sm-pin { cursor: pointer; outline: none; }
.sm-pin-shape { fill: var(--accent); stroke: var(--surface); stroke-width: 1.6; vector-effect: non-scaling-stroke; filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.25)); }
.sm-pin.primary .sm-pin-shape { fill: var(--risk-red); }
.sm-pin-dot { fill: var(--surface); }
.sm-pulse { fill: none; stroke: var(--accent); stroke-width: 2; opacity: 0; transform-origin: 0 -17px; animation: sm-pulse 2.4s ease-out infinite; }
@keyframes sm-pulse { 0% { transform: translateY(-17px) scale(0.4); opacity: 0.8; } 100% { transform: translateY(-17px) scale(2.6); opacity: 0; } }
.sm-pin-label rect { fill: var(--glass-bg-strong); stroke: var(--glass-rim-2); }
.sm-pin-label text { font: 600 12px var(--font-ui); fill: var(--heading); dominant-baseline: middle; }
.sm-pin:hover .sm-pin-label rect, .sm-pin:focus-visible .sm-pin-label rect { stroke: var(--accent); }
.sm-tooltip { position: absolute; z-index: 5; pointer-events: none; padding: 8px 10px; border-radius: 10px; background: var(--glass-bg-strong); border: 1px solid var(--glass-rim-2); box-shadow: var(--shadow-soft); font-size: var(--fs-xs); color: var(--text); display: flex; flex-direction: column; gap: 4px; max-width: 220px; white-space: nowrap; }
.sm-tooltip b { font-weight: 600; }
.sm-controls { position: absolute; top: 10px; right: 10px; display: flex; gap: 6px; z-index: 4; }
.sm-legend { position: absolute; left: 10px; bottom: 10px; z-index: 4; padding: 10px 12px; display: flex; flex-direction: column; gap: 7px; border-radius: var(--radius-sm); box-shadow: var(--shadow-soft); max-width: 60%; }
.sm-legend.compact { padding: 8px 10px; gap: 5px; }
.sm-legend-row { display: flex; align-items: flex-start; gap: 8px; font-size: var(--fs-xs); line-height: 1.25; }
.sm-legend-row > span:last-child { display: flex; flex-direction: column; }
.sm-legend-dot { width: 11px; height: 11px; border-radius: 50%; margin-top: 2px; flex: none; box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5); }
.sm-legend-t { font-weight: 700; color: var(--heading); } .sm-legend-d { color: var(--text-2); }
.sm-note { position: absolute; right: 12px; bottom: 10px; z-index: 4; }
/* world map */
.safetymap.world .sm-svg { min-height: 260px; }
.sm-w { fill: var(--surface-3); stroke: var(--line); stroke-width: 0.6; vector-effect: non-scaling-stroke; transition: fill var(--dur-fast), stroke var(--dur-fast); outline: none; }
html.dark .sm-w { fill: rgba(255, 255, 255, 0.06); }
.sm-w.has-data { cursor: pointer; stroke-width: 1; }
.sm-w.tone-green { fill: var(--risk-green-soft); stroke: var(--risk-green); } .sm-w.tone-yellow { fill: var(--risk-yellow-soft); stroke: var(--risk-yellow); }
.sm-w.tone-orange { fill: var(--risk-orange-soft); stroke: var(--risk-orange); } .sm-w.tone-red { fill: var(--risk-red-soft); stroke: var(--risk-red); }
.sm-w.has-data:hover, .sm-w.has-data:focus-visible { fill: var(--accent-soft); stroke: var(--accent); stroke-width: 1.6; }
.sm-w.is-selected { stroke: var(--heading); stroke-width: 2; }
.sm-w-hub { fill: var(--accent); stroke: var(--surface); stroke-width: 1; pointer-events: none; }
@media (max-width: 760px) {
  .safetymap.compact .sm-svg { height: 240px; }
  .sm-legend { max-width: 70%; padding: 7px 9px; gap: 4px; } .sm-legend-d { display: none; }
  .sm-neighbour-label { font-size: 13px; }
}
