

/* pc.css nie zeruje marginesu body, a przeglądarka daje mu 8 px. Bez tego wideo nie dobija do
   prawej krawędzi okna, tylko zatrzymuje się 8 px przed nią. Do zgłoszenia w design systemie. */
body{margin:0}

/* ---- Menu: wyższe, z większym logo, przyklejone do góry ----
   Design system daje pasek 60 px i logo 30 px, a nawigacja nie jest przyklejona. Bez przyklejenia
   nie ma dokąd wjechać logo, więc zmiana idzie w komplecie. Propozycja do pc.css. */
:root{--pcw-nav-h:4.5rem;
  /* rynna: to samo, co kontener design systemu odkłada z lewej i prawej. Liczona z 100vw, więc przy
     widocznym pasku przewijania jest o jego połowę za szeroka; służy tylko jako przybliżenie we
     wzorze na logo. Paddingi liczą rynnę z procentów, od szerokości bez paska (2026-09-10). */
  --pcw-gutter:max(var(--pc-margin), calc((100vw - var(--pc-container)) / 2))}
@media (min-width:1120px){:root{--pcw-nav-h:6rem}}
.pc-nav{--nav-h:var(--pcw-nav-h);--pc-nav-logo:2.25rem;position:sticky;top:0}
/* pasek nie zasłania pola z fokusem ani celu kotwicy (audyt menu M-04, 2026-09-11). Przeglądarka
   i Lenis odejmują scroll-padding strony i scroll-margin celu, więc sekcje z własnym górnym
   odstępem mają scroll-margin 0. Ta sama reguła co w zestawie podstron */
html{scroll-padding-top:var(--pcw-nav-h)}
/* Pasek jest kontenerem, więc przy szerokich oknach kończył się na 240 i 1680 z 1920 i spod
   jego boków wychodziło to, co przewijało się pod spodem. Teraz pasek idzie przez całe okno,
   a jego treść stoi tam, gdzie postawiłby ją kontener: padding równy rynnie daje przy 1920
   dokładnie 320 i 1600, czyli to samo co kontener design systemu. */
.pc-nav{max-width:none;padding-inline:max(var(--pc-margin), calc((100% - var(--pc-container)) / 2))}
/* panel mega menu zostaje na krawędziach kontenera, tak jak w design systemie */
.pc-nav .pc-menu{inset-inline:calc(max(var(--pc-margin), calc((100% - var(--pc-container)) / 2)) - var(--pc-margin))}
@media (min-width:1120px){.pc-nav{--pc-nav-logo:3rem}}
/* bardzo niskie okno (1366 × 768 przy 125 % to 490 px): pasek wraca do wysokości z design systemu,
   żeby hero razem z zegarem zmieściło się na pierwszym ekranie (2026-09-10) */
@media (min-width:1024px) and (max-height:560px){:root{--pcw-nav-h:var(--pc-control)}.pc-nav{--pc-nav-logo:2.25rem}}
/* telefon: 72 px paska to 9 % ekranu przez całe przewijanie; 60 px mieści przyciski 44 px z oddechem.
   Telefon poziomo: pasek z design systemu, jak przy niskim oknie wyżej (2026-09-10) */
@media (max-width:767px){:root{--pcw-nav-h:calc(var(--pc-control) + var(--hsp-xs))}}
@media (max-width:1023px) and (max-height:500px){:root{--pcw-nav-h:var(--pc-control)}}
/* telefon: znak w pasku w rozmiarze z design systemu (30 px). Przy 36 px znak, trzy przyciski
   i odstępy miały 375 px, więc przy 360 px hamburger dotykał krawędzi ekranu */
@media (max-width:767px){.pc-nav{--pc-nav-logo:inherit}}
/* pasek menu telefonu i tabletu ma wysokość paska strony, więc krzyżyk otwiera się dokładnie
   w miejscu hamburgera, a nie 5 do 8 px niżej */
@media (max-width:1119px){   /* the burger shows up to 1119 px (audit K-15, 2026-09-17; was 1023) */
  .pc-sheet{padding-block-start:0}
  .pc-sheet__bar{min-height:var(--pcw-nav-h)}
}

/* ---- Znak wjeżdża z lewej, pasek ciemnieje ----
   Ten sam mechanizm, co na powerconnect.pl. Tam znak stoi na swoim miejscu z `opacity:0`,
   a lista jest przesunięta o `translateX(-230px)`; klasa `--sticky-styles` zeruje przesunięcie
   i odsłania znak, a pasek w tym samym momencie zmienia kolory. Tutaj przesunięcie liczy się
   z szerokości znaku, więc trzyma się przy każdej wysokości paska, a przełącznikiem jest ta
   sama klasa co wcześniej: `pcw-logo-parked` żyje, dopóki duże logo z hero nie schowa się
   pod paskiem.
   Na górze strony: pasek biały, tekst atramentowy, menu przy lewej krawędzi treści, bez znaku.
   Po przewinięciu: pasek atramentowy, tekst biały, menu odsuwa się w prawo, a w jego miejscu
   pojawia się biały znak. */
.pc-nav{--pcw-logo-w:calc(174 / 57 * var(--pc-nav-logo));
  transition:background var(--pc-t-base) var(--pc-ease),color var(--pc-t-base) var(--pc-ease)}
.pc-nav__links{margin-inline:0;transition:transform var(--pc-t-base) var(--pc-ease)}
/* ukryty znak nie jest przystankiem tabulacji (audyt menu M-05, 2026-09-11): visibility gaśnie
   dopiero po wygaszeniu znaku, a przy jego wjeździe wraca od razu */
.pc-nav__logo{transition:opacity var(--pc-t-base) var(--pc-ease),visibility 0s}
.pcw-logo-parked .pc-nav__logo{opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity var(--pc-t-base) var(--pc-ease),visibility 0s var(--pc-t-base)}
.pcw-logo-parked .pc-nav__links{transform:translateX(calc(-1 * (var(--pcw-logo-w) + var(--nav-gap))))}

html:not(.pcw-logo-parked) .pc-nav{background:var(--pc-ink);color:var(--pc-white)}
html:not(.pcw-logo-parked) .pc-nav .pc-nav__link{color:var(--pc-white)}
html:not(.pcw-logo-parked) .pc-nav .pc-nav__util-btn{background:var(--pc-white);color:var(--pc-ink)}
html:not(.pcw-logo-parked) .pc-nav .pc-nav__util-btn:hover,
html:not(.pcw-logo-parked) .pc-nav .pc-nav__lang a:hover{background:var(--pc-spark);color:var(--pc-ink)}
/* otwarta zakładka na białym pasku: tytuł w kolorze swojej linii, Voltage (Piotr 2026-09-15). Design
   system zostawia tu tekst atramentowy, bo Voltage na bieli ma 3,35:1; Piotr wybrał kolor linii
   świadomie i tylko dla białego paska. Na atramentowym pasku tytuł zostaje biały. */
.pc-nav__link{transition:color var(--pc-t-fast) var(--pc-ease)}
.pcw-logo-parked .pc-nav .pc-nav__link[aria-expanded="true"]{color:var(--pc-voltage)}


/* ---- Punkt orientacyjny i przycisk biletu (audyt menu, 2026-09-11) ----
   Zakładki paska i grupy menu telefonu stoją w <nav aria-label="Menu główne"> (M-27). Opakowanie
   zakładek znika poniżej 1120 px razem z nimi, żeby nie dokładać odstępu w pasku; opakowanie grup
   w menu telefonu trzyma odstęp między grupami, który dawała im siatka menu. */
.pcw-nav-main{display:none}
.pcw-sheet__nav{display:grid;gap:inherit}
.pcw-sheet__home{display:flex}   /* znak w menu telefonu prowadzi na stronę główną (M-29) */
/* „Kup bilet" z menu telefonu także w pasku od 1120 px (M-08, Piotr 2026-09-11), w stylu przycisków
   pomocniczych, więc nie jest drugim przyciskiem głównym w widoku; zdanie, nie wersaliki */
