/* print.css – arkusz dla druku. Wczytywany z `media="print"`, więc przeglądarka
   pobiera go dopiero przy drukowaniu i nie kosztuje nic przy zwykłym wyświetlaniu.
   -------------------------------------------------------------------------------
   Powstał 2026-09-15 (B5 z listy napraw). Do tego dnia portal nie miał ANI JEDNEJ
   reguły `@media print`. Dopóki powierzchnie były płaską bielą, dawało się to znieść;
   po wdrożeniu warstwy Aero wydruk niósłby gradienty, rozbłyski, cienie i zdjęcie tła
   spod `--page-veil` – szare plamy zjadające toner i pogarszające czytelność.

   Trzy zasady tego arkusza:
   1. Druk jest ZAWSZE jasny. Kto drukuje w motywie ciemnym, dostaje jasną stronę,
      nie czarną kartkę. Stąd nadpisanie tokenów także pod `[data-theme="dark"]` –
      ten selektor ma wyższą specyficzność niż samo `:root` i bez tego by wygrał.
   2. Szkło znika przez TOKEN, nie przez listę selektorów. `--aero-face` dostaje płaską
      biel, `--aero-blur` – `none`, więc każda powierzchnia Aero robi się płaska bez
      wymieniania jej z nazwy. Nowa karta dodana do warstwy będzie poprawna w druku
      od pierwszego dnia, bez pamiętania o tym pliku.
   3. Nawigacja i elementy interaktywne nie istnieją na papierze. Pasek, ticker, szuflada,
      przełącznik motywu, przyciski rozwijania, formularz newslettera – wszystko to
      na wydruku jest albo puste, albo mylące.
   =============================================================================== */

@page { margin: 18mm 16mm; }

/* --- 1. Zawsze jasna paleta, niezależnie od wybranego motywu -------------------- */
:root,
:root[data-theme="dark"] {
  --paper: #FFFFFF;   --paper-2: #FFFFFF;
  --ink: #111111;     --ink-60: #444444;  --ink-30: #777777;
  --rule: rgba(0,0,0,.25);
  --accent: #10446E;  --accent-ink: #0B2E4C;
  --page-bg: #FFFFFF; --card-bg: #FFFFFF;
  --card-border: #B7B7B7;
  --card-shadow: none;
  --page-veil: rgba(255,255,255,1);
  --on-accent: #FFFFFF;
  /* Szkło na płasko – patrz zasada 2 w nagłówku. */
  --aero-face: #FFFFFF;
  --aero-blur: none;
  --aero-rim: #B7B7B7;
  --aero-inset: 0 0 #0000;
  --aero-drop: 0 0 #0000;
}

/* --- 2. Papier bez zdjęcia i bez cieni ----------------------------------------- */
html, body {
  background: #FFFFFF !important;
  background-image: none !important;
  color: var(--ink);
}
*, *::before, *::after {
  box-shadow: none !important;
  text-shadow: none !important;
  -webkit-backdrop-filter: none !important;
          backdrop-filter: none !important;
  animation: none !important;
  transition: none !important;
}

/* --- 3. Czego nie ma na papierze ----------------------------------------------- */
.nav, .ticker, .databar, .topbar,
.drawer, #drawer, .sticky-cta, .skip-link,   /* przełącznik motywu i „Powrót" znikają razem z .topbar / .nav */
.expand-wrap, .expand-btn,
.newsletter, .sponsors,
.search, .tt-bubble,
.footer {
  display: none !important;
}
/* `.page-footer` (jedna linia na podstronach) ZOSTAJE – niesie nazwę serwisu,
   a wydruk bez źródła pochodzenia jest dla prawnika bezużyteczny. */

/* --- 4. Adresy linków w treści artykułu ---------------------------------------- */
/* Wydruk artykułu prawniczego bez odnośników do źródeł traci połowę wartości.
   Tylko linki ZEWNĘTRZNE i tylko w treści – wypisywanie adresu przy każdym
   linku nawigacyjnym zamieniłoby stronę w listę URL-i. */
.art-body a[href^="http"]::after,
.mod-content a[href^="http"]::after {
  content: " <" attr(href) ">";
  font-size: .85em;
  font-weight: 400;
  word-break: break-all;
  color: #444444;
}

/* --- 5. Łamanie stron ----------------------------------------------------------- */
h1, h2, h3, h4 { break-after: avoid-page; }
figure, table, .art-callout, .cal-event, .mod-card, blockquote { break-inside: avoid-page; }
/* Opakowanie tabeli przewija na ekranie; na papierze przewijania nie ma – obcięłoby prawą krawędź. */
.art-table { overflow: visible; }
img { max-width: 100% !important; }

