/* ============================================================================
   OSTOIA — ARKUSZ SERWISU
   ----------------------------------------------------------------------------
   Jeden plik, dwie warstwy, w tej kolejności:

     CZĘŚĆ A — SYSTEM. Bloki z `styl.css` przeniesione bez zmian: siatka i sekcje,
       typografia artykułu, elementy artykułu, karty, liczby, tabele, terminal,
       makieta panelu, wykres, cennik, formularz, FAQ, drobiazgi, podstrony.
       Pominięte: 00 zmienne, 01 reset, 05 przyciski, 15 nagłówek, 16 stopka,
       17 pasek mobilny — te definiuje część B.

     CZĘŚĆ B — SCHEMAT przeniesiony z viam.com.pl: ekran wstępny, przyklejony
       nagłówek z mega-menu, hero z falą, karty modułów, koło jedenastu rewirów,
       pomiary z filtrami, wyniki na zakładkach, rekomendacje, kalendarz,
       pas gwarancji, stopka z falą, pasek mobilny.

   DLACZEGO W TEJ KOLEJNOŚCI: część B nadpisuje z części A to, co obie opisują
   (sekcje, nagłówek, stopka). Przy odwrotnej kolejności nagłówek dostawał
   atramentową nazwę marki na atramentowym tle i biały przycisk bez tekstu.
   Zmienne i reset stoją w części B, na samej górze pliku — przed nimi nie ma
   nic, co by z nich korzystało.
   ========================================================================== */

/* ╔══ ZMIENNE I RESET ═══════════════════════════════════════════════════╗ */
:root{
  --atrament: 26, 22, 32;              /* #1A1620 — nigdy #000 */

  --linia-1: rgba(var(--atrament), .06);
  --linia-2: rgba(var(--atrament), .10);
  --linia-3: rgba(var(--atrament), .16);
  --linia-4: rgba(var(--atrament), .26);
  --linia-c1: rgba(255,255,255,.07);
  --linia-c2: rgba(255,255,255,.12);
  --linia-c3: rgba(255,255,255,.20);

  --jasny-0:#FFFFFF; --jasny-1:#FCFBFD; --jasny-2:#F8F6FB; --jasny-3:#F5F3F8;
  --jasny-4:#F0EDF5; --jasny-5:#ECE9F1; --jasny-6:#E5E1EC;

  --ciemny-0:#0B0910; --ciemny-1:#100D16; --ciemny-2:#14111B; --ciemny-3:#191520;
  --ciemny-4:#1E1926; --ciemny-5:#231E2C; --ciemny-6:#282232; --ciemny-7:#2E2838;

  --tekst-1:#1A1620; --tekst-2:#4C4657; --tekst-3:#5F5869;
  --tekst-1c:#F2F0F6; --tekst-2c:#B9B3C6; --tekst-3c:#A79FB7;

  /* jedenaście modułów — barwy z briefu, bez zmian */
  --rys:#F2AE3E;        --rys-tlo:#3B2A10;      --rys-tekst:#7A5000;       --rys-rgb:242,174,62;
  --puchacz:#AC90F7;    --puchacz-tlo:#241A42;  --puchacz-tekst:#5836C4;   --puchacz-rgb:172,144,247;
  --zubr:#4FDB8C;       --zubr-tlo:#0F2A1D;     --zubr-tekst:#0B6E3D;      --zubr-rgb:79,219,140;
  --lis:#F2724B;        --lis-tlo:#33160D;      --lis-tekst:#A83A18;       --lis-rgb:242,114,75;
  --sokol:#6FA8FF;      --sokol-tlo:#10203B;    --sokol-tekst:#1B4FA8;     --sokol-rgb:111,168,255;
  --bobr:#E8674A;       --bobr-tlo:#3B1A12;     --bobr-tekst:#A33418;      --bobr-rgb:232,103,74;
  --zimorodek:#2FC4E8;  --zimorodek-tlo:#0D2A33;--zimorodek-tekst:#0B5E75; --zimorodek-rgb:47,196,232;
  --sroka:#C9D4E5;      --sroka-tlo:#1C2230;    --sroka-tekst:#3A4C68;     --sroka-rgb:201,212,229;
  --borsuk:#9AA6B2;     --borsuk-tlo:#1E2429;   --borsuk-tekst:#41505C;    --borsuk-rgb:154,166,178;
  --kozica:#7FD4B8;     --kozica-tlo:#102C25;   --kozica-tekst:#137056;    --kozica-rgb:127,212,184;
  --slowik:#E9C46A;     --slowik-tlo:#2E2612;   --slowik-tekst:#8A6B14;    --slowik-rgb:233,196,106;

  --alarm:#FF6B78; --alarm-tekst:#B3261E;

  --kroj-tekst: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
                "Helvetica Neue", Arial, sans-serif;
  --kroj-tytul: var(--kroj-tekst);
  --kroj-mono:  ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
                "Liberation Mono", monospace;

  --t-h1:      clamp(2.375rem, 1.05rem + 5.3vw, 4.125rem);
  --t-h2:      clamp(1.75rem,  1.05rem + 2.8vw, 2.625rem);
  --t-h3:      clamp(1.3125rem, 1.1rem + .85vw, 1.625rem);
  --t-h4:      1.0625rem;
  --t-lead:    clamp(1.0625rem, .99rem + .38vw, 1.3125rem);
  --t-tekst:   1.0625rem;
  --t-maly:    .9375rem;
  --t-drobny:  .8125rem;
  --t-etykieta:.75rem;
  --t-liczba:  clamp(2.25rem, 1.3rem + 3.9vw, 3.75rem);

  --sekcja-y:  clamp(5.5rem, 3.2rem + 7vw, 10rem);
  --zawartosc: 1240px;
  --kregoslup: 56rem;
  --brzeg:     clamp(1.25rem, .6rem + 2.4vw, 2.5rem);
  --promien:   14px;
  --promien-m: 8px;
  --promien-kafel: 19px;
  --gorny-h:   66px;

  --drabina: 0 32px 32px rgba(var(--atrament), .045),
             0 16px 16px rgba(var(--atrament), .045),
             0  8px  8px rgba(var(--atrament), .045),
             0  4px  4px -2px rgba(var(--atrament), .045),
             0  2px  2px -1px rgba(var(--atrament), .045);
  --drabina-m: 0 12px 12px -6px rgba(var(--atrament), .05),
               0  6px  6px -3px rgba(var(--atrament), .05),
               0  3px  3px -1.5px rgba(var(--atrament), .05),
               0  1px  1px -.5px rgba(var(--atrament), .05);
  --pierscien: 0 0 0 1px rgba(var(--atrament), .10),
               0 2px 2px -2px rgba(var(--atrament), .04),
               0 4px 4px 0    rgba(var(--atrament), .04),
               0 8px 8px 0    rgba(var(--atrament), .04);
  --drabina-c: 0 24px 48px rgba(0,0,0,.42),
               0 12px 24px rgba(0,0,0,.30),
               0  6px 12px rgba(0,0,0,.22),
               0  2px  4px rgba(0,0,0,.18);

  --wiazka-rys:      linear-gradient(180deg, rgba(var(--rys-rgb),.95), rgba(var(--rys-rgb),.55) 52.88%, rgba(var(--rys-rgb),0) 88.46%);
  --wiazka-puchacz:  linear-gradient(180deg, rgba(var(--puchacz-rgb),.95), rgba(var(--puchacz-rgb),.55) 52.88%, rgba(var(--puchacz-rgb),0) 88.46%);
  --wiazka-zubr:     linear-gradient(180deg, rgba(var(--zubr-rgb),.95), rgba(var(--zubr-rgb),.55) 52.88%, rgba(var(--zubr-rgb),0) 88.46%);
  --wiazka-trojka:   linear-gradient(180deg, rgba(var(--rys-rgb),.9) 9.66%, rgba(var(--puchacz-rgb),.85) 52.88%, rgba(var(--zubr-rgb),.8) 88.46%, rgba(var(--zubr-rgb),0) 132.97%);
  --wiazka-atrament: linear-gradient(180deg, rgba(var(--atrament),.28), rgba(var(--atrament),.10) 52.88%, rgba(var(--atrament),0) 88.46%);
  /* ta sama wiązka poziomo — do podkreśleń pod nagłówkami (zamiennik złotej linii) */
  --wiazka-pozioma:  linear-gradient(90deg, rgba(var(--rys-rgb),0), rgba(var(--rys-rgb),.95) 14%, rgba(var(--puchacz-rgb),.9) 52%, rgba(var(--zubr-rgb),.85) 86%, rgba(var(--zubr-rgb),0));
}

/* ============================================================================
   01 · RESET
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ font-size:90%; -webkit-text-size-adjust:100%; scroll-behavior:smooth; overflow-x:hidden; }
body{
  margin:0; font-family:var(--kroj-tekst); font-size:var(--t-tekst); line-height:1.62;
  color:var(--tekst-1); background:var(--jasny-0);
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img,svg,video,canvas{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button,input,select,textarea{ font:inherit; color:inherit; }
[id]{ scroll-margin-top:calc(var(--gorny-h) + 20px); }
::selection{ background:rgba(var(--puchacz-rgb),.28); }
.pominiecie{
  position:absolute; left:-9999px; top:0; z-index:200; padding:.7rem 1.1rem;
  background:var(--ciemny-0); color:var(--tekst-1c); border-radius:0 0 var(--promien-m) 0;
}
.pominiecie:focus{ left:0; }
.tylko-czytnik{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap;
}


/* ╔══ CZĘŚĆ A — SYSTEM ══════════════════════════════════════════════════╗ */

/* ============================================================================
   02 · SIATKA I SEKCJE
   ========================================================================== */

/* --- kontener: JEDNA szerokość na całej stronie ---
   Węższe kolumny tekstu robimy przez .tekst wewnątrz, wyrównane do LEWEJ
   krawędzi kontenera, żeby lewy margines nie skakał przy przewijaniu. */
.zawartosc{
  width:100%;
  max-width:var(--zawartosc);
  margin-inline:auto;
  padding-inline:var(--brzeg);
}
/* ZASADA SZEROKOŚCI — JEDEN KRĘGOSŁUP, WYŚRODKOWANY (decyzja 2026-08-09, druga tura).
   ----------------------------------------------------------------------------------
   Poprzednio proza stała przy LEWEJ krawędzi kontenera. Przy kontenerze 1240 px
   i kolumnie 750 px zostawało po prawej 490 px pustki — strona wyglądała, jakby ją
   zwiało w lewo, a przyciski pod tekstem sprawiały wrażenie zgubionych.

   Teraz jest odwrotnie i prościej: proza, listy, cytaty i tabele mają TĘ SAMĄ
   szerokość (--kregoslup) i są WYŚRODKOWANE. Jedna oś, jedna linia środka,
   światło po obu stronach równe.

   Bloki, które naprawdę potrzebują szerokości — siatki modułów, makieta panelu,
   tabele sześcio- i siedmiokolumnowe — rozpychają się do --zawartosc, też środkiem.
   Wychodzą więc symetrycznie poza kręgosłup, co czyta się jak zagnieżdżenie,
   a nie jak rozjazd. */
.tekst{ max-width:var(--kregoslup); margin-inline:auto; }
.tekst--szeroka{ max-width:var(--kregoslup); margin-inline:auto; }
/* .tekst--lewa USUNIĘTA (2026-08-09). Robiła `margin-inline:0`, czyli dosuwała blok
   do lewej krawędzi ramy. Przy układzie do lewej to był sensowny wyjątek; przy
   wyśrodkowanym kręgosłupie to był dokładnie ten element, który wyglądał na zwiany
   — bo stał 180 px od osi, na której siedziała reszta strony. Osiemnaście wystąpień
   w HTML-u zdjęte. Jeśli kiedyś naprawdę zajdzie potrzeba dosunięcia czegoś do lewej,
   lepiej dać temu własną, nazwaną klasę z powodem w komentarzu. */
.srodek{ margin-inline:auto; text-align:center; }
/* cytat i listy stojące bezpośrednio w kontenerze trzymają tę samą oś co proza */
.zawartosc > .cytat{ max-width:var(--kregoslup); margin-inline:auto; }
.zawartosc > .lista, .zawartosc > .lista-num{ max-width:var(--kregoslup); margin-inline:auto; }
.srodek .tekst{ margin-inline:auto; }
/* nagłówki i podpisy stojące luzem w kontenerze też siadają na kręgosłupie */
.zawartosc > h2, .zawartosc > h3, .zawartosc > .lead,
.zawartosc > .podpis, .zawartosc > .przewin, .zawartosc > .nadtytul{
  max-width:var(--kregoslup); margin-inline:auto;
}


/* Elementy stojące LUZEM w kontenerze (przycisk, notka pod przyciskiem, kafel ikony)
   są inline-block albo mają własną wąską szerokość, więc `max-width` ich nie ruszy —
   siedziałyby przy lewej krawędzi ramy, 180 px od osi reszty strony. Dosuwamy je
   o połowę różnicy między ramą a kręgosłupem. `max(0px, …)` chroni wąskie ekrany,
   gdzie rama jest węższa od kręgosłupa i wynik byłby ujemny. */
.zawartosc > .btn,
.zawartosc > .pod-przyciskiem,
.zawartosc > .kafel-modul,
.zawartosc > .nadtytul{
  margin-left: max(0px, calc((100% - var(--kregoslup)) / 2));
}

/* --- sekcja: baza --- */
.sekcja{
  position:relative;
  padding-block:var(--sekcja-y);
  overflow:hidden;                     /* mgły i poświaty nie rozpychają strony */
  isolation:isolate;
}
.sekcja > .zawartosc{ position:relative; z-index:2; }

