/* ---------------------------------------------------------------------
   MAPA OFERT "W POBLIZU" (B3-06, pozycja 33 wlasciciela 27.10).
   Prawdziwa mapa (MapLibre + plik PMTiles z naszej domeny, `mapa.js`)
   nad nasza rysowana zaslepka; karty jada po mapie na dole (telefon)
   albo kolumna z lewej (laptop od 1024 px). Arkusz stoi tylko na tym
   ekranie (@pushOnce w `offers/_b3-mapa`), zmienne `--b-*` z `b3.css`.
--------------------------------------------------------------------- */
.b3-mapa-ekran{position:relative}
.b3-mapa-ekran .b3-mapa{aspect-ratio:auto;height:calc(100svh - 184px);min-height:460px;max-height:900px}
.b3-mapa.zywa{-webkit-user-select:none;user-select:none}
.mp-atrapa{position:absolute;left:50%;top:50%;min-width:100%;min-height:100%;aspect-ratio:390/470;transform:translate(-50%,-50%);transition:opacity .45s ease}
.b3-mapa .mp-gl{position:absolute;inset:0;opacity:0;transition:opacity .6s ease}
.mp-gl canvas{outline:none}
.b3-mapa.zywa .mp-gl{opacity:1}
.b3-mapa.zywa .mp-atrapa{opacity:0;pointer-events:none}
.mp-laduje{position:absolute;z-index:4;left:50%;top:45%;transform:translate(-50%,-50%);padding:8px 14px;border-radius:999px;background:var(--b-karta);border:1px solid var(--b-pole-r);font-size:12.5px;font-weight:800;color:var(--b-pod)}

