/* ── Self-hosted fonts (Playfair Display, Source Serif 4) ─ variable woff2, latin + latin-ext.
   Zastępuje Google Fonts: przeglądarka nie kontaktuje się już z fonts.gstatic.com. ── */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('assets/fonts/playfair-display-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: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('assets/fonts/playfair-display-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: 'Playfair Display';
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url('assets/fonts/playfair-display-italic-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: 'Playfair Display';
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url('assets/fonts/playfair-display-italic-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: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('assets/fonts/source-serif-4-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: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('assets/fonts/source-serif-4-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: 'Source Serif 4';
  font-style: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('assets/fonts/source-serif-4-italic-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: 'Source Serif 4';
  font-style: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url('assets/fonts/source-serif-4-italic-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;
}

/* ═══════════════════════════════════════════════
   ORACLE — Editorial Magazine CSS
   Aesthetic: serious broadsheet, black & ecru,
   Playfair Display headlines, Source Serif body
═══════════════════════════════════════════════ */

:root {
  --ink:        #0f0e0c;
  --ink-light:  #3a3530;
  --ink-muted:  #7a746c;
  --paper:      #f5f0e8;
  --paper-dark: #ede7d9;
  --rule:       #c8bfaf;
  --rule-dark:  #8a7f70;
  --accent:     #9b1c1c;
  --accent-alt: #1a3a5c;

  /* category colours */
  --cat-geopolitics: #9b1c1c;
  --cat-economics:   #1a3a5c;
  --cat-technology:  #1a4a2a;
  --cat-society:     #4a2a1a;
  --cat-environment: #1a4a3a;
  --cat-general:     #3a3530;

  --font-display: 'Playfair Display', Georgia, serif;
  --font-body:    'Source Serif 4', Georgia, serif;
  --font-ui:      'Georgia', serif;

  --max-w: 860px;
  --max-w-wide: 1100px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  font-size: 18px;
  background: var(--paper);
  color: var(--ink);
}

body {
  font-family: var(--font-body);
  font-weight: 300;
  line-height: 1.7;
  background: var(--paper);
  min-height: 100vh;
}

a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ── Skybox: pasek „ucho" nad winietą — najnowszy felieton ── */

.skybox-bar {
  background: var(--paper-dark);
  border-bottom: 1px solid var(--rule);
}

.skybox-rotator {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  display: grid;        /* wszystkie slajdy w jednej komórce — nakładają się */
  overflow: hidden;     /* kadr: slajdy wjeżdżające/wyjeżdżające pionowo są przycięte */
}

.skybox-slide {
  grid-area: 1 / 1;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.5rem 1.5rem;
  white-space: nowrap;
  transform: translateY(100%); /* domyślnie czeka pod kadrem */
  opacity: 0;
  pointer-events: none;
  transition: transform 0.6s ease, opacity 0.6s ease;
}
.skybox-slide.is-active {       /* w kadrze */
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}
.skybox-slide.is-prev {         /* wyjechał górą */
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
}
.skybox-slide:hover { text-decoration: none; }
.skybox-slide:hover .skybox-title { color: var(--accent); }

.skybox-tag {
  flex: none;
  font-family: var(--font-body);
  font-size: 0.58rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #f5f0e8;
  background: var(--ink);
  padding: 0.22em 0.6em;
  border-radius: 2px;
}
.skybox-tag--felieton { background: #4a2a1a; }
.skybox-tag--wild     { background: #9b1c1c; }
.skybox-tag--reportaz { background: #1a4a3a; }
.skybox-tag--slowo    { background: #3a2a4a; }
.skybox-tag--sprostowanie { background: #7a1212; }

.skybox-title {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink);
}

.skybox-author {
  flex: none;
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.82rem;
  color: var(--ink-muted);
}

@media (max-width: 700px) {
  /* Mobile: tag wyrównany do góry, tytuł zawija się do 2 linii (zamiast ucięcia w 1). */
  .skybox-slide { padding: 0.45rem 1rem; gap: 0.5rem; align-items: flex-start; }
  .skybox-author { display: none; } /* oszczędność miejsca na górze ekranu */
  .skybox-title {
    font-size: 0.82rem;
    line-height: 1.3;
    white-space: normal;          /* nadpisz nowrap z desktopu — pozwól zawijać */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;        /* maks. 2 linie, dalej wielokropek */
    line-clamp: 2;
    text-overflow: ellipsis;
  }
}

/* ── Header ─────────────────────────────────── */

.site-header {
  border-bottom: 3px double var(--ink);
  padding: 2rem 1.5rem 1.5rem;
  text-align: center;
  background: var(--paper);
}

.header-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.header-meta {
  display: flex;
  justify-content: center;
  gap: 2rem;
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin-bottom: 1.2rem;
}

/* Desktop: data przechodzi do slotu obok boxów; .header-meta nie pokazujemy. */
.header-date-desktop { display: none; }

@media (min-width: 701px) {
  .header-meta { display: none; }
  .header-date-desktop {
    display: block;
    font-size: 0.65rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--ink-muted);
    text-align: right;
  }
  .info-boxes-slot--desktop {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.6rem;
  }
  /* Tagline bez dolnego marginesu i z ciasnym line-height na desktopie —
     tekst siada równo z dolną krawędzią boxów (1.7 zostawiało luz pod tekstem). */
  .site-tagline { margin-bottom: 0; line-height: 1.1; }
}

.header-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;   /* tytuł+tagline dosunięte do dołu, równo z boxami pogodowymi */
  gap: 1.5rem;
}

.header-left {
  grid-column: 1;
  /* Inner block elements inherit text-align: center from .site-header,
     so meta/title/tagline all center within this column. */
}

.site-title {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(3.5rem, 10vw, 6.5rem);
  font-weight: 900;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--ink);
  text-decoration: none;
  margin-bottom: 0.5rem;
}

.header-info-boxes {
  grid-column: 2;
  justify-self: end;
  display: flex;
  gap: 0.6rem;
  align-items: stretch;
}

.header-info-box {
  width: 120px;
  border: 1px solid var(--rule);
  padding: 0.7rem 0.7rem 0.6rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
}

.header-info-box .info-label {
  order: 1;
  font-size: 0.55rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-muted);
  text-align: center;
  line-height: 1.3;
}

.header-info-box .info-sub { order: 2; }
.header-info-box .info-icon { order: 3; }
.header-info-box .info-value { order: 4; }

.header-info-box .info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  color: var(--ink);
  line-height: 0;
  margin: 0.15rem 0;
}

.header-info-box .info-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.header-info-box .info-value {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--ink);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

.header-info-box .info-sub {
  font-size: 0.58rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-muted);
  white-space: nowrap;
}

@media (max-width: 860px) {
  .header-row {
    grid-template-columns: 1fr;
    gap: 1.2rem;
    justify-items: center;
  }
  .header-left,
  .header-info-boxes {
    grid-column: 1;
    justify-self: center;
  }
}

/* Desktop: pokazujemy boxy w nagłówku po prawej (slot--desktop), mobile-slot ukryty.
   Mobile: oba sloty ukryte (pogoda przeniesiona do header-meta jako sam tekst). */
.info-boxes-slot--mobile { display: none; }

/* Tekstowe odpowiedniki dla mobile — ukryte na desktopie. */
.header-weather-text,
.header-sun-text { display: none; }

@media (max-width: 700px) {
  /* Schowaj oba sloty z boxami, pokaż tekstową wersję pogody/wschodu. */
  .info-boxes-slot--desktop,
  .info-boxes-slot--mobile { display: none; }
  .header-weather-text,
  .header-sun-text { display: inline; }

  .header-meta {
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.6rem;
    line-height: 1.4;
  }

  /* Data wyróżniona: półgruba (waga 600 jest wczytana) + ciemniejszy kolor.
     Pogoda i wschód/zachód zostają w domyślnym lekkim, stłumionym wariancie. */
  .header-date {
    font-weight: 600;
    color: var(--ink);
  }

  /* Mniejsze marginesy boczne nagłówka → więcej miejsca na tytuł. */
  .site-header { padding: 1.5rem 0.8rem 1.2rem; }

  /* Większy tytuł na mobile. */
  .site-title { font-size: clamp(4.3rem, 19vw, 6.5rem); }

  /* Flash przed leadem (DOM ma lead → flash, swap przez order). */
  .top-row-inner .lead-story-v2 { order: 2; }
  .top-row-inner .flash-box     { order: 1; }
}

/* Mobile: boxes stacked vertically, each box laid out horizontally.
   Wizualna kolejność: label → sub (opis) → [push right] → icon → value (temperatura).
   Sub box (sun) bez sub-line — kolejność i tak działa, bo brak elementu. */
@media (max-width: 700px) {
  .header-info-boxes {
    flex-direction: column;
    align-items: stretch;
    gap: 0.45rem;
    width: 100%;
    max-width: 340px;
  }
  .header-info-box {
    width: 100%;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 0.5rem;
    padding: 0.45rem 0.85rem;
  }
  .header-info-box .info-label {
    order: 1;
    text-align: left;
    line-height: 1.2;
    flex-shrink: 0;
    font-size: 0.55rem;
  }
  .header-info-box .info-sub {
    order: 2;
    flex-shrink: 0;
    font-size: 0.55rem;
  }
  .header-info-box .info-icon {
    order: 3;
    width: 22px;
    height: 22px;
    margin: 0 0 0 auto;  /* auto-left pushes icon + value to the right */
    flex-shrink: 0;
  }
  .header-info-box .info-value {
    order: 4;
    margin-left: 0;
    font-size: 0.9rem;
    flex-shrink: 0;
  }
}

.site-title:hover { text-decoration: none; }

.site-tagline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.9rem;
  color: var(--ink-muted);
  letter-spacing: 0.04em;
  margin-bottom: 1.5rem;
}


.header-rule {
  height: 1px;
  background: var(--rule);
  margin-top: 1.2rem;
}

.site-header--compact .site-title {
  font-size: clamp(2rem, 6vw, 3.5rem);
  margin-bottom: 0.3rem;
}

.site-header--compact .site-tagline { display: none; }
.site-header--compact { padding: 1.2rem 1.5rem 1rem; }

/* ── Category tags ──────────────────────────── */

.category-tag {
  display: inline-block;
  font-size: 0.6rem;
  font-family: var(--font-body);
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 0.2em 0.7em;
  border: 1px solid currentColor;
  color: var(--cat-general);
}

.cat-geopolitics { color: var(--cat-geopolitics); }
.cat-economics   { color: var(--cat-economics); }
.cat-technology  { color: var(--cat-technology); }
.cat-society     { color: var(--cat-society); }
.cat-environment { color: var(--cat-environment); }

/* ── Type tags (per article type) ───────────── */

.type-tag {
  display: inline-block;
  font-size: 0.6rem;
  font-family: var(--font-body);
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 0.2em 0.7em;
  background: var(--ink);
  color: var(--paper);
}
.type-bold-pl    { background: #1a3a5c; }
.type-bold-world { background: #0f0e0c; }
.type-felieton   { background: #4a2a1a; }
.type-wild       { background: #1c5a62; } /* teal — odróżnia Syntezy od czerwonych badge'y Nowe/Za chwilę */
.type-flash      { background: #9b1c1c; color: #f5f0e8; }
.type-reportaz   { background: #1a4a3a; }
.type-slowo      { background: #3a2a4a; }
.type-sprostowanie { background: #7a1212; }
.type-prognoza-dnia { background: #8a6d1a; color: #f5f0e8; }

/* ── Kolegium na stronie artykułu (Temat dnia) — 3 „zdania odrębne" pod tekstem ── */
.article-kolegium { margin: 2.5rem 0 1rem; background: var(--paper-dark); padding: 1.8rem 2rem; }
.kolegium-title { font-family: var(--font-display); font-size: 1.4rem; font-weight: 800; margin: 0 0 1.2rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ink); }
/* Zdania odrębne: każde stanowisko na całą szerokość; tekst wypełnia 2/3, a w pustej 1/3
   siedzi mały okrągły awatar — na przemian po prawej (kol. 3, przy lewej krawędzi) i po
   lewej (kol. 1, przy prawej krawędzi). Awatar zawsze u góry kolumny. */
.kolegium-cols { display: flex; flex-direction: column; gap: 1.8rem; }
.kolegium-col { display: grid; grid-template-columns: 2fr 1fr; gap: 1.4rem; align-items: start; border-top: 2px solid var(--ink); padding-top: 0.7rem; }
.kolegium-col:nth-child(even) { grid-template-columns: 1fr 2fr; }
/* grid-row:1 na obu — bez tego auto-flow w nieparzystych wierszach (awatar w DOM pierwszy,
   w kolumnie 2; body w kolumnie 1) spycha body do następnego wiersza i awatar ląduje NAD tekstem. */
.kolegium-body { grid-column: 1; grid-row: 1; min-width: 0; }
.kolegium-av { grid-column: 2; grid-row: 1; justify-self: start; }
.kolegium-col:nth-child(even) .kolegium-body { grid-column: 2; }
.kolegium-col:nth-child(even) .kolegium-av { grid-column: 1; justify-self: end; }
.kolegium-av a { display: block; width: 56px; height: 56px; border-radius: 50%; overflow: hidden; border: 1px solid var(--rule-dark, #cfc6ba); background: #fff; }
.kolegium-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.kolegium-av-ph { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; font: 700 1.5rem/1 var(--font-display); color: var(--rule-dark, #cfc6ba); }
.kolegium-name { font-family: var(--font-display); font-weight: 700; font-size: 1.08rem; line-height: 1.1; margin: 0 0 0.45rem; color: var(--ink); }
.kolegium-prose { font-family: var(--font-body); font-size: 0.95rem; line-height: 1.55; color: var(--ink-light); margin: 0 0 0.6rem; }
.kolegium-bet { font-family: var(--font-body); font-size: 0.82rem; line-height: 1.4; color: var(--ink-muted); border-left: 3px solid var(--accent); padding-left: 0.6rem; margin: 0; }
.kolegium-bet span { font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; font-size: 0.7rem; }

/* „Prognoza, którą sprawdzimy" — wydzielona, sprawdzalna teza artykułu (z kolejki weryfikacji).
   Oddziela nasz zakład od faktycznego tła; wizualnie spokrewniona z .kolegium-bet (akcentowa krawędź). */
.verify-claim { max-width: 680px; margin: 2rem 0 1rem; background: var(--paper-dark); border-left: 4px solid var(--accent); padding: 1rem 1.3rem; }
.verify-claim-label { display: block; font-family: var(--font-body); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; font-size: 0.7rem; color: var(--accent); margin-bottom: 0.35rem; }
.verify-claim-text { font-family: var(--font-display); font-size: 1.05rem; line-height: 1.4; color: var(--ink); margin: 0; }
@media (max-width: 700px) {
  .article-kolegium { padding: 1.3rem 1.1rem; }
  .kolegium-cols { gap: 1.3rem; }
  .kolegium-col, .kolegium-col:nth-child(even) { grid-template-columns: 44px 1fr; gap: 0.9rem; }
  .kolegium-col .kolegium-av, .kolegium-col:nth-child(even) .kolegium-av { grid-column: 1; justify-self: center; }
  .kolegium-col .kolegium-body, .kolegium-col:nth-child(even) .kolegium-body { grid-column: 2; }
  .kolegium-av a { width: 40px; height: 40px; }
}

/* ── Top row: lead 65% + flash 35% ──────────── */

.top-row {
  border-bottom: 1px solid var(--rule);
  background: var(--paper);
}

.top-row-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  padding: 3rem 1.5rem;
  display: grid;
  grid-template-columns: 65% 35%;
  gap: 2.5rem;
  align-items: stretch;
}

@media (max-width: 860px) {
  .top-row-inner {
    grid-template-columns: 1fr;
    gap: 2rem;
    padding: 2rem 1.5rem;
  }
}

.lead-story-v2 {
  padding-right: 1rem;
  /* Wyrównanie label-rowa z .flash-box po prawej: flash-box ma 2px border + 1.3rem padding,
     więc jego label siedzi ~22px niżej niż label leada, jeśli lead nie ma własnego paddingu. */
  padding-top: calc(1.3rem + 2px);
}
@media (max-width: 860px) {
  /* Mobile: flash-box trafia nad lead, brak różnicy do wyrównania. */
  .lead-story-v2 { padding-top: 0; }
}

.lead-story-v2 .lead-label {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 1.4rem;
  flex-wrap: wrap;
}

.lead-story-v2 .lead-headline {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4.5vw, 3rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
}

.lead-story-v2 .lead-headline a { color: var(--ink); }
.lead-story-v2 .lead-headline a:hover { text-decoration: none; color: var(--accent); }

.lead-story-v2 .lead-subheadline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.15rem;
  color: var(--ink-light);
  line-height: 1.45;
  margin-bottom: 1.2rem;
  max-width: 600px;
}

.lead-story-v2 .lead-excerpt {
  font-size: 1rem;
  color: var(--ink-light);
  line-height: 1.7;
  max-width: 600px;
  margin-bottom: 1.5rem;
}

.lead-story-v2 .lead-footer {
  display: flex;
  align-items: center;
  gap: 1.6rem;
  flex-wrap: wrap;
}

.lead-empty {
  padding: 4rem 1rem;
  text-align: center;
}

/* „Za chwilę" — alert imminentnych newsów. Pełna czerwona ramka + delikatny
   czerwonawy tint tła, żeby wyraźnie odróżnić blok od reszty strony.
   (Aby zamiast tintu użyć neutralnej szarości: background: #eae6de;) */

.flash-box {
  border: 2px solid var(--accent);
  background: #f3e7e3;
  padding: 1.3rem 1.4rem;
}

@media (max-width: 860px) {
  .flash-box {
    padding: 1.2rem 1.3rem;
  }
}

.flash-tag-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 0.9rem;
}

.flash-tag {
  display: inline-block;
  font-size: 0.62rem;
  font-family: var(--font-body);
  font-weight: 700;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  padding: 0.25em 0.7em;
  background: var(--accent);
  color: var(--paper);
  text-decoration: none;
}
a.flash-tag:hover { text-decoration: none; opacity: 0.85; }

.flash-time {
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.flash-headline {
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin-bottom: 0.9rem;
}

.flash-headline a { color: var(--ink); }
.flash-headline a:hover { color: var(--accent); text-decoration: none; }

.flash-sub {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink-light);
  line-height: 1.4;
  margin-bottom: 0.8rem;
}

.flash-body p {
  font-size: 0.88rem;
  color: var(--ink-light);
  line-height: 1.6;
  margin-bottom: 0.8rem;
}

.flash-body p:last-child { margin-bottom: 0; }

.flash-empty {
  border-left-color: var(--rule);
  color: var(--ink-muted);
}

/* ── Słowo na jutro (homepage) ────────────────
   Strukturalny rytm taki sam jak Sport (col 1 = 35%, pionowa linia na tej granicy),
   ale ton wizualny — kremowy „paper-dark", identyczny z .daily-grid. Sekcja czyta
   się jak rozszerzenie siatki dziennej, nie jak osobny kolorowy pasek. */
.slowo-section {
  padding: 2.2rem 1.5rem;
  background: var(--paper-dark);
  color: var(--ink);
  border-bottom: 1px solid var(--rule);
}
.slowo-outer {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}
.slowo-row {
  /* 3 równe kolumny + gap 0 — taki sam rytm jak .daily-grid-inner powyżej.
     Pionowe hairline'y między komórkami przez border-right (jak .grid-card).
     max-width siedzi na .slowo-outer — tu już nie powtarzamy. */
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  align-items: stretch;
}

.slowo-label-col,
.slowo-text-col,
.slowo-img-col {
  padding: 1.8rem 2rem;              /* identyczne padding co .grid-card */
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.slowo-label-col {
  border-right: 1px solid var(--rule);
}
/* TEXT-COL bez border-right — kartonik nie potrzebuje hairline'a od strony tekstu,
   ma własną ramkę. Hairline zostaje tylko między label a text. */

.slowo-label-col {
  text-align: center;
  align-items: center;
  gap: 0.8rem;
}
.slowo-tag { margin: 0; }
.slowo-word {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4.5vw, 3.2rem);
  font-weight: 900;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1;
  margin: 0;
}
.slowo-word a {
  color: inherit;
  text-decoration: none;
}
.slowo-word a:hover { text-decoration: underline; }

.slowo-text-col {
  gap: 0.8rem;
}
.slowo-sub {
  font-family: var(--font-body);
  font-style: italic;
  font-size: 1rem;
  line-height: 1.4;
  color: var(--ink-light);
  margin: 0;
}
.slowo-excerpt {
  font-family: var(--font-body);
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0;
}
.slowo-more {
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid var(--rule);
  align-self: flex-start;
  padding-bottom: 1px;
}
.slowo-more:hover { border-bottom-color: var(--accent); }

.slowo-img-col {
  align-items: center;
}
.slowo-img-col img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  border: 1px solid var(--rule);
  background: var(--paper);
}
.slowo-img-col:hover img { opacity: 0.92; }

@media (max-width: 860px) {
  /* tablet — 2 kolumny: label+kartonik góra (pół na pół), text na dole pełna szerokość */
  .slowo-row { grid-template-columns: 1fr 1fr; }
  .slowo-label-col { border-right: 1px solid var(--rule); }
  .slowo-text-col  { grid-column: 1 / -1; border-right: none; border-top: 1px solid var(--rule); }
  .slowo-img-col   { border-right: none; }
}
@media (max-width: 560px) {
  .slowo-section { padding: 1.8rem 1.5rem; }
  .slowo-row { grid-template-columns: 1fr; }
  .slowo-label-col,
  .slowo-text-col,
  .slowo-img-col { padding: 1.4rem 1rem; border-right: none; }
  .slowo-label-col { border-bottom: 1px solid var(--rule); }
  .slowo-img-col   { border-bottom: 1px solid var(--rule); align-items: stretch; }
  .slowo-img-col img { max-width: 320px; margin: 0 auto; }
  .slowo-word { font-size: 2rem; }
}

/* ── Słowa na jutro — archiwum (slowa.php) ────
   Galeria kartoników: miniaturka + data + słowo. Bez excerptów.
   3 kolumny na desktopie, 2 na tablecie, 1 na mobile. */
.slowa-grid {
  list-style: none;
  margin: 2rem auto 0;
  padding: 0;
  max-width: var(--max-w-wide);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem 1.8rem;
}
.slowa-card { margin: 0; }
.slowa-card-link {
  display: block;
  text-decoration: none;
  color: var(--ink);
}
.slowa-card-link:hover .slowa-card-thumb img { opacity: 0.9; }
.slowa-card-link:hover .slowa-card-word { text-decoration: underline; }

.slowa-card-thumb {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--paper-dark);
  border: 1px solid var(--rule);
  margin-bottom: 0.8rem;
}
.slowa-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.slowa-card-thumb--empty {
  background: repeating-linear-gradient(45deg, var(--paper-dark) 0 6px, var(--paper) 6px 12px);
}
.slowa-card-date {
  display: block;
  font-family: var(--font-body);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin-bottom: 0.25rem;
  font-variant-numeric: tabular-nums;
}
.slowa-card-word {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1.7rem;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

@media (max-width: 860px) { .slowa-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) {
  .slowa-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .slowa-card-word { font-size: 1.5rem; }
}

/* ── Cartoon lightbox (overlay z miniatury słowa na stronie głównej) ─── */
.cartoon-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(15, 14, 12, 0.94);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  padding: 2rem;
  gap: 1.2rem;
}
.cartoon-lightbox[hidden] { display: none; }
.cartoon-lightbox-img {
  max-width: min(92vw, 1024px);
  max-height: 80vh;
  width: auto;
  height: auto;
  object-fit: contain;
  background: var(--paper);
  border: 1px solid rgba(245, 239, 224, 0.15);
}
.cartoon-lightbox-close {
  position: absolute;
  top: 0.8rem;
  right: 1rem;
  background: transparent;
  border: none;
  color: #f5efe0;
  font-size: 2.8rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.4rem 0.7rem;
  font-family: var(--font-display);
}
.cartoon-lightbox-close:hover { color: #fff; }
.cartoon-lightbox-link {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: #f5efe0;
  text-decoration: none;
  border-bottom: 1px solid rgba(245, 239, 224, 0.5);
  padding-bottom: 2px;
}
.cartoon-lightbox-link:hover { border-bottom-color: #f5efe0; }

@media (max-width: 600px) {
  .cartoon-lightbox { padding: 1rem; }
  .cartoon-lightbox-close { font-size: 2.2rem; top: 0.4rem; right: 0.6rem; }
  .cartoon-lightbox-img { max-height: 75vh; }
}

/* ── Daily grid (3 cards) ──────────────────── */

.daily-grid {
  background: var(--paper-dark);
  padding: 3rem 1.5rem 3.5rem;
  border-bottom: 1px solid var(--rule);
}

.daily-grid-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
}

@media (max-width: 860px) { .daily-grid-inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .daily-grid-inner { grid-template-columns: 1fr; } }

.grid-card {
  padding: 1.8rem 2rem;
  border-right: 1px solid var(--rule);
}

.grid-card:last-child,
.grid-card:nth-child(3n) { border-right: none; }

@media (max-width: 860px) {
  .grid-card:nth-child(3n) { border-right: 1px solid var(--rule); }
  .grid-card:nth-child(2n) { border-right: none; }
  .grid-card:last-child    { border-right: none; }
}

@media (max-width: 560px) {
  .grid-card { border-right: none; border-bottom: 1px solid var(--rule); }
  .grid-card:last-child { border-bottom: none; }
}

.grid-card-meta {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 0.8rem;
  flex-wrap: wrap;
}

.grid-card-meta time {
  font-size: 0.62rem;
  color: var(--ink-muted);
  letter-spacing: 0.05em;
}

.grid-card-headline {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 0.7rem;
}

.grid-card-headline a { color: var(--ink); }
.grid-card-headline a:hover { color: var(--accent); text-decoration: none; }

.grid-card-excerpt {
  font-size: 0.84rem;
  color: var(--ink-light);
  line-height: 1.6;
}

/* ── Polska / Świat: dwa działy (two-desk band) ─────────── */

.desk-band {
  background: var(--paper);
  padding: 3rem 1.5rem 3.5rem;
  border-bottom: 1px solid var(--rule);
}

.desk-band-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}

.desk-col { padding: 0 2.5rem; }
.desk-col--pl    { border-right: 1px solid var(--rule); padding-left: 0; }
.desk-col--world { padding-right: 0; }

@media (max-width: 700px) {
  .desk-band-inner { grid-template-columns: 1fr; }
  .desk-col { padding: 0; }
  .desk-col--pl {
    border-right: none;
    border-bottom: 1px solid var(--rule);
    padding-bottom: 1.8rem;
    margin-bottom: 1.8rem;
  }
}

.desk-head { margin-bottom: 1.5rem; }

.desk-card {
  padding: 1.1rem 0;
  border-top: 1px solid var(--rule);
}
.desk-card:first-of-type { border-top: none; padding-top: 0; }

.desk-card-headline {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 0.5rem;
}
.desk-card-headline a { color: var(--ink); }
.desk-card-headline a:hover { color: var(--accent); text-decoration: none; }

.desk-card-excerpt {
  font-size: 0.84rem;
  color: var(--ink-light);
  line-height: 1.6;
  margin-bottom: 0.6rem;
}

.desk-card-meta {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  flex-wrap: wrap;
}
.desk-card-meta time {
  font-size: 0.62rem;
  color: var(--ink-muted);
  letter-spacing: 0.05em;
}
.desk-card-author {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.8rem;
  color: var(--ink-light);
}

.desk-empty {
  font-size: 0.84rem;
  color: var(--ink-muted);
  font-style: italic;
  padding: 1rem 0;
}

/* ── Felieton + Synteza: wiersz opinii ──────────────────── */

.opinion-row {
  background: var(--paper-dark);
  padding: 3.5rem 1.5rem;
  border-bottom: 1px solid var(--rule);
}

.opinion-row-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
}

@media (max-width: 700px) {
  .opinion-row-inner { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* Wiersz opinii zwija się do JEDNEJ karty (hero zabrał jedną opinię i nie ma sprostowania
   na zapełnienie) — wtedy ocalała karta dostaje pełniejszą, wyśrodkowaną prezentację. */
.opinion-row-inner--single {
  grid-template-columns: minmax(0, 760px);
  justify-content: center;
}

/* Sprostowanie jako karta w zwolnionym miejscu wiersza opinii (hero = felieton/synteza). */
.spros-card { border-left: 2px solid var(--accent); padding-left: 1.4rem; }
.spros-card-ref {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.85rem;
  color: var(--ink-muted);
  margin-bottom: 0.7rem;
}
.spros-card-ref a { color: var(--accent); border-bottom: 1px solid transparent; }
.spros-card-ref a:hover { border-bottom-color: var(--accent); text-decoration: none; }

/* Pasek sprostowania pod heroem (hero = bold, sprostowanie ≤24h). Wyrazisty, ciemnoczerwony
   blok — sprostowanie to sygnaturowa rubryka, ma rzucać się w oczy. Znika, gdy brak. */
.spros-strip {
  background: var(--accent);
  padding: 1.15rem 1.5rem;
}
.spros-strip-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
  display: flex;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
}
.spros-strip-tag {
  flex: none;
  font-family: var(--font-body);
  font-size: 0.64rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  background: #f5f0e8;
  padding: 0.28em 0.75em;
}
.spros-strip-headline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.2rem;
  line-height: 1.3;
  color: #f7f1e8;
}
.spros-strip-inner:hover .spros-strip-headline { text-decoration: underline; text-underline-offset: 3px; }
.spros-strip-author {
  font-size: 0.82rem;
  font-style: italic;
  color: rgba(247, 241, 232, 0.78);
}

.opinion-card-meta {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}
.opinion-card-meta time {
  font-size: 0.62rem;
  color: var(--ink-muted);
  letter-spacing: 0.05em;
}

.opinion-card-headline {
  font-family: var(--font-display);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.015em;
  margin-bottom: 0.8rem;
}
.opinion-card-headline a { color: var(--ink); }
.opinion-card-headline a:hover { color: var(--accent); text-decoration: none; }

.opinion-card-sub {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.02rem;
  color: var(--ink-light);
  line-height: 1.45;
  margin-bottom: 0.8rem;
}

.opinion-card-excerpt {
  font-size: 0.92rem;
  color: var(--ink-light);
  line-height: 1.7;
  margin-bottom: 0.8rem;
}

.opinion-card-author {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.9rem;
  color: var(--ink-muted);
}

/* ── Reportaż full-width ───────────────────── */

.reportaz-section {
  padding: 5rem 1.5rem;
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
}

/* Outer matches the grid width above; row places image (35%) and text (65%) side by side. */
.reportaz-outer {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.reportaz-row {
  display: grid;
  grid-template-columns: 35% 1fr;
  gap: 2.5rem;
  align-items: start;
}

.reportaz-row--no-photo {
  grid-template-columns: 1fr;
}

.reportaz-inner {
  /* fills the 65% column; no max-width constraint here */
}

.reportaz-hero {
  margin: 0;
}

.reportaz-hero a { display: block; }

.reportaz-hero img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 360px;
  object-fit: cover;
  background: var(--paper-dark);
}

.reportaz-hero figcaption {
  font-size: 0.68rem;
  font-style: italic;
  color: var(--ink-muted);
  margin-top: 0.5rem;
  text-align: right;
  letter-spacing: 0.03em;
}

@media (max-width: 700px) {
  .reportaz-section {
    /* Pozwól zdjęciu rozciągnąć się od krawędzi do krawędzi mobile viewportu —
       padding kompensowany ujemnym marginesem na .reportaz-hero. */
    padding: 3rem 1.5rem;
  }
  .reportaz-row {
    grid-template-columns: 1fr;
    gap: 1.4rem;
  }
  .reportaz-hero {
    margin-left: -1.5rem;
    margin-right: -1.5rem;
  }
  .reportaz-hero img {
    max-height: none;
    width: 100%;
  }
  .reportaz-hero figcaption {
    padding: 0 1.5rem;
  }
}

/* Article view: hero matches the text column width (max-w, ~860px). */
.article-hero-wrap {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 2.5rem 1.5rem 0;
}

.article-hero {
  margin-bottom: 0;
}

.article-hero img {
  width: 100%;
  height: auto;
  max-height: 520px;
  object-fit: cover;
  background: var(--paper-dark);
}

/* When hero is present, reduce top padding of article-wrap (spacing reads as one unit) */
.article-wrap--with-hero {
  padding-top: 2.5rem;
}

/* ── Flash article view (different from regular long-form articles) ── */

.article-wrap--flash {
  max-width: 600px;
  padding: 3rem 1.5rem 4rem;
  border-left: 3px solid var(--accent);
  background: var(--paper-dark);
  margin-top: 2.5rem;
  margin-bottom: 4rem;
}

.article-wrap--flash .article-headline {
  font-size: clamp(1.4rem, 3.5vw, 2rem);
  line-height: 1.2;
  margin-bottom: 0.8rem;
}

.article-wrap--flash .article-subheadline {
  font-size: 1rem;
  margin-bottom: 1rem;
}

.article-wrap--flash .article-rule {
  margin-bottom: 1.5rem;
}

.article-wrap--flash .article-body p {
  font-size: 1rem;
  line-height: 1.65;
  max-width: none;
}

.article-wrap--flash .article-body p:first-child {
  font-size: 1.05rem;
  font-weight: 400;
  color: var(--ink-light);
  line-height: 1.65;
}

/* Disable the drop cap for flash — single short paragraph doesn't need it. */
.article-wrap--flash .article-body p:first-child::first-letter {
  float: none;
  font-size: inherit;
  font-weight: inherit;
  margin: 0;
  line-height: inherit;
  font-family: inherit;
  color: inherit;
}

.reportaz-meta {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin-bottom: 1.5rem;
}

.reportaz-meta time {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.reportaz-headline {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 3.2rem);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.025em;
  margin-bottom: 1.2rem;
}

.reportaz-headline a { color: var(--ink); }
.reportaz-headline a:hover { color: var(--accent); text-decoration: none; }

.reportaz-sub {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.3rem;
  color: var(--ink-light);
  line-height: 1.4;
  margin-bottom: 1.6rem;
}

.reportaz-excerpt {
  font-size: 1.05rem;
  color: var(--ink-light);
  line-height: 1.75;
  margin-bottom: 2rem;
}

.reportaz-more {
  font-size: 0.8rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
}

.reportaz-more:hover { text-decoration: none; opacity: 0.75; }

/* ── Sport — jutrzejsze wyniki ───────────────── */

.sport-section {
  padding: 2.2rem 1.5rem;
  background: #8b1818;            /* głęboka czerwień — wyraźnie odróżnia sekcję */
  color: #ede4d2;                 /* ciepły kremowy zamiast czystej bieli */
  border-bottom: 1px solid #0f0e0c;
}

.sport-outer {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.sport-row {
  /* 3 równe komórki + gap 0 — taki sam rytm jak .daily-grid-inner i .slowo-row.
     Pionowe hairline'y między komórkami przez border-right (jak .grid-card),
     ale w kremowym wariancie dopasowanym do czerwonego tła. */
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  align-items: stretch;
}

.sport-label-col,
.sport-results-col {
  padding: 1.8rem 2rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.sport-label-col,
.sport-results-col:not(.sport-results-col--b) {
  border-right: 1px solid rgba(245, 239, 224, 0.25);
}

.sport-label-col {
  text-align: center;
  align-items: center;
  gap: 0.8rem;
}

.sport-label {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4.5vw, 3.2rem);
  font-weight: 900;
  letter-spacing: -0.02em;
  color: #f5efe0;
  line-height: 1;
  margin: 0;
}

.sport-eyebrow {
  font-family: var(--font-body);
  font-size: 0.6rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(245, 239, 224, 0.7);
  margin: 0;
  font-weight: 600;
}
.sport-eyebrow--under-label {
  /* gdy eyebrow siedzi pod „Sport" w col 1, daj mu trochę oddechu. */
  margin-top: 0.2rem;
}

.sport-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.sport-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: 0.28rem 0;
  border-bottom: 1px solid rgba(245, 239, 224, 0.15);
}

.sport-item:last-child {
  border-bottom: none;
}

.sport-teams {
  font-family: var(--font-body);
  font-size: 0.88rem;
  color: #ede4d2;
  flex: 1 1 auto;
  min-width: 0;
}

.sport-score {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: #f5efe0;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  white-space: nowrap;
  flex-shrink: 0;
}

@media (max-width: 860px) {
  /* tablet — label u góry pełna szerokość, wyniki w 2 kolumnach pod spodem */
  .sport-row { grid-template-columns: 1fr 1fr; }
  .sport-label-col {
    grid-column: 1 / -1;
    text-align: left;
    align-items: flex-start;
    border-right: none;
    border-bottom: 1px solid rgba(245, 239, 224, 0.25);
  }
}
@media (max-width: 600px) {
  /* mobile — wszystko w 1 kolumnie, hairline'y przechodzą na border-bottom */
  .sport-section { padding: 1.8rem 1.5rem; }
  .sport-row { grid-template-columns: 1fr; }
  .sport-label-col,
  .sport-results-col {
    padding: 1.2rem 1rem;
    border-right: none;
  }
  .sport-label-col { border-bottom: 1px solid rgba(245, 239, 224, 0.25); }
  .sport-results-col:not(.sport-results-col--b) { border-bottom: 1px solid rgba(245, 239, 224, 0.25); }
  .sport-label { font-size: 1.8rem; }
  .sport-teams { font-size: 0.82rem; }
  .sport-score { font-size: 0.95rem; }
  .sport-item  { padding: 0.22rem 0; }
}

/* ── Polecamy — sekcja własnych poleceń (granat, mirror Sportu). Nazwy klas
   neutralne (nie „ad/ads"), żeby blokery reklam nie ukrywały sekcji. ─── */

.polecamy-section {
  padding: 2.2rem 1.5rem;
  background: #15314d;            /* granat — odróżnia sekcję od czerwonego Sportu */
  color: #ede4d2;
  border-bottom: 1px solid #0f0e0c;
}

.polecamy-outer {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.polecamy-row {
  /* Etykieta 35% — taki sam rytm jak Sport i kolumna zdjęcia reportażu, więc
     pierwsza pozycja równa się z tekstem reportażu powyżej. gap:0, bo kolumny
     rozdzielają pionowe linie (jak w siatce 3-kolumnowej). */
  display: grid;
  grid-template-columns: 35% 1fr 1fr;
  gap: 0;
  align-items: stretch;
}

.polecamy-label-col {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding-right: 2rem;
}

.polecamy-label {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 3.4rem);
  font-weight: 900;
  letter-spacing: -0.02em;
  color: #f5efe0;
  line-height: 1;
  margin: 0;
}

.polecamy-cell {
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  text-decoration: none;
  color: #ede4d2;
  border-left: 1px solid rgba(245, 239, 224, 0.22);  /* pionowa linia podziału jak w siatce 3-kol. */
  padding: 0.4rem 2rem;
}
.polecamy-cell:hover { text-decoration: none; }
.polecamy-cell:hover .polecamy-cell-img  { opacity: 0.9; }
.polecamy-cell:hover .polecamy-cell-text { text-decoration: underline; }

.polecamy-cell-img {
  display: block;
  width: 80%;                  /* desktop: −20%, reszta to puste granatowe tło, wyśrodkowane */
  margin: 0 auto;
  aspect-ratio: 1 / 1;        /* kwadrat niezależnie od proporcji pliku */
  object-fit: cover;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(245, 239, 224, 0.3);  /* delikatna kremowa ramka na granacie */
  transition: opacity 0.15s ease;
}

.polecamy-cell-text {
  display: block;
  margin-top: 0.7rem;
  font-family: var(--font-display);
  font-size: 1rem;
  line-height: 1.3;
  color: #ede4d2;
}

.polecamy-cell--empty {
  align-items: center;        /* placeholder wyśrodkowany w pełnowysokościowej komórce */
}

.polecamy-cell-placeholder {
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(245, 239, 224, 0.5);
}

@media (max-width: 700px) {
  /* Mobile bez zmian: 2 kolumny, bez linii podziału, etykieta u góry. */
  .polecamy-section { padding: 1.8rem 1.5rem; }
  .polecamy-row {
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    align-items: start;
  }
  .polecamy-label-col { grid-column: 1 / -1; display: block; text-align: left; padding-right: 0; margin-bottom: 0.3rem; }
  .polecamy-label { font-size: 1.8rem; }
  .polecamy-cell { display: block; border-left: none; padding: 0; }
  .polecamy-cell-img { width: 85%; }
}

/* ── Empty state ────────────────────────────── */

.empty-state {
  max-width: var(--max-w);
  margin: 5rem auto;
  text-align: center;
  padding: 0 1.5rem;
}

/* ── Lead story ─────────────────────────────── */

.lead-story {
  border-bottom: 1px solid var(--rule);
  padding: 4rem 1.5rem;
  background: var(--paper);
}

.lead-inner {
  max-width: var(--max-w);
  margin: 0 auto;
}

.lead-label {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.lead-marker {
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.lead-headline {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 3.2rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
}

.lead-headline a { color: var(--ink); }
.lead-headline a:hover { text-decoration: none; color: var(--accent); }

.lead-subheadline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.2rem;
  color: var(--ink-light);
  line-height: 1.45;
  margin-bottom: 1.2rem;
  max-width: 680px;
}

.lead-excerpt {
  font-size: 1rem;
  color: var(--ink-light);
  line-height: 1.7;
  max-width: 680px;
  margin-bottom: 1.8rem;
}

.lead-footer {
  display: flex;
  align-items: center;
  gap: 2rem;
  flex-wrap: wrap;
}

.lead-time {
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.read-more {
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 1px;
}

.read-more:hover { text-decoration: none; opacity: 0.75; }

/* ── Archive ────────────────────────────────── */

.archive-section {
  padding: 3.5rem 1.5rem 5rem;
  background: var(--paper-dark);
}

.archive-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.archive-heading {
  font-family: var(--font-display);
  font-size: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--ink-muted);
  border-top: 2px solid var(--ink);
  padding-top: 1rem;
  margin-bottom: 2.5rem;
}

.archive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 0;
}

.archive-card {
  padding: 1.8rem 2rem;
  border-bottom: 1px solid var(--rule);
  border-right: 1px solid var(--rule);
}

.archive-card:nth-child(3n) { border-right: none; }

@media (max-width: 860px) {
  .archive-grid { grid-template-columns: 1fr 1fr; }
  .archive-card:nth-child(3n) { border-right: 1px solid var(--rule); }
  .archive-card:nth-child(2n) { border-right: none; }
}

@media (max-width: 560px) {
  .archive-grid { grid-template-columns: 1fr; }
  .archive-card { border-right: none; }
}

.archive-card-meta {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 0.8rem;
  flex-wrap: wrap;
}

.archive-card-meta time {
  font-size: 0.62rem;
  color: var(--ink-muted);
  letter-spacing: 0.05em;
}

.archive-card-headline {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 0.7rem;
}

.archive-card-headline a { color: var(--ink); }
.archive-card-headline a:hover { color: var(--accent); text-decoration: none; }

.archive-card-excerpt {
  font-size: 0.82rem;
  color: var(--ink-light);
  line-height: 1.6;
}

.archive-more {
  margin-top: 2.5rem;
  text-align: center;
  border-top: 1px solid var(--rule);
  padding-top: 2rem;
}

.archive-more-link {
  font-family: var(--font-body);
  font-size: 0.78rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
}

.archive-more-link:hover { text-decoration: none; opacity: 0.75; }

/* ── Archive page ───────────────────────────── */

.archive-page {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 3rem 1.5rem 6rem;
}

.archive-page-header {
  margin-bottom: 2.5rem;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 1.5rem;
}

.archive-page-header .back-link {
  display: inline-block;
  margin-bottom: 1.2rem;
}

.archive-page-title {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.015em;
  margin-bottom: 0.4rem;
}

.archive-page-subtitle {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink-muted);
}

.archive-list {
  list-style: none;
  counter-reset: archive;
  padding: 0;
  margin: 0;
}

.archive-list-item {
  display: grid;
  grid-template-columns: 11rem 1fr auto;
  align-items: baseline;
  gap: 1.2rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--rule);
}

.archive-list-item:last-child { border-bottom: none; }

.archive-list-date {
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-variant-numeric: tabular-nums;
}

.archive-list-headline {
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}

.archive-list-headline:hover {
  color: var(--accent);
  text-decoration: none;
}

.archive-list-item .category-tag {
  font-size: 0.55rem;
  padding: 0.18em 0.55em;
  justify-self: end;
  white-space: nowrap;
}

@media (max-width: 640px) {
  .archive-list-item {
    grid-template-columns: 1fr;
    gap: 0.4rem;
    padding: 1.1rem 0;
  }
  .archive-list-item .category-tag { justify-self: start; }
}

.archive-pagination {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.pagination-link {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
}

.pagination-link:hover { text-decoration: none; opacity: 0.75; }

.pagination-disabled {
  color: var(--ink-muted);
  border-bottom-color: var(--rule);
  cursor: default;
  pointer-events: none;
}

/* ── Detailed archive list (z subheadline) ──────
   Używane na stronach archiwum per typ (polska/swiat/syntezy/felietony/reportaze).
   Bez category-tag (typ jest w h1 strony), za to z subheadline pod nagłówkiem.
   Grid 2-kolumnowy: data | (nagłówek + zajawka stacked). */
.archive-list--detailed .archive-list-item {
  grid-template-columns: 11rem 1fr;
  row-gap: 0.4rem;
  column-gap: 1.2rem;
  align-items: start;
}
.archive-list--detailed .archive-list-date {
  grid-column: 1;
  grid-row: 1;
  padding-top: 0.15rem; /* drobne wyrównanie do baseline nagłówka */
}
.archive-list--detailed .archive-list-headline { grid-column: 2; }
.archive-list--detailed .archive-list-subheadline {
  grid-column: 2;
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-style: italic;
  line-height: 1.55;
  color: var(--ink-muted);
  margin: 0;
  max-width: 62ch;
}
@media (max-width: 640px) {
  .archive-list--detailed .archive-list-item { grid-template-columns: 1fr; }
  .archive-list--detailed .archive-list-date { grid-column: 1; grid-row: 1; }
  .archive-list--detailed .archive-list-headline { grid-column: 1; }
  .archive-list--detailed .archive-list-subheadline { grid-column: 1; }
}

/* ── Flash stream (za-chwile.php) ────────────────
   Każdy artykuł w czerwonym pudełku w stylu .flash-box ze strony głównej.
   Stack pionowy, gap między nimi, paginacja 10/strona. */
.flash-stream {
  display: flex;
  flex-direction: column;
  gap: 1.6rem;
  margin-top: 1.5rem;
}
.flash-stream-item {
  border: 2px solid var(--accent);
  background: #f3e7e3;
  padding: 1.5rem 1.6rem 1.6rem;
}

.flash-stream-meta {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 0.9rem;
}
.flash-stream-date {
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-variant-numeric: tabular-nums;
}
/* .flash-stream-type dziedziczy z .flash-tag (czerwony pill) */

.flash-stream-headline {
  font-family: var(--font-display);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin: 0 0 0.6rem;
}
.flash-stream-headline a { color: var(--ink); }
.flash-stream-headline a:hover { color: var(--accent); text-decoration: none; }

.flash-stream-sub {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--ink-light);
  margin: 0 0 0.8rem;
}

.flash-stream-body p {
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--ink-light);
  margin: 0 0 0.7rem;
}
.flash-stream-body p:last-child { margin-bottom: 0; }

.pagination-status {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

/* ── Article page ───────────────────────────── */

.article-wrap {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 3.5rem 1.5rem 6rem;
}

.article-header { margin-bottom: 2.5rem; }

.article-header-meta {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  margin-bottom: 1.5rem;
}
/* Type-tag (Reportaż/Polska/Świat/…) jako klikalny pill — używany na karcie artykułu,
   w lead/grid na main page, w meta artykułu. Bez podkreślenia w hover, lekka opacity. */
a.type-tag { text-decoration: none; }
a.type-tag:hover { text-decoration: none; opacity: 0.85; }

.back-link {
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.back-link:hover { color: var(--ink); text-decoration: none; }

.article-headline {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4.5vw, 2.8rem);
  font-weight: 700;
  line-height: 1.18;
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
}

.article-subheadline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.15rem;
  color: var(--ink-light);
  line-height: 1.5;
  margin-bottom: 1.5rem;
  max-width: 640px;
}

.article-byline {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  margin-bottom: 1.5rem;
}

.byline-label {
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-family: var(--font-body);
}

.byline-time {
  font-size: 0.65rem;
  letter-spacing: 0.08em;
  color: var(--ink-muted);
}

.byline-author {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink);
}

a.byline-author-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  text-decoration: none;
  vertical-align: middle;
}

a.byline-author-link .byline-author {
  border-bottom: 1px solid var(--rule-dark, #cfc6ba);
}

a.byline-author-link:hover .byline-author {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

.byline-av {
  width: 30px;
  height: 30px;
  flex: none;
  border-radius: 50%;
  overflow: hidden;
  background: var(--paper-dark);
  border: 1px solid var(--rule-dark, #cfc6ba);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font: 700 0.85rem/1 var(--font-display);
  color: var(--ink-muted);
}

.byline-av img { width: 100%; height: 100%; object-fit: cover; display: block; }

.lead-author {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.88rem;
  color: var(--ink);
  margin-right: auto;
}

.grid-card-author {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.78rem;
  color: var(--ink-muted);
  margin: -0.4rem 0 0.6rem;
}

.article-rule {
  height: 1px;
  background: linear-gradient(to right, var(--ink) 60px, var(--rule) 60px);
  margin-bottom: 2.5rem;
}

/* Sprostowanie — odsyłacz do pierwotnej prognozy (kontekst + link) */
.sprostowanie-ref {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.9rem;
  color: var(--ink-muted);
  max-width: 680px;
  margin: -1.4rem 0 3.2rem;
  padding-left: 1rem;
  border-left: 2px solid var(--accent);
}
.sprostowanie-ref a { color: var(--accent); border-bottom: 1px solid transparent; }
.sprostowanie-ref a:hover { border-bottom-color: var(--accent); text-decoration: none; }

/* Article body typography */
.article-body p {
  font-size: 1.05rem;
  line-height: 1.8;
  color: var(--ink-light);
  margin-bottom: 1.4rem;
  max-width: 680px;
}

.article-body p:first-child {
  font-size: 1.18rem;
  color: var(--ink);
  font-weight: 400;
  line-height: 1.75;
}

.article-body .article-subhead {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 700;
  font-size: 1.4rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ink);
  max-width: 680px;
  margin: 2.5rem 0 1rem;
}

/* Lista działów na stronie „O nas" — czysta, kreskowana (reset zeruje padding/bullet ul). */
.about-sections {
  list-style: none;
  max-width: 680px;
  margin: 0 0 1.4rem;
}
.about-sections li {
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--ink-light);
  padding: 0.55rem 0;
  border-top: 1px solid var(--rule);
}
.about-sections li:first-child { border-top: none; }
.about-sections strong { color: var(--ink); font-weight: 700; }

/* Drop cap on first paragraph */
.article-body p:first-child::first-letter {
  font-family: var(--font-display);
  font-size: 4rem;
  font-weight: 900;
  float: left;
  line-height: 0.75;
  margin-right: 0.08em;
  margin-top: 0.12em;
  color: var(--ink);
}

/* ── Share row ────────────────────────────────── */

.article-share {
  margin-top: 3rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--rule);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  color: var(--ink-muted);
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 0.8rem;
  align-items: center;
}
.share-label {
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.68rem;
  font-weight: 600;
  margin-right: 0.4rem;
}
.share-link {
  color: var(--accent);
  background: transparent;
  border: none;
  padding: 0;
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 400;             /* button UA-stylesheet defaultuje na bold; Source Serif 4 nie ma 700 — bez tego buttony spadały na system sans */
  line-height: inherit;
  cursor: pointer;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s;
}
.share-link:hover {
  text-decoration: none;
  border-bottom-color: var(--accent);
}
.share-sep {
  color: var(--rule-dark, var(--ink-muted));
  user-select: none;
}

/* ── Słowo na jutro — kartonik (cartoon hero) ──
   Wycentrowany broadsheet-art-print look. Cienka kreska wokół jak rama galeryjna,
   dechu po bokach, na cream tle nie kontrastuje agresywnie. Wpisuje się w rytm strony
   bez krzyku, ale podkreśla, że to JEDEN OBRAZ, nie ozdobnik. */
.slowo-cartoon {
  margin: 0 auto;
  padding: 0;
  max-width: 760px;
  text-align: center;
}
.slowo-cartoon img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
}
@media (max-width: 760px) {
  .slowo-cartoon img { border-left: none; border-right: none; }
}

/* ── Słowo na jutro — meta na końcu artykułu ──
   Cienka linia rozdzielająca + dwie linijki: powiedziane przez + etymologia.
   Mała, służbowa, bez ekspresji. To są etykiety dokumentu, nie ozdobnik. */
.slowo-meta {
  margin-top: 2.5rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--rule);
  font-family: var(--font-body);
  font-size: 0.78rem;
  line-height: 1.55;
  color: var(--ink-muted);
}
.slowo-meta-line { margin: 0 0 0.35rem; }
.slowo-meta-line:last-child { margin-bottom: 0; }
.slowo-meta-label {
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--ink-light);
  margin-right: 0.25em;
}

