/* Gdańskie Wody — wspólny arkusz v3: tokeny, typografia, nagłówek, motyw odłamków, komponenty wspólne */
:root{
  --blue:#016fa6; --blue-d:#00507a; --blue-l:#e3f0f7;
  --red:#e51937; --red-d:#b8102a; --red-l:#fde8eb;
  --ink:#202020; --ink-2:#4b4f55; --ink-3:#5b6066;
  --paper:#f3f3f3; --white:#ffffff; --line:#dcdcdc;
  --disp:"Barlow Condensed","Work Sans",system-ui,sans-serif;
  --body:"Work Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  /* skala typografii */
  --t-h1:clamp(56px,7.6vw,120px); --t-h2:clamp(40px,4.4vw,60px); --t-h3:28px; --t-lead:20px;
  /* rytm pionowy */
  --s-sec:112px; --s-gap:28px; --s-pad:32px;
  /* stany i skale (docs/KANON.md §1) */
  --ok:#1e6b3a; --track:#e8ebee; --dry:#a35a12; --dry-l:#fbf0e3;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;text-wrap:pretty}
a{color:var(--blue);text-decoration:none}
a:hover{color:var(--blue-d);text-decoration:underline}
img{display:block;max-width:100%}
h1,h2,h3,h4{margin:0;line-height:1.05}
.wrap{max-width:1280px;margin:0 auto;padding:0 var(--s-pad)}
.num{font-family:var(--disp);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.eyebrow{font-family:var(--disp);font-weight:600;font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.h1{font-family:var(--disp);font-weight:700;font-size:var(--t-h1);line-height:.9;letter-spacing:-.02em;text-transform:uppercase}
.h2{font-family:var(--disp);font-weight:700;font-size:var(--t-h2);line-height:.95;letter-spacing:-.01em;text-transform:uppercase;hyphens:auto;overflow-wrap:anywhere}
/* długie słowo w wersalikach („PRZECIWPOWODZIOWE”) nie wychodzi poza ekran 360 px: przeniesienie z łącznikiem albo złamanie */
.h3{font-family:var(--disp);font-weight:700;font-size:var(--t-h3);line-height:1.05;text-transform:uppercase}
.lead{font-size:var(--t-lead);line-height:1.5;color:var(--ink-2)}
.sec{padding-top:var(--s-sec)}
.sec-h{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:32px;flex-wrap:wrap}
.sec-h p{margin:12px 0 0;color:var(--ink-2)}
.more{font-family:var(--disp);font-weight:600;font-size:17px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
/* wąski ekran: długi link „więcej” zawija się i nie wychodzi poza kontener */
@media (max-width:640px){.more,.sec-h a.more{white-space:normal;max-width:100%;min-width:0;overflow-wrap:anywhere}}
.src{font-size:13px;color:var(--ink-3)}

/* link do treści dla klawiatury i czytników */
.skip{position:absolute;left:-9999px;top:8px;z-index:20;background:var(--white);color:var(--ink);padding:10px 14px;border:2px solid var(--ink);font-weight:600}
.skip:focus{left:16px}

/* pasek pilnych kontaktów */
.util{background:var(--ink);color:#fff;font-size:13.5px}
.util-in{display:flex;gap:28px;align-items:center;min-height:38px;flex-wrap:wrap}
.util a{color:#fff;font-weight:600}
.util b{color:#ff8a9a;font-weight:600;letter-spacing:.04em}
.util .sp{margin-left:auto}
.util-a{display:flex;gap:6px}
.ubtn{background:none;border:1px solid rgba(255,255,255,.55);color:#fff;font:600 13px var(--body);padding:4px 10px;cursor:pointer}
.ubtn:hover,.ubtn[aria-pressed="true"]{background:#fff;color:var(--ink)}

/* nagłówek */
.hdr{background:var(--white);position:relative;z-index:5;border-bottom:1px solid var(--line)}
.hdr-in{display:flex;align-items:stretch;height:84px}
.hdr-logo{flex:none;height:84px;width:auto}
.hdr-nav{display:flex;align-items:center;gap:16px;margin-left:20px;font-family:var(--disp);font-weight:600;font-size:15px;letter-spacing:.03em;text-transform:uppercase}
.hdr-nav a,.hdr-wiecej{white-space:nowrap}
.hdr-nav a{color:var(--ink);padding:6px 0;border-bottom:3px solid transparent}
.hdr-nav a:hover{color:var(--blue);text-decoration:none}
.hdr-nav a.on{border-bottom-color:var(--red)}
.hdr-nav a.urg{color:var(--red)}
.hdr-wiecej{font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--ink);background:none;border:0;border-bottom:3px solid transparent;padding:6px 0;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.hdr-wiecej::after{content:"";width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s}
.hdr-wiecej[aria-expanded="true"]::after{transform:translateY(2px) rotate(-135deg)}
.hdr-wiecej:hover{color:var(--blue)}
.hdr-wiecej.on{border-bottom-color:var(--red)}
.gw-wiecej{position:absolute;left:0;right:0;top:100%;background:var(--white);border-top:1px solid var(--line);border-bottom:2px solid var(--ink);box-shadow:0 16px 32px rgba(0,0,0,.08);z-index:6;text-transform:none;letter-spacing:0;font-family:var(--body);font-weight:400}
.gw-wiecej .wrap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;padding-top:28px;padding-bottom:32px}
.gw-wiecej h2{font-family:var(--disp);font-size:16px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px}
.gw-wiecej ul{list-style:none;margin:0;padding:0}
.gw-wiecej li a{display:block;padding:9px 0;border-bottom:1px solid var(--line);font-size:16px;font-weight:500;color:var(--ink)}
.gw-wiecej li a:hover{color:var(--blue);text-decoration:none}
.dz{display:flex;align-items:center;align-self:stretch}
/* menu działów w drugim rzędzie nagłówka, na szerokość kontenera */
.hdr-in{flex-wrap:wrap;height:auto;max-width:1280px;margin:0 auto;padding:0 var(--s-pad)}
@media (min-width:1081px){.hdr{background:linear-gradient(var(--line),var(--line)) 0 84px/100% 1px no-repeat,var(--white)}}
.hdr-in>.hdr-nav{order:3;flex:0 0 100%;margin:0;height:54px;gap:0;justify-content:space-between;font-size:16px;letter-spacing:.04em;padding:0}
.hdr-in>.hdr-tools{padding-right:0}
.hdr-in>.hdr-tools{order:2}
.hdr-in>.hdr-nav .dz-zglos{display:none}
.hdr-zglos{font:600 16px var(--disp);letter-spacing:.04em;text-transform:uppercase;background:var(--red);color:#fff;padding:0 18px;height:40px;display:inline-flex;align-items:center;white-space:nowrap}
.hdr-zglos:hover{background:var(--red-d);color:#fff;text-decoration:none}
.dz-p .wrap{grid-template-columns:minmax(0,1fr)}
.dz-p ul{columns:3;column-gap:40px}
.dz-p li{break-inside:avoid}
.dz-zglos{font:inherit;white-space:nowrap;background:var(--red);color:#fff!important;padding:10px 14px!important;border:0!important;margin-left:4px}
.dz-zglos:hover{background:var(--red-d)}
.hdr-tools{margin-left:auto;display:flex;align-items:center;gap:8px;padding-right:var(--s-pad)}
.tbtn{height:40px;min-width:40px;padding:0 12px;border:1.5px solid var(--ink);background:var(--white);color:var(--ink);font:600 14px var(--body);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.tbtn:hover{background:var(--ink);color:var(--white)}
.tbtn.burger{display:none}
.tbtn[aria-pressed="true"]{background:var(--ink);color:var(--white)}

/* panel wyszukiwania (gw.js) */
.gw-sz{background:var(--white);border-bottom:2px solid var(--ink);padding:18px 0 14px;position:relative;z-index:6}
.gw-sz .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.gw-sz input{height:50px;border:2px solid var(--ink);padding:0 16px;font:inherit;font-size:17px;min-width:0}
.gw-sz ul{grid-column:1/-1;list-style:none;margin:6px 0 0;padding:0;columns:2;column-gap:32px}
.gw-sz li{padding:6px 0;border-bottom:1px solid var(--line);break-inside:avoid}

/* A+ i Kontrast (gw.js) */
html.duze body{zoom:1.15}
html.kontrast{--ink-2:#000;--ink-3:#202020;--line:#6f747b;--paper:#fff;--blue:#00406b;--red:#a00b22}
html.kontrast a{text-decoration:underline}
html.kontrast .neptun{opacity:.25}

/* nagłówek podstrony */
.ph{background:var(--white);position:relative;overflow:hidden;padding:40px 0 56px}
.crumb{font-size:13.5px;color:var(--ink-3);margin-bottom:28px}
.crumb a{color:var(--ink-3)}
.crumb span{margin:0 8px}
.ph .lead{margin-top:22px}

/* przyciski */
.btn{display:inline-flex;align-items:center;gap:10px;height:54px;padding:0 24px;font-family:var(--disp);font-weight:600;font-size:18px;letter-spacing:.06em;text-transform:uppercase;border:2px solid var(--ink);color:var(--ink);background:var(--white)}
.btn:hover{text-decoration:none;background:var(--ink);color:var(--white)}
.btn.red{background:var(--red);border-color:var(--red);color:var(--white)}
.btn.red:hover{background:var(--red-d);border-color:var(--red-d)}

/* odłamki — motyw marki */
.shard{position:absolute;pointer-events:none}
.sh-r{background:var(--red)}
.sh-b{background:var(--blue)}
.sh-1{clip-path:polygon(0 0,100% 30%,20% 100%)}
.sh-2{clip-path:polygon(30% 0,100% 100%,0 70%)}
.sh-3{clip-path:polygon(0 20%,100% 0,60% 100%)}

/* ===== komponenty design systemu (strona: komponenty.html) ===== */

/* Ikona marki: każdy plik ico/*.svg ma pole 64 × 64 i rysunek tej samej wielkości (src/ikony.py) */
.ic{display:block;width:56px;height:56px;flex:none}
.ic.s{width:40px;height:40px}
.ic.l{width:72px;height:72px}

/* Siatki kafli (.zgs, .next, .wz): linia 2 px między kaflami to gap 2 px wypełniony cieniem 1 px z każdego kafla (box-shadow 0 0 0 1px).
   Siatka NIE ma tła, więc niepełny ostatni rząd nie pokazuje szarych pustych pól; działa przy każdej liczbie kolumn. Cień dodaje też ramkę 1 px dookoła. */
.zgs>.zg,.next>a,.wz>a{box-shadow:0 0 0 1px var(--line)}
/* Kafel kanału: sytuacja, numer lub adres, dopisek. Pasek u góry: .r czerwony (alarm), .b niebieski (zgłoszenie) */
.zgs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px}
.zgs.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
.zg{background:var(--white);padding:22px 24px 24px;display:flex;flex-direction:column;gap:8px;border-top:6px solid var(--ink)}
.zg.r{border-top-color:var(--red)}
.zg.b{border-top-color:var(--blue)}
.zg .ic{margin-bottom:6px}
.zg h3{font-size:18px;font-weight:700}
.zg p{margin:0;font-size:14.5px;color:var(--ink-2)}
.zg .num{font-size:32px;line-height:1.05;margin-top:auto;word-break:break-word}
.zg small{font-size:13px;color:var(--ink-3)}
.zg small a{white-space:nowrap}

/* Kafel nawigacji: ikona, tytuł, opis; cały kafel jest linkiem */
.next{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px}
.next a{background:var(--white);padding:26px 26px 28px;color:var(--ink);display:flex;flex-direction:column;gap:10px}
.next a:hover{text-decoration:none;background:var(--blue);color:#fff}
.next a:hover img{filter:brightness(0) invert(1)}
.next h3{font-family:var(--disp);font-size:26px;text-transform:uppercase;line-height:1}
.next p{margin:0;font-size:14px;opacity:.85}

/* Kafel wyboru: przycisk z ikoną, wartością, nazwą i opisem; zaznaczony ma aria-pressed="true" */
.pres{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:2px;background:var(--line);border:1px solid var(--line)}
.pre{border:0;border-top:4px solid transparent;background:var(--white);padding:16px 18px 16px;text-align:left;cursor:pointer;display:grid;grid-template-columns:56px minmax(0,1fr);grid-template-rows:56px auto auto;column-gap:14px;row-gap:2px;font:inherit;color:var(--ink)}
.pre .ic{grid-row:1;grid-column:1}
.pre i{grid-row:1;grid-column:2;align-self:center;justify-self:end;font-style:normal;font-family:var(--disp);font-weight:700;font-size:30px;line-height:1;color:var(--ink)}
.pre b{grid-column:1/-1;margin-top:10px;font-family:var(--disp);font-weight:700;font-size:20px;line-height:1.1;text-transform:uppercase;letter-spacing:.02em}
.pre span{grid-column:1/-1;font-size:13.5px;color:var(--ink-3)}
.pre:hover{background:var(--blue-l)}
.pre[aria-pressed="true"]{border-top-color:var(--blue);background:var(--blue-l)}
.pre[aria-pressed="true"] i{color:var(--blue)}

@media (max-width:1080px){
  .zgs{grid-template-columns:1fr 1fr}
  .next{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:600px){
  .zgs,.zgs.k3{grid-template-columns:minmax(0,1fr)}
  .pres{grid-template-columns:minmax(0,1fr)}
}

/* nawigacja map (gw.js, GW_MAPA) */
.gw-mnav a{display:flex!important;align-items:center;justify-content:center;color:#202020}
.gw-mnav a[aria-pressed="true"]{background:#202020;color:#fff}
.leaflet-control-scale-line{font:13px var(--body);border-color:#202020}
.gw-pe{position:fixed!important;inset:0;z-index:3000;width:auto!important;height:auto!important;margin:0!important;background:#fff}
.gw-pe .leaflet-container{height:100%!important}
html.gw-pe-on body{overflow:hidden}

/* przeglądarka zdjęć (gw.js, a[data-lb]) */
html.lb-on body{overflow:hidden}
.lb{position:fixed;inset:0;z-index:4000;background:#151515;color:#fff;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;padding:0 0 14px}
.lb[hidden]{display:none}
.lb-top{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-top:4px solid var(--blue)}
.lb-n{font:600 16px var(--disp);letter-spacing:.08em}
.lb button{font:inherit;color:#fff;background:transparent;border:1.5px solid rgba(255,255,255,.55);cursor:pointer}
.lb button:hover,.lb button:focus-visible{background:#fff;color:#202020;outline:none}
.lb-x{height:40px;padding:0 16px;font:600 14px var(--body)!important}
.lb-s{display:grid;grid-template-columns:64px minmax(0,1fr) 64px;align-items:center;min-height:0}
.lb-p,.lb-nx{width:48px;height:72px;font-size:38px!important;line-height:1;justify-self:center}
.lb.jedno .lb-p,.lb.jedno .lb-nx{visibility:hidden}
.lb-f{margin:0;height:100%;min-height:0;display:flex;align-items:center;justify-content:center}
.lb-f img{max-width:100%;max-height:100%;object-fit:contain;opacity:0;transition:opacity .25s}
.lb-f img.on{opacity:1}
.lb-o{max-width:900px;margin:12px auto 0;padding:0 18px;text-align:center;display:grid;gap:4px}
.lb-t{font-size:17px}
.lb-a{font-size:13px;color:#c9ccd0}
.lb-a a{color:#9fd0ef}
.lb-m{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;padding:12px 18px 0}
.lb-m button{flex:none;width:68px;height:48px;padding:0;border:2px solid transparent;opacity:.55}
.lb-m button[aria-current="true"]{border-color:#fff;opacity:1}
.lb-m img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:600px){
  .lb-s{grid-template-columns:40px minmax(0,1fr) 40px}
  .lb-p,.lb-nx{width:36px;height:56px;font-size:30px!important}
  .lb-m button{width:48px;height:36px}
}

/* stopka */
/* kanon (komponenty.html#stopka): pilne kanały jak kafel kanału, działy w kaflach z odstępem 2 px na tle linii, logo spółki przy nazwie */
/* podmenu strony (kanon: docs/KANON_PODMENU.md): przyklejone pod nagłówkiem, ikona sekcji + nazwa, bieżąca sekcja podkreślona */
.pm{position:sticky;top:0;z-index:30;background:var(--white);border-bottom:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.06)}
.pm ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.pm li{min-width:0}
.pm a{display:flex;align-items:center;gap:10px;height:100%;padding:12px 14px;color:var(--ink);border-bottom:4px solid transparent;text-decoration:none}
.pm a .ic{width:34px;height:34px;margin:0;flex:none}
.pm a b{font:700 15px/1.15 var(--disp);text-transform:uppercase;letter-spacing:.02em;min-width:0;hyphens:auto;overflow-wrap:anywhere}
.pm a:hover{background:var(--blue-l);text-decoration:none}
.pm a.on{border-bottom-color:var(--blue);color:var(--blue)}
@media (max-width:760px){.pm{position:static}.pm ol{grid-template-columns:repeat(2,minmax(0,1fr))}.pm a{padding:10px 10px}.pm a .ic{width:28px;height:28px}.pm a b{font-size:14px}}
/* stopka = zamknięcie strony: pełna szerokość, białe tło odcięte od szarej treści, kolumny bez kafli */
.ftr{background:var(--white);margin-top:var(--s-sec);border-top:6px solid var(--blue);padding-top:44px;position:relative;box-shadow:0 -1px 0 var(--line)}
.ftr::before{content:"";position:absolute;right:8%;top:-6px;width:64px;height:34px;background:var(--red);clip-path:polygon(0 0,100% 0,70% 100%)}
.ftr-pilne{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;background:var(--line);border:1px solid var(--line);margin-bottom:40px}
.ftr-pilne a{display:flex;align-items:center;gap:14px;background:var(--paper);padding:14px 18px;color:var(--ink);border-top:4px solid var(--ink)}
.ftr-pilne a.r{border-top-color:var(--red)}.ftr-pilne a.b{border-top-color:var(--blue)}
.ftr-pilne a:hover{background:var(--blue-l);text-decoration:none}
.ftr-pilne .ic{margin:0}
.ftr-pilne span{display:grid;min-width:0}
.ftr-pilne small{font-size:13px;color:var(--ink-2)}
.ftr-pilne b{font:700 26px/1.1 var(--disp);letter-spacing:.02em;white-space:nowrap}
.ftr-pilne a.r b{color:var(--red)}.ftr-pilne a.b b{color:var(--blue)}
.ftr-in{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;font-size:14px;padding-bottom:36px}
.ftr-in>div{min-width:0}
.ftr-in>div+div{border-left:1px solid var(--line);padding-left:32px}
.ftr-logo{display:block;height:64px;width:auto;margin:0 0 18px}
.ftr h4{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-size:17px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px}
.ftr h4 .ic{margin:0;width:32px;height:32px}
.ftr .ftr-z{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.ftr p{margin:0;line-height:1.7;color:var(--ink-2)}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ftr a{color:var(--ink)}
.ftr a[href^="tel:"]{white-space:nowrap}
.ftr ul a:hover{color:var(--blue)}
.ftr-eu{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-3)}
.ftr-eu img{height:40px;width:auto}
.ftr-demo{margin:0;padding:12px 0 28px;font-size:13px;color:var(--ink-3)}
@media (max-width:1080px){.ftr-pilne{grid-template-columns:minmax(0,1fr)}}

@media (max-width:1080px){
  .hdr-nav{display:none}
  .tbtn.burger{display:inline-flex}
  .hdr-nav.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;margin:0;background:var(--white);border-bottom:2px solid var(--ink);padding:4px var(--s-pad) 10px;box-shadow:0 12px 24px rgba(0,0,0,.08)}
  .hdr-nav.open a{padding:14px 0;border-bottom:1px solid var(--line)}
  .hdr-nav.open a.on{border-bottom-color:var(--red)}
  .hdr-nav.open .hdr-wiecej{padding:14px 0;justify-content:space-between;border-bottom:1px solid var(--line);text-align:left}
  .hdr-nav.open .gw-wiecej{position:static;box-shadow:none;border:0}
  .hdr-nav.open .gw-wiecej .wrap{grid-template-columns:minmax(0,1fr);gap:16px;padding:12px 0 6px}
  .hdr-nav.open .gw-wiecej li a{padding:10px 0;border-bottom:1px solid var(--line)}
  .hdr-nav.open .dz{display:block}
  .hdr-nav.open .dz .hdr-wiecej{width:100%}
  .hdr-nav.open .dz-p h2{display:none}
  .hdr-nav.open .dz-p ul{columns:1}
  .hdr-in>.hdr-nav{order:0;flex:none;height:auto;border-top:0;padding:4px var(--s-pad) 10px}
  .hdr-in>.hdr-nav.open .dz-zglos{display:block;margin:14px 0 4px;text-align:center}
  .hdr-zglos{display:none}
  .hdr-in{padding:0}
  .hdr-in>.hdr-tools{padding-right:var(--s-pad)}
  .ftr-in{grid-template-columns:1fr 1fr;gap:32px}
  .ftr-in>div:nth-child(odd){border-left:0;padding-left:0}
}
@media (max-width:600px){
  .gw-sz ul{columns:1}
  :root{--s-sec:72px;--s-pad:16px;--t-lead:17px}
  .hdr-in{height:64px}
  .hdr-logo{height:64px}
  .tbtn.hide-m{display:none}
  .util-in{gap:6px 16px;padding-top:8px;padding-bottom:8px;font-size:13px}
  .util .sp{margin-left:0}
  .ftr-in{grid-template-columns:1fr;gap:28px}
  .ftr-in>div+div{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:24px}
  .ftr-eu img{height:auto;width:100%}
  .ph{padding:24px 0 36px}
  .ph .shard{display:none}
}

/* Treść artykułu (src/build_tresci.py): czysty HTML z gdmel.pl, szerokość wiersza do ok. 75 znaków */
.prose{font-size:17px;line-height:1.65;overflow-wrap:anywhere;min-width:0}
.prose ul ul,.prose ol ol,.prose ul ol,.prose ol ul{padding-left:1em}
.prose>*:first-child{margin-top:0}
.prose p{margin:0 0 1em}
.prose h2{font-family:var(--disp);font-weight:700;font-size:34px;line-height:1;text-transform:uppercase;margin:1.6em 0 .6em}
.prose h3{font-size:20px;font-weight:700;line-height:1.3;margin:1.5em 0 .5em}
.prose ul,.prose ol{margin:0 0 1em;padding-left:1.4em}
.prose li{margin:.3em 0}
.prose li::marker{color:var(--blue)}
.prose a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;overflow-wrap:anywhere}
.prose blockquote{margin:1.2em 0;padding:4px 0 4px 20px;border-left:4px solid var(--blue);color:var(--ink-2)}
.prose table{width:100%;border-collapse:collapse;margin:0 0 1.4em;font-size:14.5px;table-layout:fixed;overflow-wrap:anywhere}
.prose td,.prose th{border:1px solid var(--line);padding:8px 10px;vertical-align:top;text-align:left;background:var(--white)}
.prose th{background:var(--paper)}
.prose img{max-width:100%;height:auto;margin:.4em 0 1em}
.prose a[data-lb]{display:inline-block}

/* Stronicowanie i filtry list (tresci.js, [data-lista]) */
.fl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:24px}
.fl button,.pag button{border:1.5px solid var(--line);background:var(--white);padding:8px 14px;font:500 14px var(--body);cursor:pointer;color:var(--ink)}
.fl button[aria-pressed="true"],.pag button[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff}
.fl button b{font-weight:600;color:var(--ink-3);margin-left:4px}
.fl button[aria-pressed="true"] b{color:#fff}
.fl select,.fl input{height:40px;border:1.5px solid var(--line);background:var(--white);font:inherit;font-size:14.5px;padding:0 12px;min-width:0}
.fl input{flex:1 1 260px}
.pag{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:28px}
.pag button[disabled]{opacity:.4;cursor:default}
.cnt-l{font-size:14px;color:var(--ink-3);margin:0 0 12px}
[data-lista] [hidden]{display:none!important}

/* Kafel artykułu: zdjęcie albo ikona, rodzaj i data, tytuł, zajawka; cały kafel jest linkiem */
.wz{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px}
.wz a{background:var(--white);color:var(--ink);display:flex;flex-direction:column}
.wz a:hover{text-decoration:none;background:var(--blue-l)}
.wz img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:left top;background:var(--paper)}
.wz .wz-ph{display:flex;align-items:center;justify-content:center;aspect-ratio:16/10;background:var(--paper)}
.wz .wz-ph img{width:72px;height:72px;aspect-ratio:auto;background:none}
.wz div{padding:16px 18px 20px;display:grid;gap:6px}
.wz small{color:var(--ink-3);font-size:13px}
.wz h3{font-size:17px;font-weight:700;line-height:1.25}
.wz p{margin:0;font-size:14px;color:var(--ink-2)}
@media (max-width:1080px){.wz{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:640px){.wz{grid-template-columns:minmax(0,1fr)}}

/* Galeria zdjęć z podpisem; zdjęcie otwiera przeglądarkę zdjęć (a[data-lb], grupa [data-lb-grupa]) */
.gal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.gal figure{margin:0;background:var(--white);display:flex;flex-direction:column}
.gal figure>a{position:relative;display:block;overflow:hidden;background:var(--ink)}
.gal img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .35s ease,opacity .2s}
.gal figure>a:hover img{transform:scale(1.03);opacity:.92}
.gal-n{position:absolute;left:0;top:0;background:var(--ink);color:#fff;font:600 13px var(--disp);letter-spacing:.06em;padding:4px 9px}
.gal figcaption{padding:14px 16px 16px;display:grid;gap:4px;border-top:4px solid var(--blue)}
.gal figcaption b{font-size:15px;line-height:1.3}
.gal figcaption small{font-size:13px;color:var(--ink-3)}
@media (max-width:1080px){.gal{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.gal{grid-template-columns:minmax(0,1fr);gap:16px}}
.wz .kp{font-family:var(--disp);font-weight:600;font-size:18px;color:var(--blue)}
/* ikona kanonu przy nagłówku sekcji (src/wspolne.py, _ikony): rozmiar względem nagłówka */
h2:has(>.hi){display:flex;align-items:center;gap:.35em}
.ic.hi{width:1.15em;height:1.15em;flex:none}
.prose h2 .ic.hi{margin:0}
/* Mapy Leaflet w stylu serwisu: kontrolki jak przyciski (2 px, bez zaokrągleń), dymek z belką marki, typografia serwisu */
.leaflet-container{font:14px/1.45 var(--body);background:var(--track);overflow:hidden;max-width:100%}
/* warstwa SVG/kafli mapy nie może wystawać poza kontener (przewijanie w poziomie na telefonie) */
.mapa{overflow:hidden;contain:paint}
.leaflet-bar,.leaflet-touch .leaflet-bar{border:0;border-radius:0;box-shadow:none}
.leaflet-bar a,.leaflet-touch .leaflet-bar a{width:38px;height:38px;line-height:34px;border:2px solid var(--ink);border-radius:0!important;background:var(--white);color:var(--ink);font:600 22px/34px var(--body);display:flex;align-items:center;justify-content:center}
.leaflet-bar a+a{border-top:0}
.leaflet-bar a:hover,.leaflet-bar a:focus-visible{background:var(--ink);color:#fff}
.leaflet-bar a.leaflet-disabled{background:var(--paper);color:var(--ink-3)}
.leaflet-control-zoom,.gw-mnav{margin-top:12px!important;margin-left:12px!important}
.leaflet-popup-content-wrapper{border-radius:0;box-shadow:0 6px 24px rgba(32,32,32,.22);border-top:4px solid var(--blue)}
.leaflet-popup-tip{box-shadow:none}
.leaflet-popup-content{font:14px/1.45 var(--body);margin:14px 18px}
.leaflet-popup-content b{display:block;font-family:var(--disp);font-weight:700;font-size:19px;line-height:1.15;margin-bottom:6px}
.leaflet-popup-content a{font-weight:700}
.leaflet-container a.leaflet-popup-close-button{font:22px/24px var(--body);width:26px;height:26px;color:var(--ink-2)}
.leaflet-control-attribution{font:13px var(--body);background:rgba(255,255,255,.88)!important;padding:2px 8px}
.leaflet-control-attribution a{color:var(--ink-2)}
.leaflet-control-scale-line{background:rgba(255,255,255,.88)}
.leaflet-tile-pane{filter:saturate(.38) brightness(1.04) contrast(.94)}

/* przycisk pobrania pliku (komponenty.html: Przycisk pobrania z opisem pliku) */
.gal-pob{display:inline-flex;align-items:center;gap:6px;justify-self:start;margin-top:4px;padding:6px 12px 6px 9px;border:1.5px solid var(--ink);color:var(--ink);font:600 13.5px var(--body);text-decoration:none}
.gal-pob:hover,.gal-pob:focus-visible{background:var(--ink);color:#fff;text-decoration:none}

/* ===== kanon 02.11.2026 (docs/KANON.md §4): jedna definicja na komponent ===== */
.sec-s{padding-top:48px}
.sec-intro{margin:12px 0 28px;font-size:17px;color:var(--ink-2)}
.sec-h .sec-intro{margin:12px 0 0}
.h1 span{display:block;color:var(--blue)}
.ar-ph .h1{font-size:clamp(34px,4.2vw,58px);line-height:1;text-transform:none;letter-spacing:-.01em}
.ar-ph .h1.dl{font-size:clamp(26px,2.8vw,38px)}

/* Liczby: siatka kafli 2 px na tle linii; .pas = ciemny pas danych karty obiektu */
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2px;background:var(--line);border:1px solid var(--line)}
.kpi.k1{grid-template-columns:minmax(0,1fr)}.kpi.k2{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi.k3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:600px){.kpi.k3{grid-template-columns:minmax(0,1fr)}}
.kpi>div{background:var(--white);padding:18px 22px 20px;min-width:0;display:flex;flex-direction:column;gap:4px}
.kpi .num{font-size:44px;line-height:1;color:var(--ink);overflow-wrap:anywhere}
.kpi .num.b{color:var(--blue)}.kpi .num.r{color:var(--red)}.kpi .num.ok,.num.ok{color:var(--ok)}.num.al{color:var(--red-d)}.kpi .num.t{font-size:30px}
.kpi small{font-size:14px;color:var(--ink-2);line-height:1.35}
/* jednostka przy liczbie: „193 000 l”; wstawia ją wspolne._jednostki z podpisu kafla */
.num .u{font-size:.55em;font-weight:600;letter-spacing:0;margin-left:.18em;white-space:nowrap}
/* pasek stanu: ikona po lewej, liczby jednej wielkości w jednej linii, podpisy na tej samej wysokości */
.kpi.st>div{display:grid;grid-template-columns:32px minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:14px;row-gap:6px;align-items:start}
.kpi.st .ic{width:32px;height:32px;grid-row:1/3;opacity:.85}
.kpi.st .num{font-size:28px;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi small a,.kpi .num a,.tag a,.tags a{color:inherit;text-decoration:underline}
.kpi>a{background:var(--white);padding:18px 22px 20px;min-width:0;display:flex;flex-direction:column;gap:4px;color:var(--ink);text-decoration:none}
.kpi>a:hover{background:var(--blue-l)}
.kpi>a>b,.kpi>div>b{font:700 18px/1.1 var(--disp);text-transform:uppercase;letter-spacing:.02em}
.kpi.pas{background:#3a3d42;border:0}
.kpi.pas>div{background:var(--ink);color:#fff;padding:26px 28px}
.kpi.pas .num{color:#fff;font-size:56px}.kpi.pas .num.t{font-size:32px}
.kpi.pas small,.kpi.pas small a{color:#c9ccd0}
.big{font-family:var(--disp);font-weight:700;font-size:clamp(120px,14vw,180px);line-height:.85;color:var(--red)}
.big small{font-size:.4em}
@media (max-width:600px){.kpi .num{font-size:36px}.kpi.pas .num{font-size:44px}}

/* Tabela: sortowanie (th button, gw.js), wyszukiwarka nad tabelą > 15 wierszy (.tb-sz), karta wiersza na telefonie (td[data-l]) */
.tb{width:100%;border-collapse:collapse;background:var(--white);font-size:14.5px;font-variant-numeric:tabular-nums}
.tb th,.tb td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tb th{font-size:13px;font-weight:600;color:var(--ink-2);background:var(--paper);border-bottom:2px solid var(--ink);vertical-align:bottom}
.tb .l,.tb td.l,.tb th.l{text-align:right}
.tb th button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}
.tb th button::after{content:" ↕";color:var(--ink-3)}
.tb th[aria-sort=ascending] button::after{content:" ↑";color:var(--ink)}
.tb th[aria-sort=descending] button::after{content:" ↓";color:var(--ink)}
.tb tbody tr:hover{background:var(--blue-l)}
.tb .mx{color:var(--red-d);font-weight:700}
.tb td.z{color:var(--ink-3)}
.tb small{color:var(--ink-3)}
.tb td small{display:block;margin-top:2px}
.tb-sz{display:flex;gap:8px;margin-bottom:12px}
.tb-sz input{flex:1 1 260px}
@media (max-width:760px){
  .tb.karty thead{display:none}
  .tb.karty,.tb.karty tbody,.tb.karty tr,.tb.karty td{display:block}
  .tb.karty tr{border-bottom:1px solid var(--line);padding:8px 0}
  .tb.karty td{border:0;padding:3px 12px;text-align:left!important}
  .tb.karty td[data-l]::before{content:attr(data-l) ": ";color:var(--ink-3);font-size:13px}
  .tb.karty td:empty{display:none}
}
dl.dl{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);gap:8px 20px;margin:0;font-size:15px}
dl.dl dt{color:var(--ink-3)}dl.dl dd{margin:0}
@media (max-width:600px){dl.dl{grid-template-columns:minmax(0,1fr);gap:2px 0}dl.dl dd{margin-bottom:8px}}

/* Filtr i przełącznik: .fl (wyżej); kropka koloru serii: .fl button i */
.fl button i{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:baseline}
.fl button:hover{border-color:var(--ink)}
.fl.zl{gap:0}.fl.zl button+button{border-left:0}

/* Pole formularza */
.pole{height:48px;border:1.5px solid var(--ink);background:var(--white);font:inherit;font-size:16px;padding:0 14px;min-width:0;color:var(--ink)}
.pole:focus{outline:3px solid var(--blue-l);border-color:var(--blue)}
.btn.s{height:44px;padding:0 16px;font-size:16px}
.btn[aria-pressed="true"],.btn.f{background:var(--ink);color:#fff}
.btn.f:hover{background:var(--blue-d);border-color:var(--blue-d)}

/* Etykieta: stan, parametr, ocena */
.tag{display:inline-block;font:600 13px/1.25 var(--body);padding:3px 8px;border:1.5px solid currentColor;color:var(--ink-2);white-space:nowrap;font-style:normal}
.tag.b{color:var(--blue)}.tag.ok{color:var(--ok)}.tag.r{color:var(--red-d)}
.tag.f{background:var(--blue);border-color:var(--blue);color:#fff}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.tags .tag{font:600 15px var(--disp);letter-spacing:.06em;text-transform:uppercase;padding:5px 12px}
/* skala oceny miesiąca (suchy … wilgotny) */
.tag.s3,.tag.s2{background:#f6e3cf;color:#5c3209;border-color:var(--dry)}
.tag.s1{background:var(--dry-l);color:#5c3209;border-color:#c98a4b}
.tag.n{background:#f1f2f3;color:var(--ink);border-color:#8a8f96}
.tag.w1{background:#e6f1f8;color:#00406b;border-color:#5b9cc8}
.tag.w2,.tag.w3{background:#cfe4f2;color:#00304f;border-color:var(--blue)}

/* Pasek wartości: nazwa · pasek · liczba */
.bar{list-style:none;margin:0;padding:6px 22px;background:var(--white)}
.box .bar,.mapa-p .bar,summary .bar{background:none;padding:0}
.bar li{display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,160px) minmax(72px,auto);gap:14px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:15px}
.bar li>i{display:block;height:10px;background:var(--track)}
.bar li>i>i{display:block;height:100%;background:var(--blue)}
.bar li.on>i>i,.bar li.mx>i>i{background:var(--red)}
.bar li.on{font-weight:700}
.bar b{font-family:var(--disp);font-size:18px;text-align:right;white-space:nowrap}
@media (max-width:600px){.bar li{grid-template-columns:minmax(0,1fr) 56px auto;gap:10px}}

/* Ramka i uwaga */
.box{background:var(--white);padding:32px 36px}
.box>h2,.box>h3{font:700 20px/1.15 var(--disp);letter-spacing:.06em;text-transform:uppercase;margin:0 0 14px}
.box.uw{background:var(--blue-l);border-left:4px solid var(--blue);padding:18px 22px}
.box.uw.r{background:var(--red-l);border-left-color:var(--red)}
@media (max-width:600px){.box{padding:22px 18px}}
.ar-side .box,.box.side{padding:22px 24px}
/* ciągły tekst artykułu i strony informacyjnej stoi na białej powierzchni (KANON §3) */
.ar>.prose{background:var(--white);padding:32px 36px}
@media (max-width:600px){.ar>.prose{padding:22px 18px}}
ul.lista{list-style:none;margin:0;padding:0;font-size:14.5px}
ul.lista li{border-top:1px solid var(--line);padding:9px 0}
ul.lista li:first-child{border-top:0;padding-top:0}

/* Rozwijane */
details.ak{border-top:1px solid var(--line)}
details.ak>summary{list-style:none;cursor:pointer;padding:14px 36px 14px 0;position:relative;font-weight:600}
details.ak>summary::-webkit-details-marker{display:none}
details.ak>summary::after{content:"+";position:absolute;right:4px;top:6px;font:700 26px var(--disp);color:var(--blue)}
details.ak[open]>summary::after{content:"−"}
details.ak>:not(summary){margin-bottom:16px}

/* Kroki numerowane */
.kroki{list-style:none;margin:0;padding:0;counter-reset:kr;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2px;background:var(--line)}
.kroki>li{counter-increment:kr;background:var(--white);padding:22px 24px;display:grid;gap:8px;align-content:start}
.kroki>li::before{content:counter(kr);font:700 44px/1 var(--disp);color:var(--blue)}
.kroki h3{font:700 22px/1.1 var(--disp);text-transform:uppercase}
.kroki img{width:100%;aspect-ratio:16/10;object-fit:cover}
.kroki p{margin:0}
.kroki .tag{justify-self:start}

/* Legenda */
.leg{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;color:var(--ink-2);align-items:center}
.leg i{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px}
.leg .sk{width:220px;height:12px}
.leg b{font:700 22px/1 var(--disp);color:var(--ink);margin-right:4px}
.leg .sk-t{display:flex;justify-content:space-between;width:220px;font-size:13px;color:var(--ink-3)}

/* Mapa z panelem bocznym */
.mapa{display:grid;grid-template-columns:minmax(0,1fr) 360px;background:var(--white);border:1px solid var(--line)}
.mapa>.mapa-p{padding:22px 24px;border-left:1px solid var(--line);min-width:0}
@media (max-width:1080px){.mapa{grid-template-columns:minmax(0,1fr)}.mapa>.mapa-p{border-left:0;border-top:1px solid var(--line)}}

/* Karty wyboru radio/checkbox (komponenty.html: Karty wyboru) */
.wyb{display:grid;gap:22px}
.wyb fieldset{border:0;margin:0;padding:0}
.wyb legend{font-weight:700;margin-bottom:10px;font-size:16px}
.wyb .op{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px}
.wyb label{display:flex;gap:12px;align-items:center;border:1.5px solid var(--line);background:var(--white);padding:12px 14px;cursor:pointer;transition:border-color .15s,background .15s}
.wyb label:hover{border-color:var(--ink)}
.wyb input{position:absolute;opacity:0;pointer-events:none}
.wyb label span{display:grid;min-width:0;overflow-wrap:break-word;hyphens:auto}.wyb label b{font-size:15.5px}.wyb label small{font-size:13px;color:var(--ink-3)}
.wyb label:has(input:checked){border-color:var(--blue);background:var(--blue-l);box-shadow:inset 0 0 0 1.5px var(--blue)}
.wyb label:has(input:focus-visible){outline:3px solid var(--blue);outline-offset:2px}
@media (max-width:600px){.wyb .op{grid-template-columns:minmax(0,1fr)}}

/* ---- komponenty strony głównej przeniesione do kanonu (komponenty.html) ---- */
/* kroki inwestora: ikona marki w rogu, pasek u góry, strzałka do następnego kroku, link i liczba druków na dole */
.kroki.ik>li{position:relative;border-top:6px solid var(--blue);grid-template-rows:auto auto 1fr auto}
.kroki.ik h3{padding-right:58px}
.kroki.ik>li .ic{position:absolute;top:22px;right:22px;width:56px;height:56px;aspect-ratio:auto}
.kroki.ik>li:not(:last-child)::after{content:"";position:absolute;z-index:2;right:-15px;top:50%;width:26px;height:26px;margin-top:-13px;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M7 4l6 6-6 6' fill='none' stroke='%23016fa6' stroke-width='2.4'/%3E%3C/svg%3E") center/16px no-repeat;border:2px solid var(--line);border-radius:50%}
.kroki.ik .kr-d{display:flex;justify-content:space-between;align-items:center;gap:8px 12px;margin-top:6px}
@media (max-width:1080px){.kroki.ik>li::after{display:none}}
/* pas „Pada mocno”: widoczny tylko przy ostrzeżeniu IMGW albo opadzie dziś od 10 mm na którejś stacji (home.js, alarm) */
.alarm{background:var(--red);color:var(--white)}
.alarm[hidden]{display:none}
.alarm .wrap{display:flex;gap:20px 28px;align-items:center;flex-wrap:wrap;padding-top:18px;padding-bottom:18px}
.alarm .ic{width:44px;height:44px;background:var(--white);border-radius:50%;padding:6px}
.alarm-t{flex:1;min-width:240px}
.alarm-t b{display:block;font:700 26px/1.1 var(--disp);text-transform:uppercase;letter-spacing:.02em}
.alarm-t span{font-size:15px}
.alarm-a{display:flex;gap:10px;flex-wrap:wrap}
.alarm .btn{border-color:var(--white);color:var(--white);background:transparent}
.alarm .btn:hover{background:var(--red-d)}
.alarm .btn.w{background:var(--white);color:var(--red-d)}
.kr{position:relative;display:flex;align-items:center;justify-content:center}
.kr i{position:absolute;inset:0;background:var(--kol);border:2px solid #fff;border-radius:50% 0 50% 50%;transform:rotate(-45deg);box-shadow:0 1px 3px rgba(0,0,0,.35)}
.kr b{position:relative;font:700 12px/1 var(--disp);color:#fff;text-shadow:0 0 2px rgba(0,0,0,.5);margin-top:3px}
.kr.z i{background:var(--white);border-color:var(--ink-3)}
.kr.z b{color:var(--ink-3);text-shadow:none}
.leaflet-marker-icon.krm{transition:width .6s,height .6s,margin .6s}
.sc{width:100%;height:auto;display:block;background:linear-gradient(#eef5fa,#fff 78%);border:1px solid var(--line)}
.sc .ln{fill:none;stroke:var(--ink);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.sc .wh{fill:var(--white)}
.sc .zm{fill:#ecebe6}
.sc .wd{fill:var(--blue);opacity:.85;transform-box:fill-box;transform-origin:50% 100%;transform:scaleY(0);transition:transform .9s ease-out}
.sc .rs{fill:none;stroke:#2e8b57;stroke-width:2.2;stroke-linecap:round}
.sc .sh.r{fill:var(--red)}.sc .sh.b{fill:var(--blue)}
.sc .tx{font:600 13px var(--body);fill:var(--ink-2)}
.sc .tx.b{font:700 18px var(--disp);fill:var(--blue)}
.sc .kd{stroke:var(--blue);stroke-width:2;stroke-linecap:round;opacity:0;animation:k-pad 1.1s linear infinite}
.sc .kd.off{display:none}
.sc.mocno .kd{animation-duration:.6s;stroke-width:2.6}
.sc .pl{fill:none;stroke:var(--blue);stroke-width:4;stroke-dasharray:7 9;stroke-linecap:round;animation:k-pl .8s linear infinite;opacity:0;transition:opacity .4s}
.sc.pada .pl{opacity:1}
@keyframes k-pad{0%{transform:translateY(0);opacity:0}12%{opacity:.75}100%{transform:translateY(250px);opacity:.2}}
@keyframes k-pl{to{stroke-dashoffset:-16}}
@media (prefers-reduced-motion:reduce){.sc .kd,.sc .pl{animation:none}.sc .kd{opacity:.5}.sc .wd,.leaflet-marker-icon.krm{transition:none}}
/* kafel wsparcia (.zgs.wsp): kwota pod tytułem, link na dole kafla */
.wsp .zg .num{margin-top:0;font-size:30px}
.wsp .zg p{flex:1}
.wsp .zg small a{font-weight:600}
/* galeria z dużym pierwszym zdjęciem: .g3 (3 zdjęcia) i .g5 (5 zdjęć) domykają siatkę bez dziur */
.gal.g3,.gal.g5{gap:8px}
.gal.g5{grid-template-columns:repeat(4,minmax(0,1fr))}
.gal.g3 figure:first-child,.gal.g5 figure:first-child{grid-column:span 2;grid-row:span 2}
.gal.g3 figure:first-child img,.gal.g5 figure:first-child img{height:100%;aspect-ratio:auto}
@media (max-width:640px){.gal.g5{grid-template-columns:repeat(2,minmax(0,1fr))}.gal.g3 figure:first-child,.gal.g5 figure:first-child{grid-row:auto}}
/* Formularz kontaktowy (kontakt.html#napisz, html/formularz.js): zwarta siatka 3 kolumn .frm w .box, captcha .cap */
.frm{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 20px;padding:24px 28px}
.frm .p{display:grid;gap:4px;align-content:start;min-width:0}
.frm .p.s2{grid-column:span 2}
.frm .p.c{grid-column:1/-1}
.frm .p[hidden]{display:none}
.frm label{font-weight:600;font-size:14.5px}
.frm label i{font-style:normal;color:var(--red-d)}
.frm .zal-l small{display:block}
.frm label small,.frm small{font-weight:400;font-size:13px;color:var(--ink-3)}
.frm input[type=text],.frm input[type=email],.frm input[type=tel],.frm select,.frm textarea{width:100%;min-width:0;border:1.5px solid var(--line);background:var(--white);font:inherit;font-size:15px;color:var(--ink)}
.frm input[type=text],.frm input[type=email],.frm input[type=tel],.frm select{height:42px;padding:0 12px}
.frm textarea{min-height:120px;padding:10px 12px;resize:vertical;line-height:1.5}
/* Załącznik: natywny input ukryty wizualnie (dostępny z klawiatury), przycisk to label.btn.s, obok nazwa pliku (formularz.js) */
.zal-w{position:relative;display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;min-width:0}
.frm input[type=file]{position:absolute;left:0;top:0;width:1px;height:1px;opacity:0;overflow:hidden;clip-path:inset(50%);pointer-events:none}
.frm input[type=file]:focus-visible+label.btn{outline:3px solid var(--blue);outline-offset:2px}
.frm label.btn{font-weight:600;cursor:pointer}
.zal-n{font-size:13.5px;color:var(--ink-2);min-width:0;overflow-wrap:anywhere}
.frm input:focus,.frm select:focus,.frm textarea:focus{outline:3px solid var(--blue);outline-offset:0;border-color:var(--blue)}
.frm [aria-invalid="true"]{border-color:var(--red)}
.frm .er{color:var(--red-d);font-size:13px;font-weight:600}
.frm .er:empty{display:none}
.frm .zg-r{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:13.5px;color:var(--ink-2);cursor:pointer;line-height:1.4}
.frm .zg-r input{width:20px;height:20px;flex:none;margin:0;accent-color:var(--blue)}
.frm .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.frm .ak{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto auto;align-items:center;gap:12px 20px;border-top:1px solid var(--line);padding-top:14px}
.frm .src{margin:0}
.frm .btn[disabled]{opacity:.45;cursor:not-allowed}
.cap{display:inline-flex;align-items:center;gap:10px;border:1.5px solid var(--line);background:var(--paper);padding:6px 14px;cursor:pointer;height:44px;white-space:nowrap}
.cap input{width:20px;height:20px;margin:0;accent-color:var(--blue);cursor:pointer}
.cap b{font-size:14.5px;font-weight:600}
.cap span{display:grid;line-height:1.2}.cap small{font-size:13px}
.cap.pot{border-color:var(--ok);background:#eaf4ee}.cap.pot small{color:var(--ok)}
.cap.zle{border-color:var(--red)}
.frm-w h3{font-family:var(--disp);font-size:30px;text-transform:uppercase;margin-bottom:6px}
.frm-w .num{font-size:24px;color:var(--blue)}
@media (max-width:900px){.frm{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.frm .ak{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:600px){.frm,.frm .ak{grid-template-columns:minmax(0,1fr)}.frm .p.s2{grid-column:auto}.frm{padding:18px 16px}.cap{width:100%}}

/* Select: własna strzałka SVG zamiast natywnej; wysokość i ramka jak pola obok (.pole 48 px, .fl 40 px, .frm 42 px) */
select.pole,.fl select,.frm select{-webkit-appearance:none;appearance:none;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%23202020' stroke-width='2'/%3E%3C/svg%3E") right 14px center/14px no-repeat;padding-right:40px;text-overflow:ellipsis;cursor:pointer}
select.pole{height:48px;border:1.5px solid var(--ink);font:inherit;font-size:16px;padding-left:14px;color:var(--ink);min-width:0}
select.pole:focus,.fl select:focus{outline:3px solid var(--blue-l);border-color:var(--blue)}
