/* ------------------------------------------------------------------
   Geo filter component (Circle / Rectangle / Polygon on a map)
   Shared by the TikTok + Google keyword-search tools.
   Drops into a .ks-filter-card; depends on Leaflet + Leaflet.draw.

   Accent is themeable: set --geo-accent (hex) + --geo-accent-rgb (r,g,b)
   on :root (TikTok falls back to pink; Google overrides to blue).
   ------------------------------------------------------------------ */

.geo-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.geo-title{font-size:.98rem;color:rgba(15,23,42,.88);font-weight:800;display:flex;align-items:center;gap:8px}
.geo-title .material-symbols-outlined{font-size:20px;color:var(--geo-accent,#ff2d55)}
.geo-off{font-size:12px;color:rgba(15,23,42,.5);font-weight:700}
.geo-sub{color:rgba(15,23,42,.58);font-size:12.5px;margin:3px 0 11px}

.geo-modes{display:inline-flex;gap:6px;background:rgba(15,23,42,.05);border:1px solid rgba(15,23,42,.1);border-radius:11px;padding:4px}
.geo-mode{appearance:none;border:0;background:transparent;color:rgba(15,23,42,.7);border-radius:8px;
  padding:6px 12px;font-size:.85rem;font-weight:650;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:.13s}
.geo-mode .material-symbols-outlined{font-size:18px}
.geo-mode:hover{background:rgba(15,23,42,.06);color:rgba(15,23,42,.9)}
.geo-mode.active{background:var(--geo-accent,#ff2d55);color:#fff;box-shadow:0 3px 12px rgba(var(--geo-accent-rgb,255,45,85),.32)}

.geo-mapwrap{position:relative;margin-top:11px}
.geo-map{height:240px;border-radius:12px;overflow:hidden;border:1px solid rgba(15,23,42,.16);background:#0a0e16}
.geo-map-tools{position:absolute;right:10px;top:10px;z-index:600;display:flex;flex-direction:column;gap:6px}
.geo-tool{width:34px;height:34px;border-radius:9px;border:1px solid rgba(255,255,255,.14);background:rgba(12,18,26,.85);
  color:#dbe6f2;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px);transition:.13s}
.geo-tool:hover{background:rgba(28,40,56,.95);color:#fff;transform:translateY(-1px)}
.geo-tool .material-symbols-outlined{font-size:19px}
.geo-draw-hint{position:absolute;left:10px;top:10px;z-index:600;font-size:11.5px;color:#cfe0f2;
  background:rgba(12,18,26,.8);border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:5px 9px;backdrop-filter:blur(6px);
  display:none;align-items:center;gap:6px}
.geo-draw-hint.show{display:inline-flex}

.geo-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.geo-chip{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:#14203a;background:#eef5ff;
  border:1px solid #cfe2f7;border-radius:999px;padding:5px 12px;font-variant-numeric:tabular-nums}
.geo-chip .material-symbols-outlined{font-size:16px;color:#2f6fb0}
.geo-chip.empty{color:rgba(15,23,42,.5);background:rgba(15,23,42,.04);border-color:rgba(15,23,42,.1)}
.geo-clear{margin-left:auto;font-size:12.5px;color:#b4283f;background:rgba(var(--geo-accent-rgb,255,45,85),.08);border:1px solid rgba(var(--geo-accent-rgb,255,45,85),.25);
  border-radius:999px;padding:5px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.geo-clear:hover{background:rgba(var(--geo-accent-rgb,255,45,85),.16)}
.geo-clear[disabled]{opacity:.4;cursor:default}

.geo-precise{margin-top:11px;display:none;gap:10px;align-items:flex-end;flex-wrap:wrap}
.geo-precise.show{display:flex}
.geo-precise .grp{display:flex;flex-direction:column}
.geo-precise label{font-size:.76rem;color:rgba(15,23,42,.66);font-weight:600;margin-bottom:2px}
.geo-precise input{width:120px;font-size:.86rem;border:1px solid rgba(15,23,42,.18);border-radius:8px;padding:5px 8px;color:#14203a;background:#fff}
.geo-precise input:focus{outline:none;border-color:var(--geo-accent,#ff2d55);box-shadow:0 0 0 3px rgba(var(--geo-accent-rgb,255,45,85),.14)}
.geo-loc{font-size:12.5px;color:#2f6fb0;background:#eef5ff;border:1px solid #cfe2f7;border-radius:8px;padding:6px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.geo-loc:hover{background:#dceafe}

/* maps */
.geo-map .leaflet-container,.modal-map .leaflet-container,#geoMap,#geoMapBig{background:#0a0e16;font-family:inherit}
.geo-mapwrap .leaflet-draw{display:none} /* we drive drawing from our own buttons */
.modal-map{height:64vh;border-radius:10px;overflow:hidden}
.modal-modes{display:inline-flex;gap:6px}
.btn-tt{background:var(--geo-accent,#ff2d55);border-color:var(--geo-accent,#ff2d55);color:#fff}
.btn-tt:hover{filter:brightness(1.08);color:#fff}

/* polygon: make the FIRST vertex obvious (pulsing accent dot you click to close) */
.leaflet-editing-icon.geo-first-vertex{
  width:15px!important;height:15px!important;margin-left:-7px!important;margin-top:-7px!important;
  border-radius:50%!important;background:var(--geo-accent,#ff2d55)!important;border:2px solid #fff!important;
  box-shadow:0 0 0 3px rgba(var(--geo-accent-rgb,255,45,85),.4);animation:geoPulse 1.25s ease-out infinite;z-index:1000!important}
@keyframes geoPulse{
  0%{box-shadow:0 0 0 2px rgba(var(--geo-accent-rgb,255,45,85),.55)}
  70%{box-shadow:0 0 0 11px rgba(var(--geo-accent-rgb,255,45,85),0)}
  100%{box-shadow:0 0 0 2px rgba(var(--geo-accent-rgb,255,45,85),0)}}
