/* NL CLINIC — typografia z wiążącego systemu wizualnego.
   Źródło: nl-typografia.css (zestaw „Butikowy": Cormorant Garamond + Alegreya Sans).
   Subsety latin i latin-ext, self-hostowane. */

/* Zapas o wymiarach kroju strony (CLS, 29.09.2026).
   Zanim przyjdą pliki woff2, tekst stoi w kroju systemowym. Bez korekty był on szerszy od
   Alegreya Sans i Cormorant Garamond, więc okruszki, etykiety, akapity i H1 łamały się
   w inne wiersze, a po podmianie treść skakała (na telefonie okruszki o 33 px).
   Poniższe reguły dokładają do tych samych rodzin lokalny krój systemowy przeskalowany
   do szerokości kroju strony (size-adjust) i z jego wysokościami (ascent, descent,
   line-gap). Stoją PRZED regułami plików woff2: przy tych samych opisach wygrywa reguła
   późniejsza, więc po wczytaniu pliku zawsze rysuje on, a wygląd strony się nie zmienia.
   Zakres znaków zapasu to wyłącznie znaki, które pliki woff2 naprawdę mają; każdy inny
   znak idzie dalej do listy font-family jak dotąd.
   Współczynniki zmierzone w Chrome na tekstach serwisu (okruszki, etykiety, akapity,
   H1 z 385 stron) przy szerokościach 320 do 430 px. Arial ma klony o tych samych
   szerokościach (Liberation Sans, Arimo); Roboto (Android) dostaje współczynnik Ariala
   jako przybliżenie. Serif: Times New Roman i klony (Liberation Serif, Tinos); jego
   wersaliki i małe litery mają te same proporcje co Cormorant, a hasło strony głównej
   jest wersalikami (Georgia dawała tam wiersz mniej). Noto Serif (Android) dostaje
   współczynnik zmierzony dla Georgii, też przybliżenie. */
@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:400; src:local('Arial'), local('ArialMT'), local('Liberation Sans'), local('LiberationSans'), local('Arimo'), local('Arimo-Regular'), local('Roboto'), local('Roboto-Regular'); size-adjust:86.7%; ascent-override:103.81%; descent-override:34.6%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-0148,U+014A-017E,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Alegreya Sans'; font-style:italic; font-weight:400; src:local('Arial Italic'), local('Arial-ItalicMT'), local('Liberation Sans Italic'), local('LiberationSans-Italic'), local('Arimo Italic'), local('Arimo-Italic'), local('Roboto Italic'), local('Roboto-Italic'); size-adjust:79%; ascent-override:113.92%; descent-override:37.97%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-0148,U+014A-017E,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:500; src:local('Arial'), local('ArialMT'), local('Liberation Sans'), local('LiberationSans'), local('Arimo'), local('Arimo-Regular'), local('Roboto'), local('Roboto-Regular'); size-adjust:83.5%; ascent-override:107.78%; descent-override:35.93%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-0148,U+014A-017E,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:500; src:local('Noto Serif'), local('NotoSerif'), local('NotoSerif-Regular'); size-adjust:88.7%; ascent-override:104.17%; descent-override:32.36%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-00B4,U+00B6-017F,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:500; src:local('Times New Roman'), local('TimesNewRomanPSMT'), local('Liberation Serif'), local('LiberationSerif'), local('Tinos'), local('Tinos-Regular'); size-adjust:97%; ascent-override:95.26%; descent-override:29.59%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-00B4,U+00B6-017F,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Cormorant Garamond'; font-style:italic; font-weight:400; src:local('Noto Serif Italic'), local('NotoSerif-Italic'); size-adjust:77.8%; ascent-override:118.77%; descent-override:36.89%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-00B4,U+00B6-017F,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }
@font-face { font-family:'Cormorant Garamond'; font-style:italic; font-weight:400; src:local('Times New Roman Italic'), local('TimesNewRomanPS-ItalicMT'), local('Liberation Serif Italic'), local('LiberationSerif-Italic'), local('Tinos Italic'), local('Tinos-Italic'); size-adjust:87.25%; ascent-override:105.9%; descent-override:32.89%; line-gap-override:0%; unicode-range:U+0020-007E,U+00A0-00B4,U+00B6-017F,U+0218-021B,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+20AC,U+2122,U+2212; }