/* Gora mapy: napis i suwak promienia (z lewej), guziki (z prawej) */
.mp-gora{position:absolute;z-index:5;left:12px;right:66px;top:12px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;pointer-events:none}
.mp-gora > *{pointer-events:auto}
.b3-mapa-ekran .b3-mapa-info{position:static;max-width:100%;min-width:0;background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.b3-mapa-ekran .b3-mapa-info > span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b3-mapa-ekran .b3-mapa-info .b3i{flex:none}
.mp-gora{right:64px}
/* Warstwy Praca / Zlecenia / Uslugi (pozycja 36) - jak zakladki listy */
.mp-warstwy{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;width:100%;max-width:340px;padding:3px;border-radius:13px;background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--b-pole-r);box-sizing:border-box}
.mp-warstwy a{min-width:0;height:34px;padding:0 6px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--b-pod);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .2s,color .2s}
.mp-warstwy a.on{background:var(--b-zl-tlo);color:var(--b-zl);box-shadow:inset 0 0 0 1px var(--b-zl-r)}
/* Pole "Miasto" z napisem pod spodem (pozycja 37) */
.mp-szuk{position:relative;z-index:3;width:100%;max-width:340px;padding:4px 12px 6px;border-radius:13px;background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--b-pole-r);box-sizing:border-box}
.mp-szuk-pole{display:flex;align-items:center;gap:8px;color:var(--b-zl)}
.mp-szuk-pole .b3i{flex:none}
.mp-szuk-pole input{flex:1;min-width:0;height:34px;padding:0;border:0;background:transparent;color:var(--b-tytul);font:800 16px/1.2 Manrope,system-ui,sans-serif;outline:none;-webkit-appearance:none;appearance:none}
.mp-szuk-pole input::placeholder{color:var(--b-pod);font-weight:700}
.mp-szuk-pole input::-webkit-search-cancel-button{display:none}
.mp-szuk:focus-within{border-color:var(--b-zl-r2)}
.mp-napis{display:block;padding-left:25px;font-size:12px;font-weight:700;line-height:16px;color:var(--b-pod);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-pp{position:absolute;z-index:8;left:-1px;right:-1px;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;border-radius:13px;background:var(--b-karta);border:1px solid var(--b-pole-r);box-shadow:0 14px 30px rgba(0,0,0,.45);max-height:300px;overflow-y:auto}
.mp-pp[hidden]{display:none}
.mp-pp li{display:flex;flex-direction:column;justify-content:center;min-height:44px;padding:4px 10px;border-radius:10px;cursor:pointer}
.mp-pp li b{font-size:14.5px;font-weight:800;color:var(--b-tytul)}
.mp-pp li span{font-size:12px;font-weight:700;color:var(--b-pod)}
.mp-pp li[aria-selected="true"],.mp-pp li:hover{background:var(--b-zl-tlo)}
.mp-promien{max-width:100%;overflow-x:auto;scrollbar-width:none;box-sizing:border-box}
.mp-promien::-webkit-scrollbar{display:none}
.mp-promien a.mp-kraj{min-width:0;padding:0 10px}
.b3-mapa.laduje .mp-gl{filter:saturate(.85)}
.mp-promien{display:flex;gap:2px;padding:3px;border-radius:13px;background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--b-pole-r)}
.mp-promien a{min-width:50px;height:34px;padding:0 8px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:800;color:var(--b-t);text-decoration:none;white-space:nowrap;transition:background-color .2s,color .2s}
.mp-promien a.on{background:var(--b-zl-tlo);color:var(--b-zl);box-shadow:inset 0 0 0 1px var(--b-zl-r)}
.b3-mapa-ekran .b3-mapa-zoom{z-index:5;right:12px;top:12px}
.b3-mapa-ekran .b3-mapa-zoom a{background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 18px rgba(0,0,0,.35)}
.b3-mapa-ekran .b3-mapa-zoom a[hidden]{display:none}
.mp-tutaj{position:absolute;z-index:6;left:50%;top:176px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--b-zl-r);background:var(--b-karta);color:var(--b-zl);font:800 13.5px Manrope,system-ui,sans-serif;white-space:nowrap;box-shadow:0 10px 26px rgba(0,0,0,.45);cursor:pointer;animation:mp-wjazd .28s ease}
.mp-tutaj[hidden]{display:none}
@keyframes mp-wjazd{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
.b3-mapa-ekran .b3-mapa-lista{z-index:5;bottom:198px;background:rgba(16,16,20,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.mp-atr{position:absolute;z-index:5;left:12px;bottom:2px;padding:0 6px;border-radius:6px;background:rgba(9,9,11,.72);font-size:10px;line-height:16px;font-weight:700;color:var(--b-pod);pointer-events:none}
:root[data-theme="light"] .mp-atr{background:rgba(255,255,255,.78)}
.mp-atr[hidden]{display:none}

/* Metki ofert, klastry, "ja". Korzen metki ustawia biblioteka (transform),
   dlatego skacze i rosnie zawsze dziecko - `.mp-metka`, `.mp-klaster`. */
.mp-m{cursor:pointer}
.mp-metka{position:relative;display:flex;align-items:center;height:30px;padding:0 10px;border-radius:10px;border:1px solid var(--b-zl-r);background:var(--b-karta);color:var(--b-t);font:800 12.5px Manrope,system-ui,sans-serif;white-space:nowrap;box-shadow:0 6px 16px rgba(0,0,0,.45);transition:transform .2s ease,opacity .3s ease,background-color .2s;transform-origin:50% 100%}
.mp-metka::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;margin-left:-4px;background:inherit;border-right:1px solid var(--b-zl-r);border-bottom:1px solid var(--b-zl-r);transform:rotate(45deg)}
.mp-metka.on{background:var(--b-zloto);color:var(--b-zl-t);border-color:transparent;transform:scale(1.12)}
.mp-metka.on::after{background:#B08A24;border-color:transparent}
.mp-metka.daleko{opacity:.42}
.mp-metka.skok{animation:mp-skok .62s cubic-bezier(.28,1.55,.5,1)}
@keyframes mp-skok{0%{transform:translateY(0) scale(1.12)}38%{transform:translateY(-14px) scale(1.16)}100%{transform:translateY(0) scale(1.12)}}
.mp-klaster{display:flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 8px;border-radius:14px;border:1.5px solid var(--b-zl2);background:rgba(16,16,20,.92);color:var(--b-zl);font:800 14px Manrope,system-ui,sans-serif;box-shadow:0 0 0 6px rgba(217,182,74,.14),0 8px 20px rgba(0,0,0,.45);transition:transform .2s ease}
.mp-klaster:hover,.mp-metka:hover{transform:scale(1.06)}
/* Metki warstw (pozycja 36): zlecenie - kwota ze znakiem zlecenia;
   usluga / sklep - kwadratowy znak firmy (regula 13) i cena albo nazwa. */
.mp-metka span{display:block;max-width:132px;overflow:hidden;text-overflow:ellipsis}
.mp-metka.mp-zlecenie{padding-left:6px;gap:6px}
.mp-zl-ik{flex:none;width:20px;height:20px;border-radius:6px;background:var(--b-zl-tlo);box-shadow:inset 0 0 0 1px var(--b-zl-r);display:flex;align-items:center;justify-content:center}
.mp-zl-ik svg{width:14px;height:14px;fill:none;stroke:var(--b-zl);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.mp-metka.on .mp-zl-ik{background:rgba(0,0,0,.12);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25)}
.mp-metka.on .mp-zl-ik svg{stroke:var(--b-zl-t)}
.mp-metka.mp-usluga,.mp-metka.mp-sklep{padding-left:3px;gap:7px}
.mp-znak{flex:none;width:24px;height:24px;border-radius:7px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--b-awatar);color:var(--b-awatar-t);font-style:normal;font-size:12px;font-weight:800;box-shadow:inset 0 0 0 1px var(--b-zl-r)}
.mp-znak img{width:100%;height:100%;object-fit:cover}
.b3-mk-st-s{font-size:17px}
.mp-ja-cel{background:var(--b-karta);border-color:var(--b-zl2)}
.mp-ja-cel::before{animation:none;opacity:0}
.mp-ja{position:relative;width:18px;height:18px;border-radius:50%;background:var(--b-zl2);border:3px solid #FBEFC2;box-shadow:0 2px 10px rgba(0,0,0,.5)}
.mp-ja::before{content:"";position:absolute;inset:-3px;border-radius:50%;background:rgba(217,182,74,.45);animation:mp-puls 2.2s ease-out infinite}
@keyframes mp-puls{0%{transform:scale(1);opacity:.75}100%{transform:scale(3.6);opacity:0}}

/* Karty po mapie: telefon - tasma na dole mapy */
.b3-mapa-ekran .b3-tasma{position:absolute;z-index:6;left:0;right:0;bottom:22px;padding:0 14px 4px;scroll-padding:0 14px}
.b3-mapa-ekran .b3-mk{box-shadow:0 12px 30px rgba(0,0,0,.45);transition:border-color .2s,box-shadow .2s}
.b3-mapa-ekran .b3-mk[hidden]{display:none}
.b3-mapa-ekran .b3-mk.on{border-color:var(--b-zl-r2);box-shadow:0 0 0 1px var(--b-zl-r2),0 12px 30px rgba(0,0,0,.45)}
.b3-mk-t em{font-style:normal}
.b3-mk-znak{display:flex;align-items:center;justify-content:center;background:var(--b-awatar);color:var(--b-awatar-t);font-size:28px;font-weight:800;letter-spacing:.5px;border:1px solid var(--b-zl-r)}
.b3-mk-znak img{object-fit:cover}
.b3-mk-pusto{flex-direction:column;justify-content:center;gap:10px;min-height:118px}
.b3-mk-pusto[hidden]{display:none}
.b3-mk-pusto p{margin:0;font-size:14px;font-weight:800;color:var(--b-tytul);line-height:1.35}
.b3-mk-pusto .b3-cta{min-height:40px;border-radius:12px;font-size:13px}

/* Jasny motyw */
:root[data-theme="light"] .b3-mapa-ekran .b3-mapa-info,
:root[data-theme="light"] .mp-warstwy,
:root[data-theme="light"] .mp-szuk,
:root[data-theme="light"] .mp-promien,
:root[data-theme="light"] .b3-mapa-ekran .b3-mapa-zoom a,
:root[data-theme="light"] .b3-mapa-ekran .b3-mapa-lista{background:rgba(255,255,255,.9);box-shadow:0 6px 18px rgba(40,32,10,.12)}
:root[data-theme="light"] .mp-klaster{background:rgba(255,255,255,.95);box-shadow:0 0 0 6px rgba(176,138,36,.16),0 8px 20px rgba(40,32,10,.18)}
:root[data-theme="light"] .mp-metka,
:root[data-theme="light"] .mp-tutaj,
:root[data-theme="light"] .b3-mapa-ekran .b3-mk{box-shadow:0 8px 22px rgba(40,32,10,.16)}
:root[data-theme="light"] .mp-ja{border-color:#FFFFFF;box-shadow:0 2px 10px rgba(40,32,10,.35)}

@media (prefers-reduced-motion:reduce){
  .mp-ja::before,.mp-metka.skok,.mp-tutaj{animation:none}
  .mp-gl,.mp-atrapa,.mp-metka{transition:none}
}

/* Laptop: mapa na cala kolumne, karty kolumna z lewej po mapie */
@media (min-width:1024px){
  .b3-mapa-ekran .b3-mapa{max-width:none;height:calc(100vh - 230px);min-height:560px;border-radius:22px;border:1px solid var(--b-ramka)}
  .mp-gora{left:370px;right:66px;top:14px}
  .b3-mapa-ekran .b3-tasma{top:14px;bottom:16px;left:14px;right:auto;width:340px;flex-direction:column;gap:10px;overflow-x:hidden;overflow-y:auto;padding:0 4px 0 0;scroll-snap-type:y proximity;scroll-padding:0}
  .b3-mapa-ekran .b3-tasma .b3-mk{width:auto}
  .b3-mapa-ekran .b3-mapa-lista{bottom:18px;left:calc(50% + 180px)}
  .mp-atr{left:auto;right:14px;bottom:4px}
  .mp-tutaj{top:auto;bottom:70px;left:calc(50% + 180px)}
}