/* --- HERO: poświata radialna od góry + mocniejszy kolor --- */
.sekcja--hero{
  background-image:radial-gradient(130% 120% at 50% 0%, #FFFFFF 0%, var(--jasny-2) 58%, var(--jasny-5) 100%);
}
.sekcja--hero .mgla--trojka{
  background-image:
    radial-gradient(circle at 14% 12%, rgba(var(--rys-rgb),.30),     rgba(var(--rys-rgb),0) 42%),
    radial-gradient(circle at 88% 16%, rgba(var(--puchacz-rgb),.28), rgba(var(--puchacz-rgb),0) 40%),
    radial-gradient(circle at 50% 78%, rgba(var(--zubr-rgb),.16),    rgba(var(--zubr-rgb),0) 44%);
}
/* smuga światła dokładnie pod nagłówkiem */
.sekcja--hero::after{
  content:""; position:absolute; left:50%; top:0; z-index:0; pointer-events:none;
  width:min(1200px,120%); height:620px; transform:translateX(-50%);
  background:radial-gradient(50% 60% at 50% 22%, rgba(255,255,255,.92), rgba(255,255,255,0) 72%);
}

/* --- SEKCJA JASNA (domyślna baza serwisu) --- */
.sekcja--jasna { background:var(--jasny-0); }
.sekcja--jasna2{ background:var(--jasny-3); }
.sekcja--jasna3{ background:var(--jasny-5); }

/* kolor do jasnego tła bez zmiany jasności: plama + płaski kolor pod spodem */
.sekcja--jasna2::before,
.sekcja--jasna3::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:
    radial-gradient(38% 42% at 6% 8%,  rgba(var(--puchacz-rgb),.16), rgba(var(--puchacz-rgb),0) 70%),
    radial-gradient(34% 40% at 96% 82%, rgba(var(--rys-rgb),.14),    rgba(var(--rys-rgb),0) 70%);
}

/* --- SEKCJA CIEMNA (akcent, przerywnik) --- */
.sekcja--ciemna{
  background-color:var(--ciemny-2);
  color:var(--tekst-1c);
  /* poświata dokładnie nad nagłówkiem — źródło światła u góry, jak w naturze */
  background-image:radial-gradient(130% 130% at 50% 0%, var(--ciemny-5), var(--ciemny-1));
}
.sekcja--ciemna .tekst-2,
.sekcja--ciemna .lead{ color:var(--tekst-2c); }
.sekcja--ciemna .tekst-3,
.sekcja--ciemna .drobne,
.sekcja--ciemna .podpis{ color:var(--tekst-3c); }
.sekcja--ciemna .nadtytul,
.sekcja--ciemna .etykieta,
.sekcja--ciemna .liczba__data{ color:var(--tekst-3c); }
.sekcja--ciemna .nadtytul::before{ background:var(--linia-c3); }
.sekcja--ciemna hr{ background:var(--linia-c2); }

/* barwne mgły — zawsze co najmniej dwie naraz, krycie 10–18% */
.mgla{ position:absolute; inset:0; z-index:0; pointer-events:none; }
.mgla--trojka{
  background-image:
    radial-gradient(circle at 18% 22%, rgba(var(--rys-rgb),.16),     rgba(var(--rys-rgb),0) 34%),
    radial-gradient(circle at 82% 30%, rgba(var(--puchacz-rgb),.15), rgba(var(--puchacz-rgb),0) 32%),
    radial-gradient(circle at 50% 92%, rgba(var(--zubr-rgb),.11),    rgba(var(--zubr-rgb),0) 36%);
}
.mgla--rys{
  background-image:
    radial-gradient(circle at 24% 18%, rgba(var(--rys-rgb),.17), rgba(var(--rys-rgb),0) 36%),
    radial-gradient(circle at 88% 76%, rgba(var(--rys-rgb),.10), rgba(var(--rys-rgb),0) 30%);
}
.mgla--puchacz{
  background-image:
    radial-gradient(circle at 70% 16%, rgba(var(--puchacz-rgb),.18), rgba(var(--puchacz-rgb),0) 36%),
    radial-gradient(circle at 14% 84%, rgba(var(--puchacz-rgb),.10), rgba(var(--puchacz-rgb),0) 30%);
}
.mgla--zubr{
  background-image:
    radial-gradient(circle at 26% 78%, rgba(var(--zubr-rgb),.16), rgba(var(--zubr-rgb),0) 36%),
    radial-gradient(circle at 84% 20%, rgba(var(--zubr-rgb),.10), rgba(var(--zubr-rgb),0) 30%);
}
.mgla--alarm{
  background-image:
    radial-gradient(circle at 50% 6%,  rgba(255,107,120,.14), rgba(255,107,120,0) 40%),
    radial-gradient(circle at 12% 88%, rgba(var(--puchacz-rgb),.12), rgba(var(--puchacz-rgb),0) 34%);
}

/* siatka 64 px wycinana winietą — tylko na ciemnych sekcjach, ledwo widoczna */
.sekcja--ciemna .siatka{
  position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.55;
  background-image:
    linear-gradient(to right, var(--linia-c1) 1px, rgba(255,255,255,0) 1px),
    linear-gradient(to bottom, var(--linia-c1) 1px, rgba(255,255,255,0) 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(120% 80% at 50% 0%, #000 22%, rgba(0,0,0,0) 100%);
          mask-image:radial-gradient(120% 80% at 50% 0%, #000 22%, rgba(0,0,0,0) 100%);
}

/* przejście jasna → ciemna: cienki pas światła na styku */
.sekcja--ciemna::after{
  content:""; position:absolute; left:0; right:0; top:0; height:1px; z-index:3;
  background:linear-gradient(90deg,
    rgba(var(--rys-rgb),0) 0%, rgba(var(--rys-rgb),.55) 22%,
    rgba(var(--puchacz-rgb),.6) 50%, rgba(var(--zubr-rgb),.55) 78%,
    rgba(var(--zubr-rgb),0) 100%);
}
/* przejście ciemna → jasna: delikatny cień spod poprzedniej sekcji */
.sekcja--ciemna + .sekcja--jasna::before,
.sekcja--ciemna + .sekcja--jasna2::after,
.sekcja--ciemna + .sekcja--jasna3::after{
  content:""; position:absolute; left:0; right:0; top:0; height:140px; z-index:0;
  pointer-events:none;
  background:linear-gradient(180deg, rgba(var(--atrament),.055), rgba(var(--atrament),0) 100%);
}

/* --- układy dwu- i trzykolumnowe --- */
.rzad{ display:grid; gap:clamp(1.5rem, 1rem + 2vw, 2.75rem); }
.rzad--2{ grid-template-columns:repeat(2, minmax(0,1fr)); }
.rzad--3{ grid-template-columns:repeat(3, minmax(0,1fr)); }
.rzad--4{ grid-template-columns:repeat(4, minmax(0,1fr)); }
.rzad--tekst-obok{ grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); align-items:start; }
@media (max-width:960px){
  .rzad--3,.rzad--tekst-obok{ grid-template-columns:1fr; }
  .rzad--4{ grid-template-columns:repeat(2, minmax(0,1fr)); }
}
@media (max-width:720px){
  .rzad--2{ grid-template-columns:1fr; }
}
@media (max-width:520px){
  .rzad--4{ grid-template-columns:1fr; }
}
.odstep-s{ height:1rem; } .odstep-m{ height:2rem; } .odstep-l{ height:3.5rem; }


/* ============================================================================
   03 · TYPOGRAFIA
   ========================================================================== */
h1,h2,h3,h4{
  font-family:var(--kroj-tytul);
  /* Waga 500 byla dobrana pod szeryfy — bezszeryfowy przy niej wyglada mdlo.
     640 daje naglowkom mase bez wchodzenia w krzykliwy bold (700+). */
  font-weight:640;
  margin:0 0 .6em;
  text-wrap:balance;
}
h1{
  font-size:var(--t-h1);
  line-height:1.04;
  letter-spacing:-.034em;
  /* tekst gradientowy, który NIE jest tęczowy: jeden kolor gasnący o 14% */
  background:linear-gradient(96deg, var(--tekst-1) 58%, rgba(var(--atrament),.84) 96%);
  -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 8px 40px rgba(var(--atrament),.13));
}
.sekcja--ciemna h1{
  background:linear-gradient(96deg, #F7F5FA 58%, rgba(247,245,250,.82) 96%);
  -webkit-background-clip:text; background-clip:text;
  filter:drop-shadow(0 8px 40px rgba(0,0,0,.85));
}
h2{ font-size:var(--t-h2); line-height:1.12; letter-spacing:-.026em; }
h3{ font-size:var(--t-h3); line-height:1.2; letter-spacing:-.014em; }
h4{ font-family:var(--kroj-tekst); font-size:var(--t-h4); font-weight:650;
    line-height:1.35; letter-spacing:-.006em; }
.sekcja--ciemna h2,.sekcja--ciemna h3{ color:var(--tekst-1c); }

p{ margin:0 0 1.15em; }
p:last-child{ margin-bottom:0; }

.lead{ font-size:var(--t-lead); line-height:1.55; color:var(--tekst-2); }
.tekst-2{ color:var(--tekst-2); }
.tekst-3{ color:var(--tekst-3); }
.drobne{ font-size:var(--t-drobny); line-height:1.55; color:var(--tekst-3); }
.podpis{ font-size:var(--t-drobny); line-height:1.5; color:var(--tekst-3);
         margin-top:.7rem; }
.mocne{ font-weight:650; color:var(--tekst-1); }
.sekcja--ciemna .mocne{ color:var(--tekst-1c); }

/* nadtytuł: włosowa kreska + wersaliki, BEZ owalnej pigułki */
.nadtytul{
  display:flex; align-items:center; gap:.7rem;
  font-family:var(--kroj-tekst);
  font-size:var(--t-etykieta); font-weight:600;
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--tekst-3);
  margin:0 0 1.1rem;
}
.nadtytul::before{ content:""; width:34px; height:1px; background:var(--linia-4); flex:none; }
.srodek .nadtytul{ justify-content:center; }

/* nadtytuł w barwie modułu */
.nadtytul--rys{ color:var(--rys-tekst); } .nadtytul--rys::before{ background:var(--rys); }
.nadtytul--puchacz{ color:var(--puchacz-tekst); } .nadtytul--puchacz::before{ background:var(--puchacz); }
.nadtytul--zubr{ color:var(--zubr-tekst); } .nadtytul--zubr::before{ background:var(--zubr); }
.sekcja--ciemna .nadtytul--rys{ color:var(--rys); }
.sekcja--ciemna .nadtytul--puchacz{ color:var(--puchacz); }
.sekcja--ciemna .nadtytul--zubr{ color:var(--zubr); }

/* etykieta techniczna (monospace, małe wersaliki) */
.etykieta{
  font-family:var(--kroj-mono); font-size:var(--t-drobny);
  letter-spacing:.06em; color:var(--tekst-3);
}

/* jeden przelot świetlny na całą stronę — używać RAZ */
.przelot{
  background:linear-gradient(90deg,
    var(--tekst-1) 0%, var(--tekst-1) 46%,
    var(--puchacz-tekst) 50%, var(--rys-tekst) 53%,
    var(--tekst-1) 56%, var(--tekst-1) 100%);
  background-size:220% 100%;
  -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
  animation:przelot 6s linear infinite;
}
.sekcja--ciemna .przelot{
  background:linear-gradient(90deg,
    #EFECF5 0%, #EFECF5 46%,
    #FFFFFF 49%, var(--rys) 51%, #FFFFFF 53%,
    #EFECF5 56%, #EFECF5 100%);
  background-size:220% 100%;
  -webkit-background-clip:text; background-clip:text;
}
@keyframes przelot{ from{ background-position:220% 0 } to{ background-position:-220% 0 } }


/* ============================================================================
   04 · ELEMENTY ARTYKUŁU
   Klasa .artykul jest kontenerem treści na podstronach — nadaje styl
   akapitom, listom, cytatom, obrazkom i tabelom bez dokładania klas.
   ========================================================================== */
.artykul{ max-width:var(--kregoslup); margin-inline:auto; }
.artykul > * + *{ margin-top:1.15em; }
.artykul h2{ margin-top:2.2em; }
.artykul h3{ margin-top:1.8em; }
.artykul a{ color:var(--puchacz-tekst); text-underline-offset:.18em;
            text-decoration-thickness:1px; }
.artykul a:hover{ text-decoration-thickness:2px; }
.sekcja--ciemna .artykul a{ color:var(--puchacz); }

/* lista z własnym znacznikiem */
.lista{ list-style:none; padding:0; margin:0; }
.lista li{
  position:relative; padding-left:1.6rem; margin-bottom:.7rem;
}
.lista li::before{
  content:""; position:absolute; left:0; top:.62em;
  width:7px; height:7px; border-radius:2px;
  background:var(--linia-4);
}
.lista--rys li::before{ background:var(--rys); }
.lista--puchacz li::before{ background:var(--puchacz); }
.lista--zubr li::before{ background:var(--zubr); }
.sekcja--ciemna .lista li::before{ background:var(--linia-c3); }
.sekcja--ciemna .lista--rys li::before{ background:var(--rys); }
.sekcja--ciemna .lista--puchacz li::before{ background:var(--puchacz); }
.sekcja--ciemna .lista--zubr li::before{ background:var(--zubr); }

/* lista numerowana */
.lista-num{ counter-reset:l; list-style:none; padding:0; margin:0; }
.lista-num li{ position:relative; padding-left:2.4rem; margin-bottom:1.1rem; counter-increment:l; }
.lista-num li::before{
  content:counter(l); position:absolute; left:0; top:.1em;
  width:1.65rem; height:1.65rem; border-radius:7px;
  display:grid; place-items:center;
  font-family:var(--kroj-mono); font-size:.75rem;
  background:var(--jasny-5); color:var(--tekst-2);
  border:1px solid var(--linia-2);
}
.sekcja--ciemna .lista-num li::before{
  background:var(--ciemny-6); color:var(--tekst-2c); border-color:var(--linia-c2);
}

/* cytat / wyróżnione zdanie — wiązka światła zamiast szarej kreski */
.cytat{
  position:relative; margin:2rem 0; padding:.25rem 0 .25rem 1.5rem;
  font-family:var(--kroj-tytul); font-size:clamp(1.2rem,1.05rem + .8vw,1.55rem);
  line-height:1.42; letter-spacing:-.012em; color:var(--tekst-1);
}
.cytat::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  border-radius:2px; background-image:var(--wiazka-trojka);
}
.sekcja--ciemna .cytat{ color:var(--tekst-1c); }
.cytat cite{ display:block; margin-top:.7rem; font-family:var(--kroj-tekst);
             font-size:var(--t-drobny); font-style:normal; color:var(--tekst-3); }

/* zdania klienta — kartki różnej długości, nie równy blok */
.wypowiedz{
  font-family:var(--kroj-tytul); font-size:clamp(1.15rem,1rem + .75vw,1.5rem);
  line-height:1.4; letter-spacing:-.012em; color:var(--tekst-1);
  padding:1.1rem 1.35rem; margin:0 0 .9rem;
  background:var(--jasny-0);
  border:1px solid var(--linia-2);
  border-radius:var(--promien-m);
  box-shadow:var(--drabina-m);
  max-width:32ch;
}
.wypowiedz:nth-child(2){ margin-left:clamp(0px,4vw,3.5rem); max-width:38ch; }
.wypowiedz:nth-child(3){ margin-left:clamp(0px,2vw,1.75rem); max-width:28ch; }
.wypowiedz:nth-child(4){ margin-left:clamp(0px,6vw,5rem); max-width:24ch; }

/* obrazek z podpisem */
.figura{ margin:2rem 0; }
.figura img{ width:100%; border-radius:var(--promien); border:1px solid var(--linia-2); }
.figura figcaption{ font-size:var(--t-drobny); color:var(--tekst-3); margin-top:.7rem; }

/* kod w tekście */
code{
  font-family:var(--kroj-mono); font-size:.875em;
  background:var(--jasny-5); border:1px solid var(--linia-2);
  border-radius:5px; padding:.08em .38em;
  overflow-wrap:anywhere;
}
.sekcja--ciemna code{ background:var(--ciemny-6); border-color:var(--linia-c2); }


/* ============================================================================
   06 · KARTY
   ========================================================================== */
.karta{
  position:relative; border-radius:var(--promien); padding:clamp(1.35rem,1rem + 1.2vw,2rem);
  /* ramka gradientowa: padding-box + border-box, koniec z alfą 00 */
  background:linear-gradient(var(--jasny-0),var(--jasny-0)) padding-box,
             linear-gradient(180deg, rgba(var(--atrament),.20) 0%, rgba(var(--atrament),0) 100%) border-box;
  border:1px solid transparent;
  box-shadow:var(--drabina);
}
.sekcja--ciemna .karta{
  background:linear-gradient(var(--ciemny-4),var(--ciemny-4)) padding-box,
             linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 100%) border-box;
  box-shadow:var(--drabina-c);
}
/* odblask szkła 161° z lewego górnego rogu */
.karta--szklo::before{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(161deg, rgba(255,255,255,.55) 2.8%, rgba(255,255,255,0) 48%);
}
.sekcja--ciemna .karta--szklo::before{
  background:linear-gradient(161deg, rgba(255,255,255,.10) 2.8%, rgba(255,255,255,0) 48%);
}
.karta > *{ position:relative; z-index:1; }