/* --- 6. Artykuł: dokument, nie karta ------------------------------------------- */
/* `.art-hero` i `.art-body` są na ekranie kartami: ramka, promień 16 px, cień i odstęp
   od góry liczony z wysokości paska (`calc(var(--nav-h) + 24px)`). Na papierze pasek jest
   ukryty, więc ten odstęp zostawiał ~86 px pustego u góry pierwszej strony, a ramki
   z promieniem obrysowywały tekst prostokątami, których nikt nie chce w wydruku. */
.art-hero, .art-body {
  margin-top: 0 !important;
  margin-inline: 0 !important;
  max-width: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding-inline: 0 !important;
}
.art-body { padding-block: 1.2rem 0 !important; }

/* --- 7. Szerokość kolumny ------------------------------------------------------- */
/* Na papierze nie ma szyny bocznej ani siatki trzykolumnowej – treść idzie na pełną
   szerokość arkusza, bo inaczej artykuł drukuje się w wąskim słupku na środku kartki. */
.front__wrap, .front__well, .front__rail, .art-wrap, .mod-content, .page-wrap {
  display: block !important;
  max-width: none !important;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* --- 8. Faktura-wzór (artykuł o rachunku) ----------------------------------------- */
/* Kartka nie ma kliknięcia – objaśnienia drukują się rozwinięte (::details-content;
   przeglądarka bez tego pseudoelementu drukuje same pozycje, co nadal jest czytelnym
   wzorem). Arkusz jest dłuższy niż strona, więc może się łamać, ale nie w środku wiersza. */
.art-invoice { break-inside: auto; }
.art-invoice__row { break-inside: avoid-page; }
.art-invoice__row::details-content { content-visibility: visible; block-size: auto; }
.art-invoice__sheet { box-shadow: none !important; }

/* --- 9. Arkusz narzędzia (print-sheet.js: N-19, N-23) ------------------------------ */
/* „Zapisz PDF” w narzędziu drukuje NIE stronę, tylko arkusz: tytuł, metryczkę, dane wpisane,
   tabelę wyniku, podstawę i zastrzeżenie. Arkusz siedzi na końcu <body> z `hidden`; gdy
   narzędzie ma wynik, <body> dostaje `psheet-ready` i wszystko poza arkuszem znika z kartki.
   Bez wyniku klasa znika i drukuje się zwykła strona.

   Arkusz to dokument Fundacji, więc rządzi nim Księga tożsamości (wersja 1.0 z 28.10.2026),
   nie paleta ekranu: barwy `--doc-*` z tokens.css, jeden krój (Inter; liczby w tabelach
   zostają w CMU Concrete – księga, rozdz. 4), marginesy one pagera, nagłówek i stopka papieru.
   Wewnątrz arkusza tokeny portalu są przemapowane na tokeny dokumentu – tabele narzędzi
   (ich @media print) dostają paletę księgi bez osobnych reguł.

   Strona `psheet` (strona nazwana – dotyczy wyłącznie arkusza, nie zwykłego wydruku podstron):
   • marginesy one pagera: 2,65 / 2,0 / 2,0 / 2,0 cm (księga, rozdz. 5);
   • pierwsza strona: margines górny 0,8 cm – tyle od krawędzi stoi nagłówek papieru, który
     arkusz ma w treści (lockup poziomy 1,4 cm wysokości, księga, rozdz. 2);
   • kolejne strony: nagłówek papieru tekstem w polu marginesu, 7,5 pt, szary, do prawej;
   • każda strona: stopka papieru w trzech kolumnach – adres, numery rejestrowe, kontakt –
     7 pt, szary, linia 0,5 pt nad nią. Teksty pól przychodzą przez zmienne `--psheet-*`
     ustawiane na <html> z data/organization.json (pole marginesu dziedziczy po korzeniu).
     Pole marginesu nie składa dwóch krojów w jednym tekście, więc nazwa Fundacji w stopce
     nie jest pogrubiona (odstępstwo od księgi wymuszone techniką). */
@page psheet {
  size: A4;
  margin: 2.65cm 2cm 2cm 2cm;
  /* Krój, stopień i barwę pola marginesu dziedziczą po stronie – jedna deklaracja na wszystkie. */
  font: 400 7pt/1.35 var(--f-body); color: var(--doc-muted); white-space: pre-line;
  @top-right {
    content: var(--psheet-head, none);
    font-size: 7.5pt; text-align: right; vertical-align: bottom; padding-bottom: var(--doc-s3);
  }
  @bottom-left   { content: var(--psheet-foot-1, none); border-top: .5pt solid var(--doc-line); margin-top: .4cm; padding-top: var(--doc-s2); vertical-align: top; }
  @bottom-center { content: var(--psheet-foot-2, none); border-top: .5pt solid var(--doc-line); margin-top: .4cm; padding-top: var(--doc-s2); vertical-align: top; text-align: left; }
  @bottom-right  { content: var(--psheet-foot-3, none); border-top: .5pt solid var(--doc-line); margin-top: .4cm; padding-top: var(--doc-s2); vertical-align: top; text-align: left; }
  @bottom-right-corner { content: counter(page) " / " counter(pages); margin-top: .4cm; padding-top: var(--doc-s2); vertical-align: top; text-align: center; }
}
@page psheet:first {
  margin-top: .8cm;
  @top-right { content: none; }
}

/* Skala rem na kartce: moduły narzędzi mierzą tekst w rem (.92rem itd.); przy korzeniu 10,3 pt
   tekst ciągły wypada na 9,5 pt – stopień tekstu one pagera z księgi – a proporcje między
   stopniami zostają takie jak na ekranie. */
:root:has(body.psheet-ready) { font-size: 10.3pt; }
body.psheet-ready > :not(.psheet) { display: none !important; }
body.psheet-ready > .psheet { display: block !important; }
.psheet {
  page: psheet;
  --ink: var(--doc-ink); --c-fg: var(--doc-ink); --ink-60: var(--doc-muted);
  --rule: var(--doc-line); --accent: var(--doc-blue); --accent-ink: var(--doc-navy);
  font: 400 9.5pt/1.3 var(--f-body); color: var(--doc-ink); background: var(--doc-paper);
  -webkit-print-color-adjust: exact; print-color-adjust: exact;   /* panel metryczki bez opcji „grafika tła” */
}
/* Nagłówek papieru: lockup poziomy 1,4 cm, z prawej redakcja i adres (księga, rozdz. 2 i 4). */
.psheet__head { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--doc-s5); }
.psheet__logo { display: block; height: 1.4cm; width: auto; }
.psheet__letterhead { font: 400 7.5pt/1.35 var(--f-body); color: var(--doc-muted); text-align: right; }
/* Linia nagłówka: odcinek pomarańczowy 2,25 pt na szerokość znaku (= wysokość lockupu), dalej
   granatowa 0,5 pt do prawego marginesu (księga, rozdz. 5). */
