/* SKYNET coverage map UI.
   Lives in its own file, not in a template <style> block: the sites CSP
   (style-src self) blocks inline stylesheets, so rules placed in the
   template were silently dropped by the browser. */
/* Кнопка геолокации на карте: плитка SKYNET — белая, с фиолетовой иконкой. */
.coverage-locate-control{margin-top:10px!important;border:0!important;background:transparent!important;box-shadow:none!important}
.coverage-locate-control a.coverage-locate-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;color:#7226b7;background:#fff;border:1px solid rgba(114,38,183,.18);border-radius:14px;box-shadow:0 6px 18px rgba(45,21,69,.16);cursor:pointer;transition:background .18s,color .18s,box-shadow .18s}
.coverage-locate-control a.coverage-locate-btn svg{display:block;width:22px;height:22px}
.coverage-locate-control a.coverage-locate-btn:hover,.coverage-locate-control a.coverage-locate-btn:focus-visible{background:linear-gradient(135deg,#8b3fd6,#6a1da6);border-color:#6a1da6;color:#fff;box-shadow:0 8px 22px rgba(114,38,183,.34)}
.coverage-locate-control a.coverage-locate-btn:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.coverage-locate-control a.coverage-locate-btn.is-busy{pointer-events:none;background:#f4f1fb;color:#7226b7;box-shadow:0 4px 12px rgba(45,21,69,.12)}
.coverage-locate-control a.coverage-locate-btn.is-busy svg{animation:coverage-locate-spin 1s linear infinite}
.coverage-locate-control a.coverage-locate-btn.is-error{background:#fff1f2;border-color:#fecdd3;color:#be123c}
@keyframes coverage-locate-spin{to{transform:rotate(360deg)}}
.coverage-map .leaflet-control-zoom{border:1px solid rgba(45,21,69,.12);border-radius:14px;box-shadow:0 6px 18px rgba(45,21,69,.14);overflow:hidden}
.coverage-map .leaflet-bar a{width:44px;height:44px;line-height:44px}
/* Метка «вы здесь»: бело-фиолетовая капля SKYNET с пульсирующим кольцом. */
.coverage-me{position:relative;display:block;width:46px;height:54px}
.coverage-me svg{position:relative;display:block;filter:drop-shadow(0 5px 10px rgba(45,21,69,.4))}
.coverage-me__pulse{position:absolute;left:50%;top:20px;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:radial-gradient(circle,rgba(114,38,183,.34) 0,rgba(114,38,183,.12) 55%,rgba(114,38,183,0) 72%);animation:coverage-me-pulse 2.2s ease-out infinite}
@keyframes coverage-me-pulse{0%{transform:scale(.45);opacity:.9}70%{transform:scale(1.15);opacity:0}100%{transform:scale(1.15);opacity:0}}
@media(max-width:680px){.coverage-locate-control a.coverage-locate-btn,.coverage-map .leaflet-bar a{width:46px;height:46px;line-height:46px}}
@media(prefers-reduced-motion:reduce){.coverage-me__pulse{animation:none;opacity:.55}.coverage-locate-control a.coverage-locate-btn.is-busy svg{animation:none}}
/* Ячейка покрытия: маленькая зелёная точка circleMarker с белой обводкой. */
.coverage-map .leaflet-overlay-pane svg{filter:drop-shadow(0 1px 1.5px rgba(12,45,32,.35))}
.coverage-map .coverage-dot{cursor:pointer;transition:fill .15s,stroke-width .15s}
/* Линия предполагаемого кабеля от ближайшей точки до выбранной. */
.coverage-map .coverage-route-line{filter:drop-shadow(0 1px 3px rgba(114,38,183,.35))}
.coverage-cable{background:#f5efff;border-color:#ddcdf7}
.coverage-cable b{color:#4c1d95}
.coverage-cable__note{font-size:12px;opacity:.85}
/* Карточка на карте: короткая строка расчёта кабеля и телефоны офиса, больше
   ничего. Отдельный файл, а не блок style в шаблоне: CSP сайта
   (style-src self) молча выбрасывает инлайновые стили. */
.coverage-popup .leaflet-popup-content-wrapper{border-radius:18px;border:1px solid rgba(114,38,183,.16);box-shadow:0 16px 38px rgba(45,21,69,.26)}
.coverage-popup .leaflet-popup-content{margin:12px 14px;width:auto;font-size:13px;line-height:1.45}
.coverage-popup .leaflet-popup-close-button{width:28px;height:28px;font-size:20px;line-height:26px;color:#8a8296}
.coverage-popup__body{display:block;min-width:150px}
.coverage-popup__cable{margin:0 0 7px;font-weight:900;font-size:14px;line-height:1.35;color:#4c1d95}
.coverage-popup__office{margin:0;color:#2d1545;font-size:13px;line-height:1.4}
.coverage-popup__phones{margin:4px 0 0;font-weight:900;font-size:14px;line-height:1.5;color:#7226b7}
.coverage-popup__phones a{color:inherit;text-decoration:none;white-space:nowrap}
.coverage-popup__phones a:hover,.coverage-popup__phones a:focus-visible{text-decoration:underline}
.coverage-popup .leaflet-popup-tip{box-shadow:none;border:1px solid rgba(114,38,183,.16);border-top:0;border-left:0}
@media(max-width:680px){.coverage-popup .leaflet-popup-content{margin:11px 13px}.coverage-popup__body{min-width:140px}}
.coverage-popup__covered{margin:0;font-weight:900;font-size:14px;line-height:1.4;color:#12a875}