.pcw-nav__ticket{display:none;letter-spacing:normal;padding-inline:var(--hsp-xs)}
@media (min-width:1120px){
  .pcw-nav-main{display:block}
  .pcw-nav__ticket{display:inline-flex}
  /* bilet, LinkedIn i język: trzy przyciski pomocnicze w jednej grupie, 8 px zamiast 16; z LinkedInem
     w pasku (Piotr 2026-09-11) grupa przy 1120 do 1280 px inaczej nie mieści się obok zakładek */
  .pc-nav__util{gap:var(--pc-space-2xs)}
}
/* zmiana języka: jedno pole z bieżącym językiem i szewronem; po kliknięciu pod nim wysuwa się pole
   z drugim językiem (Piotr 2026-09-11: PL i EN obok siebie zajmowały za dużo paska). Wewnętrzny
   odstęp jak w pozostałych przyciskach pomocniczych (Piotr: w kwadracie napis i szewron dotykały
   krawędzi), więc pole jest szersze niż kwadrat */
.pcw-lang{position:relative;display:flex}
.pcw-lang__btn{gap:var(--pc-space-3xs)}
.pcw-lang__btn .pc-icon{transition:transform var(--pc-t-fast) var(--pc-ease)}
.pcw-lang__btn[aria-expanded="true"] .pc-icon{transform:rotate(180deg)}
/* lista wisi pod paskiem w jego kolorze, a kwadrat języka stoi w niej jak w pasku; biały kwadrat
   na białej stronie (jasne podstrony) nie miał krawędzi */
.pcw-lang__list{position:absolute;inset-block-start:100%;inset-inline:calc(-1 * var(--pc-space-2xs));margin:0;
  padding:var(--pc-space-2xs);list-style:none;background:var(--pc-white)}
html:not(.pcw-logo-parked) .pc-nav .pcw-lang__list{background:var(--pc-ink)}
.pcw-lang__list .pc-nav__util-btn{width:100%}   /* pole EN tej samej szerokości co PL nad nim */

/* kwadraty w kolorach grup panelu „O wydarzeniu": Informacje zielone, Zaplanuj wizytę niebieskie,
   Dodatkowe informacje różowe; drugorzędne w jasnym wariancie (klient, 2026-09-10). W „Informacjach"
   od 2026-09-10 (Piotr) wszystkie kwadraty w tym samym kolorze, także przy pozycjach drugorzędnych;
   od 2026-09-11 (Piotr) jest to morski --pc-voltage zamiast --pc-green. */
/* Targi: zdjęcie wydarzenia pod kursorem przenika nad zdjęcie panelu (Piotr, 2026-09-18) */
.pc-menu__promo--photo .pcw-menu__alt{opacity:0;transition:opacity var(--pc-t-base) var(--pc-ease)}
.pc-menu__promo--photo .pcw-menu__alt.is-on{opacity:1}
@media (prefers-reduced-motion:reduce){.pc-menu__promo--photo .pcw-menu__alt{transition:none}}
.pc-menu__item.pcw-bullet--green::before{background:var(--pc-voltage)}
.pc-menu__item.pcw-bullet--blue::before{background:var(--pc-blue)}
.pc-menu__item--secondary.pcw-bullet--blue::before{background:var(--pc-blue-light)}
.pc-menu__item.pcw-bullet--magenta::before{background:var(--pc-magenta)}
.pc-menu__item--secondary.pcw-bullet--magenta::before{background:var(--pc-magenta-light)}
/* najechanie i fokus pozycji panelu (Piotr, 2026-09-15): tło nie pojawia się od razu, tylko wsuwa się od lewej,
   tak jak żółty w wypełnionych przyciskach, i cofa się w lewo po zjechaniu kursora. Kolor od 13:29 atramentowy
   --pc-ink z kryciem 5 % (wcześniej tego dnia Mist, 026b0b7, żółty --pc-pulse, 9450608, i obiegający ramkę pasek,
   5fe82bc). Warstwa gradientu w tle, jak w przyciskach; skrót `background` z pc.css zeruje ją na hover, więc
   reguła hover podaje ją jeszcze raz. */
.pc-nav{--pcw-menu-hover:color-mix(in srgb, var(--pc-ink) 5%, transparent)}
.pc-nav .pc-menu__item{background-image:linear-gradient(var(--pcw-menu-hover),var(--pcw-menu-hover));background-repeat:no-repeat;
  background-position:left center;background-size:0% 100%;transition:background-size .3s var(--pc-ease)}
.pc-nav .pc-menu__item:is(:hover,:focus-visible,.is-hover){background-color:transparent;
  background-image:linear-gradient(var(--pcw-menu-hover),var(--pcw-menu-hover));background-repeat:no-repeat;
  background-position:left center;background-size:100% 100%}
/* ---- Rozwijane panele nawigacji ----
   Panel z jedną kolumną zostawiał znak w drugiej kolumnie, przyklejony do listy, a resztę
   szerokości pustą. Znak idzie więc na stałe do ostatniej kolumny siatki, a najdłuższa lista
   („Targi", siedem pozycji) zajmuje dwie kolumny i łamie się na dwie szpalty, zamiast ciągnąć
   się na 580 px w dół. */
@media (min-width:1120px){
  .pc-nav .pc-menu__promo{grid-column:4}
  /* odświeżenie 2026-09-10 (Piotr): treść panelu na siatce strony (do marginesu jak logo i treść
     sekcji), zdjęcie w każdym panelu, cień zamiast dolnej linii, łagodne wejście panelu */
  .pc-nav .pc-menu{--menu-pad:var(--hsp-s) var(--pc-margin) var(--hsp-m);grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:0;
    box-shadow:0 var(--hsp-l) var(--hsp-xl) calc(-1 * var(--hsp-m)) color-mix(in srgb, var(--pc-ink) 28%, transparent)}
  .pc-nav .pc-menu:not([hidden]){animation:pcw-menu-in var(--pc-t-fast) var(--pc-ease) both}
  .pc-nav .pc-menu__promo{min-height:calc(4 * var(--pc-square))}
  .pc-nav .pcw-menu--solo .pc-menu__promo{grid-column:2 / -1}
  .pcw-chain--menu{--u:var(--pc-square-sm)}
  .pcw-chain--menu>i:nth-child(1){--x:0;--y:0;--sq:var(--pc-amber)}
  .pcw-chain--menu>i:nth-child(2){--x:1;--y:1;--sq:var(--pc-magenta)}
  .pcw-menu__wide{grid-column:span 2}
  .pcw-menu__wide .pc-menu__list{columns:2;column-gap:var(--hsp-s)}
  .pcw-menu__wide .pc-menu__list>li{break-inside:avoid}
}
@keyframes pcw-menu-in{from{opacity:0;transform:translateY(calc(-1 * var(--pc-space-3xs)))}}

/* ---- Pasek przewijania strony w barwach key visualu edycji 2027 (Piotr, 2026-09-16) ----
   Kwadratowy jak kwadraty KV, bez zaokrągleń: tor w Wyładowaniu (Arc Mist), suwak w Turkusie ciemnym
   (8,6:1 na torze), na hover Napięcie, przy przeciąganiu Impuls z atramentową obwódką (sam Impuls na
   jasnym tle znika). Tylko pasek całej strony. Chrome i Safari biorą pseudoelementy; Firefox, który
   ich nie zna, dostaje same kolory */