/* ── Tagi (dyskretna stopka) ──────────────────
   Celowo malusieńkie i wyblakłe — czytelnik widzi je dopiero po skończeniu artykułu.
   Wartość siedzi w internal-link juice + meta tagach, nie w wizualnym wołaniu o uwagę. */
.article-tags {
  margin-top: 2rem;
  font-size: 0.7rem;
  letter-spacing: 0.04em;
  color: var(--ink-muted);
  opacity: 0.55;
  line-height: 1.4;
}
.article-tags .tags-label {
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.62rem;
  margin-right: 0.4em;
}
.article-tags .tags-link {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px dotted transparent;
}
.article-tags .tags-link:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
  opacity: 1;
}
.article-tags .tags-sep {
  user-select: none;
}

/* ── Sources ────────────────────────────────── */

.article-sources {
  margin-top: 3.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule);
}

.sources-heading {
  font-family: var(--font-display);
  font-size: 0.65rem;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin-bottom: 0.5rem;
}

.sources-note {
  font-size: 0.78rem;
  color: var(--ink-muted);
  margin-bottom: 1rem;
}

.sources-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.sources-list li {
  font-size: 0.8rem;
  line-height: 1.5;
  color: var(--ink-light);
  padding-left: 1rem;
  border-left: 2px solid var(--rule);
}