/* karta modułu — barwiona kolorem swojego zwierzęcia */
.modul{
  position:relative; display:flex; flex-direction:column;
  border-radius:var(--promien); padding:clamp(1.35rem,1rem + 1.2vw,1.9rem);
  background:linear-gradient(var(--ciemny-4),var(--ciemny-4)) padding-box,
             linear-gradient(180deg, rgba(var(--znak-rgb),.55) 0%, rgba(var(--znak-rgb),0) 92%) border-box;
  border:1px solid transparent;
  box-shadow:var(--drabina-c), 0 0 60px -20px rgba(var(--znak-rgb),.35);
  overflow:hidden;
}
.modul::before{                          /* poświata w barwie modułu */
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(90% 55% at 18% 0%, rgba(var(--znak-rgb),.14), rgba(var(--znak-rgb),0) 72%);
}
.modul > *{ position:relative; z-index:1; }
.modul--rys{     --znak-rgb:var(--rys-rgb);     --znak:var(--rys);     --znak-tlo:var(--rys-tlo); }
.modul--puchacz{ --znak-rgb:var(--puchacz-rgb); --znak:var(--puchacz); --znak-tlo:var(--puchacz-tlo); }
.modul--zubr{    --znak-rgb:var(--zubr-rgb);    --znak:var(--zubr);    --znak-tlo:var(--zubr-tlo); }

.modul__kafel{
  width:60px; height:60px; border-radius:var(--promien-kafel);   /* 19 px, jak w Adobe */
  background:var(--znak-tlo);
  display:grid; place-items:center; flex:none;
  box-shadow:0 10px 26px -10px rgba(var(--znak-rgb),.55),
             inset 0 1px 0 rgba(255,255,255,.10);
}
.modul__kafel svg{ width:38px; height:38px; display:block; }
.modul__glowa{ display:flex; align-items:center; gap:1rem; margin-bottom:1.2rem; }
.modul__nazwa{ font-family:var(--kroj-tytul); font-size:1.5rem; line-height:1.1;
               letter-spacing:-.018em; color:var(--znak); margin:0; }
.modul__rola{ font-family:var(--kroj-mono); font-size:var(--t-drobny);
              letter-spacing:.06em; color:var(--tekst-3c); margin-top:.2rem; }
.modul__zdanie{ font-size:var(--t-tekst); color:var(--tekst-1c); margin-bottom:1.1rem; }
.modul h3{ min-height:0; }
.modul__liczba{
  margin-top:auto; padding-top:1.1rem; border-top:1px solid var(--linia-c2);
}
.modul__liczba b{ color:var(--znak); font-weight:650; }
.modul__zle{
  margin-top:1.1rem; padding:.85rem 1rem; border-radius:var(--promien-m);
  background:rgba(0,0,0,.28); border:1px solid var(--linia-c1);
  font-size:var(--t-maly); color:var(--tekst-2c);
}
.modul__zle b{ color:var(--tekst-1c); }

/* blok ostrzeżenia / uczciwej informacji */
.uwaga{
  border-radius:var(--promien-m); padding:1.1rem 1.35rem;
  background:var(--jasny-3); border:1px solid var(--linia-2);
  border-left:3px solid var(--linia-4);
  font-size:var(--t-maly); color:var(--tekst-2);
}
.sekcja--ciemna .uwaga{
  background:rgba(0,0,0,.28); border-color:var(--linia-c1);
  border-left-color:var(--linia-c3); color:var(--tekst-2c);
}
/* czerwona krawędź TYLKO tam, gdzie naprawdę ostrzegamy — nie przy uprzejmościach */
.uwaga--alarm{ border-left-color:var(--alarm-tekst); }
.sekcja--ciemna .uwaga--alarm{ border-left-color:var(--alarm); }
.uwaga b{ color:var(--tekst-1); } .sekcja--ciemna .uwaga b{ color:var(--tekst-1c); }


/* ============================================================================
   07 · LICZBY I KAFLE STATYSTYK
   ========================================================================== */
.kafel-liczby{
  position:relative; padding:1.4rem 1.35rem 1.25rem;
  border-radius:var(--promien);
  background:linear-gradient(var(--ciemny-5),var(--ciemny-5)) padding-box,
             linear-gradient(180deg, rgba(255,255,255,.20) 0%, rgba(255,255,255,0) 100%) border-box;
  border:1px solid transparent;
  overflow:hidden;
}
.kafel-liczby::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(161deg, rgba(255,255,255,.09) 2.8%, rgba(255,255,255,0) 48%);
}
.kafel-liczby::after{                       /* wiązka światła u góry kafla */
  content:""; position:absolute; left:0; top:0; width:100%; height:2px;
  background:var(--wiazka, var(--wiazka-atrament));
  transform:rotate(180deg);
}
.kafel-liczby > *{ position:relative; z-index:1; }
.liczba{
  font-family:var(--kroj-tekst); font-size:var(--t-liczba); font-weight:600;
  line-height:1; letter-spacing:-.035em; color:var(--tekst-1c);
  font-variant-numeric:tabular-nums lining-nums;
}
.liczba small{ font-size:.44em; font-weight:500; color:var(--tekst-3c); letter-spacing:-.01em; }
.liczba--rys{ color:var(--rys); } .liczba--puchacz{ color:var(--puchacz); }
.liczba--zubr{ color:var(--zubr); }
.liczba__podpis{ margin-top:.6rem; font-size:var(--t-maly); color:var(--tekst-2c); }
.liczba__data{ margin-top:.35rem; font-family:var(--kroj-mono);
               font-size:.6875rem; color:var(--tekst-3c); }


/* ============================================================================
   08 · TABELE
   Każda tabela MUSI siedzieć w .tabela-otoczka, inaczej rozepchnie telefon.
   ========================================================================== */
/* Tabela stoi na tej samej osi co proza i kończy się blisko niej.
   Wcześniej ciągnęła się przez całe 1240px obok akapitu szerokiego na 750px —
   oko czytało to jako dwa różne układy na jednej stronie. Teraz 60rem, czyli
   ten sam limit co .tekst--szeroka: różnica jest, ale spokojna. */
.tabela-otoczka{
  width:100%; max-width:var(--kregoslup); margin-inline:auto;
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  border-radius:var(--promien);
  border:1px solid var(--linia-2);
  background:var(--jasny-0);
}
/* Wyjątek dla tabel, które naprawdę mają 6–7 kolumn (porównanie pakietów).
   Ściśnięcie ich do 60rem zrobiłoby z nich poziomy suwak na laptopie. */
.tabela-otoczka--pelna{ max-width:none; margin-inline:auto; }
.sekcja--ciemna .tabela-otoczka{
  border-color:var(--linia-c2); background:var(--ciemny-4);
}
.tabela{ width:100%; min-width:520px; border-collapse:collapse; font-size:var(--t-maly); }
.tabela th,.tabela td{
  padding:.8rem 1rem; text-align:left; vertical-align:top;
  border-bottom:1px solid var(--linia-2);
}
.sekcja--ciemna .tabela th,.sekcja--ciemna .tabela td{ border-bottom-color:var(--linia-c1); }
.tabela thead th{
  font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--tekst-2); font-weight:600;
  background:var(--jasny-3); white-space:nowrap;
}
.sekcja--ciemna .tabela thead th{ color:var(--tekst-2c); background:var(--ciemny-6); }
.tabela tbody tr:last-child td{ border-bottom:0; }
.tabela td b{ font-weight:650; }
.tabela .num{ font-variant-numeric:tabular-nums; white-space:nowrap; }
/* podpowiedź o przewijaniu — pokazywana JS-em tylko gdy tabela naprawdę wystaje */
.przewin{ display:none; font-family:var(--kroj-mono); font-size:.6875rem;
          letter-spacing:.08em; text-transform:uppercase; color:var(--tekst-3);
          margin-top:.55rem; }
.przewin.widoczna{ display:block; }
.sekcja--ciemna .przewin{ color:var(--tekst-3c); }

/* kody odpowiedzi serwera */
.kod{ font-family:var(--kroj-mono); font-weight:650; font-size:.9375rem;
      padding:.1rem .45rem; border-radius:5px; }
.kod--403{ color:var(--alarm-tekst); background:rgba(179,38,30,.10); }
.kod--200{ color:var(--zubr-tekst); background:rgba(11,110,61,.10); }
.sekcja--ciemna .kod--403{ color:var(--alarm); background:rgba(255,107,120,.14); }
.sekcja--ciemna .kod--200{ color:var(--zubr); background:rgba(var(--zubr-rgb),.13); }


/* ============================================================================
   09 · TERMINAL — rekonstrukcja odpowiedzi serwera
   ========================================================================== */
.terminal{
  border-radius:var(--promien);
  background:linear-gradient(var(--ciemny-0),var(--ciemny-0)) padding-box,
             linear-gradient(180deg, rgba(255,255,255,.20) 0%, rgba(255,255,255,0) 100%) border-box;
  border:1px solid transparent;
  box-shadow:var(--drabina-c);
  overflow:hidden;
}
.terminal__belka{
  display:flex; align-items:center; gap:.45rem;
  padding:.7rem 1rem; border-bottom:1px solid var(--linia-c1);
  background:var(--ciemny-2);
}
.terminal__kropka{ width:9px; height:9px; border-radius:50%; background:var(--linia-c3); }
.terminal__tytul{ margin-left:.6rem; font-family:var(--kroj-mono);
                  font-size:.6875rem; letter-spacing:.06em; color:var(--tekst-3c); }