html::-webkit-scrollbar{width:14px;height:14px;background:var(--pc-mist)}
html::-webkit-scrollbar-track{background:var(--pc-mist)}
html::-webkit-scrollbar-thumb{background:var(--pc-deep);border:3px solid var(--pc-mist);border-radius:0;min-height:48px}
html::-webkit-scrollbar-thumb:hover{background:var(--pc-voltage)}
html::-webkit-scrollbar-thumb:active{background:var(--pc-pulse);border-color:var(--pc-ink)}
html::-webkit-scrollbar-corner{background:var(--pc-mist)}
@supports not selector(::-webkit-scrollbar){html{scrollbar-color:var(--pc-deep) var(--pc-mist)}}
/* ---- Sekcja „Zostań Wystawcą / Zostań Odwiedzającym", wersja od klienta z 2026-09-10 ----
   Zmiany wobec szablonu two-paths: nagłówek w jednym wierszu, Elms Sans jak w makiecie; odstęp
   8 px między kartami i między zdjęciem a panelem; zdjęcia 4:3; zwarty panel z linkiem obok
   tekstu; magenta i atrament w rogach pod kartami. Cel kotwicy przycisku z hero. */
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
/* płynne przewijanie kółkiem (Lenis, 2026-09-10): natywne scroll-behavior walczyłoby z nim o każdą
   klatkę, więc gdy Lenis działa, wyłączone; reguły z lenis.css, bez ramek iframe */
html.lenis{scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}
.lenis [data-lenis-prevent]{overscroll-behavior:contain}
/* Linia otwierająca sekcję (`pc-rule-top`) ma według pc.css kończyć się na marginesach, ale leży
   na obramowaniu kontenera z paddingiem, więc do 1440 biegnie przez całe okno. Tu rysowana na
   szerokość treści, jak w renderach projektanta. Dotyczy wszystkich sekcji strony. Do zgłoszenia. */
.pc-rule-top{border-top:0}
/* Od 2026-09-14 (Piotr) bez linii oddzielających sekcje: klasa zdejmowana z szablonów w template()
   i z sekcji strony, reguła wyżej zostaje jako zabezpieczenie; bez linii nad dolnym paskiem stopki */
.pc-footer__bottom{border-top:0}
/* Elms Sans z design systemu ma spację 0.435 em; w renderach projektanta odstęp między słowami
   jest węższy o ok. 0.18 em (zmierzone na section-two-paths.webp). Do zgłoszenia w design systemie. */
:root{--pcw-display-ws:-0.18em}
.pcw-paths{scroll-margin-top:0}   /* skok z hero nie chowa nagłówka pod paskiem: pasek odlicza
   scroll-padding strony (audyt menu M-04, 2026-09-11) */
/* Hasło, które stało pod zegarem w hero, jest nagłówkiem sekcji w kroju hasła (Elms Sans 500),
   w rozmiarze pozostałych nagłówków sekcji: --hfs-h2 z klasy pc-h2, 48 px przy 1440. Do 2026-09-11
   było dopasowane do jednego wiersza (41.7 px przy 1440, 33.6 px przy 125 %), a „Polecane artykuły"
   miały 56 px, więc strona miała trzy rozmiary H2 (audyt UX-09, Piotr). Teraz hasło łamie się na
   dwa wyrównane wiersze, bez samego „Polsce." w drugim. */
.pcw-paths__title{font-family:var(--pc-font-display);font-weight:var(--pc-fw-medium);
  word-spacing:var(--pcw-display-ws);text-wrap:balance}
/* na telefonie i tablecie wszystkie nagłówki sekcji mają wyrównane wiersze (2026-09-10) */
@media (max-width:1023px){main .pc-h2{text-wrap:balance}}
/* strzałki przewijania opinii i galerii: pc.css chowa je na telefonie, ale późniejsza reguła
   `.pc-gallery-nav{display:flex}` w tym samym pliku to przebija. Na telefonie przewija palec,
   a wystająca następna karta pokazuje, że jest dalej. Do zgłoszenia w design systemie (2026-09-10) */
@media (max-width:767px){main .pc-gallery-nav{display:none}}
/* pasek opinii bez poziomego paska przewijania: przesuwa się sam, strzałkami i palcem (Piotr, 2026-09-17);
   od 2026-09-18 każda karuzela opinii z data-pcw-quotes (strona główna, opinie-i-rekomendacje) */
section[data-pcw-quotes] .pc-gallery{scrollbar-width:none;padding-block-end:0}
section[data-pcw-quotes] .pc-gallery::-webkit-scrollbar{display:none}
/* długa wypowiedź w karuzeli: kilka wierszy i „Rozwiń” (Piotr, 2026-09-18); cały tekst zostaje w DOM, przycisk
   pokazuje skrypt tylko wtedy, gdy tekst się nie mieści */
.pcw-clamp:not(.is-open){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--pcw-clamp,6);line-clamp:var(--pcw-clamp,6);overflow:hidden}
.pcw-more{justify-self:start;align-self:start;background:none;border-width:0 0 2px;padding-inline:0;font-family:inherit;cursor:pointer}
.pcw-more[hidden]{display:none}
.pcw-paths__grid{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr);
  gap:var(--pc-space-2xs)}