.sources-list a {
  color: var(--accent-alt);
}

.sources-list a:hover {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.source-date {
  display: block;
  font-size: 0.68rem;
  color: var(--ink-muted);
  margin-top: 0.1rem;
}

/* ── Article disclaimer (drobny druk) ───────── */

.article-disclaimer {
  margin-top: 3rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--rule);
  font-size: 0.62rem;
  line-height: 1.7;
  letter-spacing: 0.02em;
  font-style: italic;
  color: var(--ink-muted);
}

/* ── Article nav ────────────────────────────── */

.article-nav {
  margin-top: 3.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule);
}

.article-nav-link {
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-muted);
}
.article-nav-sep {
  color: var(--ink-muted);
  user-select: none;
  margin: 0 0.5rem;
  opacity: 0.5;
}

/* ── Error page ─────────────────────────────── */

.error-page {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 5rem 1.5rem 7rem;
  text-align: center;
}

.error-code {
  font-family: var(--font-display);
  font-size: clamp(6rem, 18vw, 11rem);
  font-weight: 900;
  line-height: 0.95;
  letter-spacing: -0.05em;
  color: var(--ink);
  font-variant-numeric: lining-nums;
}

.error-rule {
  width: 60px;
  height: 1px;
  background: var(--ink);
  margin: 1.8rem auto 2rem;
}

