/* gdziebeton.pl — app.css (mapa). System Geist/Vercel: ink #171717 na kanwie #fafafa, hairline #ebebeb, akcent #0070f3,
   promienie 6/12 px, Geist Sans/Mono. ⛔ czerwone przyciski, ⛔ natywny select. Zieleń tylko dla stanu „gotowe”. */
:root{
  --ink:#171717;--body:#4d4d4d;--mute:#8f8f8f;--faint:#a1a1a1;--hair:#ebebeb;--hair2:#f2f2f2;--canvas:#fafafa;--elev:#ffffff;
  --link:#0070f3;--link-deep:#0761d1;--link-soft:#d3e5ff;--link3:#ebf5ff;--warn:#f5a623;--warn-soft:#ffefcf;--warn-deep:#ab570a;--ok:#1a7f37;--ok2:#e6f4ea;
  --k0:#0070f3;--k1:#79b8ff;--k2:#c9c9c9;--k3:#ececec;--k4:#f5f5f5;
  --pan-w:460px;--bar-h:56px;--r-sm:6px;--r-md:12px;--r-lg:16px;
  --sh1:0 1px 1px rgba(0,0,0,.04);--sh2:0 2px 2px rgba(0,0,0,.04),0 8px 16px -4px rgba(0,0,0,.08);--sh3:0 12px 32px -8px rgba(0,0,0,.18);
  --f:"Geist",Inter,Arial,ui-sans-serif,system-ui,sans-serif;--m:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --peek-h:112px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--canvas);color:var(--ink);font-family:var(--f);font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased;overflow:hidden}
button,input,textarea{font-family:inherit;font-size:inherit}
h1,h2,h3,h4{margin:0;font-weight:600;color:var(--ink)}
a{color:var(--link)}
:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--ink);color:#fff;padding:6px 10px;border-radius:var(--r-sm)}
.skip:focus{left:8px}
[hidden]{display:none!important}
.mute{color:var(--mute)}
.link{background:none;border:0;padding:0;color:var(--link);cursor:pointer;text-decoration:underline;text-underline-offset:2px;font:inherit}
.link:hover{color:var(--link-deep)}
.eyebrow,.et{font-family:var(--m);font-size:10.5px;line-height:16px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--mute)}

/* znak słowny */
.znak{font-weight:600;letter-spacing:-.4px;font-size:17px;line-height:20px;color:var(--ink);white-space:nowrap}
.znak b{color:var(--link);font-weight:600}
.znak.duzy{font-size:26px;line-height:30px;letter-spacing:-.8px}