@media (min-width:768px){.pcw-paths__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pcw-paths__card{background:none;gap:var(--pc-space-2xs)}
.pcw-paths__card img{aspect-ratio:var(--pc-ratio-hero)}   /* 4:3 */
/* zdjęcie przybliża się na hover karty i na fokus jej linku, przycięte ramką, więc karta nie zmienia
   rozmiaru (Piotr, 2026-09-15) */
/* zdjęcie prowadzi tam, gdzie „Sprawdź"; poza klawiaturą i czytnikiem, więc karta ma jeden link (Piotr, 2026-09-15) */
/* one media zoom for the paths cards and the article cards, home and subpages (audit 06 row 24, 2026-09-17;
   reduced motion comes from the DS rule .pc *{transition-duration:.001ms}):
   the frame clips the photo, so the card keeps its size; article cards drop the DS tint fill on hover */
.pcw-media-zoom{display:block;overflow:hidden}
.pcw-media-zoom img{display:block;transition:transform .6s var(--pc-ease)}
:is(.pcw-paths__card,.pc-card--article):is(:hover,:has(:focus-visible)) .pcw-media-zoom img{transform:scale(1.06)}
.pc-card--article.pc-card--link:hover{background:transparent}
.pcw-paths__media{cursor:pointer}
/* reversed section head with the heading column kept at the start edge (the DS aligns every column to the end):
   home articles, subpage recommended articles (audit 06 row 25, 2026-09-17) */
.pc-section-head--reverse>.pcw-head-start{align-items:flex-start;justify-content:flex-start}
.pcw-paths__card .pc-card__body{background:var(--pc-surface-raised)}
.pcw-paths__card .pc-card__title{font-family:var(--pc-font-display);font-weight:var(--pc-fw-medium);font-size:var(--hfs-h3);
  word-spacing:var(--pcw-display-ws)}
/* tekst i link w jednym rzędzie; link na dole z prawej, a gdy zabraknie miejsca, pod tekstem */
.pcw-paths__row{flex:1;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:var(--hsp-xs) var(--hsp-m)}
.pcw-paths__row .pc-card__text{flex:1 1 20rem;max-width:46ch;align-self:flex-start;text-wrap:pretty}
.pcw-paths__row .pc-link{margin-inline-start:auto}
/* kwadrat ze strzałką na środku wysokości tekstu linku (Piotr, 2026-09-14); pc.css stawia tekst przy
   dolnej linii, a kwadrat na środku, co przesuwało tekst o ~10 px w dół względem kwadratu */
.pc-link{align-items:center}
.pc-link .pc-arrow-box{margin-block-end:0}
/* jeden rozmiar wszystkich linków ze strzałką (Piotr, 2026-09-14): wariant --sm ma ten sam tekst co zwykły */
.pc-link--sm{font-size:var(--hfs-text-m)}
/* na desktopie wszystkie linki ze strzałką mają 18 px, także na kafelkach wydarzeń (Piotr, 2026-09-15);
   --hfs-text-m dochodzi do 18 px dopiero przy ~1440 px szerokości */
@media (min-width:1024px){
  body.pc .pc-link,body.pc .pcw-events__tile .pc-link.pc-link--sm{font-size:1.125rem}
}
/* hover wypełnionych przycisków (Piotr, 2026-09-14): żółty --pc-pulse wsuwa się od lewej do prawej
   (warstwa gradientu w tle rośnie od 0 do 100 % szerokości), tekst przechodzi w atramentowy, strzałka
   odsuwa się o 2 px w stronę, którą wskazuje. Po zjechaniu kursora żółty cofa się w lewo.
   Warstwa w tle, nie pseudo-element, bo przycisk w panelu menu ma position:absolute. */
body.pc .pc-btn:not(.pc-btn--outline,.pc-btn--ghost,.is-disabled,:disabled,[aria-disabled="true"]){--btn-bg-hover:var(--btn-bg);--btn-fg-hover:var(--pc-ink);
  background-image:linear-gradient(var(--pc-pulse),var(--pc-pulse));background-repeat:no-repeat;
  background-position:left center;background-size:0% 100%;
  transition:background-size .3s var(--pc-ease),color .12s linear}
body.pc .pc-btn:not(.pc-btn--outline,.pc-btn--ghost,.is-disabled,:disabled,[aria-disabled="true"]):is(:hover,.is-hover,:focus-visible){background-image:linear-gradient(var(--pc-pulse),var(--pc-pulse));background-repeat:no-repeat;
  background-position:left center;background-size:100% 100%}
body.pc .pc-btn:not(.pc-btn--outline,.pc-btn--ghost,.is-disabled,:disabled,[aria-disabled="true"]) .pc-icon{transition:transform .25s var(--pc-ease)}
body.pc .pc-btn:not(.pc-btn--outline,.pc-btn--ghost,.is-disabled,:disabled,[aria-disabled="true"]):is(:hover,.is-hover,:focus-visible) .pc-icon{transform:translate(2px,-2px)}
/* jeden hover linków ze strzałką na całej stronie (Piotr, 2026-09-14/15): napis i linia zostają, zmienia
   się tylko kwadrat, na jasnym tle z czarnego na morski, na ciemnym ze spark na biały. W karcie-linku
   napis leży pod rozciągniętym linkiem tytułu, więc liczy się hover karty */
.pc-link:hover,.pc-link.is-hover,.pc-link:focus-visible{color:var(--pc-text);--link-rule:var(--pc-accent)}
.pc-link .pc-arrow-box{transition:background-color var(--pc-t-fast) var(--pc-ease),color var(--pc-t-fast) var(--pc-ease)}
body.pc .pc-link:is(:hover,.is-hover,:focus-visible),body.pc .pc-card--link:is(:hover,:focus-within) .pc-link{--link-rule:var(--pc-accent)}
body.pc .pc-link:is(:hover,.is-hover,:focus-visible) .pc-arrow-box,
body.pc .pc-card--link:is(:hover,:focus-within) .pc-link .pc-arrow-box{background:var(--pc-accent);color:var(--pc-white)}
body.pc :is(.pc-on-dark,.pc-on-deep) .pc-link:is(:hover,.is-hover,:focus-visible) .pc-arrow-box,
body.pc :is(.pc-on-dark,.pc-on-deep) .pc-card--link:is(:hover,:focus-within) .pc-link .pc-arrow-box{background:var(--pc-white);color:var(--pc-ink)}
/* kwadraty w rynnie pod dolnymi rogami kart; jednostka nie większa niż rynna, więc nic nie wystaje.
   Od 2026-09-10 (Piotr) dół kart licuje się z górą kwadratów, a dół kwadratów z granicą ciemnej
   sekcji wydarzeń: odstęp pod siatką to dokładnie jeden kwadrat, na każdej szerokości. Na telefonie
   kwadratów nie ma, więc zostaje zwykły odstęp sekcji. */
.pcw-paths{--pcw-sq:min(var(--pc-square), var(--pc-margin))}
@media (min-width:768px){.pcw-paths{padding-block-end:var(--pcw-sq)}}
.pcw-paths .pcw-chain--paths{--u:var(--pcw-sq)}
.pcw-chain--paths.pc-squares--bottom>i:nth-child(1){--x:-1;--y:-1;--sq:var(--pc-magenta)}
.pcw-chain--paths.pc-squares--right>i:nth-child(1){--x:-1;--y:-1;--sq:var(--pc-ink)}

/* ---- Powiększenie 125 % i 150 % (2026-09-10) ----
   Zoom przeglądarki i skalowanie ekranu w Windows zwężają okno w pikselach CSS: 1920 × 1080 przy
   125 % to ok. 1536 × 730, MacBook 1440 × 900 przy 125 % to ok. 1152 × 636. Tekst w rem zostaje
   w swoim rozmiarze, więc względem układu rośnie, i od 1120 do ok. 1250 pasek wychodził poza
   treść, logotypy partnerów łamały się na pięć i jeden, a stopka łamała nagłówki i ikony.
   Kontrola: klon/zoom-check.mjs, klon/zoom-nav.mjs, klon/wrap-sweep.mjs. */

/* pasek: odstępy między zakładkami maleją razem z oknem, od 14 px przy 1120 do odstępu z makiety
   (37 px) od 1320 w górę; bez tego przy 1152 pasek był o 64 px szerszy niż treść. Do 2026-09-11
   od 20 px do 1256; potem w pasku stanęły „Kup bilet" (audyt menu M-08), LinkedIn i pole języka
   z pełnym odstępem wewnętrznym (Piotr), więc odstępy zaczynają się niżej i rosną dłużej */
@media (min-width:1120px){
  .pc-nav{--nav-gap:clamp(0.875rem, 11.5vw - 7.175rem, var(--hsp-l))}
  .pc-nav__links{gap:var(--nav-gap)}
}

/* logotypy partnerów: pole logotypu i odstęp to ułamki szerokości okna (160 i 50 px przy 1440),
   więc przy mniejszej szerokości rząd maleje w całości, zamiast spychać ostatni logotyp niżej */
@media (min-width:1024px){
  .pc-partners__row{--partners-gap:var(--hsp-l) min(var(--hsp-xl), 3.47vw)}
  .pc-partners__row img{max-width:min(calc(2 * var(--pc-square)), 11.1vw)}
}

/* stopka: do 1279 kolumny mają szerokość swojej treści i rozchodzą się na całą szerokość,
   bo siatka 4/3/3/2 łamała tam nagłówki na dwa wiersze i ikony na dwa rzędy */
@media (min-width:1024px) and (max-width:1279px){
  .pc-footer__cols{grid-template-columns:repeat(4, auto);justify-content:space-between}
  .pc-footer__cols>:nth-child(n){grid-column:auto}
}
/* listy we wszystkich kolumnach startują z jednej wysokości, także gdy nagłówek się złamie */
@media (min-width:1024px){
  .pc-footer__cols{grid-template-rows:auto auto}
  .pc-footer__cols>*{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0;align-content:start}
  .pc-footer__cols>*>*{align-self:start}
}

/* akapity bez pojedynczego słowa w ostatnim wierszu; zmiana szerokości przy powiększeniu
   przestawia złamania, więc nie da się tego załatwić ręcznie */
.pc p{text-wrap:pretty}

/* ---- Stopka: zwarta głowa zamiast znaku na całą szerokość (2026-09-10) ----
   V1 z design systemu stawia znak na 1120 × 370 px. Przycięcie kwadratami, dla którego tak go
   zaprojektowano, jest w design systemie opcją domyślnie wyłączoną, a bez niego znak przytłaczał
   stopkę (uwaga klienta). Głowa idzie teraz za V2: znak z podpisem na cztery kwadraty szerokości,
   a z prawej data i miejsce, złożone jak w hero. Pas kwadratów pod spodem bez zmian. */
.pcw-footer__row{max-width:var(--pc-container);margin-inline:auto;padding-block:var(--hsp-xl);
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--hsp-m) var(--hsp-l)}
.pcw-footer__logo{display:block;width:min(calc(4 * var(--pc-square)), 60vw);height:auto}
.pcw-footer__when{display:grid;justify-items:end;gap:var(--pc-space-2xs);text-align:end}
.pcw-footer__date{margin:0;font-size:var(--pc-fs-numeral-s);line-height:1}
.pcw-footer__place{display:flex;align-items:center;gap:var(--hsp-xxs);margin:0;
  font-family:var(--pc-font-display);font-weight:var(--pc-fw-medium);font-size:var(--hfs-text-l);
  line-height:var(--pc-lh-ui);word-spacing:var(--pcw-display-ws)}