.terminal__ciało{ padding:1rem; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.terminal__ciało.przewija{
  -webkit-mask-image:linear-gradient(to right, #000 0, #000 88%, rgba(0,0,0,0) 100%);
          mask-image:linear-gradient(to right, #000 0, #000 88%, rgba(0,0,0,0) 100%);
}
.terminal pre{
  margin:0; font-family:var(--kroj-mono); font-size:.8125rem; line-height:1.85;
  color:var(--tekst-2c); white-space:pre;
}
.terminal .kom{ color:var(--tekst-3c); }
.terminal .bot{ color:var(--puchacz); }
.terminal .zly{ color:var(--alarm); font-weight:700; }
.terminal .dobry{ color:var(--zubr); font-weight:700; }
@media (max-width:520px){ .terminal pre{ font-size:.6875rem; } }


/* ============================================================================
   10 · PANEL — makieta produktu (rekonstrukcja w HTML, nie zrzut ekranu)
   ========================================================================== */
.panel{
  border-radius:var(--promien);
  background:linear-gradient(var(--jasny-0),var(--jasny-0)) padding-box,
             linear-gradient(180deg, rgba(var(--atrament),.22) 0%, rgba(var(--atrament),0) 100%) border-box;
  border:1px solid transparent;
  box-shadow:var(--drabina);
  overflow:hidden;
}
.sekcja--ciemna .panel{
  background:linear-gradient(var(--ciemny-3),var(--ciemny-3)) padding-box,
             linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 100%) border-box;
  box-shadow:var(--drabina-c);
}
.panel__belka{
  display:flex; align-items:center; gap:.45rem; padding:.65rem .9rem;
  background:var(--jasny-3); border-bottom:1px solid var(--linia-2);
}
.sekcja--ciemna .panel__belka{ background:var(--ciemny-5); border-bottom-color:var(--linia-c1); }
.panel__adres{
  margin-left:.5rem; flex:1; min-width:0;
  font-family:var(--kroj-mono); font-size:.6875rem; color:var(--tekst-3);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sekcja--ciemna .panel__adres{ color:var(--tekst-3c); }
.panel__ciało{ padding:clamp(.9rem,.6rem + 1vw,1.4rem); }
.panel__naglowek{ display:flex; flex-wrap:wrap; align-items:baseline; gap:.6rem;
                  margin-bottom:1.1rem; }
.panel__wynik{ font-size:2.1rem; font-weight:600; letter-spacing:-.03em; line-height:1;
               font-variant-numeric:tabular-nums; }
.panel__zrodlo{ font-family:var(--kroj-mono); font-size:.6875rem; color:var(--tekst-3);
                width:100%; }
.sekcja--ciemna .panel__zrodlo{ color:var(--tekst-3c); }

/* wiersz listy adresów w panelu */
.panel__wiersz{
  display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.5rem 1rem;
  align-items:center; padding:.6rem 0; border-top:1px solid var(--linia-2);
  font-size:var(--t-maly);
}
.sekcja--ciemna .panel__wiersz{ border-top-color:var(--linia-c1); }
.panel__url{ font-family:var(--kroj-mono); font-size:.75rem; color:var(--tekst-2);
             overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sekcja--ciemna .panel__url{ color:var(--tekst-2c); }
.panel__powod{ font-size:.75rem; color:var(--tekst-3); white-space:normal; display:block; }
.sekcja--ciemna .panel__powod{ color:var(--tekst-3c); }

/* plakietka stanu */
.plakietka{
  display:inline-flex; align-items:center; gap:.35rem; flex:none;
  font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.04em;
  padding:.22rem .55rem; border-radius:6px; white-space:nowrap;
}
.plakietka--ok{ color:var(--zubr-tekst); background:rgba(11,110,61,.10); }
.plakietka--zle{ color:var(--alarm-tekst); background:rgba(179,38,30,.10); }
.plakietka--info{ color:var(--puchacz-tekst); background:rgba(var(--puchacz-rgb),.14); }
.sekcja--ciemna .plakietka--ok{ color:var(--zubr); background:rgba(var(--zubr-rgb),.13); }
.sekcja--ciemna .plakietka--zle{ color:var(--alarm); background:rgba(255,107,120,.14); }
.sekcja--ciemna .plakietka--info{ color:var(--puchacz); background:rgba(var(--puchacz-rgb),.16); }

/* pigułka szklana — do etykiet leżących na kolorowym tle */
.pigulka-szkło{
  display:inline-flex; align-items:center; gap:.4rem;
  padding:.3rem .7rem; border-radius:8px;
  background:rgba(255,255,255,.55);
  -webkit-backdrop-filter:blur(50px); backdrop-filter:blur(50px);
  border:1px solid var(--linia-2);
  font-family:var(--kroj-mono); font-size:.6875rem; color:var(--tekst-2);
}


/* ============================================================================
   11 · WYKRES W CZASIE (słupki, oś proporcjonalna do dat)
   ========================================================================== */
.wykres{ display:flex; align-items:flex-end; justify-content:center;
         gap:clamp(.75rem,.4rem + 1.6vw,2rem); height:210px; padding-top:1rem; }
.wykres__slup{ flex:1 1 0; max-width:132px; display:flex; flex-direction:column;
               justify-content:flex-end; height:100%; min-width:0; }
.wykres__kreska{
  border-radius:5px 5px 2px 2px;
  background-image:var(--wiazka-w-gore);
  transform:rotate(180deg);
  box-shadow:0 -6px 24px -8px rgba(var(--puchacz-rgb),.5);
}
.wykres__opis{ margin-top:.5rem; font-family:var(--kroj-mono); font-size:.625rem;
               color:var(--tekst-3c); text-align:center; white-space:nowrap; }
.wykres__wartosc{ font-family:var(--kroj-mono); font-size:.6875rem; color:var(--tekst-2c);
                  text-align:center; margin-bottom:.4rem; }


/* ============================================================================
   12 · CENNIK
   Na telefonie NIE używamy tabeli — poziomy układają się w kolumnę,
   żeby żadna treść sprzedażowa nie schowała się poza ekranem.
   ========================================================================== */
.cennik{ display:grid; gap:1.25rem; grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width:960px){ .cennik{ grid-template-columns:1fr; } }
.poziom{
  position:relative; display:flex; flex-direction:column;
  padding:clamp(1.35rem,1rem + 1.2vw,1.9rem);
  border-radius:var(--promien);
  background:linear-gradient(var(--jasny-0),var(--jasny-0)) padding-box,
             linear-gradient(180deg, rgba(var(--znak-rgb, var(--atrament)),.35) 0%,
                                     rgba(var(--znak-rgb, var(--atrament)),0) 100%) border-box;
  border:1px solid transparent;
  box-shadow:var(--drabina);
}
.poziom--rys{ --znak-rgb:var(--rys-rgb); }
.poziom--puchacz{ --znak-rgb:var(--puchacz-rgb); }
.poziom--zubr{ --znak-rgb:var(--zubr-rgb); }
.poziom--polecany{ box-shadow:var(--drabina), 0 0 0 2px rgba(var(--puchacz-rgb),.35); }
.poziom__wstazka{
  position:absolute; top:-.75rem; left:clamp(1.35rem,1rem + 1.2vw,1.9rem);
  font-family:var(--kroj-mono); font-size:.625rem; letter-spacing:.09em;
  text-transform:uppercase; padding:.28rem .6rem; border-radius:6px;
  background:var(--puchacz-tekst); color:#fff;
}
.poziom__nazwa{ font-family:var(--kroj-tytul); font-size:1.375rem; letter-spacing:-.018em;
                margin:0 0 .3rem; }
.poziom__obietnica{ font-size:var(--t-maly); color:var(--tekst-2); margin-bottom:1.1rem; }
/* Skład modułów pod nazwą poziomu. Nazwa mówi, CO SIĘ DZIEJE; skład mówi,
   z czego to złożone — dla kogoś, kto zna moduły z panelu i chce je odnaleźć. */
.stopka__pb{ opacity:.6; font-weight:400; letter-spacing:.02em; }
.poziom__sklad{ font-size:.75rem; letter-spacing:.04em; text-transform:uppercase;
  color:var(--tekst-3); margin:-.5rem 0 .85rem; }
/* Pasek „w tym miesiącu" — konkretne dostawy, nie lista funkcji.
   To jest różnica między sprzedażą dostępu do narzędzia a sprzedażą roboty. */
.poziom__miesiac{ background:rgba(var(--znak-rgb),.07); border-left:2px solid rgba(var(--znak-rgb),.5);
  border-radius:0 var(--promien-s) var(--promien-s) 0; padding:.7rem .85rem; margin:0 0 1rem; }
.poziom__miesiac > p{ font-size:.6875rem; letter-spacing:.07em; text-transform:uppercase;
  color:var(--tekst-3); margin:0 0 .4rem; }
.poziom__miesiac ul{ list-style:none; margin:0; padding:0; font-size:var(--t-maly);
  color:var(--tekst-1); }
.poziom__miesiac li{ padding:.12rem 0; }
.poziom__miesiac li b{ font-variant-numeric:tabular-nums; }
.poziom__widelki{
  font-family:var(--kroj-mono); font-size:.8125rem; letter-spacing:.02em;
  padding:.75rem .9rem; border-radius:var(--promien-m);
  background:var(--jasny-3); border:1px solid var(--linia-2);
  color:var(--tekst-2); margin-bottom:1.1rem;
}
/* Ten sam pasek stoi też w ciemnej sekcji (agencja/white-label), gdzie
   `--jasny-3` byłby białą plamą. Ciemny wariant, nie druga klasa. */
.sekcja--ciemna .poziom__widelki{
  background:rgba(255,255,255,.05); border-color:var(--linia-c2); color:var(--tekst-2c);
}
.sekcja--ciemna .poziom__widelki b{ color:var(--tekst-1c); }
.poziom__widelki b{ display:block; font-family:var(--kroj-tekst); font-size:1rem;
                    font-weight:650; color:var(--tekst-1); margin-bottom:.2rem;
                    letter-spacing:-.01em; }
.poziom .lista{ font-size:var(--t-maly); }
.poziom__stopka{ margin-top:auto; padding-top:1.1rem; }


/* ============================================================================
   13 · FORMULARZ
   ========================================================================== */
.formularz{ display:grid; gap:1.1rem; max-width:640px; }
.pola-2{ display:grid; gap:1.1rem; grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:560px){ .pola-2{ grid-template-columns:1fr; } }
.pole{ display:grid; gap:.4rem; }
.pole__etykieta{ font-size:var(--t-maly); font-weight:600; color:var(--tekst-1c); }
.pole__etykieta span{ font-weight:400; color:var(--tekst-3c); }
.pole input,.pole textarea{
  width:100%; padding:.8rem .95rem; border-radius:var(--promien-m);
  background:var(--ciemny-1); color:var(--tekst-1c);
  border:1px solid var(--linia-c2);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.pole input::placeholder,.pole textarea::placeholder{ color:var(--tekst-3c); opacity:.8; }
.pole input:focus,.pole textarea:focus{
  border-color:rgba(var(--puchacz-rgb),.7);
  box-shadow:0 0 0 3px rgba(var(--puchacz-rgb),.18);
  outline:none;
}
.pole textarea{ min-height:110px; resize:vertical; }
.pole--blad input,.pole--blad textarea{ border-color:var(--alarm); }
.pole__blad{ font-size:var(--t-drobny); color:var(--alarm); }
.pole__blad:empty{ display:none; }

/* zgoda — pole dotykowe minimum 24 px */
.zgoda{ display:grid; grid-template-columns:auto 1fr; gap:.7rem; align-items:start;
        font-size:var(--t-drobny); color:var(--tekst-2c); line-height:1.5; }
.zgoda input{ width:24px; height:24px; margin:0; accent-color:var(--puchacz-tekst); }
.zgoda a{ color:var(--puchacz); }

/* honeypot — wyprowadzony poza ekran, bez wpływu na szerokość dokumentu */
.pulapka{ position:absolute; left:-9999px; top:auto; width:1px; height:1px;
          overflow:hidden; }

/* formularz na jasnej sekcji */
.sekcja--jasna .pole__etykieta,.sekcja--jasna2 .pole__etykieta,
.sekcja--jasna3 .pole__etykieta{ color:var(--tekst-1); }
.sekcja--jasna .pole input,.sekcja--jasna .pole textarea,
.sekcja--jasna2 .pole input,.sekcja--jasna2 .pole textarea,
.sekcja--jasna3 .pole input,.sekcja--jasna3 .pole textarea{
  background:var(--jasny-0); color:var(--tekst-1); border-color:var(--linia-3);
}


/* ============================================================================
   14 · FAQ
   ========================================================================== */
.faq{ border-top:1px solid var(--linia-2); }
.sekcja--ciemna .faq{ border-top-color:var(--linia-c1); }
.faq details{ border-bottom:1px solid var(--linia-2); }
.sekcja--ciemna .faq details{ border-bottom-color:var(--linia-c1); }
.faq summary{
  display:flex; align-items:flex-start; gap:1rem; cursor:pointer;
  padding:1.15rem 0; list-style:none;
  font-family:var(--kroj-tytul); font-size:1.125rem; line-height:1.35;
  letter-spacing:-.012em;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{
  content:"+"; margin-left:auto; flex:none;
  font-family:var(--kroj-mono); font-size:1.25rem; line-height:1;
  color:var(--tekst-3); transition:transform .18s ease;
}
.faq details[open] summary::after{ content:"–"; }
.faq__odp{ padding:0 0 1.35rem; max-width:44rem; color:var(--tekst-2); font-size:var(--t-maly); }
.sekcja--ciemna .faq__odp{ color:var(--tekst-2c); }


/* ============================================================================
   18 · DROBIAZGI
   ========================================================================== */
/* nota robocza — kasować przy wyjściu na produkcję */
.robocza{
  padding:1rem var(--brzeg); text-align:center;
  font-size:var(--t-drobny); color:var(--tekst-3c);
  background:var(--ciemny-0); border-top:1px solid var(--linia-c1);
}

/* tylko dla czytników ekranu */
.tylko-czytnik{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
/* przeskocz do treści */
.przeskocz{
  position:absolute; left:-9999px; z-index:100;
  padding:.7rem 1.1rem; background:var(--tekst-1); color:#fff; border-radius:8px;
}
.przeskocz:focus{ left:var(--brzeg); top:.5rem; }

/* szanujemy ustawienie „ogranicz ruch" */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important;
     transition-duration:.001ms !important; }
  .przelot{ background:none; color:var(--tekst-1); -webkit-text-fill-color:var(--tekst-1); }
  .sekcja--ciemna .przelot{ color:var(--tekst-1c); -webkit-text-fill-color:var(--tekst-1c); }
}

/* druk */
@media print{
  .gorny,.pasek-mobilny,.menu-mobilne,.mgla,.siatka{ display:none !important; }
  .sekcja{ padding-block:1.5rem; background:#fff !important; color:#000 !important; }
  h1{ -webkit-text-fill-color:#000; color:#000; filter:none; }
}


/* ============================================================================
   19 · PODSTRONY — dopisane przy budowie /rys, /puchacz, /zubr, /cennik,
   /kontakt, /akademia, /artykuly, /zasoby, /404.
   Blok dopisany na KOŃCU arkusza świadomie: kilka reguł niżej nadpisuje
   ustawienia z bloku 02 (tło sekcji bohaterskiej) i musi być po nich.
   Żadna podstrona nie ma własnego <style> ani drugiego arkusza.
   ========================================================================== */

/* --- 19.1 · sekcja bohaterska w barwie modułu ---------------------------
   Używać RAZEM z .sekcja--ciemna, bo stamtąd biorą się kolory tekstu:
   <section class="sekcja sekcja--ciemna sekcja--barwa barwa--rys">        */
.barwa--rys    { --znak-rgb:var(--rys-rgb);     --znak:var(--rys);     --znak-tlo:var(--rys-tlo); }
.barwa--sroka    { --znak-rgb:var(--sroka-rgb);     --znak:var(--sroka);     --znak-tlo:var(--sroka-tlo); }
.barwa--borsuk    { --znak-rgb:var(--borsuk-rgb);     --znak:var(--borsuk);     --znak-tlo:var(--borsuk-tlo); }
.barwa--kozica    { --znak-rgb:var(--kozica-rgb);     --znak:var(--kozica);     --znak-tlo:var(--kozica-tlo); }
.barwa--slowik    { --znak-rgb:var(--slowik-rgb);     --znak:var(--slowik);     --znak-tlo:var(--slowik-tlo); }
.barwa--lis    { --znak-rgb:var(--lis-rgb);     --znak:var(--lis);     --znak-tlo:var(--lis-tlo); }
.barwa--puchacz{ --znak-rgb:var(--puchacz-rgb); --znak:var(--puchacz); --znak-tlo:var(--puchacz-tlo); }
.barwa--zubr   { --znak-rgb:var(--zubr-rgb);    --znak:var(--zubr);    --znak-tlo:var(--zubr-tlo); }
/* Trzy narzedzia dodane 2026-08-10. Brak tych trzech linii sprawial, ze `.sekcja--barwa`
   nie mialo skad wziac tla ani poswiaty: sekcja zostawala jasna, a tekst — pisany pod
   ciemne tlo — robil sie bialy na bialym. Hero bylo nieczytelne na wszystkich trzech. */
.barwa--sokol    { --znak-rgb:var(--sokol-rgb);     --znak:var(--sokol);     --znak-tlo:var(--sokol-tlo); }
.barwa--bobr     { --znak-rgb:var(--bobr-rgb);      --znak:var(--bobr);      --znak-tlo:var(--bobr-tlo); }
.barwa--zimorodek{ --znak-rgb:var(--zimorodek-rgb); --znak:var(--zimorodek); --znak-tlo:var(--zimorodek-tlo); }

.sekcja--barwa{
  background-color:var(--znak-tlo);
  background-image:
    radial-gradient(120% 110% at 50% 0%, rgba(var(--znak-rgb),.20), rgba(var(--znak-rgb),0) 58%),
    linear-gradient(180deg, var(--znak-tlo) 0%, var(--ciemny-1) 100%);
}
.sekcja--barwa .nadtytul{ color:var(--znak); }
.sekcja--barwa .nadtytul::before{ background:var(--znak); }
.sekcja--barwa .link{ color:var(--znak); border-bottom-color:rgba(var(--znak-rgb),.55); }

/* kafel z ikoną zwierzęcia w sekcji bohaterskiej — tło sekcji jest już w barwie
   modułu, więc kafel musi być ciemniejszy od niej, nie taki sam */
.kafel-modul{
  width:76px; height:76px; border-radius:var(--promien-kafel);
  background:rgba(0,0,0,.42); border:1px solid rgba(var(--znak-rgb),.38);
  display:grid; place-items:center; flex:none; margin-bottom:1.5rem;
  box-shadow:0 14px 34px -14px rgba(var(--znak-rgb),.65),
             inset 0 1px 0 rgba(255,255,255,.09);
}
.kafel-modul svg{ width:48px; height:48px; display:block; }

/* pasek nawigacji między modułami, na dole podstrony */
.sasiedzi{ display:grid; gap:1rem; grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:720px){ .sasiedzi{ grid-template-columns:1fr; } }
.sasiad{
  display:block; text-decoration:none; color:inherit;
  padding:1.2rem 1.4rem; border-radius:var(--promien);
  background:var(--jasny-0); border:1px solid var(--linia-2); box-shadow:var(--drabina-m);
}
.sasiad:hover{ box-shadow:var(--drabina); }
.sasiad__nad{ font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.08em;
              text-transform:uppercase; color:var(--tekst-3); margin:0 0 .35rem; }
.sasiad__nazwa{ font-family:var(--kroj-tytul); font-size:1.25rem; margin:0 0 .3rem; }
.sasiad p{ font-size:var(--t-maly); color:var(--tekst-2); margin:0; }


/* --- 19.2 · cennik: czwarty poziom i kwoty ----------------------------- */
.cennik.cennik--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
@media (max-width:1100px){ .cennik.cennik--4{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:700px) { .cennik.cennik--4{ grid-template-columns:1fr; } }

.poziom--filar{ --znak-rgb:var(--atrament); }
.poziom__cena{
  font-size:1.9rem; font-weight:600; letter-spacing:-.03em; line-height:1.1;
  font-variant-numeric:tabular-nums lining-nums; color:var(--tekst-1);
  margin:0 0 .15rem;
}
.poziom__cena span{ font-size:.9rem; font-weight:500; color:var(--tekst-3); letter-spacing:-.01em; }
.poziom__widelki--kwota{ font-size:.75rem; }

/* wstążka „propozycja" — kwoty czekają na zatwierdzenie */
.propozycja{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.08em;
  text-transform:uppercase; padding:.3rem .65rem; border-radius:6px;
  background:rgba(179,38,30,.10); color:var(--alarm-tekst);
  border:1px solid rgba(179,38,30,.24);
}
.sekcja--ciemna .propozycja{ background:rgba(255,107,120,.14); color:var(--alarm);
                             border-color:rgba(255,107,120,.28); }


/* --- 19.3 · akademia: rozdziały i lekcje -------------------------------- */
.rozdzial{ margin-top:3rem; }
.rozdzial:first-of-type{ margin-top:0; }
.rozdzial__glowa{ display:flex; flex-wrap:wrap; align-items:baseline; gap:.4rem .9rem;
                  padding-bottom:.75rem; border-bottom:1px solid var(--linia-3); }
.rozdzial__glowa h2{ margin:0; font-size:var(--t-h3); }
.rozdzial__nr{ font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.09em;
               text-transform:uppercase; color:var(--tekst-3); }
.rozdzial__wstep{ font-size:var(--t-maly); color:var(--tekst-2); margin:.9rem 0 0; }

.lekcje{ list-style:none; margin:.5rem 0 0; padding:0; }
.lekcja{
  display:grid; grid-template-columns:2.4rem minmax(0,1fr) auto; gap:.25rem 1rem;
  align-items:start; padding:1rem 0; border-bottom:1px solid var(--linia-1);
}
.lekcja__nr{ font-family:var(--kroj-mono); font-size:.75rem; color:var(--tekst-3);
             padding-top:.2rem; font-variant-numeric:tabular-nums; }
.lekcja__tytul{ font-weight:640; letter-spacing:-.008em; }
.lekcja__opis{ grid-column:2; margin:0; font-size:var(--t-maly); color:var(--tekst-2); }
.wkrotce{
  font-family:var(--kroj-mono); font-size:.625rem; letter-spacing:.09em;
  text-transform:uppercase; white-space:nowrap; flex:none;
  padding:.24rem .5rem; border-radius:6px;
  background:var(--jasny-5); color:var(--tekst-3); border:1px solid var(--linia-2);
}
@media (max-width:600px){
  .lekcja{ grid-template-columns:2.2rem minmax(0,1fr); }
  .lekcja .wkrotce{ grid-column:2; justify-self:start; margin-top:.5rem; }
}


/* --- 19.4 · lista artykułów -------------------------------------------- */
.wpisy{ display:grid; gap:1.1rem; }
.wpis{
  display:block; text-decoration:none; color:inherit;
  padding:1.4rem 1.55rem; border-radius:var(--promien);
  background:var(--jasny-0); border:1px solid var(--linia-2); box-shadow:var(--drabina-m);
}
.wpis:hover{ box-shadow:var(--drabina); }
.wpis h3{ margin:0 0 .5rem; }
.wpis p{ margin:0; font-size:var(--t-maly); color:var(--tekst-2); }
.wpis__meta{
  display:flex; flex-wrap:wrap; align-items:center; gap:.45rem .9rem; margin-bottom:.6rem;
  font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.06em; color:var(--tekst-3);
}
/* wpis, którego jeszcze nie ma — przerywana ramka i brak cienia,
   żeby na pierwszy rzut oka było widać, że to plan, a nie treść */
.wpis--plan{ background:var(--jasny-2); border-style:dashed; box-shadow:none; }
.wpis--plan:hover{ box-shadow:none; }


/* --- 19.5 · artykuł: spis treści i przypisy ---------------------------- */
.spis{
  padding:1.15rem 1.4rem; border-radius:var(--promien-m);
  background:var(--jasny-3); border:1px solid var(--linia-2); font-size:var(--t-maly);
}
.spis p{ margin:0 0 .5rem; font-weight:640; }
.spis ol{ margin:0; padding-left:1.25rem; color:var(--tekst-2); }
.spis li{ margin-bottom:.3rem; }
.spis a{ color:var(--puchacz-tekst); }
.przypisy{ font-size:var(--t-drobny); color:var(--tekst-3); }
.przypisy li{ margin-bottom:.45rem; }
.przypisy a{ color:var(--puchacz-tekst); overflow-wrap:anywhere; }


/* --- 19.6 · zasoby: materiał w przygotowaniu ---------------------------- */
.zasoby{ display:grid; gap:1.25rem; grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:820px){ .zasoby{ grid-template-columns:1fr; } }
.zasob{ display:flex; flex-direction:column; }
.zasob__stan{ margin-top:auto; padding-top:1.1rem; border-top:1px solid var(--linia-2);
              font-family:var(--kroj-mono); font-size:.6875rem; letter-spacing:.06em;
              color:var(--tekst-3); }


/* --- 19.7 · strona 404 -------------------------------------------------- */
.pusto{ min-height:min(62vh,520px); display:grid; align-content:center; }
.pusto .kod-bledu{
  font-family:var(--kroj-mono); font-size:clamp(3rem,1.5rem + 6vw,5rem);
  font-weight:700; line-height:1; letter-spacing:-.04em; color:var(--znak,var(--rys));
  margin:0 0 1rem;
}


/* --- 19.8 · poprawki po pierwszym przeglądzie podstron -----------------
   Znalezione na zrzutach z 1440 px, opisane, żeby nie wróciły.             */

/* (a) Wykres w czasie stał pierwotnie wyłącznie na ciemnym tle, więc jego
   podpisy brały kolory z palety „na ciemnym". Na podstronie Rysia leży
   na jasnej sekcji i etykiety były prawie niewidoczne. */
.sekcja--jasna  .wykres__opis, .sekcja--jasna2 .wykres__opis,
.sekcja--jasna3 .wykres__opis, .sekcja--hero   .wykres__opis{ color:var(--tekst-3); }
.sekcja--jasna  .wykres__wartosc, .sekcja--jasna2 .wykres__wartosc,
.sekcja--jasna3 .wykres__wartosc, .sekcja--hero   .wykres__wartosc{ color:var(--tekst-2); }

/* (b) DWIE OSIE TEKSTU, NIE TRZY. Blok 02 wprowadza .tekst o szerokości 41rem,
   blok 04 dawał .artykul 44rem — nagłówek w .tekst i akapity w .artykul
   startowały wtedy 1,5rem od siebie i widać to było jako uskok lewej krawędzi.
   Obie klasy stoją teraz na tej samej osi.
   2026-08-09: obie poszerzone razem (41→50rem) przy zejściu na szerszy układ. */
.artykul{ max-width:var(--kregoslup); margin-inline:auto; }

/* (c) Terminal na telefonie: przy 500 px linia
   `$ curl -A "PerplexityBot" https://... → 403` gubiła za krawędzią właśnie ten
   kod odpowiedzi, czyli jedyną rzecz, dla której ten blok w ogóle istnieje.
   Mniejszy krój i węższy margines mieszczą całą linię bez przewijania. */
@media (max-width:560px){
  .terminal__ciało{ padding:.75rem .8rem; }
  .terminal pre{ font-size:.625rem; line-height:1.9; }
}


/* ╔══ CZĘŚĆ B — SCHEMAT ═════════════════════════════════════════════════╗ */

/* ── POPRAWKA UKŁADU SIATEK ──────────────────────────────────────────────────
   Element siatki ma domyślnie `min-width:auto`, czyli NIE SKURCZY SIĘ poniżej
   szerokości swojej treści. Przy jednej kolumnie (`1fr` bez `minmax`) wystarczy
   jedno długie słowo albo `<code>` z adresem, żeby kolumna rozepchnęła sekcję
   poza ekran telefonu — mierzone: 390 px treści w kontenerze 339 px.
   `overflow-x:hidden` na `html` to tylko zamiata: treść zostaje ucięta.

   Zerowanie `min-width` na dzieciach siatki załatwia to raz, dla wszystkich
   rzędów, zamiast łatać każdy wariant `--2 / --3 / --4 / --tekst-obok` osobno.
   Długie słowa dostają jeszcze `overflow-wrap`, żeby łamały się zamiast wystawać. */
.rzad > *, .siatka4 > *, .karty > *, .opinie > *{ min-width:0; }
.rzad > * > *{ max-width:100%; }
@media (max-width:620px){
  .zawartosc :is(p, li, h1, h2, h3, h4, dd, dt, figcaption){ overflow-wrap:anywhere; }
}


/* ============================================================================
   OSTOIA — ARKUSZ SCHEMATU (nakładka na styl.css)
   ----------------------------------------------------------------------------
   Ten plik NIE zastępuje `styl.css`. Dokłada do niego komponenty schematu
   przeniesionego z viam.com.pl: ekran wstępny, przyklejony nagłówek z mega-menu,
   hero z falą, karty modułów, koło jedenastu rewirów, pomiary z filtrami,
   wyniki na zakładkach, rekomendacje, kalendarz, pas gwarancji, stopkę z falą.

   KOLEJNOŚĆ WCZYTANIA MA ZNACZENIE:
       <link rel="stylesheet" href="styl.css">        ← system (barwy, typografia, sekcje)
       <link rel="stylesheet" href="styl-wzor.css">   ← ten plik (nadpisuje nagłówek i stopkę)

   Zmienne powtórzone tu z `styl.css` są IDENTYCZNE co do wartości — stoją,
   żeby arkusz dawał się obejrzeć samodzielnie. Jedyna nowa to `--wiazka-pozioma`.
   ========================================================================== */

/* ============================================================================
   00 · ZMIENNE — przeniesione 1:1 z ostoia-strona-robocza/styl.css
   ========================================================================== */


/* ============================================================================
   02 · EKRAN WSTĘPNY  (schemat viam: #pre — dwie płyty rozjeżdżające się w boki)
      U Ostoi zamiast złotej kreski idzie wiązka trójki i pasek postępu.
   ========================================================================== */
#pre{ position:fixed; inset:0; z-index:300; pointer-events:none; }
#pre .plyta{
  position:absolute; left:0; right:0; height:50.5%;
  background:var(--ciemny-0);
  transition:transform .85s cubic-bezier(.76,0,.24,1);
}
#pre .plyta.gora{ top:0; }
#pre .plyta.dol{ bottom:0; }
#pre .tresc{
  position:absolute; inset:0; display:grid; place-content:center; justify-items:center;
  gap:.9rem; transition:opacity .35s ease;
}
#pre .znak{ width:54px; height:54px; color:var(--jasny-0); }
#pre .kreska{ width:0; height:2px; background:var(--wiazka-pozioma); animation:preKreska 1s .15s both ease-out; }
@keyframes preKreska{ to{ width:160px; } }
#pre .podpis{
  font-size:var(--t-etykieta); letter-spacing:.16em; text-transform:uppercase;
  color:var(--tekst-3c);
}
#pre .pasek{ width:160px; height:2px; background:var(--linia-c2); overflow:hidden; border-radius:2px; }
#pre .pasek i{ display:block; height:100%; width:30%; background:var(--puchacz); animation:preBieg 1.1s infinite ease-in-out; }
@keyframes preBieg{ 0%{ transform:translateX(-110%); } 100%{ transform:translateX(360%); } }
#pre.odplyw .plyta.gora{ transform:translateY(-101%); }
#pre.odplyw .plyta.dol{ transform:translateY(101%); }
#pre.odplyw .tresc{ opacity:0; }
#pre.poza{ display:none; }

/* ============================================================================
   03 · NAGŁÓWEK PRZYKLEJONY + MEGA-MENU + MENU TELEFONU
      (schemat viam: .nav / #mega / #mnav)
   ========================================================================== */
.gorny{
  position:fixed; inset:0 0 auto; z-index:120; height:var(--gorny-h);
  display:flex; align-items:center;
  background:rgba(11,9,16,0);
  border-bottom:1px solid rgba(255,255,255,0);
  transition:background .3s ease, border-color .3s ease, backdrop-filter .3s ease;
}
.gorny.osiadl{
  background:rgba(11,9,16,.86);
  border-bottom-color:var(--linia-c1);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
}
.gorny__rzad{
  width:100%; max-width:var(--zawartosc); margin-inline:auto; padding-inline:var(--brzeg);
  display:flex; align-items:center; gap:1.5rem;
}
.marka{ display:flex; align-items:center; gap:.6rem; color:var(--tekst-1c); flex:0 0 auto; }
.marka__znak{ width:28px; height:28px; display:block; }
.marka__znak svg{ width:100%; height:100%; }
.marka__nazwa{ font-size:1.0625rem; font-weight:700; letter-spacing:-.01em; }
.nawigacja{ display:flex; align-items:center; gap:.2rem; margin-left:auto; }
.nawigacja>a, .nawigacja>button{
  padding:.5rem .7rem; font-size:var(--t-maly); color:var(--tekst-2c);
  background:none; border:0; cursor:pointer; border-radius:var(--promien-m);
  transition:color .2s ease, background .2s ease;
}
.nawigacja>a:hover, .nawigacja>button:hover{ color:var(--tekst-1c); background:var(--linia-c1); }
.nawigacja .strzalka{ font-size:.7em; opacity:.7; margin-left:.25rem; }
.gorny__cta{ display:flex; align-items:center; gap:.6rem; flex:0 0 auto; }
.menu-przycisk{
  display:none; width:40px; height:36px; border:1px solid var(--linia-c2);
  background:none; border-radius:var(--promien-m); cursor:pointer;
  padding:9px 9px; flex-direction:column; justify-content:space-between;
}
.menu-przycisk span{ display:block; height:2px; background:var(--tekst-1c); border-radius:2px; }

#mega{
  position:fixed; top:var(--gorny-h); left:0; right:0; z-index:119;
  opacity:0; visibility:hidden; transform:translateY(-10px);
  transition:opacity .25s ease, transform .25s ease, visibility .25s;
}
#mega.wlaczone{ opacity:1; visibility:visible; transform:none; }
#mega .ramka{
  width:100%; max-width:var(--zawartosc); margin-inline:auto;
  margin-top:.5rem;
  background:var(--ciemny-2); border:1px solid var(--linia-c1);
  border-radius:var(--promien); box-shadow:var(--drabina-c);
  display:grid; grid-template-columns:.85fr 1.6fr; gap:1.6rem; padding:1.6rem;
}
#mega-tlo{
  position:fixed; inset:0; z-index:118; background:rgba(11,9,16,.5);
  opacity:0; visibility:hidden; transition:opacity .25s ease, visibility .25s;
}
#mega-tlo.wlaczone{ opacity:1; visibility:visible; }
#mega .wstep h3{ font-size:var(--t-h3); color:var(--tekst-1c); margin:0 0 .6rem; line-height:1.25; }
#mega .wstep h3 em{ font-style:normal; color:var(--rys); }
#mega .wstep p{ font-size:var(--t-maly); color:var(--tekst-3c); margin:0 0 1rem; }
#mega .pilne{
  display:inline-flex; align-items:center; gap:.5rem; margin-top:1rem;
  font-size:var(--t-drobny); color:var(--tekst-3c);
}
#mega .pilne .kropka{
  width:7px; height:7px; border-radius:50%; background:var(--zubr);
  box-shadow:0 0 0 4px rgba(var(--zubr-rgb),.18);
}
#mega .grupa-tytul{
  font-size:var(--t-etykieta); letter-spacing:.14em; text-transform:uppercase;
  color:var(--tekst-3c); margin:0 0 .6rem;
}
#mega .lista{ display:grid; grid-template-columns:1fr 1fr; gap:.3rem; }
#mega .pozycja{
  display:block; padding:.55rem .7rem; border-radius:var(--promien-m);
  border-left:2px solid var(--modul, var(--linia-c2));
  transition:background .18s ease;
}
#mega .pozycja:hover{ background:var(--linia-c1); }
#mega .pozycja b{ display:block; font-size:var(--t-maly); color:var(--tekst-1c); font-weight:600; }
#mega .pozycja span{ display:block; font-size:var(--t-drobny); color:var(--tekst-3c); }
#mega .reszta{
  grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:.2rem 1rem;
  padding-top:1rem; margin-top:.4rem; border-top:1px solid var(--linia-c1);
}
#mega .reszta a{ font-size:var(--t-drobny); color:var(--tekst-3c); }
#mega .reszta a:hover{ color:var(--tekst-1c); }