/* ---------- pasek ---------- */
#bar{position:absolute;top:0;left:0;right:0;height:var(--bar-h);z-index:9;background:var(--elev);border-bottom:1px solid var(--hair);display:flex;align-items:center;gap:8px;padding:0 14px}
.marka{display:flex;align-items:center;text-decoration:none;flex:none;margin-right:4px;padding:4px 2px;border-radius:var(--r-sm)}
.marka:hover .znak{opacity:.8}
.zaklad{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 10px;border:1px solid var(--hair);background:var(--canvas);border-radius:var(--r-sm);cursor:pointer;color:var(--ink);max-width:260px;min-width:0;flex:0 1 auto;text-align:left}
.zaklad:hover{border-color:var(--faint);background:var(--elev)}
.zaklad svg{width:14px;height:14px;color:var(--link);flex:none}
.zaklad .tx{display:flex;flex-direction:column;min-width:0;line-height:1.1}
.zaklad .tx b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zaklad .tx small{font-family:var(--m);font-size:10.5px;color:var(--mute)}
/* pastylka firmy: „<Firma> · N zakładów” → własna lista .zr-pop (⛔ natywny select); widoczna, gdy firma ma ≥ 2 zakłady */
.firma-bar{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 11px 0 9px;border:1px solid var(--link-soft);background:var(--link3);border-radius:100px;cursor:pointer;color:var(--link-deep);max-width:280px;min-width:0;flex:0 1 auto;text-align:left;transition:background .12s,border-color .12s}
.firma-bar:hover{background:#dbe9ff;border-color:#b6d1ff}
.firma-bar svg{width:14px;height:14px;flex:none}
.firma-bar .tx{display:flex;flex-direction:column;min-width:0;line-height:1.1}
.firma-bar .tx b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.firma-bar .tx small{font-family:var(--m);font-size:10.5px;color:var(--link-deep);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.firma-bar .n{display:none;font-family:var(--m);font-size:12px;font-weight:500}
.zr-pop.firma-pop{max-height:min(72vh,560px);overflow:auto;scrollbar-width:thin}
.zr-pop-b.on{background:var(--link3);color:var(--link-deep)}
.zr-pop-b.on svg{color:var(--link)}
.szukaj{display:flex;align-items:center;gap:6px;background:var(--canvas);border:1px solid var(--hair);border-radius:var(--r-sm);padding:0 6px 0 8px;height:36px;flex:1 1 200px;max-width:340px;min-width:140px;transition:border-color .12s,box-shadow .12s,background .12s}
.szukaj:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px rgba(0,0,0,.06);background:var(--elev)}
.szukaj input{border:0;outline:0;flex:1;font:inherit;font-size:13px;background:transparent;color:var(--ink);min-width:0;-webkit-appearance:none;appearance:none}
.szukaj input::placeholder{color:var(--faint)}
.szukaj input::-webkit-search-cancel-button{display:none}
.szukaj>svg{width:14px;height:14px;color:var(--mute);flex:none}
.szukaj .ikb{border:0;background:transparent;width:26px;height:26px;color:var(--mute);border-radius:4px;display:grid;place-items:center;cursor:pointer;padding:0}
.szukaj .ikb:hover{color:var(--ink);background:var(--hair2)}
.szukaj .ikb svg{width:14px;height:14px}
.szukaj .q-x{display:none}
.szukaj:focus-within .q-x,.szukaj input:not(:placeholder-shown)~.q-x{display:grid}
.seg{display:inline-flex;border:1px solid var(--hair);border-radius:var(--r-sm);overflow:hidden;height:36px;flex:none;background:var(--elev)}
.seg button{border:0;background:var(--elev);color:var(--body);font:inherit;font-size:13px;font-weight:500;padding:0 11px;cursor:pointer;transition:background .12s,color .12s;display:inline-flex;align-items:center;gap:6px}
.seg button svg{width:14px;height:14px}
.seg button:hover{background:var(--hair2)}
.seg button.on{background:var(--ink);color:#fff}
.btn{border:1px solid var(--hair);background:var(--elev);border-radius:var(--r-sm);padding:0 11px;height:32px;font:inherit;font-size:13px;font-weight:500;cursor:pointer;color:var(--ink);display:inline-flex;gap:6px;align-items:center;transition:background .12s,border-color .12s,color .12s;text-decoration:none;white-space:nowrap}
.btn:hover{background:var(--hair2);border-color:var(--faint)}
.btn:disabled{opacity:.5;cursor:default}
.btn.g{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.g:hover{background:#000}
.btn.b{background:var(--link);color:#fff;border-color:var(--link)}
.btn.b:hover{background:var(--link-deep);border-color:var(--link-deep)}
.btn.duzy{height:42px;font-size:14px;padding:0 18px;justify-content:center}
.btn svg{width:14px;height:14px}
.btn .n{font-family:var(--m);font-size:11px;background:var(--link);color:#fff;border-radius:100px;min-width:18px;height:18px;padding:0 5px;display:inline-grid;place-items:center}
.btn .n:empty{display:none}
#bar .btn{height:36px}
body.filtry-otwarte #filtry-btn{background:var(--ink);color:#fff;border-color:var(--ink)}
.licznik{flex:none;margin-left:auto;text-align:right;line-height:1;padding-left:12px;border-left:1px solid var(--hair)}
.licznik b{display:block;font-size:17px;font-weight:600;letter-spacing:-.5px;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.licznik span{font-family:var(--m);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--mute);white-space:nowrap}
.btn.konto{gap:7px}
.btn.konto .ini{width:22px;height:22px;border-radius:50%;background:var(--link);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:600}
.btn.konto.zal{border-color:var(--link-soft);background:var(--link3)}
.ikb{width:30px;height:30px;border-radius:var(--r-sm);border:1px solid var(--hair);background:var(--elev);color:var(--body);cursor:pointer;display:grid;place-items:center;padding:0}
.ikb:hover{background:var(--hair2);color:var(--ink)}
.ikb svg{width:14px;height:14px}

/* ---------- chipy i menu ---------- */
.chip{border:1px solid var(--hair);background:var(--elev);border-radius:var(--r-sm);padding:0 9px;height:28px;font-size:12.5px;font-weight:500;cursor:pointer;user-select:none;transition:background .12s,border-color .12s,color .12s;display:inline-flex;align-items:center;gap:6px;line-height:1;color:var(--body);white-space:nowrap}
.chip:hover{border-color:var(--faint);color:var(--ink)}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip.on:hover{background:#000}
.chip small{font-family:var(--m);font-size:10.5px;font-weight:400;opacity:.7}
.chip .k{font-family:var(--m);font-size:10px;font-style:normal;color:var(--faint)}
.chip.on .k{color:#bdbdbd}
.kr{width:9px;height:9px;border-radius:50%;background:var(--c,#999);box-shadow:0 0 0 1.5px var(--o,#fff) inset;flex:none;display:inline-block}
.chip.on .kr{box-shadow:0 0 0 1.5px rgba(255,255,255,.4)}
.zr-pop{position:fixed;z-index:60;min-width:220px;max-width:320px;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);box-shadow:var(--sh3);padding:6px;animation:pop .12s ease-out}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.zr-pop-t{font-family:var(--m);font-size:11px;color:var(--mute);padding:6px 10px 6px;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zr-pop-s{height:1px;background:var(--hair);margin:4px 0}
.zr-pop-b{display:grid;grid-template-columns:auto 1fr;gap:0 8px;align-items:center;width:100%;text-align:left;border:0;background:transparent;border-radius:var(--r-sm);padding:7px 10px;cursor:pointer;color:var(--ink);font-size:13px;font-weight:500}
.zr-pop-b:hover,.zr-pop-b:focus-visible{background:var(--hair2)}
.zr-pop-b svg{width:14px;height:14px;color:var(--mute)}
.zr-pop-b span{grid-column:2}
.zr-pop-b small{grid-column:2;color:var(--mute);font-weight:400;font-size:11.5px}
.zr-pop-b:disabled{opacity:.5;cursor:default}

/* ---------- szuflada filtrów ---------- */
.filtry{position:absolute;top:var(--bar-h);left:0;right:0;z-index:8;background:var(--elev);border-bottom:1px solid var(--hair);box-shadow:var(--sh2);padding:10px 14px 12px;display:none;flex-direction:column;gap:8px;transition:right .3s cubic-bezier(.2,.8,.2,1)}
body.pan-on:not(.pan-full) .filtry{right:var(--pan-w)}
body.filtry-otwarte .filtry{display:flex}
.f-nag{display:flex;align-items:baseline;gap:10px}
.f-nag b{font-size:14px}
.f-pod{font-size:12px;color:var(--mute)}
.wiersz{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.wiersz .et{min-width:104px}
.akcje-f{justify-content:flex-end;padding-top:8px;border-top:1px solid var(--hair2);gap:8px}
.f-info{margin-right:auto;font-size:12px;color:var(--mute)}
#filtry-gotowe{display:none}

/* ---------- mapa ---------- */
#map{position:absolute;top:var(--bar-h);left:0;right:0;bottom:0;background:#f7f7f7}
.maplibregl-ctrl-attrib{font-size:10px;opacity:.7;font-family:var(--f)}
.maplibregl-ctrl-group{border-radius:var(--r-sm)!important;box-shadow:var(--sh1)!important;border:1px solid var(--hair)}
.maplibregl-ctrl-group button{width:32px;height:32px}
.maplibregl-ctrl-bottom-right{right:12px;bottom:12px;transition:right .3s cubic-bezier(.2,.8,.2,1)}
body.pan-on:not(.pan-full) .maplibregl-ctrl-bottom-right{right:calc(var(--pan-w) + 12px)}
.zak-marker{width:26px;height:26px;cursor:pointer}
.zak-marker i{position:absolute;inset:5px;background:var(--ink);transform:rotate(45deg);border-radius:3px;box-shadow:0 0 0 2.5px #fff,0 2px 8px rgba(0,0,0,.25);transition:transform .15s}
.zak-marker:hover i{transform:rotate(45deg) scale(1.2)}
.zak-marker span{position:absolute;left:30px;top:5px;white-space:nowrap;font-family:var(--m);font-weight:500;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);text-shadow:0 0 3px #fff,0 0 6px #fff,0 0 2px #fff;pointer-events:none}
.zak-marker.glowny{z-index:3}
/* zakłady firmy — znacznik drugorzędny: mniejszy romb (obrys ink, białe wnętrze), etykieta = miasto; klik = zmiana zakładu */
.zak-marker.drugi{width:20px;height:20px;z-index:2}
.zak-marker.drugi i{inset:5px;background:#fff;border-radius:2px;box-shadow:0 0 0 2px var(--ink),0 0 0 3.5px #fff,0 1px 6px rgba(0,0,0,.2)}
.zak-marker.drugi:hover i,.zak-marker.drugi:focus-visible i{background:var(--link);box-shadow:0 0 0 2px var(--link),0 0 0 3.5px #fff,0 1px 6px rgba(0,0,0,.2)}
.zak-marker.drugi span{left:23px;top:3px;font-size:10px;color:var(--body);text-transform:none;letter-spacing:.01em}
#map.z-daleko .zak-marker.drugi span{display:none}
.maplibregl-popup{max-width:280px;font-family:var(--f)}
.maplibregl-popup-content{border-radius:var(--r-sm);padding:8px 11px;box-shadow:var(--sh2);border:1px solid var(--hair);font-size:12.5px;line-height:17px}
.maplibregl-popup-content b{font-size:13px;font-weight:600;display:block;margin-bottom:1px;letter-spacing:-.2px}
.maplibregl-popup-content .m{font-family:var(--m);font-size:11px;color:var(--mute)}
.maplibregl-popup-tip{border-top-color:#fff!important}
.wid{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:5;display:none;align-items:center;gap:8px;background:var(--ink);color:#fff;border:0;border-radius:100px;padding:0 6px 0 14px;height:36px;font-size:13px;font-weight:500;box-shadow:var(--sh2);cursor:pointer;white-space:nowrap;transition:left .3s cubic-bezier(.2,.8,.2,1)}
.wid b{font-family:var(--m);font-weight:500;font-variant-numeric:tabular-nums}
.wid .b{background:rgba(255,255,255,.14);border-radius:100px;padding:0 10px;height:26px;display:inline-flex;align-items:center;font-size:12px}
.wid:hover .b{background:rgba(255,255,255,.24)}
body.pan-on:not(.pan-full) .wid{left:calc((100vw - var(--pan-w)) / 2)}
body.wid-on .wid{display:inline-flex}
body.widok-lista .wid,body.start .wid{display:none}

/* ---------- panel ---------- */
#panel{position:absolute;top:var(--bar-h);right:0;bottom:0;width:var(--pan-w);z-index:6;background:var(--elev);border-left:1px solid var(--hair);transform:translateX(calc(100% + 20px));transition:transform .3s cubic-bezier(.2,.8,.2,1),width .25s cubic-bezier(.2,.8,.2,1),height .25s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column}
body.pan-on #panel{transform:translateX(0)}
body.pan-full #panel{width:100%;border-left:0}
body.pan-full #panel .tresc{max-width:980px;margin:0 auto;width:100%}
body.pan-full #panel .naglowek{padding-left:max(20px,calc((100% - 980px)/2 + 20px));padding-right:max(20px,calc((100% - 980px)/2 + 20px))}
#panel .uchwyt{display:none}
#panel .naglowek{padding:16px 20px 14px;border-bottom:1px solid var(--hair);position:relative;flex:none;background:var(--elev)}
#panel .naglowek .kat{display:inline-flex;align-items:center;gap:6px;font-family:var(--m);font-size:11px;letter-spacing:.04em;text-transform:uppercase;font-weight:500;color:var(--mute)}
#panel .naglowek .kat i{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 0 1.5px var(--o,#fff) inset}
#panel .naglowek h2{font-size:19px;line-height:25px;letter-spacing:-.4px;margin:8px 104px 0 0}
#panel .naglowek .pod{margin-top:4px;color:var(--body);font-size:13px}
#panel .naglowek .akc{position:absolute;top:12px;right:12px;display:flex;gap:6px}
#panel .tresc{overflow:auto;flex:1;padding:14px 20px 44px;scrollbar-width:thin;background:var(--canvas)}
.kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 4px}
.kpi>div{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px 9px;position:relative;min-width:0}
.kpi b{display:block;font-size:19px;font-weight:600;line-height:24px;letter-spacing:-.5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi span{display:block;font-family:var(--m);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--mute);margin-top:3px}
.kpi small{display:block;font-size:11px;color:var(--mute);margin-top:4px;line-height:14px}
.kpi .kd-box{color:#fff;border-color:transparent}
.kpi .kd-box span,.kpi .kd-box small{color:rgba(255,255,255,.72)}
.kpi .kd-teraz{background:var(--k0)}
.kpi .kd-wkrotce{background:#2f8dff}
.kpi .kd-pozniej{background:#7a7a7a}
.kpi .kd-za_pozno{background:#b8b8b8}
.kpi .kd-brak{background:#a1a1a1}
.akcje{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.sekcja{margin:16px 0 0}
.sekcja h3,.sek-t{font-family:var(--m);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--mute);margin:0 0 8px;font-weight:500;display:flex;align-items:center;gap:8px}
.sekcja h3:after,.sek-t:after{content:"";flex:1;height:1px;background:var(--hair)}
#pan-szcz{margin-top:18px}
.dl{display:grid;grid-template-columns:112px 1fr;gap:5px 10px;font-size:13px}
.dl dt{color:var(--mute);font-size:12px;padding-top:1px}
.dl dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.dl dd.m{font-family:var(--m);font-size:12px}
.tag{display:inline-block;font-size:11.5px;font-weight:500;padding:2px 7px;border-radius:5px;background:var(--hair2);color:var(--body);margin:0 4px 4px 0;border:1px solid transparent}
.tag.m{font-family:var(--m);font-size:11px}
.tag.wyn-w{background:var(--ok2);color:var(--ok)}

/* „dla Ciebie”: ★ Nasz klient + Wynik (KONTRAKT §10 „PAKIET MINIMALNY”) — jeden wiersz pod nagłówkiem karty, tylko z JWT */
.dla-ciebie{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.chip.dc-klient.on{background:var(--link3);color:var(--link-deep);border-color:var(--link-soft)}
.chip.dc-wynik.on.wyn-w{background:var(--ok2);color:var(--ok);border-color:var(--ok2)}
.chip.dc-wynik.on.wyn-p{background:var(--hair2);color:var(--body);border-color:var(--hair2)}
.wyn-konk-lista{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}

/* zespół (menu konta → okno „Zespół”, KONTRAKT §10 „PAKIET MINIMALNY”) */
.zesp-lista{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.zesp-w{position:relative;padding:8px 34px 8px 10px;border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--canvas)}
.zesp-w b{display:block;font-size:13px;font-weight:600}
.zesp-w small{display:block;color:var(--mute);font-size:11.5px;margin-top:1px}
.zesp-w .ikb{position:absolute;right:6px;top:6px;width:24px;height:24px}
.zesp-oczek{opacity:.85}
.linia{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0 0}
.firma{display:inline-grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;background:var(--elev);border:1px solid var(--hair);color:var(--ink);border-radius:var(--r-sm);padding:7px 11px;font-weight:500;font-size:13px;cursor:pointer;text-align:left;max-width:100%}
.firma:hover{border-color:var(--link)}
.firma svg{width:14px;height:14px;color:var(--mute);grid-row:1/3}
.firma span{overflow-wrap:anywhere}
.firma small{font-family:var(--m);font-size:10.5px;color:var(--mute);font-weight:400}
.inw-prywatny{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px}
.inw-prywatny svg{width:16px;height:16px;color:var(--mute);margin-top:2px}
.inw-prywatny b{display:block;font-size:13px}
.inw-prywatny small{display:block;color:var(--mute);font-size:12px;line-height:16px;margin-top:2px}
.osz{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px;font-size:12.5px;color:var(--body);line-height:18px}
.osz b{color:var(--ink);font-weight:600}
.osz .mute{font-size:12px;margin-top:4px}
.powody{margin:8px 0 0;padding:0;list-style:none;font-size:12px;line-height:16px;color:var(--body)}
.powody li{padding:2px 0 2px 12px;position:relative}.powody li:before{content:"·";position:absolute;left:2px;color:var(--faint)}
.powody li.p{color:var(--ok)}.powody li.m{color:var(--warn-deep)}
.pusty{color:var(--mute);font-size:13px;padding:10px 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.uwaga{font-size:11.5px;color:var(--mute);margin-top:14px;line-height:16px}
.tytul{font-size:14px;line-height:20px;font-weight:600;margin:0 0 8px}
details.dsk{border-top:1px solid var(--hair);margin-top:12px}
details.dsk summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:11px 0;font-size:13px;font-weight:500;color:var(--ink);user-select:none}
details.dsk summary::-webkit-details-marker{display:none}
details.dsk summary:before{content:"";width:6px;height:6px;border-right:1.5px solid var(--mute);border-bottom:1.5px solid var(--mute);transform:rotate(-45deg);transition:transform .15s;flex:none;margin-left:2px}
details.dsk[open] summary:before{transform:rotate(45deg)}
details.dsk summary .s2{margin-left:auto;font-family:var(--m);font-size:11px;font-weight:400;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:58%}
details.dsk>div{padding:0 0 12px 18px}
/* lista zakładów firmy w panelu (przegląd firmy `f` bez `z`; telefon: arkusz z pastylki) */
#pan-firma{margin-top:14px}
.firma-lista{list-style:none;margin:0;padding:0;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);overflow:hidden}
.firma-lista li+li{border-top:1px solid var(--hair2)}
.fl-z{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:9px 12px;cursor:pointer;color:var(--ink);font:inherit;transition:background .12s}
.fl-z:hover,.fl-z:focus-visible{background:var(--canvas)}
.fl-z .t{font-weight:500;font-size:13.5px;line-height:18px;min-width:0}
.fl-z .t small{display:block;font-size:11.5px;color:var(--mute);font-weight:400;line-height:15px;overflow-wrap:anywhere}
.fl-z .w{font-size:12px;font-weight:500;color:var(--link);border:1px solid var(--link-soft);background:var(--link3);border-radius:100px;padding:3px 10px;white-space:nowrap}
.fl-z:hover .w{background:var(--link);color:#fff;border-color:var(--link)}
.fl-z.on{background:var(--link3);cursor:default}
.fl-z.on .w{background:var(--ink);color:#fff;border-color:var(--ink)}
.lista-p{list-style:none;margin:0;padding:0}
.lista-p li{border-bottom:1px solid var(--hair)}
.lista-p li:last-child{border-bottom:0}
.pow{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:8px 2px;cursor:pointer;color:var(--ink);font:inherit}
.pow:hover .t{color:var(--link)}
.pow .t{font-weight:500;font-size:13px;line-height:18px}
.pow .t small{display:block;font-size:11.5px;color:var(--mute);font-weight:400}
.pow .s{font-family:var(--m);font-size:11.5px;color:var(--mute)}
.pow .m3{font-family:var(--m);font-size:12px;white-space:nowrap;color:var(--body);text-align:right}
.kolko{display:inline-block;width:14px;height:14px;border:2px solid var(--hair);border-top-color:var(--ink);border-radius:50%;animation:obr .8s linear infinite;vertical-align:-2px;margin-right:6px;flex:none}
@keyframes obr{to{transform:rotate(360deg)}}

/* szkielet rozmyty — bez JWT (tekst zastępczy po polsku, blur 5 px, bez zaznaczania) */
#pan-blur{position:relative;filter:blur(5px);user-select:none;-webkit-user-select:none;pointer-events:none;opacity:.75;display:grid;gap:10px;margin-bottom:-120px;max-height:300px;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 40%,transparent);mask-image:linear-gradient(180deg,#000 40%,transparent)}
.szk-k{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px}
.szk-h{font-family:var(--m);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mute);margin-bottom:6px}
.szk-k p{margin:0 0 6px;font-size:13px;line-height:18px;color:var(--body)}
#pan-cta{position:relative;z-index:1;text-align:center;padding:18px 12px 6px}
#pan-cta .btn{height:40px;padding:0 18px;font-size:14px}
#pan-cta p{font-size:12px;color:var(--mute);margin:10px auto 0;max-width:340px;line-height:16px}
.szk-lin{display:inline-block;width:110px;max-width:100%;height:10px;border-radius:5px;background:linear-gradient(90deg,#d9d9d9,#eaeaea);filter:blur(2.5px);user-select:none;pointer-events:none}
.l-row .c-inw.mute{font-size:12px}

/* odkrycie decydenta */
.probka{display:inline-flex;align-items:center;gap:6px;margin-left:4px;white-space:nowrap;padding:2px 8px;border-radius:100px;background:var(--warn-soft);color:var(--warn-deep);font-family:var(--m);font-size:10px;letter-spacing:.03em;text-transform:uppercase;font-weight:500}
.probka i{width:6px;height:6px;border-radius:50%;background:var(--warn-deep)}
.odk-cta{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:12px;text-align:center}
.odk-cta p{margin:0 0 10px;font-size:12.5px;color:var(--body);line-height:17px}
.odk-cta small{display:block;color:var(--mute);font-size:11.5px;margin-top:8px}
.odk-cta .btn{height:38px;font-size:13.5px;padding:0 16px}
.odk-stan{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:12px}
.postep{font-size:13px;color:var(--ink);font-weight:500;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.tor{height:4px;background:var(--hair);border-radius:2px;overflow:hidden;margin-top:10px}
.tor i{display:block;height:100%;width:0;background:linear-gradient(90deg,#007cf0,#00dfd8);transition:width .6s}
.odk-wynik{display:grid;gap:10px}
.wyw-k{border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px;background:var(--elev);box-shadow:var(--sh1);min-width:0}
.wyw-k h4{margin:0 0 8px;font-family:var(--m);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--mute);font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:8px}
.wyw-k h4 .zr{font-size:10px;color:var(--faint);text-transform:none;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
.wyw-k .f-nazwa{display:block;font-size:14px;margin-bottom:6px}
.wyw-k .dl{grid-template-columns:96px 1fr;gap:4px 10px;font-size:12.5px}
.kont-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;margin-top:6px}
.kont{display:grid;grid-template-columns:20px 1fr;gap:6px;align-items:start;padding:5px 0;border-top:1px solid var(--hair2);min-width:0}
.kont i{font-style:normal;width:20px;height:20px;border:1px solid var(--hair);border-radius:6px;display:grid;place-items:center;background:var(--elev);color:var(--mute)}
.kont i svg{width:12px;height:12px}
.kont b{font-size:13px;font-weight:500;overflow-wrap:anywhere;font-family:var(--m);font-size:12.5px}
.kont small{display:block;font-size:11px;color:var(--mute);line-height:14px}
.et-kanal{border-bottom:1px dotted var(--warn-deep);color:var(--warn-deep);cursor:help}
.osoba{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:start;padding:6px 0;border-top:1px solid var(--hair2)}
.osoba:first-of-type{border-top:0;padding-top:0}
.osoba .aw{width:32px;height:32px;border-radius:50%;background:var(--hair2);color:var(--body);display:grid;place-items:center;font-size:11px;font-weight:600}
.osoba b{display:block;font-size:13px;font-weight:600}
.osoba .r{font-size:11.5px;color:var(--mute)}
.ocena{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:100px;font-family:var(--m);font-size:11px;font-weight:500;background:var(--hair2);color:var(--body)}
.ocena.A{background:var(--ok2);color:var(--ok)}.ocena.B{background:var(--link3);color:var(--link-deep)}.ocena.C{background:var(--warn-soft);color:var(--warn-deep)}
.sygnal{display:grid;grid-template-columns:64px 1fr;gap:8px;padding:5px 0;border-top:1px solid var(--hair2);font-size:12.5px}
.sygnal:first-of-type{border-top:0;padding-top:0}
.sygnal .d{font-family:var(--m);font-size:11px;color:var(--mute);padding-top:2px}
.sygnal .z{color:var(--mute);font-size:11.5px}
.skrypt{background:var(--canvas);border:1px solid var(--hair);border-radius:8px;padding:10px 12px;font-size:13px;line-height:1.55;color:var(--ink);white-space:pre-line}
.skrypt .kto{font-family:var(--m);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}

/* kiedy — plakietka */
.kd{display:inline-flex;align-items:center;gap:5px;padding:1px 8px 1px 6px;border-radius:100px;font-family:var(--m);font-size:10.5px;white-space:nowrap;font-style:normal;background:var(--hair2);color:var(--body)}
.kd b{width:7px;height:7px;border-radius:50%;background:var(--k2)}
.kd.kd-teraz{background:var(--link3);color:var(--link-deep)}.kd.kd-teraz b{background:var(--k0)}
.kd.kd-wkrotce{background:#eef6ff;color:#2d6ac2}.kd.kd-wkrotce b{background:var(--k1)}
.kd.kd-pozniej b{background:var(--k2)}
.kd.kd-za_pozno{color:var(--mute)}.kd.kd-za_pozno b{background:var(--k3);box-shadow:0 0 0 1px var(--k2) inset}
.kd.kd-brak{color:var(--mute)}.kd.kd-brak b{background:var(--k4);box-shadow:0 0 0 1px #ddd inset}

/* ---------- lista ---------- */
#lista{position:absolute;top:var(--bar-h);left:0;bottom:0;right:0;display:none;flex-direction:column;background:var(--canvas);z-index:4;padding:12px;transition:right .3s cubic-bezier(.2,.8,.2,1)}
body.pan-on:not(.pan-full) #lista{right:var(--pan-w)}
body.widok-lista #lista{display:flex}
body.widok-lista #map,body.widok-lista .maplibregl-control-container{visibility:hidden}
.l-narz{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin-bottom:8px}
.l-tabs{display:flex;gap:4px}
.l-tabs .chip b{font-family:var(--m);font-weight:500;margin-left:5px;color:var(--mute)}
.l-tabs .chip.on b{color:#bdbdbd}
.l-sort{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.l-sort-chips{display:contents}
.l-sort .et{margin-right:4px}
.l-info{margin-left:auto;font-family:var(--m);font-size:11px;color:var(--mute);white-space:nowrap}
.l-scroll{flex:1;overflow:auto;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);box-shadow:var(--sh1);min-height:0}
.l-row{display:grid;grid-template-columns:96px minmax(150px,1.4fr) minmax(140px,1.2fr) 88px 92px 66px minmax(120px,1fr);gap:0 10px;align-items:center;padding:0 12px;min-height:42px;border-bottom:1px solid var(--hair2);font-size:12.5px;cursor:pointer;min-width:0;line-height:1.3}
.l-head .l-row{position:sticky;top:0;background:var(--canvas);z-index:1;border-bottom:1px solid var(--hair);min-height:32px;cursor:default}
.l-head .l-row span{font-family:var(--m);font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--mute);white-space:nowrap;user-select:none}
.l-head .l-row span[data-s]{cursor:pointer}
.l-head .l-row span[data-s]:hover{color:var(--body)}
.l-head .l-row span.on{color:var(--ink)}
.l-row:hover{background:var(--canvas)}
.l-row.wyb{background:var(--link3);box-shadow:inset 3px 0 0 var(--link)}
.l-row .n{font-family:var(--m);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:12px}
.l-row .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.l-row .t small{display:block;color:var(--mute);font-size:11px;overflow:hidden;text-overflow:ellipsis}
.l-row .c-inw{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.l-wiecej{padding:12px;text-align:center;display:flex;gap:8px;justify-content:center;align-items:center;font-size:12px;color:var(--mute)}
.l-pusto{padding:40px;text-align:center;color:var(--mute);font-size:13px}
.l-csv{height:28px;font-size:12.5px;padding:0 9px;border-color:var(--link-soft);color:var(--link-deep);background:var(--link3)}
.l-csv:hover{background:var(--link);color:#fff;border-color:var(--link)}

/* ---------- trasa wizyt v2 (w=trasa + tr=<id>; KONTRAKT §10 „TRASA HANDLOWCA v2”) — sekcja #trasa w panelu/arkuszu ---------- */
#trasa{margin-top:14px}
.tr-zasady-w{display:flex;justify-content:flex-end;margin:0 0 4px}
.tr-zasady-w .lnk{background:none;border:0;padding:2px 0;color:var(--link-deep);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}
.tr-instr{background:var(--link3);border:1px solid var(--link-soft);border-radius:var(--r-md);padding:10px 12px;font-size:12.5px;line-height:18px;color:var(--ink)}
.tr-instr p{margin:0 0 6px}
.tr-instr a{color:var(--link-deep);font-weight:500}
.tr-akcje{margin:10px 0 4px;flex-wrap:wrap}
.tr-gate{background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:14px 12px;text-align:center}
.tr-gate p{margin:0 0 10px;font-size:12.5px;color:var(--body);line-height:17px}
.tr-lista{list-style:none;margin:0;padding:0;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);overflow:hidden}
.tr-lista li+li{border-top:1px solid var(--hair2)}
.tr-p{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:0 10px;align-items:center;width:100%;text-align:left;border:0;background:transparent;padding:8px 12px 8px 10px;cursor:pointer;color:var(--ink);font:inherit;transition:background .12s}
.tr-p:hover,.tr-p:focus-visible{background:var(--canvas)}
.tr-p.wyb{background:var(--link3);box-shadow:inset 3px 0 0 var(--link)}
.tr-p .nr{width:26px;height:26px;border-radius:50%;background:var(--link);color:#fff;font-family:var(--m);font-size:11.5px;font-weight:500;display:grid;place-items:center;box-shadow:0 0 0 2px #fff}
.tr-p .t{font-weight:500;font-size:13px;line-height:18px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-p .t .kod{font-family:var(--m);font-size:11px;color:var(--mute);font-weight:400}
.tr-p .t small{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--mute);font-weight:400;line-height:16px;white-space:nowrap;overflow:hidden}
.tr-p .r{text-align:right;white-space:nowrap;display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.tr-p .r b{font-family:var(--m);font-size:12px;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.tr-p .r small{font-family:var(--m);font-size:10px;color:var(--mute)}
.tr-p.tr-lock{cursor:default}
.tr-lock-tx{display:inline-flex;align-items:center;gap:5px;color:var(--mute)}
.tr-lock-tx svg{width:13px;height:13px;flex:none}
.tr-pusto{padding:14px 12px;color:var(--mute);font-size:13px;line-height:18px}
.tr-uwaga{font-size:11.5px;color:var(--mute);margin:8px 0 0;line-height:16px}
.zr-pop.csv-pop{min-width:260px}
/* generator (#trasa-gen): pastylki (.chip, reużyte z listy), pola daty/pomiń */
.tr-g-pola{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px}
.tr-g-pole{display:flex;flex-direction:column;gap:5px;min-width:0}
.tr-g-lab{font-family:var(--m);font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}
.tr-pills{display:flex;flex-wrap:wrap;gap:6px}
.tr-g-pola2{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:12px}
.tr-g-check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);cursor:pointer}
.tr-g-check input{width:15px;height:15px;accent-color:var(--link)}
.tr-g-datalab{display:inline-flex;align-items:center;gap:8px;font-family:var(--m);font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}
.tr-g-data{font:13px var(--f);border:1px solid var(--hair);border-radius:var(--r-sm);padding:5px 8px;color:var(--ink);background:var(--elev)}
/* lista tras (#trasa-lista-tras): podsumowanie miesiąca + karty */
.tr-podsum{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:10px 12px;margin-bottom:12px}
.tr-podsum-l{display:flex;flex-direction:column;gap:2px}
.tr-podsum-l b{font-size:17px;font-weight:600;letter-spacing:-.4px;color:var(--ink);font-variant-numeric:tabular-nums}
.tr-podsum-l span{font-size:10.5px;color:var(--mute)}
.tr-karty{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tr-lt-karta{display:flex;align-items:center;gap:6px;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);padding:2px}
.tr-lt-otworz{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left;border:0;background:transparent;padding:9px 10px;cursor:pointer;color:var(--ink);font:inherit;border-radius:var(--r-sm)}
.tr-lt-otworz:hover,.tr-lt-otworz:focus-visible{background:var(--canvas)}
.tr-lt-nazwa{font-weight:500;font-size:13px;display:flex;align-items:center;gap:8px}
.tr-lt-zak{font-style:normal;font-size:10.5px;font-weight:500;color:var(--ok);background:var(--ok2);border-radius:100px;padding:1px 8px}
.tr-lt-meta{font-size:11.5px;color:var(--mute)}
.tr-lt-pastylki{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;color:var(--body)}
.tr-lt-st{font-family:var(--m);background:var(--hair2);border-radius:100px;padding:1px 7px}
.tr-lt-st-zainteresowany{background:var(--ok2);color:var(--ok)}
/* widok trasy (#trasa-widok): przystanek z adresem, statusem i notatką */
.tr-lista-w li{padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.tr-p2-gl{display:grid;grid-template-columns:26px minmax(0,1fr) auto auto auto;gap:0 8px;align-items:center}
.tr-p2-gl .nr{width:24px;height:24px;border-radius:50%;background:var(--link);color:#fff;font-family:var(--m);font-size:11px;font-weight:500;display:grid;place-items:center}
.tr-p2-adr{grid-column:2;min-width:0;text-align:left;border:0;background:transparent;padding:0;cursor:pointer;color:var(--ink);font:inherit;display:flex;flex-direction:column;gap:2px}
.tr-p2-adr .t{font-weight:500;font-size:13px;line-height:17px;white-space:normal;overflow-wrap:anywhere}
.tr-p2-adr .t .kod{font-family:var(--m);font-size:11px;color:var(--mute);font-weight:400}
#trasa-gen .tr-gen-cta{position:sticky;bottom:0;z-index:2;background:var(--elev);padding:8px 0 10px;margin:0 0 6px;box-shadow:0 -8px 12px -10px rgba(0,0,0,.25);flex-wrap:wrap}
#trasa-gen .tr-gen-cta #trasa-gen-limit{flex:1 0 100%;margin:0 0 8px}
#trasa-gen .tr-gen-cta .btn{white-space:normal;text-align:center;line-height:1.25;min-width:0}
.tr-p2-adr small{font-size:11px;color:var(--mute);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.btn.s{height:28px;padding:0 9px;font-size:12px}
.tr-status{border:1px solid var(--hair);background:var(--elev);border-radius:var(--r-sm);padding:0 9px;height:28px;font:inherit;font-size:12px;font-weight:500;color:var(--body);cursor:pointer;white-space:nowrap}
.tr-status:hover{border-color:var(--faint);color:var(--ink)}
.tr-status.on{background:var(--hair2);color:var(--ink)}
.tr-p2-notatka-btn{font-size:11.5px}
textarea.tr-p2-notatka{width:100%;box-sizing:border-box;resize:vertical;min-height:52px;border:1px solid var(--hair);border-radius:var(--r-sm);padding:6px 8px;font:12.5px/17px var(--f);color:var(--ink);background:var(--canvas)}
textarea.tr-p2-notatka:focus{outline:2px solid var(--link);outline-offset:1px}
.tr-p2-druk{display:none}
.tr-druk-tylko{display:none}
/* wydruk karty dnia: tylko nagłówek panelu + instrukcja + przystanki z kratkami statusów; zero map, zero przycisków (nazwisk nie ma w DOM trasy) */
@media print{
  body.widok-trasa{overflow:visible;height:auto;background:#fff}
  body.widok-trasa #bar,body.widok-trasa #map,body.widok-trasa #lista,body.widok-trasa #filtry,body.widok-trasa #warstwy,body.widok-trasa .wid,body.widok-trasa #start,body.widok-trasa #konto-modal,body.widok-trasa #toast,body.widok-trasa #lad,body.widok-trasa .maplibregl-control-container,body.widok-trasa .zak-marker,body.widok-trasa #pan-uchwyt,body.widok-trasa #pan-nag .akc,body.widok-trasa .tr-akcje,body.widok-trasa #pan-szcz,body.widok-trasa #pan-dol,body.widok-trasa #pan-firma,body.widok-trasa .zr-pop,body.widok-trasa #trasa-gen,body.widok-trasa #trasa-lista-tras,body.widok-trasa #trasa-gate,body.widok-trasa .tr-status,body.widok-trasa .tr-p2-adr small,body.widok-trasa .tr-p2-notatka-btn,body.widok-trasa textarea.tr-p2-notatka{display:none!important}
  body.widok-trasa #panel{position:static;transform:none;width:auto;height:auto;border:0;box-shadow:none;display:block;border-radius:0}
  body.widok-trasa #panel .naglowek{padding:0 0 10px;border-bottom:1px solid #ccc}
  body.widok-trasa #panel .naglowek h2{margin-right:0}
  body.widok-trasa #pan-tresc{overflow:visible;padding:10px 0 0;background:#fff;max-width:none}
  body.widok-trasa .tr-lista{border-color:#ccc}
  body.widok-trasa .tr-lista li+li{border-top-color:#ddd}
  body.widok-trasa .tr-lista-w li{break-inside:avoid;padding:6px 8px}
  body.widok-trasa .tr-p2-gl .nr{background:#171717;color:#fff;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.widok-trasa .tr-instr,body.widok-trasa .tr-druk-tylko{background:#fff;border-color:#ccc}
  body.widok-trasa .tr-druk-tylko{display:block!important}
  body.widok-trasa a[href*="google.com/maps"],body.widok-trasa .tr-gen-cta,body.widok-trasa .tr-akcje{display:none!important}
  body.widok-trasa .tr-zasady-w{display:none!important}
  body.widok-trasa .tr-p2-druk{display:block!important;font-size:11px;color:#333;letter-spacing:.01em}
}

/* ---------- ekran startu ---------- */
.start{position:absolute;inset:0;z-index:20;background:var(--canvas);overflow:auto;display:flex;justify-content:center;padding:32px 16px 40px}
body.start #bar,body.start #panel,body.start .filtry{visibility:hidden}
.start-box{width:min(620px,100%);display:flex;flex-direction:column;gap:14px;margin:auto 0}
.start-nag{display:flex;align-items:center;justify-content:space-between;gap:10px}
.start h1{font-size:30px;line-height:36px;letter-spacing:-1.1px;margin-top:8px}
.start-p{margin:0;color:var(--body);font-size:15px;line-height:22px}
.pole{display:flex;flex-direction:column;gap:6px}
.pole>span{font-family:var(--m);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--mute)}
.pole input[type=text],.pole input[type=email],.pole textarea,.pole-tekst{height:40px;border:1px solid var(--hair);border-radius:var(--r-sm);padding:0 12px;font:inherit;background:var(--elev);color:var(--ink);width:100%}
.pole textarea{height:auto;padding:8px 12px;resize:vertical}
.pole>input:focus,.pole>textarea:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 3px rgba(0,0,0,.06)}
.szukaj input:focus-visible{outline:0}
.pole-tekst{display:flex;align-items:center;color:var(--body);background:var(--canvas)}
.szukaj.duzy{height:44px;max-width:none;flex:none;padding:0 12px}
.szukaj.duzy input{font-size:15px}
.start-marki{display:flex;flex-wrap:wrap;gap:5px}
.start-lista{max-height:min(38vh,360px);overflow:auto;border:1px solid var(--hair);border-radius:var(--r-md);background:var(--elev);padding:6px;scrollbar-width:thin}
/* nagłówek firmy w liście startu: nazwa · (alias) · N zakładów · „Pokaż wszystkie na mapie” */
.start-firma{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px 10px 6px;position:sticky;top:0;z-index:1;background:var(--elev);border-bottom:1px solid var(--hair2)}
.start-firma+.start-firma{margin-top:6px}
.start-firma .fn{font-weight:600;font-size:14px;letter-spacing:-.2px}
.start-firma .fa{font-size:12px;color:var(--body)}
.start-firma .fc{font-family:var(--m);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}
.start-firma .btn.mini{margin-left:auto;height:26px;padding:0 9px;font-size:12px;border-color:var(--link-soft);color:var(--link-deep);background:var(--link3)}
.start-firma .btn.mini:hover{background:var(--link);color:#fff;border-color:var(--link)}
mark{background:#ffe7a8;color:inherit;border-radius:3px;padding:0 1px}
.start-z{display:grid;grid-template-columns:1fr auto;gap:0 10px;width:100%;text-align:left;border:1px solid transparent;background:transparent;border-radius:var(--r-sm);padding:6px 10px 6px 18px;cursor:pointer;color:var(--ink);font:inherit;align-items:center}
.start-z:hover,.start-z.akt{background:var(--canvas);border-color:var(--hair)}
.start-z.on{background:var(--link3);border-color:var(--link-soft)}
.start-z .n{font-weight:500;font-size:13.5px;min-width:0}
.start-z .n small{display:block;font-size:11.5px;color:var(--mute);font-weight:400;line-height:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.start-z .n small:empty{display:none}
.start-z .s{font-family:var(--m);font-size:11px;color:var(--mute);text-align:right;white-space:nowrap}
.start-pusto{padding:14px 10px;color:var(--mute);font-size:13px}
.start-wybor{min-height:20px;font-size:13px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.start-wybor b{font-size:14px}
.start-wybor span{color:var(--mute);font-family:var(--m);font-size:11.5px}
.suwak{display:flex;align-items:center;gap:12px;height:40px}
.suwak input[type=range]{accent-color:var(--ink);flex:1;height:32px}
.suwak b{font-family:var(--m);font-size:13px;font-weight:500;color:var(--ink);min-width:56px;text-align:right}
.start-stopka{margin:4px 0 0;font-size:12.5px;color:var(--mute)}
.start-stopka a{color:var(--body)}
.start-stopka .sep{margin:0 8px;color:var(--faint)}
body.tryb-test .start-nag:after{content:"dane testowe";font-family:var(--m);font-size:10.5px;color:var(--warn-deep);background:var(--warn-soft);padding:2px 8px;border-radius:100px;text-transform:uppercase;letter-spacing:.04em}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px}
.modal-tlo{position:absolute;inset:0;background:rgba(23,23,23,.4);backdrop-filter:blur(2px)}
.modal-box{position:relative;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-lg);box-shadow:var(--sh3);width:min(440px,100%);padding:26px 24px 22px;display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 32px);overflow:auto;animation:pop .16s ease-out}
.modal-box h2{font-size:20px;line-height:26px;letter-spacing:-.5px;margin-right:28px}
.modal-box p{margin:0;color:var(--body);font-size:13.5px;line-height:19px}
.modal-x{position:absolute;top:14px;right:14px}
.modal-tresc{display:flex;flex-direction:column;gap:10px}
.modal-akcje{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:4px}
.krok{display:flex;flex-direction:column;gap:12px}
.kod{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.kod input{height:52px;border:1px solid var(--hair);border-radius:var(--r-sm);text-align:center;font-family:var(--m);font-size:22px;font-weight:500;background:var(--elev);color:var(--ink);padding:0;width:100%}
.kod input:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 3px rgba(0,0,0,.06)}
.zgoda{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;font-size:13px;line-height:18px;color:var(--body);cursor:pointer}
.zgoda input{accent-color:var(--ink);margin-top:2px;width:16px;height:16px}
.modal .uwaga{margin-top:2px}

/* ---------- ładowanie, toast ---------- */
.lad{position:absolute;left:50%;top:calc(var(--bar-h) + 14px);transform:translateX(-50%);z-index:12;background:var(--elev);border:1px solid var(--hair);border-radius:var(--r-md);box-shadow:var(--sh2);padding:10px 14px;width:min(320px,calc(100vw - 32px))}
.lad .box{display:flex;flex-direction:column;gap:6px}
.lad .tor{margin:0}
.lad .tor i{width:100%;animation:tor 1.2s ease-in-out infinite}
@keyframes tor{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.lad .st{font-family:var(--m);font-size:11px;color:var(--mute)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:var(--r-sm);padding:8px 12px;font-size:13px;z-index:70;box-shadow:var(--sh2);opacity:0;transition:opacity .2s;pointer-events:none;max-width:min(520px,calc(100vw - 32px));text-align:center}
.toast.on{opacity:1}
.toast.blad{background:#3d2b00;border:1px solid var(--warn-deep)}

/* ---------- mniejsze desktopy ---------- */
@media (max-width:900px){#trasa-gen .tr-gen-cta{position:static;box-shadow:none;padding:6px 0 4px}}   /* telefon: belka nie przykleja się — w zwiniętym arkuszu zasłaniała pastylki „Kiedy” (weryfikacja 16.09) */
@media (max-width:1240px){:root{--pan-w:420px}.licznik span{display:none}.zaklad{max-width:200px}.firma-bar{max-width:200px}}
@media (max-width:1060px){#bar .btn .tx{display:none}#bar .btn{padding:0 9px}.szukaj{max-width:240px}.firma-bar .tx small{display:none}}

/* ---------- telefon: pasek 48 px, szukajka pod ikoną, szuflada pełnoekranowa, arkusz dolny 3 stany ---------- */
@media (max-width:900px){
  :root{--pan-w:100vw;--bar-h:48px}
  #bar{padding:0 8px;gap:5px}
  .znak{font-size:15px}
  .marka{margin-right:0}
  .zaklad{height:32px;padding:0 7px;max-width:150px;flex:1 1 auto}
  .zaklad svg,.zaklad .tx small{display:none}
  /* pastylka firmy na telefonie = ikona + liczba zakładów (pełny tekst w title/aria-label; klik = arkusz z listą) */
  .firma-bar{height:32px;padding:0 8px 0 7px;gap:4px;max-width:none;flex:none}
  .firma-bar .tx{display:none}
  .firma-bar .n{display:inline}
  .licznik{display:none}
  .seg{height:32px}.seg button{font-size:12px;padding:0 9px}.seg button .tx{display:none}
  #bar .btn{height:32px;padding:0 8px;font-size:12px}
  #bar .btn.konto .tx{display:none}
  #bar .szukaj{flex:none;min-width:0;width:32px;height:32px;padding:0;border:0;background:transparent;overflow:hidden;margin-left:auto}
  #bar .szukaj .q-ik{display:grid;width:32px;height:32px;border:1px solid var(--hair);background:var(--elev)}
  #bar .szukaj input,#bar .szukaj .q-x{display:none}
  body.q-otwarte #bar .szukaj{position:absolute;left:8px;right:8px;top:8px;width:auto;height:32px;border:1px solid var(--ink);background:var(--elev);padding:0 4px 0 8px;z-index:2;display:flex;box-shadow:0 0 0 3px rgba(0,0,0,.06)}
  body.q-otwarte #bar .szukaj .q-ik{border:0;background:transparent;width:26px;height:26px}
  body.q-otwarte #bar .szukaj input{display:block}
  body.q-otwarte #bar .szukaj .q-x{display:grid}
  .filtry{right:0!important;top:var(--bar-h);bottom:0;border-bottom:0;box-shadow:none;overflow:auto;padding:12px 12px calc(env(safe-area-inset-bottom,0) + 72px)}
  .f-nag{flex-direction:column;gap:2px}
  .wiersz{gap:6px}
  .wiersz .et{min-width:100%;margin-top:6px}
  .akcje-f{position:fixed;left:0;right:0;bottom:0;background:var(--elev);border-top:1px solid var(--hair);padding:10px 12px calc(env(safe-area-inset-bottom,0) + 10px);margin:0}
  #filtry-gotowe{display:inline-flex}
  body.filtry-otwarte #panel{transform:translateY(110%)}
  body.filtry-otwarte .wid{display:none}
  .maplibregl-ctrl-bottom-right{right:12px!important;bottom:calc(50vh + 12px)}
  body:not(.pan-on) .maplibregl-ctrl-bottom-right,body.pan-peek .maplibregl-ctrl-bottom-right{bottom:56px}
  body.pan-full .maplibregl-ctrl-bottom-right{display:none}
  .wid{left:50vw!important;bottom:calc(50vh + 14px);height:34px;font-size:12.5px}
  body:not(.pan-on) .wid{bottom:14px}
  body.pan-peek .wid{bottom:calc(var(--peek-h) + 12px)}
  body.pan-full .wid{display:none}
  #panel{top:auto;height:50vh;width:100%;border-left:0;border-top:1px solid var(--hair);border-radius:var(--r-lg) var(--r-lg) 0 0;transform:translateY(110%);box-shadow:0 -8px 24px -12px rgba(0,0,0,.15)}
  body.pan-on #panel{transform:translateY(0)}
  body.pan-full #panel{height:calc(100vh - var(--bar-h) - 8px)}
  body.pan-peek #panel{height:var(--peek-h)}
  body.pan-peek #panel .tresc{visibility:hidden}
  #panel .uchwyt{display:block;height:18px;flex:none;cursor:grab;position:relative}
  #panel .uchwyt:before{content:"";position:absolute;left:50%;top:7px;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:#d4d4d4}
  #panel .naglowek{padding:2px 16px 10px;touch-action:none}
  #panel .naglowek h2{font-size:16px;line-height:21px;margin-top:6px;margin-right:100px}
  #panel .naglowek .akc{top:2px}
  #panel .tresc{padding:12px 16px 40px}
  .kpi{grid-template-columns:1fr 1fr}
  .kpi>div:first-child{grid-column:1/-1}
  body.pan-full #panel .naglowek{padding-left:16px;padding-right:16px}
  #lista{right:0!important;padding:8px}
  body.widok-lista #panel{z-index:7}
  .l-narz{gap:6px 10px;margin-bottom:6px}
  .l-sort{flex-wrap:nowrap;overflow-x:auto;max-width:100%;padding-bottom:2px;scrollbar-width:none}
  .l-sort .chip{flex:none}
  .l-info{margin-left:0;width:100%}
  .l-csv{flex:none;max-width:100%}
  .l-csv .tx{overflow:hidden;text-overflow:ellipsis}
  .l-head{display:none}
  .l-row{grid-template-columns:1fr auto;grid-template-rows:auto auto auto;gap:2px 10px;padding:9px 12px;min-height:0}
  .l-row .c-kd{grid-column:2;grid-row:1;justify-self:end}
  .l-row .c-mia{grid-column:1;grid-row:1;font-weight:500}
  .l-row .c-g{grid-column:1;grid-row:2;font-size:12px}
  .l-row .c-m3{grid-column:2;grid-row:2}
  .l-row .c-inw{grid-column:1;grid-row:3;font-size:12px}
  .l-row .c-data{display:none}
  .l-row .c-km{grid-column:2;grid-row:3}
  .start{padding:20px 14px 28px}
  .start h1{font-size:24px;line-height:29px}
  .start-lista{max-height:min(34vh,300px)}
  .start-firma{padding:8px 8px 6px}
  .start-firma .btn.mini{margin-left:0;flex-basis:100%;width:max-content}
  .start-z{padding-left:12px}
  .kont-grid{grid-template-columns:1fr}
  .zr-pop{min-width:200px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