.pcw-footer__pin{display:grid;place-items:center;flex:none;width:1.5em;aspect-ratio:1;
  background:var(--pc-white);color:var(--pc-ink)}   /* pinezka z hero w negatywie, jak przyciski paska na atramencie */
.pcw-footer__pin .pc-icon{width:62.5%;height:62.5%}
@media (max-width:767px){.pcw-footer__when{justify-items:start;text-align:start}}   /* telefon: data pod znakiem, do lewej */
/* organizatorzy: logotypy zamiast zastępczych znaków Power Connect, w wysokości z design systemu */
.pcw-footer__org{display:block;height:var(--pc-footer-partner-logo);width:auto;aspect-ratio:183 / 44}
/* dolny rząd: linki prawne mają własny padding i stały 8 px niżej niż copyright; tylko w rzędzie,
   bo w kolumnie (telefon) wyrównanie do środka centrowało copyright */
@media (min-width:768px){.pc-footer__bottom{align-items:center}}
/* ---- Stopka na telefonie według projektu Piotra (Footer mobilka.png, 390 px, 2026-09-18) ----
   Kwadrat Voltage w prawym górnym rogu głowy; pas kwadratów wraca, w module jednej piątej ekranu
   (pięć kwadratów na szerokość 390 px, najwyżej 80 px; łańcuch seam z design systemu); organizatorzy w jednym rzędzie;
   linki mniejsze i gęściej; LinkedIn w małym kwadracie; dolny rząd: copyright z lewej, linki prawne
   z prawej, jeden pod drugim, nad nim linia (na telefonie wbrew zasadzie bez linii z 2026-09-14, bo tak
   narysował Piotr). Zastępuje wcześniejsze chowanie pasa. */
@media (max-width:767px){
  :root{--pcw-phone-u:min(20vw, var(--pc-square))}   /* moduł telefonu: piąta część ekranu, najwyżej kwadrat 80 px; każdy kwadrat na telefonie (CTA, stopka) bierze ten (2026-09-18) */
  .pc-footer{--pcw-foot-u:var(--pcw-phone-u)}
  .pc-footer__head::before{content:"";position:absolute;inset-block-start:0;inset-inline-end:0;
    width:var(--pcw-foot-u);aspect-ratio:1;background:var(--pc-voltage)}
  .pcw-footer__row{padding-block:var(--pcw-foot-u);gap:var(--hsp-s)}
  .pcw-footer__when{gap:var(--hsp-xxs)}
  .pc-footer__band{display:block;height:calc(2 * var(--pcw-foot-u))}
  .pc-footer__band .pc-squares{display:block;--u:var(--pcw-foot-u)}
  .pc-footer{--footer-pad:var(--hsp-m) var(--hsp-l)}
  .pc-footer__cols{gap:var(--hsp-m)}
  .pc-footer__heading{font-size:var(--hfs-text-m);margin-block-end:var(--hsp-xxs)}
  .pc-footer__partners{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hsp-xxs) var(--hsp-xs);padding-block:var(--hsp-xxs) var(--pc-space-2xs)}
  .pc-footer__partners :is(img,.pcw-footer__org){height:2.25rem;width:auto}
  .pc-footer__links{gap:0}
  .pc-footer__links a{font-size:var(--hfs-text-s);padding-block:.25rem}
  .pc-footer .pc-social{font-size:var(--hfs-text-s);gap:var(--hsp-xxs)}
  .pc-footer .pc-social__box{width:1.5rem;height:1.5rem}
  .pc-footer .pc-social__box .pc-icon{width:1rem;height:1rem}
  .pc-footer__bottom{flex-direction:row;align-items:flex-start;gap:var(--hsp-s);font-size:.6875rem;
    margin-block-start:var(--hsp-xs);padding-block:var(--hsp-m);
    border-top:var(--pc-hairline) solid var(--pc-line)}   /* w projekcie telefonu linia nad dolnym rzędem wraca */
  .pc-footer__legal{flex-direction:column;align-items:flex-end;gap:0;text-align:end}
  .pc-footer__bottom a{padding-block:0 .25rem}
}

/* ---- Zestaw sekcji podstron (podstrony/kit.py, 2026-09-10). Tylko tokeny design systemu. ---- */
/* pasek nie zasłania fokusu ani celu kotwicy (audyt menu M-04, M-11, 2026-09-11): przeglądarka i Lenis
   odejmują scroll-padding strony i scroll-margin celu, więc sekcja, która ma własny górny odstęp, dostaje 0,
   a cel wewnątrz sekcji (div, nagłówek, zakładki) mały odstęp od paska */
/* html{scroll-padding-top} comes with the nav chrome from the generator since c471835 */
main [id]{scroll-margin-top:var(--hsp-s)}
.pcs-section[id],.pcs-hero,.pc-section[id]{scroll-margin-top:0}
/* a section that follows the page head or the section before it without full top air (audit 06 row 23, 2026-09-17):
   section(extra=' pcs-section--after-head') for a set gap, ' pcs-section--joined' for none */
.pcs-section--after-head{padding-block-start:var(--hsp-xl)}
.pcs-section--joined{padding-block-start:0}
/* bieżąca strona w panelu i w menu telefonu (audyt menu M-07, 2026-09-11); strona główna nie ma pozycji
   w panelach, więc reguła żyje w kicie; do zgłoszenia do pc.css */
.pc-menu__item[aria-current="page"]{background:var(--pc-mist)}
.pc-menu__item[aria-current="page"] .pc-menu__label{font-weight:var(--pc-fw-semibold)}
/* okruszek poziomu bez własnej strony: tekst tej samej wysokości co link */
.pc-breadcrumb li>span:not([aria-current]){padding-block:var(--hsp-xxs)}
/* phones (Piotr, 2026-09-18): the trail on one line where it fits, tighter separators; when it wraps, the lines sit
   close. The vertical tap padding moves from each crumb to the list, so a single line keeps its height and a
   crumb keeps a 28 px target */
@media (max-width:767px){
  .pc-breadcrumb{column-gap:var(--pc-space-3xs);row-gap:0;padding-block:calc(var(--hsp-xxs) - .25rem)}
  .pc-breadcrumb li{gap:var(--pc-space-3xs)}
  .pc-breadcrumb :is(a,li>span:not([aria-current])){padding-block:.25rem}
  .pc-breadcrumb [aria-current="page"]{padding-block:.25rem}
}
/* zdjęcie cięte po siatce kwadratów (wariant A, 2026-09-11): kwadrat odcięty w rogu od strony tekstu,
   schodki z trzech kwadratów w rogu zewnętrznym, ostatni stopień w kolorze Pulse */
.pcs-cut{--u:var(--pc-square-sm);position:relative}
@media (min-width:768px){.pcs-cut{--u:var(--pc-square)}}
.pcs-cut__img{display:block;width:100%;height:auto;object-fit:cover;
  clip-path:polygon(var(--u) 0,100% 0,100% calc(100% - 2 * var(--u)),calc(100% - var(--u)) calc(100% - 2 * var(--u)),
    calc(100% - var(--u)) calc(100% - var(--u)),calc(100% - 2 * var(--u)) calc(100% - var(--u)),
    calc(100% - 2 * var(--u)) 100%,0 100%,0 var(--u),var(--u) var(--u))}