.error-title {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 4vw, 2.2rem);
  font-weight: 700;
  letter-spacing: -0.015em;
  margin-bottom: 1rem;
}

.error-message {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--ink-light);
  line-height: 1.6;
  max-width: 480px;
  margin: 0 auto 2.8rem;
}

.error-back {
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
}

.error-back:hover { text-decoration: none; opacity: 0.75; }

/* ── Footer ─────────────────────────────────── */

.site-footer {
  border-top: 3px double var(--ink);
  padding: 2.5rem 1.5rem;
  background: var(--paper);
  text-align: center;
}

.footer-inner {
  max-width: var(--max-w-wide);
  margin: 0 auto;
}

.footer-note {
  font-size: 0.72rem;
  color: var(--ink-muted);
  max-width: 580px;
  margin: 0 auto 0.8rem;
  line-height: 1.7;
}

.footer-contact {
  font-family: var(--font-body);  /* explicit — Chrome czasem zrywa inheritance dla <a> w środku */
  font-size: 0.72rem;
  font-weight: 300;
  line-height: 1.7;
  letter-spacing: 0.04em;
  color: var(--ink-muted);
  margin-bottom: 0.6rem;
}
.footer-contact a {
  font: inherit;                  /* canonical reset — bierz wszystkie font-* od rodzica, koniec UA quirków */
  color: inherit;
  letter-spacing: inherit;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s;
}
.footer-contact a:hover {
  border-bottom-color: var(--ink-muted);
}

