/* =====================================================================
   ISP: map animation (fiber cut / current)
   
   ===================================================================== */
/* ===== map: ekshathe down — animation (fiber cut / current) ===== */
.nm-pin.nm-hit{--gc:#f43f5e;transform:translate(-50%,-100%) scale(1.28);transform-origin:50% 100%;z-index:900;
  animation:nmPop .55s cubic-bezier(.3,1.6,.5,1) both, nmGlow 1.6s ease-in-out infinite;border-color:var(--gc)}
@keyframes nmPop{0%{transform:translate(-50%,-100%) scale(.6);opacity:.2}100%{transform:translate(-50%,-100%) scale(1.28);opacity:1}}
@keyframes nmGlow{0%,100%{box-shadow:0 0 0 0 var(--gc),0 2px 6px rgba(0,0,0,.45)}50%{box-shadow:0 0 0 7px transparent,0 0 14px 3px var(--gc)}}
.leaflet-marker-icon:has(.nm-hit){z-index:900 !important}
/* animation shuru hole down group chara baki ID gulo chhoto hoye mile jay */
.nm-pin.nm-gone{pointer-events:none;animation:nmGone .7s ease-in both}
@keyframes nmGone{0%{transform:translate(-50%,-100%) scale(1);opacity:1;filter:none}
  60%{opacity:.35;filter:grayscale(1)}100%{transform:translate(-50%,-100%) scale(.3);opacity:0;filter:grayscale(1)}}
.leaflet-marker-icon:has(.nm-gone){pointer-events:none !important}
.nm-allbtn{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:800;display:inline-flex;align-items:center;gap:7px;
  background:#111b21;color:#e9edef;border:1px solid #2a3942;border-radius:20px;padding:8px 15px;font:600 12.5px inherit;font-family:inherit;
  cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.5);animation:nmUp .35s ease-out}
.nm-allbtn:hover{background:#202c33}
.nm-allbtn svg{width:16px;height:16px;color:#21c063}
.nm-allbtn.hide{display:none}
@keyframes nmUp{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
path.nm-fl{stroke-dasharray:6 7;animation:nmDraw .6s ease-out both, nmFlow 1s linear infinite;filter:drop-shadow(0 0 3px rgba(0,0,0,.6))}
path.nm-fl.power{stroke-dasharray:3 6}
@keyframes nmDraw{from{opacity:0}to{opacity:.95}}
@keyframes nmFlow{to{stroke-dashoffset:-26}}
@media(prefers-reduced-motion:reduce){.nm-pin.nm-gone{animation:none !important;opacity:0}.nm-pin.nm-hit,path.nm-fl{animation:none !important}}

/* ---- decluttered group view (onek jon eksathe down) ---- */
/* member = chhoto dot (boro pin + protitay ek-i "1h 15m" bubble chilo — bhir) */
.nm-dot{width:14px;height:14px;border-radius:50%;background:var(--gc,#e11d48);border:2px solid #fff;transform:translate(-50%,-50%);
  box-shadow:0 1px 4px rgba(0,0,0,.5);cursor:pointer;animation:nmDotIn .35s cubic-bezier(.3,1.6,.5,1) both, nmDotPulse 2s ease-out infinite}
@keyframes nmDotIn{from{transform:translate(-50%,-50%) scale(0)}to{transform:translate(-50%,-50%) scale(1)}}
@keyframes nmDotPulse{0%{box-shadow:0 0 0 0 var(--gc),0 1px 4px rgba(0,0,0,.5)}70%,100%{box-shadow:0 0 0 9px transparent,0 1px 4px rgba(0,0,0,.5)}}
.leaflet-marker-icon:has(.nm-dot){z-index:900 !important}
/* affected area */
path.nm-area{animation:nmAreaIn .6s ease-out .4s both, nmFlow 1.4s linear infinite}
@keyframes nmAreaIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.nm-dot,path.nm-area{animation:none !important}}

/* ---- karon er label (Fiber cut / Current) — flat callout, kono glow/ring nai ---- */
.nm-tag{position:absolute;left:0;bottom:8px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;
  padding:6px 11px 6px 8px;border-radius:10px;background:#e11d48;color:#fff;font-family:var(--sans);
  box-shadow:0 2px 8px rgba(0,0,0,.35);cursor:pointer;animation:nmAreaIn .3s ease-out .3s both}
.nm-tag::after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-bottom:0;border-top-color:inherit}
.nm-tag.fiber{background:#e11d48;border-top-color:#e11d48}
.nm-tag.power{background:#d97706;border-top-color:#d97706}
.nm-tag .ti{width:26px;height:26px;border-radius:7px;background:rgba(255,255,255,.2);display:grid;place-items:center;flex:0 0 auto}
.nm-tag .ti svg{width:16px;height:16px}
.nm-tag .tx{display:flex;flex-direction:column;line-height:1.25}
.nm-tag .tx b{font-size:12.5px;font-weight:700}
.nm-tag .tx i{font-style:normal;font-size:11px;opacity:.9}
.leaflet-marker-icon:has(.nm-tag){z-index:6000 !important}


/* focus er shomoy area er baire ID — chhoto status dot (lukano na) */
.nm-sdot{width:11px;height:11px;border-radius:50%;border:2px solid #fff;transform:translate(-50%,-50%);cursor:pointer;
  background:#9ca3af;box-shadow:0 1px 3px rgba(0,0,0,.45);animation:nmDotIn .35s ease-out both}
.nm-sdot.online{background:#16a34a}
.nm-sdot.offline{background:#fff;border-color:#e11d48}
@media(prefers-reduced-motion:reduce){.nm-sdot{animation:none}}