#mnav{
  position:fixed; inset:0; z-index:130; background:var(--ciemny-0);
  padding:calc(var(--gorny-h) + 1rem) var(--brzeg) 2rem;
  overflow-y:auto; transform:translateX(100%);
  transition:transform .3s cubic-bezier(.76,0,.24,1);
}
#mnav.wlaczone{ transform:none; }
#mnav a{ display:block; padding:.7rem 0; color:var(--tekst-1c); border-bottom:1px solid var(--linia-c1); }
#mnav .grupa{
  display:block; margin:1.4rem 0 .4rem; font-size:var(--t-etykieta);
  letter-spacing:.14em; text-transform:uppercase; color:var(--tekst-3c);
}
#mnav .zamknij{
  position:absolute; top:1rem; right:var(--brzeg); width:40px; height:40px;
  border:1px solid var(--linia-c2); background:none; color:var(--tekst-1c);
  border-radius:var(--promien-m); cursor:pointer; font-size:1.1rem;
}
#mnav .telefon{
  margin-top:1.4rem; border:0; text-align:center; background:var(--linia-c1);
  border-radius:var(--promien-m); font-weight:600;
}

/* ============================================================================
   04 · SEKCJE — baza JASNA, ciemne jako przerywnik (zasada 1 Ostoi)
   ========================================================================== */