.psheet__rule { display: flex; align-items: center; margin: var(--doc-s3) 0 var(--doc-s5); }
.psheet__rule::before { content: ""; width: 1.4cm; border-top: 2.25pt solid var(--doc-orange); }
.psheet__rule::after { content: ""; flex: 1; border-top: .5pt solid var(--doc-navy); }
/* Etykieta sekcji: 7,5 pt bold, wersaliki ze stylu, rozstrzelenie 1 pt, pomarańcz. */
.psheet__label { font: 700 7.5pt/1.2 var(--f-body); text-transform: uppercase; letter-spacing: 1pt;
  color: var(--doc-orange); margin: var(--doc-s5) 0 var(--doc-s1); }
.psheet__rule + .psheet__label { margin-top: 0; }
.psheet__title { font: 700 16pt/1.15 var(--f-body); color: var(--doc-navy); margin: 0 0 var(--doc-s4); }
/* Metryczka na panelu: tekst nie dotyka krawędzi, etykiety na panelu błękitem znaku. */
.psheet__meta { display: grid; grid-template-columns: max-content 1fr; gap: var(--doc-s1) var(--doc-s4);
  background: var(--doc-panel); padding: var(--doc-s3) var(--doc-s4); font-size: 8.5pt; line-height: 1.3; }
.psheet__meta dt { font-weight: 700; color: var(--doc-blue); }
.psheet__meta dd { color: var(--doc-ink); }
.psheet__body { display: grid; gap: var(--doc-s4); margin-top: var(--doc-s5); }
/* Nagłówek bloku 12 pt bold granat; śródtytuł 10 pt bold atrament (księga, rozdz. 4). */
.psheet__body h3, .psheet__body summary { font: 700 10pt/1.3 var(--f-body); color: var(--doc-ink); }
/* Podpis tabeli (h3 z <caption>, print-sheet.js) to nagłówek bloku, nie śródtytuł – reguła po h3. */
.psheet__body h2, .psheet__body .psheet__caption { font: 700 12pt/1.25 var(--f-body); color: var(--doc-navy); text-align: left; }
.psheet__caption { margin-bottom: var(--doc-s2); break-after: avoid-page; }
.psheet__body table { width: 100%; border-collapse: collapse; }
.psheet__body th, .psheet__body td { border-bottom-width: .5pt; border-color: var(--doc-line); }
.psheet__body tr, .psheet__body li { break-inside: avoid-page; }
.psheet__sources { padding-left: var(--doc-s4); font-size: 8pt; line-height: 1.35; color: var(--doc-muted);
  display: grid; gap: var(--doc-s1); word-break: break-word; }
.psheet__www { color: var(--doc-blue); }
/* Zastrzeżenie i adres wyniku: podpis/opis – 8 pt, szary. */
.psheet__note { margin-top: var(--doc-s5); font: 400 8pt/1.35 var(--f-body); color: var(--doc-muted); display: grid; gap: var(--doc-s2); }
.psheet__url { word-break: break-all; }