.pcs-cut--mirror .pcs-cut__img{
  clip-path:polygon(calc(100% - var(--u)) 0,0 0,0 calc(100% - 2 * var(--u)),var(--u) calc(100% - 2 * var(--u)),
    var(--u) calc(100% - var(--u)),calc(2 * var(--u)) calc(100% - var(--u)),calc(2 * var(--u)) 100%,100% 100%,
    100% var(--u),calc(100% - var(--u)) var(--u))}
.pcs-cut__pix{position:absolute;inset-inline-end:0;inset-block-end:0;width:var(--u);height:var(--u);background:var(--pc-pulse)}
.pcs-cut--mirror .pcs-cut__pix{inset-inline:0 auto}
/* hero podstrony: nagłówek, deklaracja, lead, data z miejscem, akcje */
.pcs-hero{padding-block-start:var(--hss-m)}
/* display statement: a sentence in the display face, sentence case, two sizes (audit 06 row 10, 2026-09-17) */
.pcs-statement{display:block;margin:0;font-family:var(--pc-font-display);font-weight:var(--pc-fw-medium);
  line-height:var(--pc-lh-heading-s);word-spacing:var(--pcw-display-ws);text-wrap:pretty}
.pcs-statement--l{font-size:var(--hfs-h3)}
.pcs-statement--m{font-size:var(--hfs-h4)}
/* media item: a photo or video with a quote or title and a person under it (audit 06 row 11, 2026-09-17) */
.pcs-quote-figure{margin:0;display:grid;align-content:start;gap:var(--hsp-xs)}
.pcs-quote-figure--roomy{gap:var(--hsp-s)}
.pcs-quote-figure .pc-embed{margin:0}
.pcs-quote-figure blockquote{margin:0}
.pcs-quote-figure blockquote p{margin:0;font-size:var(--hfs-text-m);line-height:var(--pc-lh-body);text-wrap:pretty}
.pcs-quote-figure .pc-author{margin-block-start:0}
.pcs-hero__grid{align-items:start;row-gap:var(--hsp-l)}
.pcs-hero__head{grid-column:1/-1}
.pcs-hero__head .pc-h1{text-wrap:balance}   /* over the full width: balanced lines, no single word left on the last */
.pcs-actions{gap:var(--hsp-s) var(--hsp-m);align-items:center}
/* lista z kwadratowymi punktorami, w kolumnach */
.pcs-bullets{list-style:none;margin:0;padding:0;display:grid;gap:var(--hsp-xs) var(--pc-gutter);
  grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){.pcs-bullets{grid-template-columns:repeat(min(var(--pcs-cols,3),2),minmax(0,1fr))}}
@media (min-width:1024px){.pcs-bullets{grid-template-columns:repeat(var(--pcs-cols,3),minmax(0,1fr))}}
.pcs-bullets li{display:flex;align-items:baseline;gap:var(--hsp-xs);padding-block:var(--hsp-xs);
  border-bottom:var(--pc-hairline) solid var(--pc-line);font-size:var(--hfs-text-l);line-height:var(--pc-lh-ui)}
.pcs-bullets li::before{content:"";flex:none;width:var(--pc-menu-bullet);height:var(--pc-menu-bullet);
  background:var(--pc-accent);transform:translateY(-0.1em)}