.sekcja{ position:relative; padding-block:var(--sekcja-y); overflow:hidden; }
.sekcja--jasna{  background:var(--jasny-0); }
.sekcja--jasna2{ background:var(--jasny-2); }
.sekcja--ciemna{
  background:var(--ciemny-1); color:var(--tekst-1c);
  --linia-1:var(--linia-c1); --linia-2:var(--linia-c2); --linia-3:var(--linia-c3);
}
:is(.sekcja--ciemna,.hero,.pas,.stopka) :is(h2,h3,h4){ color:var(--tekst-1c); }
:is(.sekcja--ciemna,.hero,.pas,.stopka) p{ color:var(--tekst-2c); }
.zawartosc{ position:relative; z-index:2; width:100%; max-width:var(--zawartosc); margin-inline:auto; padding-inline:var(--brzeg); }
.tekst{ max-width:var(--kregoslup); margin-inline:auto; }

/* mgła — poświata w barwach trójki, gaszona do alfy 00 (zasada 4) */
.mgla{ position:absolute; inset:0; pointer-events:none; z-index:1; }
.mgla--trojka::before, .mgla--trojka::after{
  content:""; position:absolute; width:52vw; height:52vw; border-radius:50%;
  filter:blur(80px); opacity:.5;
}
.mgla--trojka::before{
  top:-18vw; left:-12vw;
  background:radial-gradient(circle, rgba(var(--rys-rgb),.22), rgba(var(--rys-rgb),0) 70%);
}
.mgla--trojka::after{
  bottom:-22vw; right:-14vw;
  background:radial-gradient(circle, rgba(var(--puchacz-rgb),.20), rgba(var(--puchacz-rgb),0) 70%);
}
.siatka{
  position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.5;
  background-image:
    linear-gradient(to right, var(--linia-c1) 1px, rgba(255,255,255,0) 1px),
    linear-gradient(to bottom, var(--linia-c1) 1px, rgba(255,255,255,0) 1px);
  background-size:72px 72px;
  mask-image:radial-gradient(ellipse 80% 60% at 50% 40%, #000, rgba(0,0,0,0) 75%);
  -webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 40%, #000, rgba(0,0,0,0) 75%);
}

/* ============================================================================
   05 · TYPOGRAFIA
   ========================================================================== */
h1,h2,h3,h4{ font-family:var(--kroj-tytul); font-weight:700; letter-spacing:-.022em; margin:0 0 .8rem; }
h1{ font-size:var(--t-h1); line-height:1.06; letter-spacing:-.032em; }
h2{ font-size:var(--t-h2); line-height:1.14; }
h3{ font-size:var(--t-h3); line-height:1.2; }
h4{ font-size:var(--t-h4); line-height:1.35; }
p{ margin:0 0 1rem; color:var(--tekst-2); }
.lead{ font-size:var(--t-lead); color:var(--tekst-2); line-height:1.52; }
:is(.sekcja--ciemna,.hero,.pas) .lead{ color:var(--tekst-2c); }
.nadtytul{
  font-size:var(--t-etykieta); letter-spacing:.14em; text-transform:uppercase;
  font-weight:600; color:var(--tekst-3); margin:0 0 .9rem;
}
:is(.sekcja--ciemna,.hero,.pas) .nadtytul{ color:var(--tekst-3c); }
.nadtytul--rys{ color:var(--rys-tekst); }
:is(.sekcja--ciemna,.hero,.pas) .nadtytul--rys{ color:var(--rys); }
.nadtytul--puchacz{ color:var(--puchacz-tekst); }
:is(.sekcja--ciemna,.hero,.pas) .nadtytul--puchacz{ color:var(--puchacz); }
.nadtytul--zubr{ color:var(--zubr-tekst); }
:is(.sekcja--ciemna,.hero,.pas) .nadtytul--zubr{ color:var(--zubr); }
.drobne{ font-size:var(--t-drobny); color:var(--tekst-3); }
:is(.sekcja--ciemna,.hero,.pas,.stopka) .drobne{ color:var(--tekst-3c); }
.srodek{ text-align:center; }
.odstep-s{ height:1rem; } .odstep-m{ height:2rem; } .odstep-l{ height:3.4rem; }

/* nagłówek sekcji — zamiennik viamowej „gold-line”: wiązka trójki poziomo */
.naglowek{ max-width:var(--kregoslup); margin:0 auto clamp(2.4rem,5vw,3.6rem); text-align:center; }
.naglowek p{ color:var(--tekst-3); }
:is(.sekcja--ciemna,.hero,.pas) .naglowek p{ color:var(--tekst-3c); }
.wiazka-linia{ width:120px; height:2px; margin:1.1rem auto 1.4rem; background:var(--wiazka-pozioma); border-radius:2px; }
.etykieta-sekcji{
  display:inline-block; margin-bottom:.9rem; padding:.3rem .7rem;
  font-size:var(--t-etykieta); letter-spacing:.14em; text-transform:uppercase;
  border:1px solid var(--linia-3); border-radius:999px; color:var(--tekst-3);
}
:is(.sekcja--ciemna,.hero,.pas) .etykieta-sekcji{ color:var(--tekst-3c); border-color:var(--linia-c2); }

/* ============================================================================
   06 · PRZYCISKI
   ========================================================================== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  padding:.85rem 1.4rem; border-radius:999px; border:1px solid transparent;
  font-size:var(--t-maly); font-weight:600; cursor:pointer; text-align:center;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease;
}
.btn svg{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.9; }
.btn--glowny{
  background:var(--tekst-1); color:var(--jasny-0);
  box-shadow:var(--drabina-m);
}
.btn--glowny:hover{ transform:translateY(-1px); box-shadow:var(--drabina); }
:is(.sekcja--ciemna,.hero,.pas) .btn--glowny{ background:var(--jasny-0); color:var(--tekst-1); }
.btn--obrys{ border-color:var(--linia-4); color:var(--tekst-1); }
.btn--obrys:hover{ border-color:var(--tekst-1); background:rgba(var(--atrament),.04); }
:is(.sekcja--ciemna,.hero,.pas,.gorny,.pasek-mobilny) .btn--obrys{ border-color:var(--linia-c3); color:var(--tekst-1c); }
:is(.sekcja--ciemna,.hero,.pas,.gorny,.pasek-mobilny) .btn--obrys:hover{ background:var(--linia-c1); border-color:var(--tekst-1c); }
.btn--maly{ padding:.55rem 1rem; font-size:var(--t-drobny); }
.pod-przyciskiem{ margin-top:.9rem; font-size:var(--t-drobny); color:var(--tekst-3); }
:is(.sekcja--ciemna,.hero,.pas) .pod-przyciskiem{ color:var(--tekst-3c); }

/* ============================================================================
   07 · UJAWNIANIE PRZY PRZEWIJANIU (schemat viam: .anim / .anim-1..5)
   ========================================================================== */
/* UJAWNIANIE PRZY PRZEWIJANIU — z bezpiecznikiem.
   ----------------------------------------------------------------------------
   Treść jest ukrywana WYŁĄCZNIE wtedy, gdy JavaScript działa (`html.js`, klasa
   dokładana w <head>, zanim cokolwiek się narysuje). Bez JavaScriptu — i bez
   `IntersectionObserver` — wszystko jest po prostu widoczne.

   Dlaczego to nie jest przesada: obserwator nie odpala się w karcie, która nie
   jest malowana. Strona otwarta w tle, podgląd, zrzut miniatury, czytnik treści
   — w każdym z tych przypadków `widac` nigdy by nie przyszło, a strona ukryta
   przez CSS zostałaby PUSTA. Ukrywanie czegoś, czego nie ma czym odsłonić,
   to nie animacja, tylko awaria. */
.js .ruch{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s cubic-bezier(.22,1,.36,1); }
.js .ruch.widac{ opacity:1; transform:none; }
.ruch-1{ transition-delay:.08s; } .ruch-2{ transition-delay:.16s; }
.ruch-3{ transition-delay:.24s; } .ruch-4{ transition-delay:.32s; } .ruch-5{ transition-delay:.4s; }
@media (prefers-reduced-motion: reduce){
  .js .ruch{ opacity:1; transform:none; transition:none; }
  #pre{ display:none; }
}

/* ============================================================================
   08 · HERO — pełny ekran, żywe tło (fala), jak w viam
   ========================================================================== */
.hero{
  min-height:100svh; display:flex; align-items:flex-end;
  padding-block:calc(var(--gorny-h) + 4rem) clamp(3.5rem,8vh,6rem);
  background:var(--ciemny-0); color:var(--tekst-1c);
  --linia-1:var(--linia-c1); --linia-2:var(--linia-c2); --linia-3:var(--linia-c3);
}
.hero__tlo{ position:absolute; inset:0; z-index:0; background:
  radial-gradient(ellipse 120% 90% at 50% 100%, rgba(var(--rys-rgb),.16), rgba(var(--rys-rgb),0) 60%),
  radial-gradient(ellipse 90% 70% at 15% 20%, rgba(var(--puchacz-rgb),.18), rgba(var(--puchacz-rgb),0) 65%),
  radial-gradient(ellipse 90% 70% at 85% 30%, rgba(var(--zubr-rgb),.12), rgba(var(--zubr-rgb),0) 65%),
  var(--ciemny-0);
}
.hero__tlo canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.hero__tlo::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,9,16,.55), rgba(11,9,16,.1) 38%, rgba(11,9,16,.86));
}
.hero .zawartosc{ z-index:3; }
/* System maluje H1 gradientem atramentu z `-webkit-text-fill-color:transparent`
   — na jasnym tle to zamierzone, na ciemnym daje nagłówek-niewidzialkę.
   Na ciemnych sekcjach zdejmujemy więc i gradient, i przezroczyste wypełnienie. */