/* ── Polityka prywatności ─────────────────────
   Skromnie, mniejszym fontem niż artykuły — to dokument służbowy, nie tekst do czytania
   wieczorem przy lampce wina. */
.policy-page .article-headline {
  font-size: 2.4rem;
}
.policy-page .article-subheadline {
  font-size: 0.85rem;
  color: var(--ink-muted);
}
.policy-page .article-body p {
  font-size: 0.88rem;
  line-height: 1.7;
}

.footer-copy {
  font-size: 0.62rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

/* ── Misc ───────────────────────────────────── */

.empty-state .lead-inner {
  text-align: center;
  padding: 4rem 0;
}

.empty-msg, .error-msg {
  color: var(--ink-muted);
  font-style: italic;
}

.empty-msg code, .error-msg code {
  font-family: monospace;
  background: var(--paper-dark);
  padding: 0.1em 0.4em;
  font-style: normal;
  font-size: 0.85em;
}

/* ── Masthead — granatowy nagłówek (wspólny dla wszystkich stron, includes/site_header.php) ── */
:root{--hz-head:#15263f;--temat-bg:#e9dfc6}
.site-header{background:var(--hz-head);padding:1rem 1.5rem .85rem;border-bottom-color:rgba(245,240,232,.45)}
.site-title{color:var(--paper);font-size:clamp(2.6rem,6.5vw,4.1rem);margin-bottom:.35rem}
.site-title:hover{color:#fff}
.site-tagline{color:rgba(245,240,232,.72);margin-bottom:0;transform:translateX(-1.3rem)}
.header-meta{color:rgba(245,240,232,.6)}
.header-date{color:var(--paper)}
.header-date-desktop{color:rgba(245,240,232,.62)}
.header-rule{background:rgba(245,240,232,.22);margin-top:.7rem}
.header-info-boxes{gap:.45rem}
.header-info-box{background:transparent;border-color:rgba(245,240,232,.28);width:94px;padding:.45rem .35rem .4rem;gap:.22rem}
.header-info-box .info-label,.header-info-box .info-sub{color:rgba(245,240,232,.58)}
.header-info-box .info-label{font-size:.5rem;line-height:1.18;letter-spacing:.1em}
.header-info-box .info-value{color:var(--paper);font-size:.84rem}
.header-info-box .info-sub{font-size:.52rem}
.header-info-box .info-icon{color:rgba(245,240,232,.82);width:17px;height:17px;margin:.05rem 0}
.header-info-box--date{width:auto;min-width:90px;padding:.45rem .6rem .4rem}
.header-info-box--date .hz-jutro-label{font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(245,240,232,.58);line-height:1.18}
.header-info-box--date .hz-jutro-wday{font-family:var(--font-display);font-weight:700;font-size:.95rem;color:var(--paper);line-height:1.05}
.header-info-box--date .hz-jutro-date{font-size:.56rem;letter-spacing:.04em;text-transform:uppercase;color:rgba(245,240,232,.72);line-height:1.2;white-space:nowrap}
@media(max-width:860px){ .site-tagline{transform:none} }
@media(max-width:700px){ .site-header{padding:1.5rem .8rem 1.2rem} } /* mobilny padding masthead (re-assert po regule bazowej) */

/* ── „Koniec blisko" (nekrolog) — klepsydra: czerń na bieli, gruba ramka, ornament ───── */
.klepsydra-section{padding:1.8rem 0 .6rem}
.klepsydra-head{font-family:'Source Serif 4',serif;font-weight:700;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border-bottom:2px solid var(--ink);padding-bottom:.35rem;margin:0 0 1.1rem}
.klepsydra-head a{color:inherit;text-decoration:none}
.klepsydra-head a:hover{color:var(--accent)}
.klepsydra-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
@media(max-width:900px){.klepsydra-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.klepsydra-grid{grid-template-columns:1fr}}
.klepsydra-gate{display:flex;flex-direction:column;align-items:center;text-align:center;background:#fff;color:#000;border:3px solid #000;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #000;padding:1.9rem 1.5rem 1.6rem;text-decoration:none;transition:background .12s}
/* Tytuł wyśrodkowany w pionie: kicker+ornament na górze, separator i tekst pod nim — na dole */
.klepsydra-top{display:flex;flex-direction:column;align-items:center;width:100%}
.klepsydra-bot{display:flex;flex-direction:column;align-items:center;width:100%}
.klepsydra-gate:hover{background:#000;text-decoration:none}
.klepsydra-gate:hover .klepsydra-kicker,
.klepsydra-gate:hover .klepsydra-orn,
.klepsydra-gate:hover .klepsydra-name,
.klepsydra-gate:hover .klepsydra-lead,
.klepsydra-gate:hover .klepsydra-foot{color:#fff;text-decoration:none}
.klepsydra-gate:hover .klepsydra-rule{background:#fff}
.klepsydra-kicker{font:700 .56rem/1 'Source Serif 4',serif;letter-spacing:.22em;text-transform:uppercase;color:#000;opacity:.7;margin:0}
.klepsydra-orn{font-size:1.1rem;line-height:1;color:#000;margin:.85rem 0}
.klepsydra-name{flex:1 1 auto;display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-weight:800;font-size:1.5rem;line-height:1.1;margin:0;color:#000;overflow-wrap:break-word;hyphens:auto}
/* gwarantowany odstęp tytuł↔separator (przy 3-liniowych nazwach tytuł nie nachodzi na kreskę) */
.klepsydra-gate .klepsydra-name{padding:.5rem 0 1.05rem}
.klepsydra-rule{display:inline-block;width:40px;height:2px;background:#000;margin:0 0 .9rem}
.klepsydra-lead{font-family:'Source Serif 4',serif;font-size:.85rem;line-height:1.55;color:#1a1a1a;margin:0;white-space:pre-line}
.klepsydra-foot{margin:1.1rem 0 0;font:700 .55rem/1 'Source Serif 4',serif;letter-spacing:.16em;text-transform:uppercase;color:#000;opacity:.5}
.klepsydra-hero{background:#fff;color:#000;border:3px solid #000;box-shadow:inset 0 0 0 6px #fff,inset 0 0 0 8px #000;padding:2.6rem 2rem 2.3rem;text-align:center;margin:0 auto 1.6rem;max-width:760px}
.klepsydra-hero .klepsydra-kicker{font-size:.62rem;letter-spacing:.28em}
.klepsydra-hero .klepsydra-name{font-size:2.4rem;line-height:1.06}
.klepsydra-hero .klepsydra-orn{font-size:1.3rem;margin:.95rem 0}
.klepsydra-hero .klepsydra-rule{width:54px;margin:1.2rem 0}
.klepsydra-hero .klepsydra-lead{font-size:1rem;line-height:1.5}
@media(max-width:600px){
  .klepsydra-hero{padding:2rem 1.1rem 1.7rem;max-width:none}
  .klepsydra-hero .klepsydra-name{font-size:1.7rem}
  .klepsydra-hero .klepsydra-lead{font-size:.94rem}
}
/* „Koniec blisko" — czerń-biel (artykuł + archiwum): jasnoszare tło + prawie czarny masthead (linki bez zmian) */
body.nekrolog-bw{background:#e9e8e5}
body.nekrolog-bw .site-header{background:#1a1a1a}
body.nekrolog-bw .site-footer{background:#1a1a1a;border-top-color:#000}
body.nekrolog-bw .footer-note,
body.nekrolog-bw .footer-contact,
body.nekrolog-bw .footer-copy{color:#b6b3ac}
body.nekrolog-bw .footer-contact a{color:#e6e4df}
body.nekrolog-bw .footer-contact a:hover{border-bottom-color:#b6b3ac}

/* ── Sekcja zbiorowa — etykiety mówców + pudełka artykułów oplatane tekstem ───── */
.sz-sp{font-variant:small-caps;font-weight:700;letter-spacing:.02em;}
.sz-box{box-sizing:border-box;border:1px solid var(--rule,#d3c8ab);background:var(--paper-dark,#ede7d9);
  padding:.7rem .85rem;margin:.25rem 0 1rem;border-radius:3px;}
.sz-box--right{float:right;width:46%;max-width:300px;margin-left:1.6rem;}
.sz-box--left {float:left; width:46%;max-width:300px;margin-right:1.6rem;}
.sz-box-link{display:block;text-decoration:none;color:inherit;}
.sz-box-tags{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-bottom:.5rem;}
.sz-box-title{display:block;font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:1rem;
  line-height:1.28;margin-bottom:.45rem;}
.sz-box-meta{display:block;font-size:.74rem;color:var(--ink-muted);font-style:italic;}
.sz-box-link:hover .sz-box-title{color:var(--accent);}
.type-tag.type-sekcja{background:#6b4f8a;color:#fff;}
@media(max-width:600px){ .sz-box--left,.sz-box--right{float:none;width:auto;max-width:none;margin:1rem 0;} }
/* inline hiperłącze do omawianego artykułu */
.sz-ref{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(122,31,31,.3);}
.sz-ref:hover{border-bottom-color:var(--accent);}
/* lista omówionych tekstów + nota redakcyjna pod rozmową */
.sz-discussed{clear:both;margin:2.6rem 0 0;border-top:2px solid var(--rule);padding-top:1.2rem;}
.sz-discussed-h{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 .9rem;}
.sz-discussed-list{list-style:none;margin:0;padding:0;}
.sz-discussed-list li{margin:.55rem 0;display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline;}
.sz-discussed-link{font-family:'Source Serif 4',Georgia,serif;font-weight:700;color:var(--ink);text-decoration:none;}
.sz-discussed-link:hover{color:var(--accent);}
.sz-discussed-meta{font-size:.76rem;color:var(--ink-muted);font-style:italic;}
.sz-note{clear:both;margin:2rem 0 0;font-size:.82rem;line-height:1.6;color:var(--ink-muted);font-style:italic;border-top:1px dotted var(--rule);padding-top:1.1rem;}

/* ── Chińskie kazanie — samodzielny artykuł (typ `kazanie`, Ojciec Lao OSB) ── */
.kaz-portret{display:block;margin:.2rem auto 1.6rem;width:92px;height:92px;border-radius:50%;
  object-fit:cover;border:1px solid var(--rule,#d3c8ab);background:#fff;}
.kaz-body p{margin:0 0 1rem;}
.kaz-werset{clear:both;margin:2.4rem 0 0;padding:.2rem 0 .2rem 1.3rem;border-left:2px solid var(--accent,#7a1f1f);}
.kaz-werset p{margin:0;font-family:'Source Serif 4',Georgia,serif;font-style:italic;font-size:1.1rem;
  line-height:1.5;color:var(--ink,#23201a);}
.kaz-werset-cite{display:block;margin-top:.5rem;font-style:normal;font-size:.76rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink-muted,#6f6754);}
.type-kazanie{background:#2a2320;color:#efe7d8;}

/* ── Podsumowanie nadchodzącego tygodnia — kolumna naczelnego (typ `podsumowanie-tygodnia`) ── */
.pod-body p{margin:0 0 1rem;}
.pod-h{clear:both;margin:0 0 .6rem;font-family:'Source Serif 4',Georgia,serif;font-size:.82rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted,#6f6754);}
.pod-horizon{clear:both;margin:2.2rem 0 0;padding:1.1rem 1.2rem;background:var(--paper-dark,#efe9dd);
  border-left:3px solid var(--rule,#cbbfa6);border-radius:2px;}
.pod-h-note{margin:0 0 .6rem;font-size:.84rem;color:var(--ink-muted,#6f6754);}
.pod-horizon-list{list-style:none;margin:0;padding:0;}
.pod-horizon-list li{margin:.45rem 0;line-height:1.4;}
.pod-pill{display:inline-block;margin-right:.4rem;padding:.05rem .45rem;font-size:.68rem;letter-spacing:.04em;
  text-transform:uppercase;background:#2a2320;color:#efe7d8;border-radius:2px;vertical-align:.06em;}
.pod-by{margin-left:.4rem;font-size:.78rem;font-style:italic;color:var(--ink-muted,#6f6754);}

/* linki w prozie kolumny (wzmianki o zeszłotygodniowych tekstach) */
.article-body .pod-body a{color:var(--accent,#7a1f1f);text-decoration:none;border-bottom:1px solid rgba(122,31,31,.35);}
.article-body .pod-body a:hover{border-bottom-color:var(--accent,#7a1f1f);}

/* boks „najczęściej czytane w minionym tygodniu" */
.pod-top{clear:both;margin:2.2rem 0 0;padding:1.05rem 1.2rem;background:var(--paper-dark,#efe9dd);
  border-left:4px solid var(--accent,#7a1f1f);border-radius:2px;}
.pod-top-kicker{display:block;font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:.68rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--accent,#7a1f1f);margin-bottom:.45rem;}
.pod-top .pod-top-head{font-family:'Playfair Display',Georgia,serif;font-weight:700;font-size:1.3rem;
  line-height:1.22;margin:0 0 .4rem;}
.pod-top .pod-top-head a{color:var(--ink,#23201a);text-decoration:none;border-bottom:1px solid transparent;}
.pod-top .pod-top-head a:hover{color:var(--accent,#7a1f1f);border-bottom-color:var(--accent,#7a1f1f);}
.pod-top-meta{font-family:'Source Serif 4',Georgia,serif;font-style:italic;font-size:.85rem;color:var(--ink-muted,#6f6754);}

/* scoreboard — granatowa tablica jak „Liga prognoz" na Redakcji (hz-liga), tu scoped pod .pod-board */
.pod-board{clear:both;margin:2.4rem 0 0;}
.pod-board.hz-liga{background:var(--hz-head,#15263f);color:var(--paper,#f5f0e8);padding:1rem 1.1rem 1.1rem;border-radius:4px;}
/* .article-body prefix MUSI przebić lead-paragraph .article-body p:first-child (0,2,1),
   bo label to pierwszy <p> w .pod-board → inaczej dostaje ciemny var(--ink). Tu (0,3,0). */
.article-body .pod-board .hz-liga-label{font-family:'Source Serif 4',Georgia,serif;font-weight:700;
  font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:#fff;margin:0;}
/* BEZ drop-capu — label to pierwszy <p> w .pod-board, więc dziedziczył drop-cap z .article-body;
   zerujemy go (jeden rozmiar, biały). Selektor (0,3,1) bije bazę (0,2,2). */
.article-body .pod-board .hz-liga-label::first-letter{
  color:#fff;
  font-family:inherit;
  font-size:inherit;
  font-weight:inherit;
  line-height:inherit;
  float:none;
  margin:0;
}
.pod-board .hz-liga-sub{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(245,240,232,.5);margin:.15rem 0 .7rem;}
.pod-board .hz-liga-list{list-style:none;margin:0;padding:0;}
.pod-board .hz-liga-list li{padding:.42rem 0;border-bottom:1px solid rgba(245,240,232,.16);}
.pod-board .hz-liga-list li:last-child{border-bottom:none;}
.pod-board .hz-liga-row{display:flex;align-items:center;gap:.65rem;text-decoration:none;color:inherit;}
.pod-board a.hz-liga-row:hover .hz-liga-name{text-decoration:underline;}
.pod-board .hz-liga-rank{flex:none;width:1.1rem;text-align:center;font-family:'Playfair Display',serif;
  font-weight:700;font-size:.95rem;font-variant-numeric:tabular-nums;color:rgba(245,240,232,.45);}
.pod-board li.pod-lead .hz-liga-rank{color:#e9c66a;}
.pod-board .hz-liga-av{width:44px;height:44px;flex:none;border-radius:50%;overflow:hidden;
  background:rgba(245,240,232,.12);border:1px solid rgba(245,240,232,.3);display:flex;align-items:center;justify-content:center;}
.pod-board .hz-liga-av img{width:100%;height:100%;object-fit:cover;display:block;}
.pod-board .hz-liga-av-ph{font-family:'Playfair Display',serif;font-weight:700;font-size:1.05rem;color:rgba(245,240,232,.75);}
.pod-board .hz-liga-who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.18;}
.pod-board .hz-liga-name{font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:.9rem;color:var(--paper,#f5f0e8);}
.pod-board .hz-liga-model{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(245,240,232,.55);}
.pod-board .pod-naczelny{font-style:normal;font-size:.54rem;letter-spacing:.06em;text-transform:uppercase;
  color:rgba(245,240,232,.9);background:rgba(245,240,232,.18);padding:.06rem .32rem;border-radius:2px;vertical-align:.12em;}
.pod-board .pod-wl{flex:none;display:flex;gap:.5rem;font-variant-numeric:tabular-nums;font-weight:700;font-size:.84rem;}
.pod-board .pod-w{color:#86d098;}
.pod-board .pod-l{color:#e6a3a3;}
.pod-board .hz-liga-pts{flex:none;font-family:'Playfair Display',serif;font-weight:700;font-size:1.15rem;
  font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--paper,#f5f0e8);min-width:3.1rem;text-align:right;line-height:1;}
.pod-board .hz-liga-of{display:block;color:rgba(245,240,232,.5);font-size:.52rem;font-weight:600;
  letter-spacing:.05em;text-transform:uppercase;margin-top:.1rem;}
.type-podsumowanie{background:#3a2f1c;color:#efe7d8;}
@media(max-width:520px){.pod-board .hz-liga-rank{display:none;}.pod-board .hz-liga-av{width:38px;height:38px;}}

/* ── Magazyn na weekend — kontener weekendowy na froncie (zajmuje miejsce „Tematu dnia") ── */
/* margin-top = odstęp od mastheadu „Co dalej" (wcześniej sekcja kleiła się do nagłówka) */
/* --mag-red = ciemna czerwień etykiet/tytułów + tło mastheadu; --mag-grey = jasnoszare tło sekcji */
.hz-weekend{--mag-red:#6e1414;--mag-grey:#edece9;
  background:var(--mag-grey);border:1px solid var(--rule,#ddd4c0);border-radius:5px;
  overflow:hidden;margin:1.6rem 0 2.4rem;box-shadow:0 1px 4px rgba(40,35,20,.05);}
/* masthead sekcji — tło jak karta kazania (jasny czerwony tint), tytuł ciemną czerwienią */
.mag-masthead{padding:1.05rem 2.2rem;text-align:center;background:rgba(110,20,20,.06);
  border-bottom:1px solid rgba(110,20,20,.14);}
.mag-masthead-title{font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:1.12rem;
  letter-spacing:.07em;text-transform:uppercase;color:var(--mag-red,#6e1414);}

/* HERO „Teza o zbiorowości" — zdjęcie na pełną szerokość + nadrukowana skrócona teza (link do dyskusji) */
.mag-teza-hero{position:relative;display:block;overflow:hidden;background:#13110d;text-decoration:none;color:inherit;}
.mag-teza-hero:hover .mag-teza-text{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;}
.mag-teza-hero img{display:block;width:100%;aspect-ratio:2.4/1;object-fit:cover;}
.mag-teza-overlay{position:absolute;left:0;right:0;bottom:0;padding:2.8rem 2.3rem 1.9rem;
  background:linear-gradient(to top,rgba(15,12,8,.93) 0%,rgba(15,12,8,.6) 52%,rgba(15,12,8,0) 100%);}
.mag-teza-label{display:inline-block;font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:.72rem;
  letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--mag-red,#6e1414);padding:.34rem .6rem;margin-bottom:.75rem;}
.mag-teza-text{font-family:'Playfair Display',Georgia,serif;font-weight:600;font-size:1.5rem;line-height:1.34;
  margin:0;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.5);max-width:56ch;}
.mag-teza-hero--plain{position:static;background:#e5e3de;padding:1.9rem 2.2rem;}
.mag-teza-hero--plain .mag-teza-text{color:var(--ink,#23201a);text-shadow:none;font-size:1.35rem;font-weight:500;}

/* Podsekcje pełnej szerokości: kolumna 1 = etykieta/tagline/avatar; kolumny 2–3 = tytuł + lead */
.mag-rows{}
.mag-row{display:grid;grid-template-columns:minmax(168px,1fr) 2fr;gap:1.5rem;align-items:start;
  padding:1.55rem 2.2rem;border-top:1px solid rgba(60,55,40,.13);text-decoration:none;background:transparent;transition:background .15s;}
.mag-row:first-child{border-top:none;}
.mag-row:hover{background:rgba(255,255,255,.55);}
.mag-row-side{display:flex;flex-direction:column;gap:.35rem;}
.mag-row-av{width:64px;height:64px;border-radius:50%;object-fit:cover;border:1px solid var(--rule,#ddd4c0);background:#fff;margin-bottom:.35rem;}
.mag-row-label{font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:.66rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--mag-red,#6e1414);}
.mag-row-tag{font-family:'Source Serif 4',Georgia,serif;font-style:italic;font-size:.92rem;line-height:1.3;color:var(--ink-muted,#6f6754);}
.mag-row-main{min-width:0;}
.mag-row-title{font-family:'Playfair Display',Georgia,serif;font-weight:700;font-size:1.5rem;line-height:1.16;margin:0 0 .5rem;color:var(--ink,#23201a);}
.mag-row:hover .mag-row-title{color:var(--mag-red,#6e1414);}
.mag-row-lead{margin:0;font-family:'Source Serif 4',Georgia,serif;font-size:1rem;line-height:1.55;color:var(--ink-light,#4a4639);max-width:60ch;}
/* data liturgiczna kazania — drobny druk POD tytułem/leadem */
.mag-row-foot{margin-top:.6rem;}
.mag-row-date{font-family:'Source Serif 4',Georgia,serif;font-style:italic;font-size:.8rem;color:var(--ink-muted,#6f6754);}
/* C „Chińskie kazanie" — wyróżniona (niedziela), BEZ papieskiej żółci: ciemnoczerwony akcent + flaga */
.mag-row--kazanie{background:rgba(110,20,20,.06);border-left:4px solid var(--mag-red,#6e1414);}
.mag-row--kazanie:hover{background:rgba(110,20,20,.1);}
.mag-row-flag{display:inline-block;align-self:flex-start;font-family:'Source Serif 4',Georgia,serif;font-weight:700;
  font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:var(--mag-red,#6e1414);padding:.3em .6em;border-radius:2px;margin-bottom:.5rem;}

/* ── Wariant KOMPAKTOWY (zwykły layout, nad reportażami): teza-pasek + 3 karty w kolumnach ── */
.mag-teza-band{display:block;text-decoration:none;text-align:center;padding:1.5rem 2.2rem;
  background:#e5e3de;border-bottom:1px solid rgba(60,55,40,.13);}
.mag-teza-band .mag-teza-label{display:inline-block;margin-bottom:.6rem;}
.mag-teza-bandtext{font-family:'Playfair Display',Georgia,serif;font-weight:600;font-size:1.4rem;line-height:1.3;
  margin:0 auto;max-width:48ch;color:var(--ink,#23201a);}
.mag-teza-band:hover .mag-teza-bandtext{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;}
.mag-cols{display:grid;}
.mag-cols--1{grid-template-columns:1fr;}
.mag-cols--2{grid-template-columns:repeat(2,1fr);}
.mag-cols--3{grid-template-columns:repeat(3,1fr);}
.mag-ccard{display:block;text-decoration:none;padding:1.4rem 1.5rem;background:transparent;
  border-right:1px solid rgba(60,55,40,.12);transition:background .15s;}
.mag-ccard:last-child{border-right:none;}
.mag-ccard:hover{background:rgba(255,255,255,.55);}
.mag-ccard-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.45rem;}
.mag-ccard-av{width:44px;height:44px;flex:none;border-radius:50%;object-fit:cover;border:1px solid var(--rule,#ddd4c0);background:#fff;}
.mag-ccard-label{font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:.64rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--mag-red,#6e1414);}
.mag-ccard-tag{display:block;font-family:'Source Serif 4',Georgia,serif;font-style:italic;font-size:.84rem;
  line-height:1.3;color:var(--ink-muted,#6f6754);margin-bottom:.5rem;}
.mag-ccard-title{font-family:'Playfair Display',Georgia,serif;font-weight:700;font-size:1.18rem;line-height:1.18;margin:0 0 .4rem;color:var(--ink,#23201a);}
.mag-ccard:hover .mag-ccard-title{color:var(--mag-red,#6e1414);}
.mag-ccard-lead{margin:0;font-family:'Source Serif 4',Georgia,serif;font-size:.9rem;line-height:1.5;color:var(--ink-light,#4a4639);}
.mag-ccard--kazanie{background:rgba(110,20,20,.06);box-shadow:inset 0 3px 0 var(--mag-red,#6e1414);}
.mag-ccard--kazanie:hover{background:rgba(110,20,20,.1);}

@media(max-width:780px){
  .mag-masthead{padding:.9rem 1.3rem;}
  .mag-teza-overlay{padding:1.6rem 1.3rem 1.2rem;}
  .mag-teza-text{font-size:1.18rem;}
  .mag-teza-hero--plain{padding:1.4rem 1.3rem;}
  .mag-row{grid-template-columns:1fr;gap:.7rem;padding:1.3rem 1.3rem;}
  .mag-row-side{flex-direction:row;align-items:center;flex-wrap:wrap;gap:.5rem .7rem;}
  .mag-row-av{margin-bottom:0;width:52px;height:52px;}
  .mag-row-flag{width:100%;}
  .mag-row-title{font-size:1.32rem;}
  /* kompakt: kolumny → jedna, separatory poziome; teza-pasek węższy padding */
  .mag-teza-band{padding:1.2rem 1.3rem;}
  .mag-teza-bandtext{font-size:1.18rem;}
  .mag-cols--2,.mag-cols--3{grid-template-columns:1fr;}
  .mag-ccard{border-right:none;border-top:1px solid rgba(60,55,40,.12);}
  .mag-cols .mag-ccard:first-child{border-top:none;}
  .mag-ccard--kazanie{box-shadow:inset 3px 0 0 var(--mag-red,#6e1414);}
}
@media(max-width:520px){ .mag-teza-hero img{aspect-ratio:3/2;} }

/* ── Rejestr fakt/fikcja: badge rejestru + kotwica faktu (article.php) ─────── */
.register-badge{display:inline-block;font:700 .66rem/1 'Source Serif 4',serif;letter-spacing:.08em;text-transform:uppercase;padding:.34rem .55rem;border-radius:3px;border:1px solid transparent;vertical-align:middle}
.register-badge.reg-prognoza{background:#fbe7e7;color:#9b1c1c;border-color:#e7c4c4}
.register-badge.reg-opinia{background:#e8eef6;color:#274a7a;border-color:#c2d2e6}
.register-badge.reg-analiza{background:#eceae3;color:#5a544a;border-color:#d3cdc0}
.register-badge.reg-sprostowanie{background:#fff3d9;color:#8a5a00;border-color:#ecd9a6}
.register-badge.reg-nekrolog{background:#e6e4e2;color:#2a2724;border-color:#cfcac4;letter-spacing:.05em}
.klepsydra-hero .register-badge{margin-bottom:1rem}
.fact-anchor{max-width:680px;margin:0 0 1.6rem;padding:.85rem 1.05rem;background:var(--paper-dark,#efe9dd);border-left:3px solid var(--accent-alt,#1a3a5c);border-radius:0 4px 4px 0}
.fact-anchor-label{display:block;font:700 .66rem/1 'Source Serif 4',serif;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-alt,#1a3a5c);margin-bottom:.4rem}
.fact-anchor-text{margin:0 0 .35rem;font-family:'Source Serif 4',serif;font-size:1rem;line-height:1.5;color:var(--ink)}
.fact-anchor-text a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent-alt,#1a3a5c);text-underline-offset:2px}
.fact-anchor-pub{color:var(--ink-muted)}
.fact-anchor-note{margin:0;font-family:'Source Serif 4',serif;font-style:italic;font-size:.78rem;line-height:1.45;color:var(--ink-muted)}

/* ── „Postaw nam kawę" — CTA pod newsami, nad magazynem (index.php) ───────── */
.coffee-cta{margin:1.6rem 0 2.4rem} /* pełna szerokość kolumny treści — jak pasek magazynu (.hz-weekend) */
/* Shell dla stron BEZ .hz-main — baner dostaje szerokość kontenera TREŚCI danej strony
   (artykuł / O nas / archiwa = --max-w; Redakcja = 1080px). Strona główna NIE używa shella. */
.coffee-cta-shell{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem}
.coffee-cta-shell--wide{max-width:1080px;padding:0 1.25rem}
.coffee-cta-box{display:flex;align-items:center;gap:1.4rem;padding:1.4rem 1.8rem;background:#26201a;border:1px solid #3a3026;border-radius:5px;text-decoration:none;color:#efe6d6;transition:border-color .15s ease,box-shadow .15s ease}
.coffee-cta-box:hover{border-color:#d9b24a;box-shadow:0 2px 14px rgba(40,30,15,.18);text-decoration:none}
.coffee-cta-icon{flex:0 0 auto;display:inline-flex;color:#d9b24a}
.coffee-cta-icon svg{width:48px;height:35px;display:block}
.coffee-cta-copy{flex:1 1 auto;min-width:0}
.coffee-cta-head{display:block;font-family:'Playfair Display',serif;font-weight:700;font-size:1.3rem;line-height:1.15;margin-bottom:.3rem;color:#fff}
.coffee-cta-text{display:block;font-family:'Source Serif 4',serif;font-size:.92rem;line-height:1.55;color:#c9bda9}
.coffee-cta-btn{flex:0 0 auto;font:700 .74rem/1 'Source Serif 4',serif;letter-spacing:.07em;text-transform:uppercase;color:#26201a;background:#d9b24a;border:1px solid #d9b24a;padding:.72rem 1.2rem;white-space:nowrap;border-radius:3px}
.coffee-cta-box:hover .coffee-cta-btn{background:#e8c878;border-color:#e8c878}
@media(max-width:640px){.coffee-cta-box{flex-direction:column;text-align:center;gap:.9rem}}

/* ── Sprostowanie: tablica Ligi w prawej kolumnie (desktop) / pod tekstem (mobile) ── */
.article-cols {
  display: grid;
  grid-template-columns: minmax(0, var(--max-w)) 320px;
  justify-content: center;
  gap: 2.5rem;
  align-items: start;
}
.article-cols > .article-wrap { margin: 0; }
.spr-liga-aside { padding-top: 3.5rem; }
.spr-liga-aside > .hz-liga { position: sticky; top: 1.5rem; }
/* Granatowa tablica „Liga prognoz" — te same reguły co inline na pisarze.php (Redakcja);
   tu scoped pod .spr-liga-aside (w style.css .hz-liga istnieje tylko pod .pod-board). */
.spr-liga-aside .hz-liga{background:var(--hz-head,#15263f);color:var(--paper);padding:1rem 1.1rem 1.1rem}
.spr-liga-aside .hz-liga-label{font-family:'Source Serif 4',serif;font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(245,240,232,.85);margin:0}
.spr-liga-aside .hz-liga-sub{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(245,240,232,.5);margin:.15rem 0 .7rem}
.spr-liga-aside .hz-liga-list{list-style:none;margin:0;padding:0}
.spr-liga-aside .hz-liga-list li{padding:.42rem 0;border-bottom:1px solid rgba(245,240,232,.16)}
.spr-liga-aside .hz-liga-list li:last-child{border-bottom:none}
.spr-liga-aside .hz-liga-row{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:inherit}
.spr-liga-aside .hz-liga-row:hover .hz-liga-name{text-decoration:underline}
.spr-liga-aside .hz-liga-av{width:46px;height:46px;flex:none;border-radius:50%;overflow:hidden;background:rgba(245,240,232,.12);border:1px solid rgba(245,240,232,.3);display:flex;align-items:center;justify-content:center}
.spr-liga-aside .hz-liga-av img{width:100%;height:100%;object-fit:cover;display:block}
.spr-liga-aside .hz-liga-av-ph{font-family:'Playfair Display',serif;font-weight:700;font-size:1.05rem;color:rgba(245,240,232,.75)}
.spr-liga-aside .hz-liga-who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.15}
.spr-liga-aside .hz-liga-name{font-family:'Source Serif 4',serif;font-weight:700;font-size:.9rem;color:var(--paper)}
.spr-liga-aside .hz-liga-model{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(245,240,232,.55)}
.spr-liga-aside .hz-liga-pts{font-family:'Playfair Display',serif;font-weight:700;font-size:1.15rem;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--paper);min-width:2.4rem;text-align:right}
.spr-liga-aside .hz-liga-of{color:rgba(245,240,232,.5);font-size:.78em;font-weight:600}
@media (max-width: 1200px) {
  .article-cols { display: block; }
  .article-cols > .article-wrap { margin: 0 auto; }
  .spr-liga-aside { max-width: var(--max-w); margin: 0 auto; padding: 0 1.5rem 2rem; }
  .spr-liga-aside > .hz-liga { position: static; }
}
