.sd-map{position:relative;width:100%;min-height:250px;background:var(--sd-map_bg,#ebe7df);border-radius:10px;overflow:hidden;font-family:inherit;z-index:0}.sd-map .leaflet-container{font-family:inherit;background:#e9e5db}.sd-marker-wrap{background:none;border:0}.sd-marker{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:3px solid #fff;box-sizing:border-box;background:var(--mk-bg);color:var(--mk-fg);box-shadow:0 3px 11px #3b302c4a;font-weight:bold;font-size:17px}.sd-map .leaflet-popup-content-wrapper{border-radius:11px;background:var(--sd-popup_bg,#fffdf9);color:var(--sd-text,#51382b);box-shadow:0 5px 24px #45302533}.sd-map .leaflet-popup-content{margin:13px 17px}.sd-info{display:flex;flex-direction:column;gap:4px;min-width:130px}.sd-info strong{font-weight:700;font-size:13px}.sd-info-time{font-size:12px;color:var(--sd-accent,#a87950);font-weight:700}.sd-info small{color:#786b61;line-height:1.4;font-size:11px}.sd-map .leaflet-popup-tip{background:var(--sd-popup_bg,#fffdf9)}.sd-map .sd-tooltip{font-family:inherit;background:var(--sd-popup_bg,#fffdf9);color:var(--sd-text,#51382b);border:1px solid #eae1d5;border-radius:20px;box-shadow:0 2px 9px #382e2420;padding:6px 10px;font-size:11px;font-weight:600}.sd-map .sd-tooltip:before{border-top-color:var(--sd-label_bg,#fffdf9)}.sd-map .leaflet-control-zoom a{color:var(--sd-text,#51382b)}.sd-map-notice{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:500;background:#fffdf9;border-radius:8px;padding:9px 14px;box-shadow:0 2px 12px #0002;font-size:12px;max-width:80%;text-align:center}

/* Filtr dotyczy wyłącznie kafelków — markery i napisy HTML zachowują prawdziwe kolory. */
.sd-tiles-warm .leaflet-tile-pane{filter:grayscale(.58) sepia(.27) saturate(.68) brightness(1.06)}
.sd-tiles-gray .leaflet-tile-pane{filter:grayscale(1) brightness(1.07) contrast(.92)}
.sd-tiles-soft .leaflet-tile-pane{filter:saturate(.48) brightness(1.11) contrast(.90)}
.sd-map .leaflet-popup-content-wrapper{background:var(--sd-popup_bg,#fffdf9)}
.sd-map .sd-tooltip{background:var(--sd-label_bg,#fffdf9);border-color:var(--sd-label_border,#eae1d5)}

/* v1.2: duże ikony i jednocześnie widoczne, indywidualnie zamykane etykiety */
.sd-map .sd-marker{width:var(--mk-size,51px);height:var(--mk-size,51px);font-size:calc(var(--mk-size,51px)*.48);border-width:3px}
.sd-map .sd-visible-label{border:1px solid var(--sd-label_border,#eae1d5);border-radius:13px;padding:0;background:var(--sd-label_bg,#fffdf9);color:var(--sd-text,#51382b);box-shadow:0 5px 17px #4530252a;max-width:210px;white-space:normal;opacity:1!important}
.sd-map .sd-visible-label:before{border-top-color:var(--sd-label_bg,#fffdf9)}
.sd-map .sd-label-card{display:flex;align-items:flex-start;gap:8px;padding:10px 11px 10px 13px;min-width:110px}
.sd-map .sd-label-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.sd-map .sd-label-body strong{font-size:12px;line-height:1.3;font-weight:700;overflow-wrap:anywhere}
.sd-map .sd-label-body .sd-info-time{font-size:12px;line-height:1.2;color:var(--sd-accent,#a87950);font-weight:700}
.sd-map .sd-label-close{border:0!important;background:none!important;cursor:pointer;color:var(--sd-text,#51382b);opacity:.65;font-size:18px;line-height:16px;padding:0 1px;min-width:16px;min-height:18px;box-shadow:none!important}
.sd-map .sd-label-close:hover{opacity:1}
.sd-map .leaflet-tooltip-pane{z-index:660}

/* v1.3: Leaflet calculates marker tooltipAnchor based on marker center;
   offset is now only 3px, keeping the label close to the marker. */
.sd-map .sd-visible-label { margin-bottom: 0; }

/* V2 — MapLibre marker and permanent labels */
.sd-map .maplibregl-control-container{font-family:inherit}
.sd-vector-marker{position:relative;width:var(--mk-size);height:var(--mk-size);font-family:inherit;cursor:default}
.sd-vector-circle{width:100%;height:100%;border-radius:50%;border:3px solid #fff;box-shadow:0 4px 14px #41342a33;background:var(--mk-bg);color:var(--mk-fg);display:flex;align-items:center;justify-content:center;font-size:calc(var(--mk-size) * .42);cursor:pointer;padding:0;line-height:1}
.sd-vector-label{position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);background:var(--sd-label_bg,#fffdf9);border:1px solid var(--sd-label_border,#eae1d5);color:var(--sd-text,#51382b);border-radius:13px;box-shadow:0 3px 14px #41342a1e;width:150px;box-sizing:border-box;padding:12px 27px 12px 13px;line-height:1.28;pointer-events:auto;font-size:13px}
.sd-vector-label[hidden]{display:none!important}
.sd-vector-label:after{content:"";position:absolute;bottom:-7px;left:calc(50% - 7px);height:12px;width:12px;transform:rotate(45deg);border-right:1px solid var(--sd-label_border,#eae1d5);border-bottom:1px solid var(--sd-label_border,#eae1d5);background:var(--sd-label_bg,#fffdf9)}
.sd-vector-label strong{display:block;font-weight:650;padding-right:1px;overflow-wrap:break-word}
.sd-vector-time{display:block;font-weight:700;color:var(--sd-accent,#a87950);margin-top:5px}
.sd-vector-close{position:absolute;top:5px;right:7px;background:transparent;border:0;color:#88776e;font-size:19px;cursor:pointer;padding:0 4px;line-height:1.2}
.sd-map .maplibregl-ctrl-attrib{font-size:10px}

/* v2.1: custom SVG scaled inside the existing circular pin. */
.sd-map .sd-custom-svg{display:block;width:55%;height:55%;object-fit:contain;flex:0 0 auto;pointer-events:none;}

/* v2.3: poprawka pozycji markerow przy zoomie w motywach nadpisujacych CSS MapLibre. */
.sd-map .maplibregl-marker {position:absolute!important;}
/* Dymek obok, z prawej strony pinezki, ze strzalka skierowana w lewo. */
.sd-map .sd-vector-label {
  bottom:auto;left:calc(100% + 12px);top:50%;
  transform:translateY(-50%);width:166px;
}
.sd-map .sd-vector-label::after {
  bottom:auto;left:-7px;top:calc(50% - 6px);
  border-right:0;border-bottom:1px solid var(--sd-label_border,#eae1d5);
  border-left:1px solid var(--sd-label_border,#eae1d5);
  border-top:0;transform:rotate(45deg);
}
/* Punkt glowny nad innymi etykietami i pinezkami. */
.sd-map .maplibregl-marker.sd-primary-map-marker {z-index:9999!important;}
.sd-map .maplibregl-marker.sd-secondary-map-marker {z-index:2;}
.sd-map .sd-primary-vector-marker .sd-vector-label {font-weight:650;}

/* v2.3.1: Seamless left-pointing speech-bubble tail. The tail uses the
   same configured background as the label and no border of its own. */
.sd-map .sd-vector-label::after {
  content: "";
  position: absolute;
  top: 50%;
  bottom: auto;
  left: -11px;
  width: 13px;
  height: 22px;
  transform: translateY(-50%);
  background: var(--sd-label_bg,#fffdf9);
  border: 0;
  box-shadow: none;
  clip-path: polygon(0 50%,100% 0,100% 100%);
  z-index: 1;
  pointer-events: none;
}
/* Cover only the vertical border at the tail join; all other edges stay outlined. */
.sd-map .sd-vector-label::before {
  content: "";
  position: absolute;
  left: -2px;
  top: 50%;
  width: 4px;
  height: 20px;
  transform: translateY(-50%);
  background: var(--sd-label_bg,#fffdf9);
  border: 0;
  z-index: 2;
  pointer-events: none;
}

/* v2.4.0 — circular location clusters. Do not override MapLibre's transforms. */
.sd-map .sd-cluster-root{width:56px;height:56px;position:relative;z-index:5;}
.sd-map .sd-cluster-circle{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;border:5px solid #fff!important;background:var(--sd-cluster-fill,#b78457)!important;color:#fff!important;box-shadow:0 4px 16px #372a2440;font-size:16px;font-weight:750;font-family:inherit;line-height:1;cursor:pointer;padding:0;transition:filter .15s ease;}
.sd-map .sd-cluster-circle:hover{filter:brightness(1.08);}
.sd-map .sd-cluster-circle:focus-visible{outline:3px solid #51382b;outline-offset:2px;}