:is(.hero,.sekcja--ciemna,.pas) h1{
  background:none; -webkit-text-fill-color:currentColor; color:var(--tekst-1c);
}
.hero h1{ max-width:22ch; }
.hero h1 .akcent{
  background:linear-gradient(100deg, var(--rys), var(--puchacz) 58%, var(--zubr));
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
}
/* System wyśrodkowuje prozę w kręgosłupie (`.zawartosc > .lead` i siostrzane).
   W hero tekst stoi przy LEWEJ krawędzi razem z nagłówkiem, więc zdejmujemy
   automatyczny margines — inaczej akapit odjeżdża w prawo spod H1. */
.hero .zawartosc > *{ margin-inline:0; }

/* ── HERO PODSTRONY ──────────────────────────────────────────────────────────
   Na stronie głównej hero zajmuje cały ekran, bo ma jedno zadanie: zatrzymać.
   Na podstronie zadaniem jest wprowadzić — więc jest niższe, a pod spodem od
   razu widać początek treści. Fala zostaje, bo to ten sam serwis. */
.hero--podstrona{
  min-height:auto; align-items:flex-start;
  padding-block:calc(var(--gorny-h) + clamp(3rem,7vw,5.5rem)) clamp(3rem,6vw,5rem);
}
.hero--podstrona h1{ max-width:24ch; }
.hero--podstrona .lead{ max-width:62ch; }
/* barwa modułu wchodzi tylko tam, gdzie strona jest o tym module (zasada 2) */
.hero--barwa .hero__tlo{
  background:
    radial-gradient(ellipse 110% 85% at 12% 0%,  rgba(var(--modul-rgb),.22), rgba(var(--modul-rgb),0) 62%),
    radial-gradient(ellipse 90% 70% at 88% 100%, rgba(var(--modul-rgb),.13), rgba(var(--modul-rgb),0) 62%),
    var(--ciemny-0);
}
.hero--barwa .nadtytul{ color:var(--modul); }
.hero--podstrona .kafel-modul{
  display:inline-grid; place-items:center; width:62px; height:62px; margin-bottom:1.2rem;
  border-radius:var(--promien-kafel); background:var(--ciemny-3);
  border:1px solid rgba(var(--modul-rgb),.34); box-shadow:var(--drabina-c);
}
.hero--podstrona .kafel-modul svg{ width:38px; height:38px; }
/* ostatnia sekcja treści nie może kleić się do pasa gwarancji */
.hero--podstrona + .sekcja{ padding-top:clamp(3.5rem,6vw,6rem); }

.hero .lead{ max-width:60ch; color:var(--tekst-2c); }
.hero__cta{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.6rem; }
.hero__dol{
  display:flex; flex-wrap:wrap; gap:1.6rem 2.4rem; align-items:flex-end;
  margin-top:clamp(2.4rem,6vh,4rem); padding-top:1.6rem; border-top:1px solid var(--linia-c1);
}
.hero__fakt b{ display:block; font-size:1.5rem; font-weight:700; color:var(--tekst-1c); line-height:1.1; }
.hero__fakt span{ display:block; font-size:var(--t-drobny); color:var(--tekst-3c); max-width:22ch; }

/* ============================================================================
   09 · „KIM JESTEŚMY” + SENTENCJA (schemat viam: .dla-kogo / .sentencja)
   ========================================================================== */
.my{ display:grid; place-items:center; gap:1rem; margin-bottom:2.2rem; }
.my__znak{
  width:92px; height:92px; display:grid; place-items:center; border-radius:50%;
  background:var(--jasny-0); box-shadow:var(--pierscien); color:var(--tekst-1);
}
.my__znak svg{ width:46px; height:46px; }
.my__podpis{ font-size:var(--t-maly); color:var(--tekst-3); }
.my__podpis em{ font-style:normal; color:var(--rys-tekst); }
.sentencja{
  margin:2.6rem auto 0; max-width:var(--kregoslup); padding:1.8rem 1.6rem 1.6rem;
  border:1px solid var(--linia-2); border-radius:var(--promien);
  background:var(--jasny-0); box-shadow:var(--drabina-m);
  position:relative; text-align:center;
}
.sentencja::before{
  content:""; position:absolute; left:0; top:14px; bottom:14px; width:3px;
  background:var(--wiazka-trojka); border-radius:3px;
}
.sentencja blockquote{ margin:0 0 .6rem; font-size:var(--t-h3); font-weight:700; letter-spacing:-.02em; }
.sentencja figcaption{ font-size:var(--t-maly); color:var(--tekst-3); }
.sentencja figcaption span{ display:block; font-size:var(--t-drobny); margin-top:.3rem; }
.sentencja__link{
  display:inline-flex; align-items:center; gap:.4rem; margin-top:1rem;
  font-size:var(--t-maly); font-weight:600; color:var(--tekst-1);
  border-bottom:1px solid var(--linia-3); padding-bottom:2px;
}
.sentencja__link svg{ width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:1.9; }

/* ============================================================================
   10 · KARTY MODUŁÓW (schemat viam: .karty-uslugi — zdjęcie + ikona + tagi + CTA)
      U Ostoi w miejscu zdjęcia jest wiązka modułu, bo zdjęć w systemie nie ma.
   ========================================================================== */
.karty{ display:grid; grid-template-columns:repeat(3, 1fr); gap:1.2rem; }
.karta-modul{
  display:flex; flex-direction:column; overflow:hidden;
  border:1px solid var(--linia-2); border-radius:var(--promien-kafel);
  background:var(--ciemny-2); box-shadow:var(--drabina-c);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.karta-modul:hover{ transform:translateY(-3px); border-color:rgba(var(--modul-rgb),.4); }
.karta-modul__gora{
  position:relative; height:116px; overflow:hidden;
  background:
    radial-gradient(ellipse 110% 150% at 20% 120%, rgba(var(--modul-rgb),.5), rgba(var(--modul-rgb),0) 70%),
    radial-gradient(ellipse 90% 120% at 85% -20%, rgba(var(--modul-rgb),.3), rgba(var(--modul-rgb),0) 70%),
    var(--modul-tlo);
}
.karta-modul__gora::after{
  content:""; position:absolute; inset:0;
  background-image:
    linear-gradient(to right, rgba(255,255,255,.05) 1px, rgba(255,255,255,0) 1px),
    linear-gradient(to bottom, rgba(255,255,255,.05) 1px, rgba(255,255,255,0) 1px);
  background-size:26px 26px;
}
.karta-modul__gora canvas{ position:absolute; inset:0; width:100%; height:100%; }
.karta-modul__cialo{ padding:1.3rem 1.3rem 1.4rem; display:flex; flex-direction:column; flex:1; }
.karta-modul__ikona{
  width:52px; height:52px; margin:-3.6rem 0 1rem; display:grid; place-items:center;
  border-radius:var(--promien-m); background:var(--ciemny-2);
  border:1px solid rgba(var(--modul-rgb),.35); color:var(--modul);
  position:relative; z-index:2; box-shadow:var(--drabina-c);
}
/* Glify zwierząt przyszły z podstron modułów: niosą własny `stroke` i `fill`
   w barwie swojego modułu, więc NIE narzucamy im koloru — tylko rozmiar. */
.karta-modul__ikona svg{ width:30px; height:30px; }
.karta-modul h3{ color:var(--tekst-1c); margin-bottom:.5rem; font-size:1.25rem; }
.karta-modul h3 .rola{ color:var(--modul); font-weight:600; }
.karta-modul p{ font-size:var(--t-maly); color:var(--tekst-2c); }
.tagi{ display:flex; flex-wrap:wrap; gap:.35rem; margin:.4rem 0 1.2rem; }
.tagi span{
  font-size:var(--t-drobny); padding:.22rem .55rem; border-radius:999px;
  color:var(--tekst-3c); border:1px solid var(--linia-c2);
}
.karta-modul .btn{ margin-top:auto; align-self:flex-start; }

/* ============================================================================
   11 · OSTOIA PEŁNA — koło jedenastu modułów
      (schemat viam: .vision-pelna z obracającym się kołem i jedną puentą)
   ========================================================================== */
.kolo-uklad{ display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(2rem,5vw,4rem); align-items:center; }
.kolo-obudowa{ position:relative; }
.kolo{ width:100%; height:auto; overflow:visible; }
.kolo .obrecz{ fill:none; stroke:var(--linia-3); stroke-width:1; }
.kolo .obrecz-ruch{
  fill:none; stroke:var(--puchacz); stroke-width:2; stroke-linecap:round;
  stroke-dasharray:60 1060; opacity:.8;
  animation:obrot 16s linear infinite; transform-origin:350px 330px;
}
@keyframes obrot{ to{ transform:rotate(360deg); } }
.kolo .szprycha{ stroke:var(--linia-2); stroke-width:1; }
.kolo .kropka{ stroke:var(--jasny-0); stroke-width:2.5; }
.kolo .etykieta{ font-family:var(--kroj-tekst); font-size:14px; font-weight:600; fill:var(--tekst-1); }
.kolo .rola{ font-family:var(--kroj-tekst); font-size:11.5px; fill:var(--tekst-3); }
.kolo .srodek{ fill:var(--ciemny-0); }
.kolo .srodek-obrys{ fill:none; stroke:var(--linia-3); stroke-width:1; }
.kolo .srodek-t1{ font-family:var(--kroj-tekst); font-size:21px; font-weight:700; fill:var(--jasny-0); text-anchor:middle; letter-spacing:-.5px; }
.kolo .srodek-t2{ font-family:var(--kroj-tekst); font-size:11px; font-weight:600; fill:var(--rys); text-anchor:middle; letter-spacing:1.6px; }
.kolo .gwiazda{ fill:var(--rys); }
.kolo .orbita{ animation:obrot 26s linear infinite; transform-origin:350px 330px; }
.kolo-opis p{ color:var(--tekst-2); }
.kolo-opis .obrot{ font-weight:600; color:var(--tekst-1); }
.kolo-opis .puenta{
  font-size:var(--t-h3); font-weight:700; letter-spacing:-.02em; color:var(--tekst-1);
  margin:1.4rem 0 1.6rem; line-height:1.25;
}

/* ============================================================================
   12 · POMIARY Z FILTRAMI (schemat viam: .filtry + .siatka4 galerii realizacji)
      U Ostoi w kafelkach nie ma grafik — są odpowiedzi serwera.
   ========================================================================== */
.filtry{ display:flex; flex-wrap:wrap; gap:.4rem; justify-content:center; margin-bottom:2rem; }
.filtry button{
  padding:.5rem .95rem; border-radius:999px; border:1px solid var(--linia-c2);
  background:none; color:var(--tekst-3c); font-size:var(--t-maly); cursor:pointer;
  transition:background .18s ease, color .18s ease, border-color .18s ease;
}
.filtry button:hover{ color:var(--tekst-1c); }
.filtry button.on{ background:var(--jasny-0); color:var(--tekst-1); border-color:var(--jasny-0); font-weight:600; }
.siatka4{ display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }
.pomiar{
  margin:0; padding:1rem 1.1rem 1.1rem; border:1px solid var(--linia-c1);
  border-radius:var(--promien); background:var(--ciemny-2);
  font-family:var(--kroj-mono); font-size:var(--t-drobny);
  display:flex; flex-direction:column; gap:.55rem; min-height:170px;
  border-top:2px solid rgba(var(--modul-rgb),.6);
}
.pomiar__adres{ color:var(--tekst-2c); word-break:break-all; line-height:1.45; }
.pomiar__kody{ display:flex; flex-wrap:wrap; gap:.3rem; margin-top:auto; }



.kod--brak{ color:var(--tekst-3c); background:var(--linia-c1); }
.pomiar__stopka{ font-family:var(--kroj-tekst); font-size:var(--t-drobny); color:var(--tekst-3c); }





/* ============================================================================
   13 · WYNIKI NA ZAKŁADKACH (schemat viam: .wyn-taby / .wyn-panele)
   ========================================================================== */
.wyniki{ display:grid; grid-template-columns:250px 1fr; gap:1.4rem; align-items:start; }
.wyn-taby{ display:flex; flex-direction:column; gap:.3rem; }
.wyn-tab{
  display:flex; align-items:center; gap:.7rem; padding:.75rem .85rem; text-align:left;
  border:1px solid rgba(var(--atrament),0); border-radius:var(--promien-m);
  background:none; cursor:pointer; color:var(--tekst-2); font-size:var(--t-maly);
  transition:background .18s ease, border-color .18s ease, color .18s ease;
}
.wyn-tab:hover{ background:var(--jasny-3); }
.wyn-tab.on{ background:var(--jasny-0); border-color:var(--linia-2); color:var(--tekst-1); font-weight:600; box-shadow:var(--drabina-m); }
.wyn-tab .ikona{
  width:32px; height:32px; flex:0 0 auto; display:grid; place-items:center;
  border-radius:var(--promien-m); background:rgba(var(--modul-rgb),.14); color:var(--modul-tekst);
}
.wyn-tab .ikona svg{ width:17px; height:17px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.wyn-panel{ display:none; }
.wyn-panel.on{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr); gap:1.4rem; }
.wyn-glowna{
  padding:1.6rem; border:1px solid var(--linia-2); border-radius:var(--promien);
  background:var(--jasny-0); box-shadow:var(--drabina-m); position:relative; overflow:hidden;
}
.wyn-glowna::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg, rgba(var(--modul-rgb),.95), rgba(var(--modul-rgb),.4) 55%, rgba(var(--modul-rgb),0));
}
.wyn-nad{ display:block; font-size:var(--t-etykieta); letter-spacing:.14em; text-transform:uppercase; color:var(--tekst-3); margin-bottom:.6rem; }
.wyn-licz{ font-size:var(--t-liczba); font-weight:700; line-height:1; letter-spacing:-.035em; color:var(--modul-tekst); }
.wyn-licz small{ font-size:.42em; font-weight:600; color:var(--tekst-3); letter-spacing:0; }
.wyn-jedn{ margin:.6rem 0 0; font-size:var(--t-maly); color:var(--tekst-2); }
.wyn-data{ margin:.8rem 0 0; font-size:var(--t-drobny); color:var(--tekst-3); }
.wyn-prawa p{ font-size:var(--t-maly); }
.wyn-male{ display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; margin-top:1rem; }
.wyn-mini{
  padding:.85rem .9rem; border:1px solid var(--linia-2); border-radius:var(--promien-m); background:var(--jasny-0);
}
.wyn-mini b{ display:block; font-size:1.3rem; font-weight:700; letter-spacing:-.025em; }
.wyn-mini span{ display:block; font-size:var(--t-drobny); color:var(--tekst-3); line-height:1.35; margin-top:.2rem; }