/* wiersze z datą: kolumna daty mieści „17–19.03.2027", data stoi na wysokość tytułu i opisu */
/* agenda at full column width, not the DS cap of 1.25 prose (audit 06 row 19, 2026-09-17) */
.pcs-agenda--wide{max-width:none}
.pcs-dated{--pc-agenda-time:13.5rem}
.pcs-dated__date{white-space:nowrap}
@container (min-width:640px){.pcs-dated .pc-agenda__time{grid-row:1/span 2}}
/* description a clear step under the row title (Piotr 2026-09-18: text-m under a text-l title blended) */
.pcs-dated .pc-agenda__speakers{font-size:var(--hfs-text-s);max-width:var(--pc-prose)}
/* pliki: dwie grupy obok siebie od 1024 px */
.pcs-file-groups{display:grid;gap:var(--hsp-xl);grid-template-columns:minmax(0,1fr)}
@media (min-width:1024px){.pcs-file-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pcs-files{--pc-agenda-time:0}
.pcs-files .pc-agenda__row{grid-template-columns:minmax(0,1fr) auto;align-items:center}
.pcs-files .pc-agenda__row>*{grid-column:1}
.pcs-files .pc-agenda__row .pc-link{grid-column:2;grid-row:1/span 2}
/* formularz: dwie kolumny od 768 px, pola szerokie na całą szerokość */
.pcs-form__grid{display:grid;gap:var(--hsp-s) var(--pc-gutter);grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){.pcs-form__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pcs-field--wide{grid-column:1/-1}
/* grid modifiers for DS pc-grid (audit 06 row 21, 2026-09-17): cells to the top or bottom, a larger row gap */
.pcs-grid--top{align-items:start}
.pcs-grid--bottom{align-items:end}
.pcs-grid--center{align-items:center}
.pcs-grid--rows-xl{row-gap:var(--hsp-xl)}
.pcs-grid--rows-m{row-gap:var(--hsp-m)}
/* pc-author ma margin-block-start:auto dla kart z opinią; w kolumnie formularza spychało to osobę na dół */
.pcs-formsec .pc-author,.pcs-people .pc-author{margin-block-start:0}
/* person row (Piotr 2026-09-17): the photo's top edge level with the name's cap height, not centred on the text block;
   (1lh - 1cap) / 2 in the name's type is the space above the caps (.35em where lh or cap units are missing) */
main .pc-author{align-items:flex-start}
main .pc-author__photo{font-size:var(--hfs-text-m);line-height:var(--pc-lh-body);
  margin-block-start:.35em;margin-block-start:calc((1lh - 1cap) / 2)}
.pc-author__role a,.pc-form__consent a{color:inherit}
/* phone and e-mail lines under a contact person: 24 px lines, so each link keeps a 24 px target spacing
   (WCAG 2.5.8; the 14 px role text gave 19.6 px lines, audit a11y, 2026-09-17) */
.pc-author__role:has(a){line-height:1.5rem}
.pcs-people{display:grid;gap:var(--hsp-m) var(--pc-gutter);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}
/* column rule (Piotr 2026-09-17): the right column starts level with the heading's top, never centred beside it */
.pcs-split{align-items:start;row-gap:var(--hsp-l)}
@media (min-width:1024px){.pc-cta{align-items:start}}
/* white panel on mist (Konferencja on o-power-connect, zostan-wystawca, dla-goscia rejestracja, szablony):
   48 px on all four sides from 1024 px, Piotr's design (2026-09-16); the fluid --hsp-xl never drops to 48 */
@media (min-width:1024px){.pc-on-mist .pc-panel{--panel-pad:3rem}}
/* panel photo beside its text (2026-09-16, Piotr): from 1024 px the photo fills its column from the top of the H2
   to the bottom of the CTA, inside the panel padding. The 3:2 box stays as its minimum height, so beside a
   short text the photo keeps its shape and sets the row. */
@media (min-width:1024px){
  .pc-panel>.pcs-split>:nth-child(2){align-self:stretch;display:flex;flex-direction:column}
  .pc-panel>.pcs-split .pcs-cut{flex:1 0 auto}
  .pc-panel>.pcs-split .pcs-cut::before{content:"";display:block;aspect-ratio:var(--pc-ratio-hero)}
  .pc-panel>.pcs-split .pcs-split__img{position:absolute;inset:0;height:100%;aspect-ratio:auto}
}
.pcs-rows{max-width:calc(1.25*var(--pc-prose))}
/* every DS rows list flush with its heading on phones only (Piotr 2026-09-18, narrowed the same day: from 768 px the
   DS inline padding and tint hover are back). No inline padding, so the hover shows in the text colour and the
   arrow instead of the DS tint box, which would look clipped at the hairline ends */
@media (max-width:767px){
  main .pc-rows :is(a,span){padding-inline:0}
  main .pc-rows a:is(:hover,:focus-visible,.is-hover){background:transparent;color:var(--pc-accent-text)}
}
/* "Wyświetl więcej" under a [data-pcs-more] list (2026-09-18) */
.pcs-more-btn{margin-block-start:var(--hsp-l)}
.pcs-more-btn[hidden]{display:none}
.pcs-more-list>[hidden]{display:none}   /* the items set their own display (grid figures) */
/* rows with a photo per row (2026-09-17): the photo column from 1024 px, crossfade on hover or focus */
.pcs-rows-media__frame{display:none}
.pcs-rows-media{row-gap:var(--hsp-l)}
@media (min-width:1024px){
  .pcs-rows-media__frame{display:grid;aspect-ratio:3/2;overflow:hidden;background:var(--pc-surface-tint)}
  .pcs-rows-media__frame .pcs-rows-media__img{grid-area:1/1;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s var(--pc-ease)}   /* over .pc img{height:auto} */
  .pcs-rows-media__frame .pcs-rows-media__img.is-on{opacity:1}
}
@media (prefers-reduced-motion:reduce){.pcs-rows-media__frame .pcs-rows-media__img{transition:none}}

/* ---- v2, 2026-09-10: poprawki zebrane od agentów stron ---- */
/* tytuły i nagłówki: design system ma overflow-wrap:anywhere, które w wąskich kolumnach łamało
   „Power Connect Award" w środku słowa; break-word łamie tylko słowo dłuższe niż cała kolumna */
.pc main .pc-card__title,.pc main .pc-h1,.pc main .pc-h2,.pc main .pc-h3,.pc main .pc-h4{overflow-wrap:break-word}
/* przycisk z obrysem na atramencie: `.pc-on-dark .pc-btn` (0,2,0) bił `.pc-btn--outline` i dawał drugi
   wypełniony przycisk, także w szablonie cta design systemu; do zgłoszenia */
.pc-on-dark .pc-btn--outline{--btn-bg:transparent;--btn-fg:var(--pc-text);--btn-line:var(--pc-line-strong);
  --btn-bg-hover:var(--pc-line-strong);--btn-fg-hover:var(--pc-surface);--btn-bg-active:var(--pc-spark);--btn-fg-active:var(--pc-ink)}
/* hero 7/5 od 1024 px: since 2026-09-15 text 6, one empty column, photo 5, see "text beside a photo" below */
/* liczby: tyle kolumn, ile liczb; separator tysięcy wąski jak na stronie głównej */
.pcs-stats--two-up{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:1024px){.pcs-stats--cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pcs-stats--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.pcs-stats--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pcs-stats .pc-stat__num{word-spacing:var(--pcw-display-ws)}
/* closing band with the buttons under the text (cta(stack=...)): narrow from 1024 to 1279 px, wide from 1024 px;
   the heading is balanced (2026-09-17, audit 06 row 22, from six page rules) */
:is(.pcs-cta--stack-narrow,.pcs-cta--stack-wide) h2{text-wrap:balance}
@media (min-width:1024px) and (max-width:1279.98px){
  .pc-cta.pcs-cta--stack-narrow{grid-template-columns:minmax(0,1fr);align-items:start}
  .pcs-cta--stack-narrow .pc-cta__actions{justify-content:flex-start}
}
@media (min-width:1024px){
  .pc-cta.pcs-cta--stack-wide{grid-template-columns:minmax(0,1fr);align-items:start}
  .pcs-cta--stack-wide .pc-cta__actions{justify-content:flex-start}
}
/* cover image in a DS ratio (audit 06 row 15, 2026-09-17): img(..., cls='pcs-img-cover pcs-img-cover--hero') */
.pcs-img-cover{display:block;width:100%;height:auto;object-fit:cover}
.pcs-img-cover--hero{aspect-ratio:var(--pc-ratio-hero)}
.pcs-img-cover--media{aspect-ratio:var(--pc-ratio-media)}
/* card grid of tiles (tiles()): two per row from 480 to 1023 px; renamed from pcs-tiles, which clashed with DS pc-tile (audit 06 row 18, 2026-09-17) */
@media (min-width:480px) and (max-width:1023px){.pcs-cards-2up{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* icon tile cards, one look on every subpage (Piotr, 2026-09-16, from the o-power-connect Local Content areas):
   the 64 px square inset by the card padding, the title centred beside it, the body flush under one step of
   space; a page may widen the step under the head (o-power-connect areas: hsp-xl) */
main .pc-card--tile{--card-head-h:auto;padding:var(--hsp-s);gap:var(--hsp-s)}
/* squares stay level in a row when a title runs to three lines: the head aligns to the top, a short title
   centres itself in a box as tall as the square (2026-09-16) */
main .pc-card--tile .pc-card__head{align-items:flex-start}
main .pc-card--tile .pc-card__title{min-height:var(--pc-square-md);display:flex;align-items:center}
main .pc-card--tile .pc-icon-tile{width:var(--pc-square-md);height:var(--pc-square-md)}
/* icon inside a square tile: a share of the tile, not the DS fixed 40 px, so sprite icons draw as tall as the
   Figma drawings, which fill the tile (Piotr 2026-09-17: every icon in a square the same height) */
main .pc-icon-tile .pc-icon{width:70%;height:70%}
main .pc-icon-tile .pcs-icon--drawn{width:100%;height:100%}
main .pc-card--tile :is(.pc-card__title,.pc-card__body){padding:0}
/* wiersze z datą: data bez marginesu, druga linia daty (godziny) krojem tekstu, lista w opisie */
.pcs-dated .pc-agenda__row{grid-template-rows:auto 1fr}
.pcs-dated__text{display:grid;gap:var(--pc-space-2xs);color:var(--pc-text)}
/* hours under the date, in body type; two date-and-hours pairs keep a small step between them */
.pcs-dated__hours{display:block;margin-block:var(--pc-space-3xs) var(--pc-space-2xs);font-family:var(--pc-font-text);
  font-size:var(--hfs-text-m);line-height:var(--pc-lh-ui);white-space:normal}
.pcs-dated__hours:last-child{margin-block-end:0}
/* odpowiedź FAQ z listą: ten sam odstęp od pytania i od kreski, co jednoakapitowa (margines akapitu 1em) */
.pcs-faq__body{display:grid;gap:var(--pc-space-2xs);margin-block:1em}
:is(.pcs-dated__text,.pcs-faq__body) p{margin:0}
:is(.pcs-dated__text,.pcs-faq__body) ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--pc-space-3xs)}
:is(.pcs-dated__text,.pcs-faq__body) li{display:flex;align-items:baseline;gap:var(--hsp-xxs)}
:is(.pcs-dated__text,.pcs-faq__body) li::before{content:"";flex:none;width:var(--pc-space-2xs);height:var(--pc-space-2xs);background:var(--pc-accent);transform:translateY(-0.15em)}
/* linki w tekście: ten sam styl co .pc-prose a w design systemie; bez tego tekst kitu dostawał
   przeglądarkowy niebieski (zgłoszone przez agenta Informacji dla Wystawców, 2026-09-10) */
.pc main :is(p,li,dd,figcaption) a:not([class]):not(:is(.pc-breadcrumb,.pc-rows,.pc-pagination,.pc-tabs,.pc-sponsors) a){
  color:var(--pc-accent-text);text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
.pc main .pc-on-dark :is(p,li) a:not([class]){color:var(--pc-text)}
.pc main :is(p,li,dd,figcaption) a:not([class]):not(:is(.pc-breadcrumb,.pc-rows,.pc-pagination,.pc-tabs,.pc-sponsors) a):is(:hover,:focus-visible){text-decoration-thickness:2px}
/* dokumenty w dwóch językach: widać tylko zestaw w języku strony (html lang ustawia Linguise) */
html[lang^="pl"] [data-doc-lang]:not([data-doc-lang="pl"]),html:not([lang^="pl"]) [data-doc-lang="pl"]{display:none}
@media (min-width:1024px){.pcs-file-groups--single{grid-template-columns:minmax(0,1fr);max-width:calc(1.25*var(--pc-prose))}}
/* galeria: siatka kwadratów, lightbox */
/* 2026-09-16: the home generator's lightbox_css() copies the .pcs-lightbox* lines below at build time; keep them one rule per line from column 0 */
.pcs-photos{display:grid;gap:var(--pc-space-2xs);grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:768px){.pcs-photos{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.pcs-photos{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pcs-photos.pcs-photos--three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (min-width:768px){.pcs-photos.pcs-photos--four{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pcs-photo{display:block;overflow:hidden;background:var(--pc-surface-tint)}
/* person photos: cut-outs with an empty background sit on the subtle tint, on every page (Piotr, 2026-09-16);
   page-built portraits (rada bio dialog, kontakt team) carry the same background in their own rules */
.pc :is(.pc-card--speaker img,.pc-author__photo){background:var(--pc-surface-tint)}
/* a person without a photo (Piotr 2026-09-17): the person icon in white on violet, the photo's size and place */
.pc .pcs-person-nophoto.pcs-person-nophoto{display:block;background:var(--pc-violet);color:var(--pc-white)}   /* over the portrait tint rule */
.pcs-person-nophoto .pc-icon{display:block;width:100%;height:100%}
.pcs-speaker-photo{display:block}
.pcs-speaker-photo.pcs-person-nophoto{width:100%;aspect-ratio:var(--pc-ratio-square)}
.pcs-photo img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;transition:transform var(--pc-t-base) var(--pc-ease)}
.pcs-photo:hover img,.pcs-photo:focus-visible img{transform:scale(1.04)}
.pcs-lightbox{max-width:min(92vw,1600px);max-height:92vh;padding:var(--hsp-s);border:0;background:var(--pc-ink);color:var(--pc-white)}
.pcs-lightbox::backdrop{background:var(--pc-scrim,rgb(0 0 0 / .8))}
.pcs-lightbox img{display:block;max-width:100%;max-height:80vh;width:auto;height:auto;margin-inline:auto}
.pcs-lightbox__close{position:absolute;inset-block-start:var(--hsp-xs);inset-inline-end:var(--hsp-xs);z-index:1}
.pcs-people-grid{row-gap:var(--hsp-l)}
@media (max-width:479px){.pc-grid.pcs-people-grid--two-up{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pc-grid.pcs-people-grid--five{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:768px){.pc-grid.pcs-people-grid--five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.pc-grid.pcs-people-grid--five{grid-template-columns:repeat(5,minmax(0,1fr))}}
.pc-tabs[role="tablist"]{scroll-margin-top:var(--hsp-s)}   /* skok z adresu #…-d2 nie chowa zakładek pod paskiem */
/* rząd zakładek dni stoi pod paskiem przez całą długą listę dnia (audyt menu M-33, 2026-09-11); w niskim
   oknie (1152×636 przy 125 %) pasek z zakładkami zająłby jedną trzecią ekranu */
.pcs-tabbar{background:var(--pc-surface);padding-block:var(--hsp-xs)}
@media (min-height:760px){.pcs-tabbar{position:sticky;top:var(--pcw-nav-h);z-index:1}}
.pcs-tabbar .pc-tabs[role="tablist"]{scroll-margin-top:0}
/* day tabs (Środa, Czwartek, Piątek): each day lights up in its own colour on hover and when selected, Środa in
   the DS deep teal, Czwartek blue, Piątek violet; palette colours, as on the home calendar (Piotr, 2026-09-15) */
.pc-tabs[aria-label^="Dni"]>li:nth-child(2) [role="tab"]:is(:hover,[aria-selected="true"]){background:var(--pc-blue);color:var(--pc-white)}
.pc-tabs[aria-label^="Dni"]>li:nth-child(3) [role="tab"]:is(:hover,[aria-selected="true"]){background:var(--pc-violet);color:var(--pc-white)}
/* text beside a photo, on every page from 1024 px: one empty grid column between text and photo, the layout
   form_section and the World Connect partners grid already had; the 21 px gutter read as too narrow (Piotr,
   2026-09-15). The photo keeps the size it had before (6 columns, 5 in the 7/5 hero) and the text gives up the
   column: text 5, empty, photo 6 (6, empty, 5 in the 7/5 hero). A first version took the column from the photo;
   Piotr asked the same day for the photo at its earlier size. In the photo hero the breadcrumbs and H1 run over
   both columns (`.pcs-hero__head`), so the narrower text column does not break the headings; the lead and
   actions stand beside the photo, top-aligned. Page rows of the same kind follow it (konferencja rows,
   o-power-connect World Connect). Stacked below 1024 px as before. */
@media (min-width:1024px){
  .pcs-hero__text,.pcs-split>:first-child{grid-column:1/span 5;grid-row:2}
  .pcs-hero__media,.pcs-split>:nth-child(2){grid-column:7/span 6;grid-row:2}
  .pcs-split>:first-child,.pcs-split>:nth-child(2){grid-row:1}   /* 2026-09-16: was `.pcs-split>*`, which lost to the
     rules above and left an empty first row plus its row gap above the panel content */
  .pcs-hero__grid:not(:has(.pcs-hero__text)) .pcs-hero__media{grid-column:7/span 6}
  .pcs-hero__grid--75 .pcs-hero__text{grid-column:1/span 6}
  .pcs-hero__grid--75 .pcs-hero__media{grid-column:8/span 5}
  /* column rule (2026-09-16, every photo hero since 2026-09-17): the H1 closes before the photo column, the photo
     from the H1's top edge down beside H1 and lead */
  .pcs-hero__grid .pcs-hero__head{display:contents}
  .pcs-hero__grid .pcs-hero__head>nav{grid-column:1/-1;grid-row:1;margin-block-end:calc(var(--hsp-xl) - var(--hsp-l))}   /* crumbs-H1 gap as in the stack */
  .pcs-hero__grid .pcs-hero__head>.pc-h1{grid-column:1/span 6;grid-row:2;margin:0}
  .pcs-hero__grid--75 .pcs-hero__head>.pc-h1{grid-column:1/span 7}
  .pcs-hero__grid .pcs-hero__text{grid-row:3}
  .pcs-hero__grid .pcs-hero__media{grid-row:2/span 2}
}
/* no divider lines (Piotr, 2026-09-14): sections open without a hairline, partner tier titles without a rule */
.pc-sponsors__title{border-bottom:0}
/* day tabs: weekday in the date's display face and size, as on the home calendar (Piotr, 2026-09-14) */
.pc-tabs [role="tab"]:has(.pc-numeral--s){font-family:var(--pc-font-display);font-size:var(--hfs-h3);line-height:1}
.pcs-pagination{margin-block-start:var(--hsp-xl)}
/* filtry listy */
.pcs-filters{display:grid;gap:var(--hsp-s)}
.pcs-filter{margin:0}
.pcs-chip[aria-pressed="true"]{--btn-bg:var(--pc-ink);--btn-fg:var(--pc-white);--btn-line:var(--pc-ink)}
[data-pcs-hidden]{display:none!important}

/* ---- Zostań Wystawcą (pages/zostan-wystawca.py, 2026-09-10). Tylko tokeny design systemu. ---- */