@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:400; font-display:swap; src:url('fonty-nl/alegreya-sans-400-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:400; font-display:swap; src:url('fonty-nl/alegreya-sans-400-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Alegreya Sans'; font-style:italic; font-weight:400; font-display:swap; src:url('fonty-nl/alegreya-sans-400-i-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Alegreya Sans'; font-style:italic; font-weight:400; font-display:swap; src:url('fonty-nl/alegreya-sans-400-i-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:500; font-display:swap; src:url('fonty-nl/alegreya-sans-500-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Alegreya Sans'; font-style:normal; font-weight:500; font-display:swap; src:url('fonty-nl/alegreya-sans-500-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:500; font-display:swap; src:url('fonty-nl/cormorant-garamond-500-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:500; font-display:swap; src:url('fonty-nl/cormorant-garamond-500-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Cormorant Garamond'; font-style:italic; font-weight:400; font-display:swap; src:url('fonty-nl/cormorant-garamond-400-i-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Cormorant Garamond'; font-style:italic; font-weight:400; font-display:swap; src:url('fonty-nl/cormorant-garamond-400-i-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }

:root{
  --nl-font-naglowek:'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --nl-font-tresc:'Alegreya Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --nl-korekta:1.16;
  --nl-waga-naglowka:500;
  --nl-waga-tresci:400;
  --nl-waga-wyroznienia:500;
  --nl-t-display:calc(3.05rem * var(--nl-korekta));
  --nl-t-h1:calc(2.44rem * var(--nl-korekta));
  --nl-t-h2:calc(1.95rem * var(--nl-korekta));
  --nl-t-h3:calc(1.56rem * var(--nl-korekta));
  --nl-t-h4:calc(1.25rem * var(--nl-korekta));
  --nl-t-lead:1.125rem;
  --nl-t-tresc:1rem;
  --nl-t-drobne:0.833rem;
  --nl-t-etykieta:0.78rem;
  --nl-i-display:1.05; --nl-i-h1:1.12; --nl-i-h2:1.2; --nl-i-h3:1.3; --nl-i-h4:1.35;
  --nl-i-tresc:1.65; --nl-i-lead:1.55;
  --nl-miara:54ch; --nl-miara-lead:47ch;
  --nl-zloto-tekst:#866B42;
}

html{ font-size:18px; }
@media (max-width:640px){ html{ font-size:17px; } }

body{
  font-family:var(--nl-font-tresc);
  font-weight:var(--nl-waga-tresci);
  font-size:var(--nl-t-tresc);
  line-height:var(--nl-i-tresc);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  font-feature-settings:"kern" 1, "liga" 1;
}

h1,h2,h3,h4,h5,h6{
  font-family:var(--nl-font-naglowek);
  font-weight:var(--nl-waga-naglowka);
  letter-spacing:0;
  text-wrap:balance;
  font-variant-numeric:lining-nums;
}
h1{ font-size:var(--nl-t-h1); line-height:var(--nl-i-h1); }
h2{ font-size:var(--nl-t-h2); line-height:var(--nl-i-h2); }
h3{ font-size:var(--nl-t-h3); line-height:var(--nl-i-h3); }
h4{ font-size:var(--nl-t-h4); line-height:var(--nl-i-h4); }

p, li, dd, dt, blockquote{ font-size:var(--nl-t-tresc); line-height:var(--nl-i-tresc); }
strong,b{ font-weight:var(--nl-waga-wyroznienia); }
.nl-cena, td, th{ font-variant-numeric:tabular-nums lining-nums; }
a{ text-decoration-thickness:1px; text-underline-offset:0.18em; }
::selection{ background:#5C0632; color:#fff; }

/* Kolumna tekstu: miara nałożona na cały tor artykułu, żeby nagłówki, listy
   i bloki miały tę samą prawą krawędź co akapity. 40em przy Alegreya Sans
   daje około 70 znaków, czyli cel opisany w systemie (--nl-miara: 54ch mierzy
   dla tego kroju tylko ~54 znaki, dlatego stosujemy je jako token pomocniczy). */
[data-tekst]{ max-width:40em; }
[data-tekst] p, [data-tekst] li{ max-width:none; }

/* Odstępstwo zgłoszone właścicielowi: justowanie na życzenie, wbrew regule systemu
   (p, li { text-align:left; hyphens:none }). Włączane wyłącznie przez [data-just]. */
[data-just] p, [data-just] li{ text-align:justify; hyphens:auto; -webkit-hyphens:auto; }
@media (max-width:620px){ [data-just] p, [data-just] li{ text-align:left; hyphens:none; } }

/* Sacramento — krój hasła na stronie głównej. Znacznik prosił o niego od początku,
   ale plik nigdy nie był dostarczony, więc przeglądarki spadały na systemowy `cursive`:
   inny na Macu, inny na Windowsie, inny na Androidzie. Hostujemy u siebie, tak jak
   pozostałe kroje. Podzbiór latin-ext jest konieczny dla polskich znaków. */
@font-face { font-family:'Sacramento'; font-style:normal; font-weight:400; font-display:swap; src:url('fonty-nl/sacramento-400-latin.woff2') format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Sacramento'; font-style:normal; font-weight:400; font-display:swap; src:url('fonty-nl/sacramento-400-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