/* ============================================================================
   14 · REKOMENDACJE (schemat viam: .opinie-siatka)
   ========================================================================== */
.opinie{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.1rem; }
.opinia{
  margin:0; padding:1.4rem; border:1px solid var(--linia-c1); border-radius:var(--promien);
  background:var(--ciemny-2); display:flex; flex-direction:column;
}
.gwiazdki{ color:var(--rys); letter-spacing:.14em; font-size:var(--t-maly); margin-bottom:.7rem; }
.opinia p{ font-size:var(--t-maly); color:var(--tekst-2c); flex:1; }
.opinia footer{ font-size:var(--t-drobny); color:var(--tekst-3c); margin-top:.8rem; }
.opinia footer b{ display:block; color:var(--tekst-1c); font-size:var(--t-maly); }

/* ============================================================================
   15 · KALENDARZ ROZMOWY (schemat viam: .kal — godziny po wyborze dnia)
   ========================================================================== */
.kal{
  max-width:620px; margin-inline:auto; padding:1.4rem;
  border:1px solid var(--linia-2); border-radius:var(--promien);
  background:var(--jasny-0); box-shadow:var(--drabina);
}
.kal__gl{ display:flex; justify-content:space-between; align-items:baseline; gap:1rem; margin-bottom:1rem; }
.kal__gl b{ font-size:var(--t-h4); }
.kal__gl span{ font-size:var(--t-drobny); color:var(--tekst-3); }
.kal__tyg, .kal__siatka{ display:grid; grid-template-columns:repeat(7,1fr); gap:.3rem; }
.kal__tyg span{ text-align:center; font-size:var(--t-etykieta); text-transform:uppercase; letter-spacing:.08em; color:var(--tekst-3); padding-bottom:.4rem; }
.kal__siatka span{
  aspect-ratio:1; display:grid; place-items:center; border-radius:var(--promien-m);
  font-size:var(--t-maly); color:var(--tekst-3); border:1px solid rgba(var(--atrament),0);
}
.kal__siatka .minal{ color:rgba(var(--atrament),.22); text-decoration:line-through; }
.kal__siatka .wolny{ cursor:pointer; color:var(--tekst-1); font-weight:600; border-color:var(--linia-2); background:var(--jasny-2); }
.kal__siatka .wolny:hover{ border-color:var(--linia-4); }
.kal__siatka .wolny.wybrany{ background:var(--tekst-1); color:var(--jasny-0); border-color:var(--tekst-1); }
.kal__sloty{ margin-top:1.1rem; padding-top:1.1rem; border-top:1px solid var(--linia-2); display:none; }
.kal__sloty.widac{ display:block; }
.kal__wybrany{ font-size:var(--t-maly); color:var(--tekst-3); margin:0 0 .7rem; }
.kal__wybrany b{ color:var(--tekst-1); }
.kal__godziny{ display:flex; flex-wrap:wrap; gap:.4rem; }
.slot{
  padding:.5rem .9rem; border-radius:999px; border:1px solid var(--linia-3);
  background:var(--jasny-0); cursor:pointer; font-size:var(--t-maly);
}
.slot:hover{ border-color:var(--tekst-1); }
.slot.wybrany{ background:var(--tekst-1); color:var(--jasny-0); border-color:var(--tekst-1); font-weight:600; }
.kal__uwaga{ margin:1rem 0 0; font-size:var(--t-drobny); color:var(--tekst-3); }

/* ============================================================================
   16 · PAS GWARANCJI (schemat viam: .pas-gwarancji — jedno zdanie na akcencie)
      U Ostoi akcentem nie jest złoto, a wiązka trójki na atramencie.
   ========================================================================== */
.pas{
  position:relative; padding-block:clamp(3rem,6vw,4.5rem); overflow:hidden;
  background:var(--ciemny-0); color:var(--tekst-1c); text-align:center;
}
/* Poświaty muszą się MIJAĆ, nie nakładać — bursztyn na zieleni daje oliwkę,
   czyli dokładnie ten brud, od którego cała paleta ucieka. Stąd trzy plamy
   rozstawione po łuku, każda na niskiej alfie, i każda gaszona do alfy 00. */
.pas::before{
  content:""; position:absolute; inset:-20% -10%;
  background:
    radial-gradient(ellipse 34% 90% at 12% 18%,  rgba(var(--rys-rgb),.16),     rgba(var(--rys-rgb),0) 68%),
    radial-gradient(ellipse 38% 95% at 50% -10%, rgba(var(--puchacz-rgb),.14), rgba(var(--puchacz-rgb),0) 68%),
    radial-gradient(ellipse 34% 90% at 88% 22%,  rgba(var(--zubr-rgb),.13),    rgba(var(--zubr-rgb),0) 68%);
  filter:blur(18px);
}
/* cienka wiązka trójki jako szew między pasem a stopką */
.pas::after{
  content:""; position:absolute; inset:auto 0 0; height:1px;
  background:var(--wiazka-pozioma); opacity:.5;
}
.pas .zawartosc{ max-width:var(--kregoslup); }
.pas h2{ color:var(--tekst-1c); }
.pas p{ color:var(--tekst-2c); max-width:60ch; margin-inline:auto; }
.pieczec{
  width:92px; height:92px; margin:0 auto 1.4rem; display:grid; place-content:center;
  justify-items:center; border-radius:50%; border:1px solid var(--linia-c3);
  background:var(--ciemny-2);
}
.pieczec b{ font-size:1.7rem; font-weight:700; line-height:1; color:var(--rys); }
.pieczec span{ font-size:var(--t-etykieta); letter-spacing:.08em; text-transform:uppercase; color:var(--tekst-3c); }

/* ============================================================================
   17 · STOPKA (schemat viam: .ft z falą u dołu)
   ========================================================================== */
.stopka{
  position:relative; overflow:hidden; color:var(--tekst-1c);
  background:var(--ciemny-0);
  padding-top:clamp(3rem,6vw,4.5rem);
}
/* FALA W STOPCE — przez CAŁĄ jej wysokość, nie paskiem u dołu.
   Pasek dawał wrażenie przybrudzonego dołu strony; tafla na całości czyta się
   jako faktura. Gaszona maską ku górze, żeby treść stopki stała na spokojnym
   tle, a ruch był widoczny dopiero pod nią. */
.stopka__fala{
  position:absolute; inset:0; z-index:0; opacity:.42;
  mask-image:linear-gradient(180deg, rgba(0,0,0,0), #000 45%, #000);
  -webkit-mask-image:linear-gradient(180deg, rgba(0,0,0,0), #000 45%, #000);
}
.stopka__fala canvas{ position:absolute; inset:0; width:100%; height:100%; }
/* znak jako znak wodny — pole ochronne zachowane, kontrast poniżej progu czytania */
.stopka__znak-wodny{
  position:absolute; z-index:1; right:-4%; bottom:-14%;
  width:min(34vw,420px); aspect-ratio:1; pointer-events:none;
  color:var(--jasny-0); opacity:.035;
}
.stopka__znak-wodny svg{ width:100%; height:100%; }
/* wiązka trójki jako ostatnia linia strony */
.stopka__szew{
  position:absolute; z-index:3; inset:auto 0 0; height:2px;
  background:var(--wiazka-pozioma);
}
.stopka .zawartosc{ position:relative; z-index:2; }
.stopka__siatka{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:2rem; padding-bottom:2.4rem; }
.stopka h4{ font-size:var(--t-etykieta); letter-spacing:.14em; text-transform:uppercase; color:var(--tekst-3c); margin-bottom:.9rem; }
.stopka ul{ list-style:none; margin:0; padding:0; display:grid; gap:.45rem; }
.stopka a, .stopka li{ font-size:var(--t-maly); color:var(--tekst-2c); }
.stopka a:hover{ color:var(--tekst-1c); }
.stopka__marka p{ font-size:var(--t-maly); color:var(--tekst-3c); max-width:36ch; margin-top:.9rem; }
.stopka__dol{
  display:flex; flex-wrap:wrap; gap:.6rem 1.6rem; justify-content:space-between;
  padding:1.2rem 0 6rem; border-top:1px solid var(--linia-c1);
  font-size:var(--t-drobny); color:var(--tekst-3c);
}
.nota{
  margin-top:1.4rem; padding:.9rem 1.1rem; border-radius:var(--promien-m);
  border:1px dashed var(--linia-c2); font-size:var(--t-drobny); color:var(--tekst-3c);
}

/* ============================================================================
   18 · PRZYKLEJONY PASEK NA TELEFONIE
   ========================================================================== */
.pasek-mobilny{
  position:fixed; inset:auto 0 0; z-index:110; display:none; gap:.6rem;
  padding:.7rem var(--brzeg) calc(.7rem + env(safe-area-inset-bottom));
  background:rgba(11,9,16,.92); backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px); border-top:1px solid var(--linia-c1);
}
.pasek-mobilny .btn{ flex:1; }

/* ============================================================================
   19 · ZWĘŻANIE
   ========================================================================== */
@media (max-width:1080px){
  .karty{ grid-template-columns:repeat(2,1fr); }
  .siatka4{ grid-template-columns:repeat(2,1fr); }
  .opinie{ grid-template-columns:1fr 1fr; }
  .kolo-uklad{ grid-template-columns:1fr; }
  .wyniki{ grid-template-columns:1fr; }
  .wyn-taby{ flex-direction:row; overflow-x:auto; padding-bottom:.4rem; }
  .wyn-tab{ flex:0 0 auto; }
  .wyn-panel.on{ grid-template-columns:1fr; }
  .stopka__siatka{ grid-template-columns:1fr 1fr; }
}
@media (max-width:860px){
  .nawigacja, .gorny__cta .btn{ display:none; }
  .menu-przycisk{ display:flex; margin-left:auto; }
  #mega{ display:none; }
  .pasek-mobilny{ display:flex; }
  body{ padding-bottom:4.6rem; }
  /* na telefonie treść hero jest wyższa niż ekran — gdyby stała przy DOLE,
     pierwsze, co widać po wejściu, byłoby samo tło. Więc od góry. */
  .hero{ align-items:flex-start; padding-block:calc(var(--gorny-h) + 2.6rem) 3rem; }
  .hero__dol{ display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; }
  .hero__fakt b{ font-size:1.25rem; }
}
@media (max-width:620px){
  .karty, .siatka4, .opinie{ grid-template-columns:1fr; }
  .wyn-male{ grid-template-columns:1fr; }
  .stopka__siatka{ grid-template-columns:1fr; }
}
@media print{
  #pre, .gorny, .pasek-mobilny, .stopka__fala, .hero__tlo{ display:none !important; }
  .sekcja--ciemna, .pas, .stopka{ background:#fff !important; color:#000 !important; }
}
