/*!
Theme Name: Teatr Stary
Theme URI: https://teatrstary.eu
Author: intui
Author URI: https://intui.pl
Description: Motyw serwisu Teatr Stary (intui/Fundament)
Version: 0.1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: teatr-stary
*/

/* Design system tokens — must come before other files */

/*
  Design System Variables
  Central source of truth for all design tokens.
  All values should come from your Figma design system.

  Naming convention:
  - Base scale: --base-{00-190} (white to black)
  - Semantic: --text-{primary|secondary|tertiary}, --border-{...}, --btn-{...}
  - Spacing: --{mobile|tablet|desktop}-{content|section}-{xs|s|m|l|xl}
  - Layout: --container-max-width, --breakpoint-{tablet|desktop}
*/

:root {
  /* ============================================
     SWATCHES - Base Colors (Neutral Gray Scale)
     Replace with your project's color palette.
     ============================================ */

  --base-00: #ffffff;
  --base-05: #fbf9f8; /* prod. $color-secondary-lighter — ciepła biel tła strony */
  --base-10: #f0f0f0;
  --base-20: #e4e4e4;
  --base-30: #d7d7d7;
  --base-40: #c9c9c9;
  --base-50: #bcbcbc;
  --base-60: #aeaeae;
  --base-70: #a1a1a1;
  --base-80: #949494;
  --base-90: #868686;
  --base-100: #797979;
  --base-110: #6b6b6b;
  --base-120: #5e5e5e;
  --base-130: #515151;
  --base-140: #434343;
  --base-150: #363636;
  --base-160: #282828;
  --base-170: #1b1b1b;
  --base-180: #0d0d0d;
  --base-190: #000000;

  /* Brand Colors — replace with project palette */
  /* --brand-primary: #3b82f6; */
  /* --brand-secondary: #10b981; */

  /* ============================================
     TYPOGRAPHY - Font Families
     Replace with your project's fonts.
     ============================================ */

  --font-display: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --font-sans: 'Manrope', system-ui, -apple-system, sans-serif;

  /* Figma Greyscale (plansze typografii TS_dev) */
  --greyscale-40: #999793;
  --greyscale-90: #1a1918;

  /* Figma Main/Off Black (finalne plansze SG) */
  --main-off-black: #000d0c;

  /* Figma — single wydarzenia (Event Horizontal) */
  /* Przyciemnione z Figmy (#a2a2a2 = 2.55:1) do WCAG 2.1 AA na białym (≥4.5:1) */
  --grey-500: #6b6b6b;
  --grey-500-caption: #a2a2a2;
  --grey-700: #616161;
  --grey-600: #828282;
  --grey-300: #c7c7c7;
  --grey-200: #dadada;
  --red-300: #f5857c;
  --red-500: #ee3424;
  --blue-500: #005596;
  --yellow-500: #eeb211;
  --purple-500: #a85bbc;
  --grey-100: #ececec;
  --green-500: #007e7a;
  --placeholder-surface: #f6f6f6;
  --placeholder-greybox: #d0d0d0;          /* greybox / brak miniatury */
  --content-measure-tablet: 651px;         /* span 5/6 w siatce 6-kol. */
  --content-measure-desktop: 664px;        /* span 6/12 w siatce 12-kol. */
  --gap-compact: 0.625rem;                 /* 10px — badge↔data, pager compact */
  --footer-info-logo-col: 9rem;            /* 144px — kolumna logo w stopce (tablet) */
  --border-accent-width: 3px;

  /* ============================================
     THEME - Light Mode (Default)
     Semantic aliases mapping base scale to UI roles.
     ============================================ */

  --base-mode-background: var(--base-05);
  --base-mode-background-secondary: var(--base-10);
  --base-mode-border: var(--base-190);
  --base-mode-border-secondary: var(--base-70);
  --base-mode-border-tertiary: var(--base-40);
  --base-mode-text: var(--base-190);
  --base-mode-text-secondary: var(--base-150);
  --base-mode-text-tertiary: var(--base-120);
  --base-mode-text-quaternary: var(--base-80);
  --base-mode-button-primary-background: var(--base-190);
  --base-mode-button-primary-text: var(--base-00);
  --base-mode-button-secondary-background: transparent;
  --base-mode-button-secondary-border: var(--base-60);
  --base-mode-button-secondary-text: var(--base-190);
  --base-mode-button-tertiary-text: var(--base-190);

  /* ============================================
     THEME - Dark Mode
     Uncomment and wrap in @media (prefers-color-scheme: dark) or .dark-mode class
     ============================================ */

  /* --base-mode-background: var(--base-190);
     --base-mode-background-secondary: var(--base-180);
     --base-mode-border: var(--base-00);
     --base-mode-border-secondary: rgba(255, 255, 255, 0.5);
     --base-mode-border-tertiary: rgba(255, 255, 255, 0.2);
     --base-mode-text: var(--base-00);
     --base-mode-text-secondary: var(--base-20);
     --base-mode-text-tertiary: var(--base-50);
     --base-mode-text-quaternary: rgba(255, 255, 255, 0.5);
     --base-mode-button-primary-background: var(--base-00);
     --base-mode-button-primary-text: var(--base-190);
     --base-mode-button-secondary-background: rgba(0, 0, 0, 0.1);
     --base-mode-button-secondary-border: rgba(255, 255, 255, 0.5);
     --base-mode-button-secondary-text: var(--base-00); */

  /* ============================================
     SEMANTIC TEXT COLORS
     ============================================ */

  --text-primary: var(--main-off-black);
  --text-secondary: var(--base-mode-text-secondary);
  --text-tertiary: var(--base-mode-text-tertiary);
  --text-quaternary: var(--base-mode-text-quaternary);
  --text-secondary-on-dark: #E4E4E4;

  /* ============================================
     SEMANTIC BORDER COLORS
     ============================================ */

  --border-primary: var(--base-mode-border);
  --border-secondary: var(--base-mode-border-secondary);
  --border-tertiary: var(--base-mode-border-tertiary);

  /* Figma section dividers — 1px Main/Off Black (#000d0c) */
  --section-divider: 1px solid var(--main-off-black);
  --border-secondary-on-dark: rgba(255, 255, 255, 0.5);
  --border-tertiary-on-dark: rgba(255, 255, 255, 0.2);

  /* ============================================
     BUTTON COLORS
     ============================================ */

  --btn-primary-background: var(--base-mode-button-primary-background);
  --btn-primary-text: var(--base-mode-button-primary-text);
  --btn-primary-hover: var(--base-160);

  --btn-secondary-background: var(--base-mode-button-secondary-background);
  --btn-secondary-text: var(--base-mode-button-secondary-text);
  --btn-secondary-border: var(--base-mode-button-secondary-border);
  --btn-secondary-hover: var(--base-10);

  --btn-tertiary-text: var(--base-mode-button-tertiary-text);
  --btn-tertiary-underline: 1px;
  --btn-height-s: 2.5rem;                                  /* 40px — Button S mobile */

  /* ============================================
     SPACERS - Desktop (rem)
     Adjust values to match your Figma spacing scale.
     ============================================ */

  --desktop-container-padding: 2.5rem;  /* 40px */
  --desktop-gutter: 2rem;               /* 32px */
  --desktop-content-xxs: 0.5rem;        /* 8px */
  --desktop-content-2xs: 1.25rem;       /* 20px — gap breadcrumb */
  --desktop-content-pt-section: 2.25rem; /* 36px — padding-top sekcji */
  --desktop-content-xs: 1rem;           /* 16px */
  --desktop-content-s: 1.5rem;          /* 24px */
  --desktop-content-m: 2rem;            /* 32px */
  --desktop-content-l: 3rem;            /* 48px */
  --desktop-content-xl: 4rem;           /* 64px */
  --desktop-section-m: 5.5rem;          /* 88px */
  --desktop-content-xxl: 6rem;          /* 96px */
  --desktop-section-l: 7.5rem;          /* 120px */
  --desktop-section-xl: 11.25rem;       /* 180px */

  /* ============================================
     SPACERS - Tablet (rem)
     ============================================ */

  --tablet-container-padding: 1.5rem;   /* 24px */
  --tablet-gutter: 1.25rem;             /* 20px */
  --tablet-content-xxs: 0.5rem;         /* 8px */
  --tablet-content-xs: 1rem;            /* 16px */
  --tablet-content-s: 1.25rem;          /* 20px */
  --tablet-content-m: 1.75rem;          /* 28px */
  --tablet-content-l: 2.5rem;           /* 40px */
  --tablet-content-xl: 3.5rem;          /* 56px */
  --tablet-section-m: 4.5rem;           /* 72px */
  --tablet-content-xxl: 5rem;           /* 80px */
  --tablet-section-l: 6rem;             /* 96px */
  --tablet-section-xl: 9.25rem;         /* 148px */

  /* ============================================
     SPACERS - Mobile (rem)
     ============================================ */

  --mobile-container-padding: 1rem;     /* 16px */
  --mobile-gutter: 1rem;                /* 16px */
  --mobile-content-xxs: 0.5rem;         /* 8px */
  --mobile-content-xs: 0.75rem;         /* 12px */
  --mobile-content-s: 1.125rem;         /* 18px */
  --mobile-content-m: 1.5rem;           /* 24px */
  --mobile-content-l: 2rem;             /* 32px */
  --mobile-content-xl: 3rem;            /* 48px */
  --mobile-section-m: 4rem;             /* 64px */
  --mobile-content-xxl: 4.5rem;         /* 72px */
  --mobile-section-l: 5.5rem;           /* 88px */
  --mobile-section-xl: 7.5rem;          /* 120px */

  /* ============================================
     COMPONENT TOKENS — site header / footer
     ============================================ */

  --content-pt-section: var(--desktop-content-pt-section); /* 36px — uniwersalny pt sekcji */
  --content-xs: var(--desktop-content-xs);                 /* 16px — wartość stała na wszystkich BP */

  --emergency-bar-height-mobile: 4rem;                     /* 64px — Figma mobile */
  --emergency-bar-height-tablet: 3rem;                     /* 48px — Figma tablet/desktop */

  --site-header-height-mobile: 6rem;                       /* 96px — Top Bar v2 mobile */
  --site-header-height-tablet: var(--desktop-section-l);    /* 120px — Top Bar v2 tablet+ */
  --site-header-actions-gap: var(--desktop-content-xl);    /* 64px — linki + menu (tablet+) */
  --site-header-actions-gap-mobile: var(--mobile-content-xs); /* 12px — ikona szukaj ↔ menu */
  --site-header-menu-size-mobile: 2.5rem;                  /* 40px */
  --site-header-menu-size: 3rem;                           /* 48px */

  --site-menu-body-pt: 3rem;                               /* 48px — bar ↔ content */
  --site-menu-body-pb: 3rem;                               /* 48px — content bottom */
  --site-menu-group-gap: 3.75rem;                          /* 60px — między grupami linków */
  --site-menu-link-gap: 1.25rem;                           /* 20px — między linkami w grupie */
  --site-menu-social-gap: 2rem;                            /* 32px — ikony social */
  --site-menu-featured-gap: 2rem;                          /* 32px — wewnątrz Polecamy */
  --site-menu-links-featured-gap: var(--tablet-section-m); /* 72px — linki ↔ Polecamy (tablet) */

  --newsletter-stack-gap: var(--tablet-content-l);         /* 40px — intro ↔ form */
  --footer-section-gap: var(--tablet-section-xl);          /* 148px — kolumny desktop */
  --footer-nav-col-gap: 3.125rem;                          /* 50px — grupy linków nav */
  --footer-partners-gap-mobile: 4.125rem;                  /* 66px — logotypy mobile */
  --footer-edge-padding: 2.5rem;                           /* 40px — captions/funding px */
  --footer-menu-col-width: 12.5rem;                        /* 200px — kolumna menu tablet */
  --mobile-newsletter-pt: 2.25rem;                         /* 36px */
  --tablet-newsletter-pt: 3rem;                            /* 48px */
  --checkbox-offset: 0.25rem;                              /* 4px — wyrównanie checkbox */

  /* ============================================
     COMPONENT TOKENS — repertuar (docs/specs/repertuar-spec.md §7)
     ============================================ */

  --repertoire-meta-col: 3.5rem;          /* 56px — strefa numeru dnia / godziny (mobile) */
  --repertoire-meta-col-tablet: 4.5rem;   /* 72px — j.w. tablet */
  --repertoire-event-gap: 2rem;           /* 32px — gap wewnętrzny wydarzenia (stały M/T/D) */
  --repertoire-event-pb: 3rem;            /* 48px — padding-bottom wydarzenia (T/D) */
  --repertoire-date-h-tablet: 4.875rem;   /* 78px — wysokość sticky daty tablet */
  --repertoire-heading-gap: 3.5rem;       /* 56px — nagłówek miesiąca ↔ kalendarz (desktop) */
  --repertoire-section-pb-tablet: 4rem;   /* 64px — pb sekcji na tablecie */

  /* ============================================
     COMPONENT TOKENS — homepage (docs/specs/homepage-spec.md §7)
     ============================================ */

  --home-hero-h-mobile: 32.5rem;   /* 520px */
  --home-hero-h-tablet: 26.0625rem; /* 417px */
  --home-hero-h-desktop: 42.5rem;  /* 680px */
  --news-card-min-h-mobile: 20rem;   /* 320px — karta aktualności (homepage + archiwum) */
  --news-card-min-h-tablet: 22rem;   /* 352px */
  --news-card-min-h-desktop: 25rem;  /* 400px */
  --tablet-section-s: var(--desktop-content-xl); /* 64px — alias rytmu sekcyjnego tabletu (spec §6) */

  /* ============================================
     COMPONENT TOKENS — rytm stron
     ============================================ */

  --page-footer-pb-mobile: 2.5rem;  /* 40px — main → stopka (wzorzec podstron) */
  --page-footer-pb-tablet: 4rem;    /* 64px */
  --page-footer-pb-desktop: 6rem;   /* 96px */
  --gap-stack: 2.25rem;             /* 36px — uniwersalny odstęp stack/flow (≠ pt sekcji) */
  --media-block-pb: 2.5rem;         /* 40px — pb bloków mediów na single (galeria/wideo), tablet+ */

  /* ============================================
     CONTAINER & LAYOUT
     ============================================ */

  --container-max-width: 1440px;
  --breakpoint-tablet: 769px;
  --breakpoint-desktop: 1025px;

  /* ============================================
     BORDER RADIUS
     ============================================ */

  --radius-sm: 2px;
  --radius-md: 3px;
  --radius-lg: 4px;
  --radius-pill: 60px;

  /* ============================================
     TRANSITIONS - Durations and Easings
     ============================================ */

  --duration-fast: 150ms;
  --duration-normal: 200ms;
  --duration-slow: 400ms;
  --easing-in-out: ease-in-out;
  --easing-out: ease-out;
  --easing-in: ease;
  --easing-material: cubic-bezier(0.4, 0, 0.2, 1);
  --easing-elastic: cubic-bezier(0.04, 1, 0.7, 1);

  /* ============================================
     ACCESSIBILITY
     ============================================ */

  --color-accessibility-focus: #21759b;
  --outline-focus-width: 3px;
  --outline-focus-offset: 4px;
}

/* Foundation — grid.css: jedyny plik z .grid-container, .container, .col-* */

/*
  Base styles — global resets, accessibility, page transitions.
  No component-specific styles here.
*/

/* ============================================
   GLOBAL DEFAULTS
   ============================================ */

html {
  font-family: var(--font-sans);
  min-width: 320px;
  scrollbar-gutter: stable;
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
}

body {
  background-color: var(--base-mode-background);
  overflow-x: hidden;
}

/* ============================================
   SWUP - Page Transitions
   ============================================ */

#swup {
  transition: opacity var(--duration-fast) var(--easing-material);
}

body.is-transitioning #swup {
  opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
  #swup {
    transition: none !important;
  }
}

/* ============================================
   ACCESSIBILITY
   ============================================ */

[tabindex="-1"]:focus {
  outline: none;
}

:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.skip-link {
  position: absolute;
  top: -9999px;
  left: -9999px;
  z-index: 999999;
}

.skip-link:focus {
  position: fixed;
  top: 1rem;
  left: 1rem;
  padding: 0.75rem 1.5rem;
  background-color: var(--base-190);
  color: var(--base-00);
  text-decoration: none;
  border-radius: var(--radius-md);
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
  font-weight: 700;
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border-width: 0;
}

.screen-reader-text:focus {
  position: static;
  width: auto;
  height: auto;
  padding: inherit;
  margin: inherit;
  overflow: visible;
  clip-path: none;
  white-space: normal;
}

/*
 * Grid System Primitives
 * Jedyny plik z generycznymi klasami .grid-container, .container, .col-*.
 * System siatki: 2 / 6 / 12 kolumn (mobile / tablet / desktop).
 * -------------------------------------------------------------------------- */

/* 1. Prymityw Kontenera Siatki (Mobile-first) */

.grid-container {
  display: grid;
  width: 100%;
  /* --- MOBILE --- */
  grid-template-columns: repeat(2, 1fr);
  -moz-column-gap: var(--mobile-gutter);
       column-gap: var(--mobile-gutter);
  row-gap: 0; /* Jawne wyzerowanie odstępów między wierszami */
}

/* 2. Prymitywy rozpiętości kolumn (mobile-first) */

.col-span-full {
  grid-column: 1 / -1;
}

/* 3. Prymityw Wewnętrznego Kontenera */

.container {
  box-sizing: border-box;
  width: 100%;
  max-width: var(--container-max-width);
  margin-left: auto;
  margin-right: auto;
  /* --- MOBILE --- */
  padding-left: var(--mobile-container-padding);
  padding-right: var(--mobile-container-padding);
}

/*
 * Breakpointy - Tablet
 * -------------------------------------------------------------------------- */

@media (min-width: 769px) { /* --breakpoint-tablet */
  .grid-container {
    /* --- TABLET --- */
    grid-template-columns: repeat(6, 1fr);
    -moz-column-gap: var(--tablet-gutter);
         column-gap: var(--tablet-gutter);
    row-gap: 0;
  }

  .container {
    /* --- TABLET --- */
    padding-left: var(--tablet-container-padding);
    padding-right: var(--tablet-container-padding);
  }

  .col-span-2 {
    grid-column-end: span 2;
  }

  .col-span-4 {
    grid-column-end: span 4;
  }

  .col-span-5 {
    grid-column-end: span 5;
  }

  .col-start-3 {
    grid-column-start: 3;
  }

  .col-start-5 {
    grid-column-start: 5;
  }

  .col-start-6 {
    grid-column-start: 6;
  }
}

/*
 * Breakpointy - Desktop
 * -------------------------------------------------------------------------- */

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .grid-container {
    /* --- DESKTOP --- */
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    row-gap: 0;
  }

  .container {
    /* --- DESKTOP --- */
    padding-left: var(--desktop-container-padding);
    padding-right: var(--desktop-container-padding);
  }

  .col-span-2 {
    grid-column-end: span 2;
  }

  .col-span-3 {
    grid-column-end: span 3;
  }

  .col-span-6 {
    grid-column-end: span 6;
  }

  .col-span-8 {
    grid-column-end: span 8;
  }

  .col-span-9 {
    grid-column-end: span 9;
  }

  .col-span-10 {
    grid-column-end: span 10;
  }

  .col-start-3 {
    grid-column-start: 3;
  }

  .col-start-7 {
    grid-column-start: 7;
  }

  .col-start-9 {
    grid-column-start: 9;
  }

  .col-start-12 {
    grid-column-start: 12;
  }
}

/* Typography */

/*
  Typography — mobile-first (Figma TS_dev).
  Tablet/desktop: typography-rwd.css
  Spec: docs/migration/typography-spec.md
*/

/* ============================================
   @FONT-FACE — self-hosted (paths relative to style.css)
   ============================================ */

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('assets/fonts/cormorant-garamond-medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Cormorant Garamond';
  src: url('assets/fonts/cormorant-garamond-medium-latin-ext.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  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: 'Manrope';
  src: url('assets/fonts/manrope.woff2') format('woff2');
  font-weight: 400 600;
  font-style: normal;
  font-display: swap;
}

/* ============================================
   CASE MODIFIERS (Figma Uppercase / Lowercase)
   ============================================ */

.is-upper {
  text-transform: uppercase;
}

.is-lower {
  text-transform: lowercase;
}

/* ============================================
   DISPLAY HEADINGS — Cormorant Garamond
   ============================================ */

.display,
.h1,
.h2,
.h3 {
  margin: 0;
  padding: 0;
  font-family: var(--font-display);
  font-weight: 500;
  color: var(--text-primary);
}

/* TODO: .display — brak mobile/tablet w Figmie; rozmiar tylko @ desktop w typography-rwd.css */

.h1 {
  font-size: 2rem;
  line-height: 1.05;
  letter-spacing: -0.01em; /* MOBILE: -1% */
}

.h2 {
  font-size: 1.5rem;
  line-height: 1.05;
  letter-spacing: -0.01em; /* MOBILE: -1% */
}

.h3 {
  font-size: 1.5rem;
  line-height: 1.05;
  letter-spacing: -0.01em; /* MOBILE/Uppercase/M H2 Up: 24px, -1% */
}

/* Nagłówek sekcji — Cormorant, skala „M H1 Low" 32/40/40 (≠ .h2 = 24/40).
   Wspólny wzorzec: home, aktualności, footer (z modyfikatorem --on-dark).
   Wyjątek świadomy: .repertoire__month — skaluje się na container queries. */

.section-title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 2rem; /* 32px */
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--text-primary);
}

.section-title--on-dark {
  color: var(--base-00);
}

/* ============================================
   SUBHEADINGS — Manrope SemiBold
   ============================================ */

.subheading-1,
.subheading-2 {
  margin: 0;
  padding: 0;
  font-family: var(--font-sans);
  font-weight: 600;
  color: var(--text-primary);
}

.subheading-1 {
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0; /* Figma Subheading/S1: letterSpacing 0 */
}

.subheading-2 {
  font-size: 0.875rem;
  line-height: 1.5;
  letter-spacing: 0.02em; /* MOBILE/M S2: +2% */
}

/* ============================================
   BODY — Manrope
   ============================================ */

.body-l,
.body-m,
.body-s {
  font-family: var(--font-sans);
  color: var(--text-primary);
}

.body-l {
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0; /* Figma token Body L: letterSpacing 0 (mobile + desktop) */
}

.body-m {
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.01em; /* Body M: +1% */
}

.body-s {
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.55;
  letter-spacing: 0.02em; /* Body S: +2% */
}

/* ============================================
   UI — Button, Links, Caption
   ============================================ */

.button {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.02em; /* MOBILE/Button: +2% */
  color: var(--text-primary);
}

.link-l,
.link-m,
.link-s {
  font-family: var(--font-sans);
  font-weight: 600;
  color: var(--text-primary);
}

.link-l {
  font-size: 1rem;
  line-height: 1;
  letter-spacing: 0;
}

.link-m {
  font-size: 0.875rem;
  line-height: 1;
  letter-spacing: 0.01em; /* Button Link/Link Medium: +1% (nie 1px) */
}

.link-s {
  font-size: 0.75rem;
  line-height: 1;
  letter-spacing: 0.01em; /* Button Link/Link Small: +1% (nie 1px) */
}

/* Hashtagi (Mediateka) — Manrope SemiBold 16px / lh 1.5 / +2%, stałe na każdym BP */

.tag-link {
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.02em;
  color: var(--text-primary);
}

/* Captions 10/160 — Manrope Regular, tracking 0.3px = +3% (brak named tokenu w Figmie) */

.caption {
  font-family: var(--font-sans);
  font-size: 0.625rem;
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.03em;
  color: var(--text-primary);
}

/* ============================================
   SEMANTIC DEFAULTS (bare HTML tags)
   ============================================ */

h1 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 2rem;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--text-primary);
}

h2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--text-primary);
}

h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--text-primary);
}

h4 {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0.02em;
  margin: 0;
  color: var(--text-primary);
}

h5 {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.875rem;
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin: 0;
  color: var(--text-primary);
}

h6 {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: 0.75rem;
  line-height: 1.55;
  letter-spacing: 0.02em;
  margin: 0;
  color: var(--text-primary);
}

p {
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.01em;
  color: var(--text-primary);
}

/* ============================================
   UTILITY
   ============================================ */

/* .underlined — podkreślenie stale widoczne; wzorzec draw-underline w button.css */

.h-reset {
  text-transform: none;
  margin: 0;
}

/* .h-reset resetuje transform — przy współwystąpieniu z .is-lower / .is-upper przywracamy case. */

.h-reset.is-lower {
  text-transform: lowercase;
}

.h-reset.is-upper {
  text-transform: uppercase;
}

/*
  Responsive typography — Figma TS_dev (tablet / desktop).
  Mobile-first base: typography-base.css
  Audyt SG: docs/migration/typography-discrepancy-protocol.md
*/

/* ============================================
   TABLET (769px+)
   ============================================ */

@media (min-width: 769px) {

  .h2,
  h2 {
    font-size: 2.5rem;
    letter-spacing: -0.02em;
  }

  .h3,
  h3 {
    font-size: 2rem;
    line-height: 1.05;
    letter-spacing: -0.02em;
  }

  .section-title {
    font-size: 2.5rem; /* 40px — tablet i desktop */
    letter-spacing: -0.02em;
  }

  .subheading-1,
  h4 {
    font-size: 1.25rem;
  }

  .subheading-2,
  h5 {
    font-size: 1rem;
    letter-spacing: 0.02em;
  }

  .body-l {
    font-size: 1.25rem;
  }

  .body-m,
  p {
    font-size: 1rem;
    letter-spacing: 0.01em;
  }

  .button {
    font-size: 0.875rem;
    letter-spacing: 0.02em;
  }
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */

  .h1,
  h1 {
    font-size: 3rem; /* 48px — T H1 Up */
    letter-spacing: -0.02em;
  }
}

/* ============================================
   DESKTOP (1025px+)
   ============================================ */

@media (min-width: 1025px) {

  .h1,
  h1 {
    font-size: 3.75rem; /* 60px */
    letter-spacing: -0.02em;
  }

  .display {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 5rem;
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--text-primary);
  }

  /* .h2, .h3 — bez zmian vs tablet (Figma DESKTOP = TABLET na SG) */
}

/*
  KONWENCJA TYPOGRAFII (reużywalność):
  Typografię nakłada się KLASĄ w markupie (.h1/.h2/.h3, .section-title,
  .subheading-1/2, .body-l/m/s, .link-*, .button, .caption, .badge).
  W CSS komponentu dozwolone są tylko: layout, odstępy, kolor kontekstowy
  oraz nadpisania rozmiaru wynikające z Figmy — NIGDY pełna redefinicja
  font-family/size/line-height/letter-spacing.
  Wyjątki świadome (z komentarzem): .repertoire__month (container queries),
  .footer-contact__value (16px stałe poza skalą).
*/

/* Components — add project-specific imports below */

/*
 * Button component — outline pill (Figma Button_outline)
 */

.btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  height: 3rem;
  padding: 0.625rem 1.5rem;
  border: 1px solid var(--btn-secondary-border);
  border-radius: var(--radius-pill);
  background: var(--btn-secondary-background);
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.02em;
  text-transform: uppercase; /* Figma Button / legacy .c-button */
  color: var(--btn-secondary-text);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transform: perspective(1px) translateZ(0);
  transition: color var(--duration-slow) var(--easing-elastic), border-color var(--duration-slow) var(--easing-elastic);
}

.btn::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  width: 6.25rem;
  height: 6.25rem;
  margin: auto;
  border-radius: 100%;
  background: var(--main-off-black);
  transform: scale(0);
  transition: transform var(--duration-slow) var(--easing-elastic);
}

@media (min-width: 769px) { /* --breakpoint-tablet — Figma Button L */
  .btn {
    font-size: 0.875rem; /* 14px */
  }
}

.btn:not(.btn--free-entry):hover,
.btn:not(.btn--free-entry):focus-visible {
  color: var(--base-00);
  border-color: var(--main-off-black);
}

.btn--outline:hover,
.btn--outline:focus-visible {
  color: var(--base-00);
}

.btn:not(.btn--free-entry):hover::before,
.btn:not(.btn--free-entry):focus-visible::before {
  transform: scale(2.2);
}

.btn:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.btn--outline {
  border-color: var(--main-off-black);
  color: var(--main-off-black);
}

.btn--s {
  height: var(--btn-height-s);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .btn--s {
    height: 3rem;
  }
}

.btn--free-entry {
  height: var(--btn-height-s);
  border: none;
  border-radius: var(--radius-pill);
  background-color: var(--grey-100);
  color: var(--text-primary);
  cursor: default;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .btn--free-entry {
    height: 3rem;
  }
}

.btn--free-entry::before {
  display: none;
}

/*
 * Draw underline — prod. @mixin draw-underline (intui-system)
 * Jedyny wzorzec podkreślenia linków w serwisie (1px, animacja hover).
 * Klasa .draw-underline w markupie + selektory kontekstowe (WYSIWYG, kafle).
 */

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
) {
  display: inline-block;
  width: -moz-fit-content;
  width: fit-content;
  max-width: 100%;
  position: relative;
  padding: 0;
  text-decoration: none;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
)::before,
:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
)::after {
  content: "";
  display: block;
  position: absolute;
  bottom: 0;
  height: 1px;
  width: 0;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
)::before {
  left: 0;
  right: 0;
  transition: width 0s ease, background 0.4s ease;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
)::after {
  right: 2.2%;
  background: var(--main-off-black);
  transition: width 0.4s ease;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):hover,
:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):focus-visible {
  color: inherit;
  background: transparent;
  border-color: transparent;
  text-decoration: none;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):hover::before,
:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):focus-visible::before {
  width: 97.8%;
  background: var(--main-off-black);
  transition: width 0.4s ease;
}

:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):hover::after,
:is(
  .draw-underline,
  .underlined,
  .site-header__link,
  .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
  .breadcrumb__link,
  .news-card__more,
  .home-repertoire__link,
  .home-news__link,
  a.page-numbers,
  .event-page__pdf-link,
  .news-single__content a,
  .news-single__block a,
  .news-single__lead a,
  .contact-segment__content a:not(.contact-cta),
  .uss__prose a,
  .uss__list a,
  .uss__row,
  .event-page .event-section__content a,
  .footer-newsletter__consent a,
  .footer-captions__credits a
):focus-visible::after {
  width: 97.8%;
  background: transparent;
  transition: all 0s ease;
}

/* Utility: podkreślenie stale widoczne (bez hover) */

.underlined::before {
  width: 97.8%;
  background: var(--main-off-black);
}

/* Opis wydarzenia — czarne linki z podkreśleniem (prod. global underline). */

.event-page .event-section__content a {
  color: var(--text-primary);
}

.event-page .event-section__content a::before {
  width: 97.8%;
  background: var(--main-off-black);
}

/*
 * Podkreślenie na ciemnym tle — biała linia + offset pod baseline (text-box-trim).
 * Kontekst parenta + podwójna klasa: specyficzność wyższa niż :is(.draw-underline) wyżej.
 */

.site-menu .draw-underline.draw-underline--light::before,
.site-menu .draw-underline.draw-underline--light::after,
.site-menu .site-header__link.draw-underline::before,
.site-menu .site-header__link.draw-underline::after,
.site-menu .site-menu__link.draw-underline::before,
.site-menu .site-menu__link.draw-underline::after,
.site-menu .site-menu__featured-title-link.draw-underline::before,
.site-menu .site-menu__featured-title-link.draw-underline::after,
.site-footer .draw-underline.draw-underline--light::before,
.site-footer .draw-underline.draw-underline--light::after,
.site-footer .footer-menu__link.draw-underline::before,
.site-footer .footer-menu__link.draw-underline::after,
.site-footer .footer-newsletter__consent a::before,
.site-footer .footer-newsletter__consent a::after,
.site-footer .footer-captions__credits a::before,
.site-footer .footer-captions__credits a::after,
.emergency-bar .draw-underline.draw-underline--light::before,
.emergency-bar .draw-underline.draw-underline--light::after {
  bottom: -0.25rem;
}

.site-menu .draw-underline.draw-underline--light::after,
.site-menu .site-header__link.draw-underline::after,
.site-menu .site-menu__link.draw-underline::after,
.site-menu .site-menu__featured-title-link.draw-underline::after,
.site-footer .draw-underline.draw-underline--light::after,
.site-footer .footer-menu__link.draw-underline::after,
.site-footer .footer-newsletter__consent a::after,
.site-footer .footer-captions__credits a::after,
.emergency-bar .draw-underline.draw-underline--light::after {
  background-color: var(--base-00, #fff);
}

.site-menu .draw-underline.draw-underline--light:hover::before,
.site-menu .draw-underline.draw-underline--light:focus-visible::before,
.site-menu .site-header__link.draw-underline:hover::before,
.site-menu .site-header__link.draw-underline:focus-visible::before,
.site-menu .site-menu__link.draw-underline:hover::before,
.site-menu .site-menu__link.draw-underline:focus-visible::before,
.site-menu .site-menu__featured-title-link.draw-underline:hover::before,
.site-menu .site-menu__featured-title-link.draw-underline:focus-visible::before,
.site-footer .draw-underline.draw-underline--light:hover::before,
.site-footer .draw-underline.draw-underline--light:focus-visible::before,
.site-footer .footer-menu__link.draw-underline:hover::before,
.site-footer .footer-menu__link.draw-underline:focus-visible::before,
.site-footer .footer-newsletter__consent a:hover::before,
.site-footer .footer-newsletter__consent a:focus-visible::before,
.site-footer .footer-captions__credits a:hover::before,
.site-footer .footer-captions__credits a:focus-visible::before,
.emergency-bar .draw-underline.draw-underline--light:hover::before,
.emergency-bar .draw-underline.draw-underline--light:focus-visible::before {
  background-color: var(--base-00, #fff);
}

/*
 * Circle-expand hover — prod. @mixin button-hover + .l-navigation__button (40px ::before)
 */

.btn-hover-circle {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  transform: perspective(1px) translateZ(0);
  background-color: var(--base-mode-background);
  transition-property: color;
  transition-duration: 0.4s;
  transition-timing-function: var(--easing-elastic);
}

.btn-hover-circle::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  width: 2.5rem; /* 40px — .l-navigation__button:before */
  height: 2.5rem;
  margin: auto;
  border-radius: 100%;
  background: var(--main-off-black);
  transform: scale(0);
  transition-property: transform;
  transition-duration: 0.4s;
  transition-timing-function: var(--easing-elastic);
}

.btn-hover-circle:hover,
.btn-hover-circle:focus-visible {
  background-color: var(--base-mode-background);
}

.btn-hover-circle:hover::before,
.btn-hover-circle:focus-visible::before {
  transform: scale(2.2);
}

.btn-hover-circle:hover svg,
.btn-hover-circle:focus-visible svg {
  filter: invert(1);
}

.btn-hover-circle:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/*
 * Arrow control — plain arrow default; hover: white arrow in black circle (prod. button-hover)
 * Prod: .l-header__content__title > a — padding 10px, icon 33px, ::before 40px, scale(2.2)
 */

.arrow-control {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  flex-shrink: 0;
  padding: 0.625rem; /* 10px */
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--text-primary);
  text-decoration: none;
  cursor: pointer;
  transform: perspective(1px) translateZ(0);
  transition: color var(--duration-slow) var(--easing-elastic);
}

.arrow-control::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  width: 2.5rem; /* 40px */
  height: 2.5rem;
  margin: auto;
  border-radius: 100%;
  background: var(--main-off-black);
  transform: scale(0);
  transition: transform var(--duration-slow) var(--easing-elastic);
}

.arrow-control:hover,
.arrow-control:focus-visible {
  color: var(--base-00);
}

.arrow-control:hover::before,
.arrow-control:focus-visible::before {
  transform: scale(2.2);
}

.arrow-control:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.arrow-control svg {
  display: block;
  flex-shrink: 0;
  width: 2.0625rem; /* 33px */
  height: 2.0625rem;
}

/* Respektuj prefers-reduced-motion: stan hover/focus pozostaje, znika ruch (WCAG 2.3.3) */

@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn::before,
  .btn-hover-circle,
  .btn-hover-circle::before,
  .arrow-control,
  .arrow-control::before,
  :is(
    .draw-underline,
    .underlined,
    .site-header__link,
    .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
    .breadcrumb__link,
    .news-card__more,
    .home-repertoire__link,
    .home-news__link,
    a.page-numbers,
    .event-page__pdf-link,
    .news-single__content a,
    .news-single__block a,
    .news-single__lead a,
    .contact-segment__content a:not(.contact-cta),
    .uss__prose a,
    .uss__list a,
    .uss__row,
    .event-page .event-section__content a,
    .footer-newsletter__consent a,
  .footer-captions__credits a
  )::before,
  :is(
    .draw-underline,
    .underlined,
    .site-header__link,
    .footer-menu__link,
  .site-menu__link,
  .site-menu__featured-title-link,
    .breadcrumb__link,
    .news-card__more,
    .home-repertoire__link,
    .home-news__link,
    a.page-numbers,
    .event-page__pdf-link,
    .news-single__content a,
    .news-single__block a,
    .news-single__lead a,
    .contact-segment__content a:not(.contact-cta),
    .uss__prose a,
    .uss__list a,
    .uss__row,
    .event-page .event-section__content a,
    .footer-newsletter__consent a,
  .footer-captions__credits a
  )::after {
    transition: none;
  }
}

/*
 * Badge — plakietka/pill (Figma: featured-news, live-stream).
 * Import w main.css: tuż po button.css, PRZED konsumentami (live-stream, featured-news),
 * żeby ich nadpisania layoutu (np. margin-top) nie ginęły pod `margin: 0` poniżej.
 * Baza = wariant featured (padding 8, line-height 1.5).
 * Konsumenci mogą nadpisać padding / line-height / wyrównanie.
 */

.badge {
  display: inline-flex;
  align-items: center;
  margin: 0;
  min-height: 1.25rem; /* 20px */
  padding: 0 var(--mobile-content-xxs); /* 0 8px */
  border-radius: var(--radius-pill);
  background-color: var(--grey-200);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem; /* 12px → 14px (tablet+) */
  line-height: 1.5;
  letter-spacing: 0.02em;
  color: var(--text-primary);
  white-space: nowrap;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .badge {
    font-size: 0.875rem; /* 14px */
  }
}

/*
 * Inline accessibility icons (PJM, induction loop) inside WYSIWYG prose.
 * inline-block + 1em + negative valign = sit on the x-height, no line-box strut.
 */

.a11y-inline-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  max-width: 1.2em;
  margin: 0 0.05em 0 0.25em;
  vertical-align: -0.15em;
  -o-object-fit: contain;
     object-fit: contain;
  -o-object-position: center;
     object-position: center;
}

/* PJM asset is landscape — keep height, let width follow aspect ratio. */

.a11y-inline-icon--pjm {
  width: auto;
  height: 1em;
  max-width: 1.2em;
}

/* Override block-level content image rules (news / content builder). */

:is(
  .event-section__content,
  .news-single__content,
  .news-single__block,
  .news-single__lead
) img.a11y-inline-icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  max-width: 1.2em;
  margin: 0 0.05em 0 0.25em;
  vertical-align: -0.15em;
}

:is(
  .event-section__content,
  .news-single__content,
  .news-single__block,
  .news-single__lead
) img.a11y-inline-icon--pjm {
  width: auto;
  height: 1em;
  max-width: 1.2em;
}

/* Icon-only link leftovers (if any host wrapper survives). */

:is(
  .event-page .event-section__content,
  .news-single__content,
  .news-single__block,
  .news-single__lead
) a:has(> .a11y-inline-icon):not(:has(:not(.a11y-inline-icon))) {
  display: inline;
  width: auto;
  max-width: none;
  vertical-align: baseline;
}

:is(
  .event-page .event-section__content,
  .news-single__content,
  .news-single__block,
  .news-single__lead
) a:has(> .a11y-inline-icon):not(:has(:not(.a11y-inline-icon)))::before,
:is(
  .event-page .event-section__content,
  .news-single__content,
  .news-single__block,
  .news-single__lead
) a:has(> .a11y-inline-icon):not(:has(:not(.a11y-inline-icon)))::after {
  content: none;
  display: none;
}

/*
 * Emergency bar — komunikat specjalny (Figma Emergency Bar).
 * Węzły: 64:9703 (mobile), 64:8768 (tablet), 64:7823 (desktop).
 */

.emergency-bar {
  position: relative;
  z-index: 210;
  background-color: var(--green-500);
  color: var(--base-00);
}

.emergency-bar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m);
  min-height: var(--emergency-bar-height-mobile);
  padding-block: var(--mobile-content-xs);
}

/* Typografia: .subheading-2 / .button z markupu. Tu tylko layout + kolor (inherit). */

.emergency-bar__message {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  color: inherit;
  text-box: trim-both cap alphabetic;
}

.emergency-bar__link {
  flex-shrink: 0;
  color: inherit;
  white-space: nowrap;
  text-box: trim-both cap alphabetic;
}

@media (min-width: 769px) {

  .emergency-bar__inner {
    gap: var(--tablet-content-m);
    min-height: var(--emergency-bar-height-tablet);
    padding-block: 0;
  }

  .emergency-bar__message {
    flex: 0 1 auto;
    white-space: nowrap;
  }
}

@media (min-width: 1025px) {

  .emergency-bar .container {
    padding-inline: var(--desktop-container-padding);
  }
}

/*
 * Pasek A/B trybu wiązania tagów — narzędzie redakcji, nie produkt jak Figma.
 */

.tag-policy-bar {
  display: block;
  position: relative;
  z-index: 220;
  background-color: var(--yellow-500);
  color: var(--main-off-black);
  text-decoration: none;
}

.tag-policy-bar:hover,
.tag-policy-bar:focus-visible {
  text-decoration: none;
  filter: brightness(0.96);
}

.tag-policy-bar__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--mobile-content-xs) var(--mobile-content-m);
  padding-block: var(--mobile-content-xs);
}

.tag-policy-bar__label,
.tag-policy-bar__hint {
  margin: 0;
  color: inherit;
}

.tag-policy-bar__hint {
  opacity: 0.8;
}

/*
 * Site header — Top Bar v2 (Figma Event Horizontal).
 */

.site-header {
  position: relative;
  z-index: 100;
  background-color: var(--base-mode-background);
  color: var(--text-primary);
}

.site-header__inner {
  display: flex;
  align-items: center;
  gap: var(--content-xs); /* min. logo ↔ akcje — nie space-between (to zjada odstęp) */
  min-height: var(--site-header-height-mobile);
}

.site-header__logo {
  display: flex;
  flex-shrink: 0;
  text-decoration: none;
}

.site-header__logo img {
  display: block;
  width: 100%;
  max-width: 10.1875rem; /* 163px — Figma mobile logo */
  height: auto;
}

.site-header__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex: 1;
  min-width: 0;
  gap: var(--site-header-actions-gap-mobile);
}

.site-header__nav {
  display: none;
  align-items: center;
  gap: var(--site-header-actions-gap);
  flex-shrink: 0;
}

.site-header__link {
  flex-shrink: 0;
  white-space: nowrap;
  text-decoration: none;
  color: var(--text-primary);
}

/* Menu toggle — layout only; hover: .btn-hover-circle in button.css */

.site-header__menu-btn {
  box-sizing: border-box;
  flex-shrink: 0;
  width: var(--site-header-menu-size-mobile);
  height: var(--site-header-menu-size-mobile);
  padding: 0;
  border: 1px solid var(--main-off-black);
  border-radius: var(--radius-pill);
  color: var(--main-off-black);
  cursor: pointer;
}

.site-header__menu-btn svg {
  display: block;
  width: 0.75rem; /* 12px */
  height: 0.625rem; /* 10px */
}

/* ============================================
   Tablet (769px+)
   ============================================ */

@media (min-width: 769px) { /* --breakpoint-tablet */

  .site-header__inner {
    min-height: var(--site-header-height-tablet);
  }

  .site-header__logo img {
    max-width: 15.3125rem; /* 245px */
  }

  .site-header__actions {
    gap: var(--site-header-actions-gap);
  }

  .site-header__nav {
    display: flex;
  }

  .site-header__menu-btn {
    width: var(--site-header-menu-size);
    height: var(--site-header-menu-size);
  }
}

/*
 * Site menu overlay — layout (Figma 37:2923 / 37:2826 / 37:2457).
 * Siatka lokalna 2/6/12; BP: < 769 mobile | 769–1024 tablet | >= 1025 desktop
 */

/* --- Overlay ---
   Mobile: solid off-black (stara prod. + Figma).
   Tablet+: półprzezroczyste tło + blur (stara prod. .l-navigation__menu). */

.site-menu {
  position: fixed;
  inset: 0;
  z-index: 200;
  flex-direction: column;
  background-color: var(--main-off-black);
  color: var(--base-00);
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--duration-fast) var(--easing-out),
    visibility 0s linear var(--duration-fast);
}

.site-menu:not([hidden]) {
  display: flex;
}

.site-menu.is-open {
  opacity: 1;
  visibility: visible;
  transition:
    opacity var(--duration-fast) var(--easing-out),
    visibility 0s linear 0s;
}

/* Komunikat specjalny zostaje na wierzchu — menu otwiera się pod paskiem */

body:has(.emergency-bar) .site-menu {
  top: var(--emergency-bar-height-mobile);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  body:has(.emergency-bar) .site-menu {
    top: var(--emergency-bar-height-tablet);
  }
}

/*
 * WP admin bar (zalogowany użytkownik): html dostaje margin-top, ale position:fixed
 * liczy się względem viewportu — bez tego menu „skacze” w górę o wysokość paska (~46/32px).
 * Progi 782/783px — standard WordPress (#wpadminbar), nie breakpointy motywu.
 */

.admin-bar .site-menu {
  top: 46px;
}

@media screen and (min-width: 783px) {
  .admin-bar .site-menu {
    top: 32px;
  }
}

body.admin-bar:has(.emergency-bar) .site-menu {
  top: calc(46px + var(--emergency-bar-height-mobile));
}

@media screen and (min-width: 783px) {
  body.admin-bar:has(.emergency-bar) .site-menu {
    top: calc(32px + var(--emergency-bar-height-tablet));
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-menu {
    transition: none;
  }
}

/* Pasek menu ma własny padding 24px na mobile/tablet (Figma).
   Padding pozostaje na .container, żeby zachować wspólną oś z headerem;
   pseudo-element pozwala niezależnie wciąć separator. */

.site-menu__bar {
  --site-menu-bar-padding: var(--tablet-container-padding);

  flex-shrink: 0;
}

.site-menu__bar .container {
  position: relative;
  padding-left: var(--site-menu-bar-padding);
  padding-right: var(--site-menu-bar-padding);
}

.site-menu__bar .container::after {
  content: "";
  position: absolute;
  right: var(--site-menu-bar-padding);
  bottom: 0;
  left: var(--site-menu-bar-padding);
  height: 1px;
  background-color: var(--base-00);
}

.site-menu__body .container {
  padding-left: var(--tablet-container-padding);
  padding-right: var(--tablet-container-padding);
}

/* Niewidoczna kopia nav — zachowuje pozycję przycisku zamknięcia jak przycisku menu */

.site-menu__bar-nav {
  visibility: hidden;
  pointer-events: none;
}

.site-menu__close {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: transparent;
  border-color: var(--base-00);
  color: var(--base-00);
}

.site-menu__close.btn-hover-circle {
  background-color: transparent;
}

.site-menu__close.btn-hover-circle::before {
  background: var(--base-00);
}

.site-menu__close.btn-hover-circle:hover,
.site-menu__close.btn-hover-circle:focus-visible {
  background-color: transparent;
}

.site-menu__close svg {
  display: block;
  width: 0.75rem;
  height: 0.75rem;
}

/* --- Treść menu --- */

.site-menu__body {
  flex: 1;
  overflow-y: auto;
  padding-block: var(--site-menu-body-pt) var(--site-menu-body-pb);
}

.site-menu__grid {
  display: flex;
  flex-direction: column;
  gap: var(--site-menu-links-featured-gap);
}

/* --- Strefa linków --- */

.site-menu__links {
  display: flex;
  flex-direction: column;
  gap: var(--site-menu-group-gap);
}

.site-menu__col {
  display: flex;
  flex-direction: column;
  gap: var(--site-menu-group-gap);
}

.site-menu__list {
  display: flex;
  flex-direction: column;
  gap: var(--site-menu-link-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-menu__list li {
  display: flex;
}

/* Typografia linków — Figma M S1 (16px/1.4/0) mobile, Button (14px/1.5/2%) tablet+ */

.site-menu__link {
  color: var(--base-00);
  font-size: 1rem; /* 16px — pin mobile (Figma MOBILE/M S1) */
  line-height: 1.4; /* pin mobile (M S1); tablet+ przywraca 1.5 (Button) */
  letter-spacing: 0; /* pin mobile (M S1); tablet+ przywraca 2% (Button) */
  text-box: trim-both cap alphabetic;
}

.site-menu__social {
  display: flex;
  gap: var(--site-menu-social-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-menu__social-link {
  display: flex;
  color: var(--grey-600);
}

.site-menu__social-link svg {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
}

/* --- Polecamy (ukryte na mobile) --- */

.site-menu__featured {
  display: none;
  min-width: 0;
}

.site-menu__featured-title {
  margin: 0;
  font-size: 2rem; /* 32px — pin H3 Low (Figma) */
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-box: trim-both cap alphabetic;
}

.site-menu__featured-card {
  display: flex;
  flex-direction: column;
  gap: var(--site-menu-featured-gap);
  min-width: 0;
}

.site-menu__featured-media {
  display: block;
  width: 100%;
  aspect-ratio: 548 / 220;
  overflow: hidden;
}

.site-menu__featured-media img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.site-menu__featured-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--site-menu-featured-gap);
}

.site-menu__featured-meta .category-tag__label {
  color: var(--base-00);
  text-box: trim-both cap alphabetic;
}

.site-menu__featured-date {
  margin: 0;
  color: var(--base-00);
  text-box: trim-both cap alphabetic;
}

.site-menu__featured-title-link {
  margin: 0;
  color: var(--base-00);
  text-decoration: none;
  font-size: 2rem; /* 32px — pin H3 Up (Figma) */
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-box: trim-both cap alphabetic;
}

/* ============================================
   Tablet (769px+)
   ============================================ */

@media (min-width: 769px) { /* --breakpoint-tablet */

  .site-menu {
    background-color: rgba(0, 13, 12, 0.85);
    backdrop-filter: blur(15px);
  }

  .site-menu__bar .container::after {
    background-color: var(--grey-500-caption);
  }

  .site-menu__links {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--footer-section-gap);
  }

  .site-menu__col {
    flex: 0 0 var(--footer-menu-col-width);
    width: var(--footer-menu-col-width);
    gap: var(--site-menu-group-gap);
  }

  .site-menu__col:last-child {
    display: flex;
    flex-direction: column;
    min-height: 100%;
  }

  .site-menu__social {
    margin-top: auto;
  }

  .site-menu__featured {
    display: flex;
    flex-direction: column;
    gap: var(--site-menu-featured-gap);
    width: 34.25rem; /* 548px — Figma Horizontal Photo, szerokość stała (nie stretch) */
    max-width: 34.25rem;
  }

  /* Nav overlay pozostaje 14px/1.5/2% na każdym BP — pin .subheading-2 (Figma Button) */
  .site-menu__link {
    font-size: 0.875rem;
    line-height: 1.5;
    letter-spacing: 0.02em;
  }
}

/* ============================================
   Desktop (1025px+)
   ============================================ */

@media (min-width: 1025px) { /* --breakpoint-desktop */

  .site-menu__bar {
    --site-menu-bar-padding: var(--desktop-container-padding);
  }

  .site-menu__body .container {
    padding-left: var(--desktop-container-padding);
    padding-right: var(--desktop-container-padding);
  }

  .site-menu__grid {
    flex-direction: row;
    align-items: flex-start;
    gap: 0;
  }

  .site-menu__links {
    flex: 0 0 auto;
  }

  .site-menu__featured {
    flex: 0 0 34.25rem; /* 548px — Figma Horizontal Photo; width/max-width z bloku Tablet+ */
    margin-left: auto;
  }
}

/*
 * Live stream — transmisja online (Figma Live).
 * Węzły: 64:9756 (mobile), 64:8823 (tablet), 64:7840 (desktop).
 *
 * Mobile/tablet: player → treść (col-span-full).
 * Desktop: 6 + 6 kolumn w .grid-container (12 tracków), bez sztywnych px.
 */

.live-stream {
  background-color: var(--base-mode-background);
  padding-bottom: var(--mobile-content-m);
}

.live-stream__grid {
  align-items: stretch;
}

.live-stream__player,
.live-stream__content {
  grid-column: 1 / -1;
  min-width: 0;
}

.live-stream__player {
  width: 100%;
  min-width: 0;
  aspect-ratio: 358 / 201;
  background-color: var(--base-190);
  overflow: hidden;
}

/* Embed dostawcy — wypełnia nasz kontener (wygląd playera = nadaje.com) */

.live-stream__player > div,
.live-stream__player iframe,
.live-stream__player video {
  width: 100% !important;
  height: 100% !important;
}

.live-stream__content {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
  padding-top: var(--mobile-content-m);
  padding-bottom: var(--content-pt-section);
  border-bottom: var(--section-divider);
}

/* Plakietka = .badge (badge.css); tu różnice wariantu live: padding 12, lh 1, wyrównanie. */

.live-stream__badge {
  align-self: flex-start;
  padding: 0 var(--mobile-content-xs); /* 0 12px */
  line-height: 1;
}

.live-stream__title {
  margin: 0;
  color: var(--text-primary);
  text-box: trim-both cap alphabetic;
}

@media (min-width: 769px) {

  .live-stream {
    padding-bottom: var(--tablet-content-l);
  }

  .live-stream__player {
    aspect-ratio: auto;
    min-height: 27.5rem;        /* 440px — tablet frame */
  }

  .live-stream__content {
    gap: 2rem;                  /* 32px — Figma Left Div, stałe M/T/D */
    padding-top: 2rem;          /* 32px — Figma Left Div, stałe M/T/D */
    padding-bottom: var(--tablet-content-l);
  }
}

@media (min-width: 1025px) {

  .live-stream {
    padding-bottom: 2.5rem;     /* 40px — Figma Live pb */
  }

  .live-stream__grid {
    row-gap: 0;
  }

  .live-stream__player {
    grid-column: 7 / span 6;
    grid-row: 1;
    min-height: 0;
    aspect-ratio: 16 / 9;
    align-self: start;
  }

  .live-stream__content {
    grid-column: 1 / span 6;
    grid-row: 1;
    gap: 0;
    justify-content: space-between;
    margin: 0;
    padding: 0 0 var(--desktop-content-l);
    border-top: var(--section-divider);
    border-bottom: var(--section-divider);
  }

  .live-stream__badge {
    margin-top: var(--desktop-content-m);
  }
}

/*
 * Featured news — wyróżniony news (Figma News Div).
 * Węzły: 64:9852 (mobile), 64:8919 (tablet), 64:7909 (desktop).
 *
 * Mobile/tablet: meta → tytuł → akapit + link (col-span-full).
 * Desktop: meta, potem 6 + 6 kolumn w .grid-container.
 */

.featured-news {
  background-color: var(--base-mode-background);
  padding-bottom: var(--mobile-content-m);
}

.featured-news__inner {
  border-top: var(--section-divider);
  border-bottom: var(--section-divider);
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--content-pt-section);
}

.featured-news__meta {
  display: flex;
  align-items: center;
  gap: var(--gap-compact); /* badge ↔ data */
  margin-bottom: var(--mobile-content-m);
}

/* Plakietka = .badge (badge.css); tu tylko trim line-boxa wspólny z datą. */

.featured-news__badge,
.featured-news__date {
  text-box: trim-both cap alphabetic;
}

.featured-news__date {
  margin: 0;
}

.featured-news__grid {
  row-gap: var(--mobile-content-l);
}

.featured-news__title,
.featured-news__body,
.featured-news__excerpt,
.featured-news__link {
  text-box: trim-both cap alphabetic;
}

.featured-news__title,
.featured-news__body {
  grid-column: 1 / -1;
  min-width: 0;
}

.featured-news__title {
  margin: 0;
}

.featured-news__body {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

.featured-news__excerpt {
  margin: 0;
}

.featured-news__link {
  align-self: flex-start;
  color: var(--text-primary);
}

.featured-news__link::before,
.featured-news__link::after {
  bottom: -5px;
}

@media (min-width: 769px) {

  .featured-news {
    padding-bottom: var(--tablet-content-l);
  }

  .featured-news__inner {
    padding-top: var(--mobile-content-m);
    padding-bottom: var(--mobile-content-m);
  }
}

@media (min-width: 1025px) {

  .featured-news {
    padding-bottom: var(--tablet-content-l);
  }

  .featured-news .container {
    padding-inline: var(--desktop-container-padding);
  }

  .featured-news__inner {
    padding-top: var(--desktop-content-m);
    padding-bottom: var(--desktop-content-xl);
  }

  .featured-news__grid {
    row-gap: 0;
    align-items: stretch;
  }

  .featured-news__title {
    grid-column: 1 / span 6;
    padding-right: var(--desktop-content-2xs);
  }

  .featured-news__body {
    grid-column: 7 / span 6;
    justify-content: space-between;
    min-height: 100%;
  }
}

/*
 * Global footer — layout (Figma 32:1974 / 32:1222 / 3:3660).
 * Typografia: klasy współdzielone w markupie (.section-title, .body-*, .subheading-2,
 * .button). Tu wyłącznie layout, reset marginesu i kolor kontekstowy (tekst na ciemnym tle).
 * BP: < 769 mobile | 769–1024 tablet | >= 1025 desktop
 */

/* --- Grafika stopki --- */

.footer-info__logo {
  grid-area: logo;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 5.8125rem;
  height: 9.8125rem;
  flex-shrink: 0;
}

.footer-info__logo img {
  display: block;
  width: auto;
  height: 100%;
  max-width: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

@media (min-width: 769px) {
  .footer-info__logo {
    width: 9rem;
  }
}

.footer-info__social-link svg {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
}

.footer-partners__link {
  display: block;
  flex-shrink: 0;
}

.footer-partners__logo {
  display: block;
  height: 2.25rem;
  width: auto;
}

.footer-funding__logo {
  display: block;
  height: 3.5rem;
  width: auto;
  max-width: 100%;
}

/* --- Separatory --- */

.site-footer .footer-separator {
  margin: 0;
  border: 0;
  border-top: 1px solid var(--grey-700, #616161);
  width: 100%;
}

/* --- Typografia --- */

.site-footer {
  background: var(--main-off-black, #000d0c);
  color: var(--base-00, #fff);
}

.site-footer a {
  color: inherit;
  text-decoration: none;
}

.site-footer a:focus-visible {
  outline: var(--outline-focus-width, 3px) solid var(--color-accessibility-focus, #21759b);
  outline-offset: var(--outline-focus-offset, 4px);
}

/* Typografia tych elementów = klasy współdzielone z markupu
   (.section-title, .body-l/m/s, .subheading-2, .button). Tutaj wyłącznie
   layout, reset marginesu i kolor kontekstowy (tekst na ciemnym tle). */

.footer-newsletter__lead {
  margin: 0;
  color: var(--base-00, #fff);
}

.footer-newsletter__intro {
  display: flex;
  flex-direction: column;
  gap: var(--content-xs);
  min-width: 0;
  margin-bottom: var(--newsletter-stack-gap);
}

.footer-contact__label {
  margin: 0;
  color: var(--base-00, #fff);
}

.footer-contact__label--mobile-only {
  display: block;
}

@media (min-width: 769px) {
  .footer-contact__label--mobile-only {
    display: none;
  }
}

/* Wyjątek: 16px stałe na każdym BP (Figma) — brak klasy w skali (.body-m = 14→16). */

.footer-contact__value {
  margin: 0;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.5;
  letter-spacing: 0.01em;
  color: var(--base-00, #fff);
  overflow-wrap: anywhere;                 /* WCAG 1.4.12: e-mail/telefon łamią się przy zwiększonych odstępach (320px) */
}

/* WYSIWYG z ACF — .body-m dziedziczy --text-primary (ciemny); na ciemnym tle stopki tekst znika.
   display:contents → <li> trafiają do gridu .footer-info (mobile/tablet) lub flex .footer-info__contacts (desktop).
   Specyficzność .footer-contact.footer-contact--wysiwyg > .footer-contact { display:flex }. */

.footer-contact {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xxs);
  min-width: 0;
}

.footer-contact.footer-contact--wysiwyg {
  display: contents;
}

.footer-contact.footer-contact--wysiwyg ul {
  display: contents;
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Blok (nie flex) — treść <li> rozdzielona <br>; flex+gap policzyłby każdy <br> i węzeł
   tekstowy jako osobny item, rozpychając linie. <br> działa w normalnym flow. */

.footer-contact.footer-contact--wysiwyg li {
  display: block;
  margin: 0;
  min-width: 0;
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.5;
  letter-spacing: 0.01em;
  color: var(--base-00, #fff);
  overflow-wrap: anywhere;
}

/* Label (12px) + odstęp 8px do wartości (Figma form_info gap). */

.footer-contact.footer-contact--wysiwyg small {
  display: block;
  margin-bottom: var(--mobile-content-xxs);
  font-size: 0.75rem;
  line-height: 1.55;
  letter-spacing: 0.02em;
  color: var(--base-00, #fff);
}

/* <br> zaraz po labelu dubluje odstęp (label ma już margin-bottom). */

.footer-contact.footer-contact--wysiwyg small + br {
  display: none;
}

@media (min-width: 769px) {
  .footer-contact.footer-contact--wysiwyg li:first-child small {
    display: none;
  }
}

.footer-contact.footer-contact--wysiwyg li:nth-child(1) {
  grid-area: address;
  align-self: end;
}

.footer-contact.footer-contact--wysiwyg li:nth-child(2) {
  grid-area: secret;
}

.footer-contact.footer-contact--wysiwyg li:nth-child(3) {
  grid-area: boxoffice;
}

@media (min-width: 769px) {
  .footer-contact.footer-contact--wysiwyg li:nth-child(1) {
    align-self: stretch;
  }
}

@media (min-width: 1025px) {
  .footer-contact.footer-contact--wysiwyg li {
    grid-area: unset;
    align-self: auto;
  }
}

.footer-menu__link {
  color: var(--base-00, #fff);
  /* Figma: link to box cap-height (h-10) + gap 20px liczony cap-do-cap.
     Bez trimu line-height 1.5 dokłada ~11px leadingu i rozpycha odstępy. */
  text-box: trim-both cap alphabetic;
}

/* Nav stopki pozostaje na rozmiarze S (14px) na każdym BP — pin .subheading-2 (Figma). */

@media (min-width: 769px) {
  .footer-menu__link {
    font-size: 0.875rem;
  }
}

.footer-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--desktop-content-2xs);
}

/* <li> flex → wysokość = przycięty link (cap-height 10px), bez strutu
   line-boxa (16px/normal ≈ 22px), który rozpychał gap z 30px do 42px. */

.footer-menu__list li {
  display: flex;
}

.footer-captions__copy,
.footer-captions__credits {
  margin: 0;
  color: var(--grey-500-caption, #a2a2a2);
}

.footer-funding {
  background: var(--base-00, #fff);
  color: var(--text-primary, var(--main-off-black));
}

/* --- Formularz newsletter --- */

.footer-newsletter__form:not([hidden]) {
  display: flex;
  flex-direction: column;
  gap: var(--content-xs);
  min-width: 0;
}

.footer-newsletter__field {
  min-width: 0;
}

.footer-newsletter__input-wrap {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 0.25rem; /* 4px — Figma form_info */
  min-width: 0;
}

.footer-newsletter__form-row {
  display: flex;
  gap: var(--mobile-content-xxs);
  align-items: flex-start;
}

@media (min-width: 769px) {
  .footer-newsletter__form-row {
    gap: var(--tablet-content-xs);
  }
}

.footer-newsletter__input {
  flex: 1 1 auto;
  min-width: 0;
  height: 2.5rem;
  padding: 0 1.5rem;
  border: 1px solid transparent;
  border-radius: var(--radius-pill, 60px);
  background: var(--grey-200, #dadada);
}

@media (min-width: 769px) {
  .footer-newsletter__input {
    height: 3rem;
  }
}

.footer-newsletter__input::-moz-placeholder {
  color: var(--main-off-black, #000d0c);
}

.footer-newsletter__input::placeholder {
  color: var(--main-off-black, #000d0c);
}

.footer-newsletter__input:focus-visible {
  outline: var(--outline-focus-width, 3px) solid var(--color-accessibility-focus, #21759b);
  outline-offset: 2px;
}

.footer-newsletter__input[aria-invalid="true"] {
  border: 1px solid var(--red-300, #f5857c);
  background: var(--grey-300, #c7c7c7);
}

.footer-newsletter__submit {
  flex: 0 0 auto;
  height: 2.5rem;
  min-width: 5.5rem;
  padding: 0.625rem 1.5rem;
  border: 1px solid var(--base-00, #fff);
  border-radius: var(--radius-pill, 60px);
  background: transparent;
  color: var(--base-00, #fff);
  cursor: pointer;
  white-space: nowrap;
}

@media (min-width: 769px) {
  .footer-newsletter__submit {
    height: 3rem;
    min-width: 6.25rem;
  }
}

.footer-newsletter__submit:hover,
.footer-newsletter__submit:focus-visible {
  background: rgba(255, 255, 255, 0.08);
}

.footer-newsletter__consent {
  display: flex;
  gap: var(--mobile-content-xxs);
  align-items: flex-start;
  padding-left: var(--checkbox-offset, 4px);
  color: var(--grey-300, #c7c7c7);
  cursor: pointer;
}

.footer-newsletter__checkbox {
  -webkit-appearance: none;
  -moz-appearance: none;
       appearance: none;
  display: grid;
  place-content: center;
  flex: 0 0 1rem;
  width: 1rem;
  height: 1rem;
  margin: 0.125rem 0 0 0;
  border: 1px solid var(--base-00, #fff);
  border-radius: var(--radius-sm, 2px);
  background: var(--main-off-black, #000d0c);
  cursor: pointer;
}

.footer-newsletter__checkbox::before {
  content: "";
  width: 0.5rem;
  height: 0.5rem;
  background: var(--base-00, #fff);
  clip-path: polygon(14% 44%, 0 58%, 38% 96%, 100% 18%, 86% 4%, 36% 66%);
  transform: scale(0);
}

.footer-newsletter__checkbox:checked::before {
  transform: scale(1);
}

.footer-newsletter__consent:focus-within {
  outline: none;
}

.footer-newsletter__checkbox:focus-visible {
  outline: var(--outline-focus-width, 3px) solid var(--color-accessibility-focus, #21759b);
  outline-offset: 2px;
}

.footer-newsletter__checkbox[aria-invalid="true"] {
  outline: 2px solid var(--red-300, #f5857c);
  outline-offset: 2px;
}

.footer-newsletter__error {
  margin: 0;
  padding-left: 1.5rem;
  color: var(--red-300, #f5857c);
}

.footer-newsletter__error--consent {
  padding-left: calc(var(--checkbox-offset, 0.25rem) + 1rem + var(--mobile-content-xxs));
}

.footer-newsletter__success:not([hidden]) {
  display: flex;
  flex-direction: column;
  gap: var(--content-xs);
  align-self: stretch;
  justify-content: center;
  min-width: 0;
  color: var(--base-00, #fff);
}

.footer-newsletter__success-title,
.footer-newsletter__success-lead {
  margin: 0;
  color: var(--base-00, #fff);
}

/* --- Layout --- */

.footer-newsletter__inner {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding-top: var(--mobile-newsletter-pt, 2.25rem);
  padding-bottom: 0;
}

/* Figma: pb 48/72 przed linią — tylko margin-top, bez sumowania z flex gap */

.site-footer .footer-newsletter__separator {
  margin-top: var(--mobile-content-xl, 48px);
  border-top-color: var(--base-00, #fff);
}

.footer-main__inner {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xxl, 72px);
  padding-top: var(--mobile-content-xxl, 72px);
  padding-bottom: var(--mobile-content-xxl, 72px);
}

.footer-info {
  display: grid;
  min-width: 0;
  grid-template-columns: repeat(2, 1fr);
  -moz-column-gap: var(--mobile-gutter, 16px);
       column-gap: var(--mobile-gutter, 16px);
  row-gap: var(--tablet-content-l);
  grid-template-areas:
    "logo    address"
    "secret  boxoffice"
    "social  .";
}

.footer-info__brand,
.footer-info__contacts {
  display: contents;
}

.footer-info__address {
  grid-area: address;
  align-self: end;
}

.footer-info__secretariat {
  grid-area: secret;
}

.footer-info__box-office {
  grid-area: boxoffice;
}

.footer-info__social {
  grid-area: social;
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 10.6875rem;
  padding-top: var(--mobile-content-l);
  list-style: none;
  margin: 0;
  padding-left: 0;
  padding-right: 0;
}

.footer-info__social-link {
  display: inline-flex;
  border-radius: 50%;
  color: var(--grey-600);
}

@media (min-width: 769px) {
  .footer-info__social {
    gap: var(--desktop-content-m);
    max-width: none;
    justify-content: flex-start;
    padding-top: 0;
  }
}

.footer-main__divider {
  margin: 0;
  border: 0;
  border-top: 1px solid var(--grey-700, #616161);
  width: 100%;
}

.footer-menu {
  min-width: 0;
}

.footer-menu__col {
  display: contents;
}

.footer-menu__group {
  -moz-column-break-inside: avoid;
       break-inside: avoid;
}

.footer-menu__group + .footer-menu__group {
  margin-top: var(--footer-nav-col-gap, 50px);
}

.footer-menu__col + .footer-menu__col > .footer-menu__group:first-child {
  margin-top: var(--footer-nav-col-gap, 50px);
}

.footer-menu__col:first-child > .footer-menu__group:nth-child(4),
.footer-menu__col:last-child > .footer-menu__group:nth-child(2) {
  margin-top: var(--mobile-content-l, 32px);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .footer-menu__col + .footer-menu__col > .footer-menu__group:first-child {
    margin-top: 0;
  }

  .footer-menu__col:first-child > .footer-menu__group:nth-child(4),
  .footer-menu__col:last-child > .footer-menu__group:nth-child(2) {
    margin-top: var(--footer-nav-col-gap, 50px);
  }
}

.footer-partners {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--footer-partners-gap-mobile, 66px);
  padding-top: var(--mobile-content-l, 32px);
  border-top: 1px solid var(--grey-700, #616161);
}

.footer-funding__inner {
  box-sizing: border-box;
  width: 100%;
  max-width: var(--container-max-width);
  margin-inline: auto;
}

.footer-captions__inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--content-xs);
}

.footer-funding__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--tablet-content-l);
  padding-block: var(--desktop-content-m);
  padding-inline: var(--footer-edge-padding);
}

/* TABLET */

@media (min-width: 769px) {
  .footer-newsletter__inner {
    padding-top: var(--tablet-newsletter-pt, 3rem);
    padding-bottom: 0;
  }

  .site-footer .footer-newsletter__separator {
    margin-top: var(--tablet-section-m, 72px);
  }

  .footer-main__inner {
    padding-top: var(--tablet-section-m, 72px);
    padding-bottom: var(--tablet-section-m, 72px);
    gap: var(--tablet-section-m, 72px);
  }

  .footer-info {
    grid-template-columns: var(--footer-info-logo-col) 1fr 1fr 1fr;
    -moz-column-gap: var(--tablet-content-l, 40px);
         column-gap: var(--tablet-content-l, 40px);
    row-gap: var(--tablet-content-l, 40px);
    grid-template-areas:
      "logo  address  secret  boxoffice"
      "logo  social   social  social";
  }

  .footer-info__address {
    align-self: stretch;
  }

  .footer-menu {
    -moz-column-count: 3;
         column-count: 3;
    -moz-column-gap: calc((100% - 3 * var(--footer-menu-col-width, 12.5rem)) / 2);
         column-gap: calc((100% - 3 * var(--footer-menu-col-width, 12.5rem)) / 2);
  }

  .footer-menu__col:first-child > .footer-menu__group:nth-child(3),
  .footer-menu__col:last-child > .footer-menu__group:first-child {
    -moz-column-break-after: column;
         break-after: column;
  }

  .footer-menu__col:first-child > .footer-menu__group:nth-child(4),
  .footer-menu__col:last-child > .footer-menu__group:nth-child(2) {
    margin-top: 0;
  }

  .footer-menu__col:last-child > .footer-menu__group:first-child {
    margin-top: var(--footer-nav-col-gap, 50px);
  }

  .footer-partners {
    flex-wrap: nowrap;
    justify-content: space-between;
  }

  .footer-captions__inner.container {
    padding-block: var(--mobile-container-padding);
    padding-inline: var(--footer-edge-padding);
  }

  .footer-funding__inner {
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-between;
    align-items: center;
  }
}

/* DESKTOP */

@media (min-width: 1025px) {
  .footer-newsletter__inner {
    display: grid;
    row-gap: var(--desktop-content-xxl, 96px);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    padding-top: var(--desktop-content-xxl, 96px);
    padding-bottom: 0;
  }

  .footer-newsletter__intro {
    grid-column: 1 / 6;
    grid-row: 1;
    margin-bottom: 0;
  }

  .footer-newsletter__form,
  .footer-newsletter__success {
    grid-column: 7 / 13;
    grid-row: 1;
  }

  .footer-newsletter__consent {
    padding-left: 0;
  }

  .site-footer .footer-newsletter__separator {
    grid-column: 1 / -1;
    grid-row: 2;
    margin-top: 0;
  }

  .footer-main__inner {
    display: grid;
    gap: 0;
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    grid-template-rows: minmax(0, auto);
    align-items: start;
    padding-top: var(--desktop-content-xxl, 96px);
    padding-bottom: var(--desktop-content-xxl, 96px);
  }

  .footer-info {
    grid-column: 1 / 5;
    grid-row: 1;
    align-self: start;
  }

  .footer-menu {
    grid-column: 8 / 12;
    grid-row: 1;
    align-self: start;
  }

  .footer-partners {
    grid-column: 1 / 7;
    grid-row: 1;
    align-self: end;
    flex-wrap: nowrap;
    justify-content: space-between;
    padding-top: var(--desktop-content-m);
  }

  .footer-main__divider {
    display: none;
  }

  .footer-info {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    gap: var(--desktop-content-m, 32px);
  }

  .footer-info__brand {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    flex: 0 0 12.5rem;
    width: 12.5rem;
  }

  .footer-info__contacts {
    display: flex;
    flex-direction: column;
    gap: var(--tablet-content-l, 40px); /* Figma Info: 40px między adres / sekretariat / kasy */
    flex: 0 0 12.5rem;
    width: 12.5rem;
  }

  .footer-info__logo {
    width: 12.5rem;
  }

  .footer-info__social {
    width: 100%;
    justify-content: space-evenly;
    gap: 0;
  }

  .footer-info__logo,
  .footer-info__address,
  .footer-info__secretariat,
  .footer-info__box-office,
  .footer-info__social {
    grid-area: unset;
  }

  .footer-menu {
    display: flex;
    -moz-column-count: unset;
         column-count: unset;
    gap: var(--desktop-gutter, 32px);
    align-items: flex-start;
  }

  .footer-menu__col {
    display: flex;
    flex-direction: column;
    gap: var(--footer-nav-col-gap, 50px);
    flex: 1;
    min-width: 0;
  }

  .footer-menu__col .footer-menu__group {
    margin-bottom: 0;
  }

  .footer-menu__col .footer-menu__group:not(:last-child) {
    margin-bottom: 0;
  }

  .footer-menu__group + .footer-menu__group {
    margin-top: 0;
  }

  .footer-menu__col + .footer-menu__col > .footer-menu__group:first-child {
    margin-top: 0;
  }

  .footer-captions__inner {
    display: grid;
    gap: 0;
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    padding-left: var(--footer-edge-padding, 2.5rem);
    padding-right: var(--footer-edge-padding, 2.5rem);
  }

  .footer-captions__copy {
    grid-column: 1 / 7;
  }

  .footer-captions__credits {
    grid-column: 8 / 13;
    justify-self: start;
  }
}

/*
 * Breadcrumb — single wydarzenia
 */

.breadcrumb {
  padding-top: var(--mobile-content-xxs);
  padding-bottom: var(--mobile-content-m);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .breadcrumb {
    padding-bottom: var(--content-pt-section);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .breadcrumb {
    padding-top: var(--desktop-content-xxs);
  }
}

.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--mobile-content-xxs);
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .breadcrumb__list {
    gap: var(--desktop-content-2xs);
  }
}

.breadcrumb__item {
  display: flex;
  align-items: center;
  gap: var(--mobile-content-xxs);
  color: var(--grey-500);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .breadcrumb__item {
    gap: var(--desktop-content-2xs);
  }
}

.breadcrumb__link {
  color: inherit;
  text-decoration: none;
}

/*
 * draw-underline (button.css) — :is(...):hover::before ma specyficzność (0,3,2);
 * kontekst .breadcrumb__item daje (0,4,1) i wygrywa w kaskadzie.
 */

.breadcrumb .breadcrumb__item .breadcrumb__link::before,
.breadcrumb .breadcrumb__item .breadcrumb__link::after {
  background-color: currentColor;
}

.breadcrumb .breadcrumb__item .breadcrumb__link:hover,
.breadcrumb .breadcrumb__item .breadcrumb__link:focus-visible {
  color: var(--text-primary);
}

.breadcrumb .breadcrumb__item .breadcrumb__link:hover::before,
.breadcrumb .breadcrumb__item .breadcrumb__link:focus-visible::before {
  background: currentColor;
}

.breadcrumb__link:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.breadcrumb__current {
  color: var(--grey-500);
}

.breadcrumb__separator {
  display: inline-flex;
  flex-shrink: 0;
  width: 0.25rem;
  height: 0.5rem;
  color: var(--grey-500);
}

.breadcrumb__separator svg {
  display: block;
  width: 100%;
  height: 100%;
}

/*
 * Category tag — filar tematyczny (taxonomy typ)
 */

.category-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem; /* 6px — Figma Category S (mobile) */
}

.category-tag__dot {
  flex-shrink: 0;
  width: 1rem; /* 16px — Figma Category S (mobile) */
  height: 1rem;
  border-radius: 50%;
  background-color: var(--green-500);
}

@media (min-width: 769px) { /* --breakpoint-tablet — Figma Category L */
  .category-tag {
    gap: 0.625rem; /* 10px */
  }

  .category-tag__dot {
    width: 1.25rem; /* 20px */
    height: 1.25rem;
  }
}

.category-tag__label {
  margin: 0;
}

.category-tag--default .category-tag__dot,
.category-tag--teatr .category-tag__dot,
.category-tag--opera .category-tag__dot {
  background-color: var(--green-500);
}

.category-tag--koncert .category-tag__dot,
.category-tag--muzyka .category-tag__dot {
  background-color: var(--yellow-500);
}

.category-tag--film .category-tag__dot,
.category-tag--staromiejskie-zaprasza .category-tag__dot {
  background-color: var(--red-500);
}

.category-tag--dzieci .category-tag__dot,
.category-tag--dla-dzieci .category-tag__dot {
  background-color: var(--purple-500);
}

.category-tag--spotkanie .category-tag__dot,
.category-tag--literatura .category-tag__dot,
.category-tag--wszystkie-ksiazki-europy .category-tag__dot {
  background-color: var(--blue-500);
}

.category-tag--inne .category-tag__dot,
.category-tag--zwiedzanie .category-tag__dot {
  background-color: var(--text-tertiary);
}

/*
 * Single wydarzenia — page shell
 */

.event-page {
  background-color: var(--base-mode-background);
}

.event-page__body {
  padding-bottom: var(--page-footer-pb-mobile);
  overflow-x: clip;
}

/* Gdy jest „Zobacz także”, odstęp main→stopka siedzi nad sekcją (margin-top),
   a szare tło płynnie łączy się ze stopką — bez białego pasa pod spodem. */

.event-page__body:has(.event-see-also) {
  padding-bottom: 0;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-page__body {
    padding-bottom: var(--page-footer-pb-tablet);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page__body {
    padding-bottom: var(--page-footer-pb-desktop);
  }
}

.event-download {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m);
  color: var(--text-primary);
  text-decoration: none;
}

.event-download__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.375rem;
  min-width: 0;
}

.event-download__size {
  color: var(--text-secondary);
}

.event-download__icon {
  flex-shrink: 0;
  width: 2.0625rem;
  height: 2.0625rem;
  color: var(--text-primary);
}

.event-download__icon svg {
  display: block;
  width: 100%;
  height: 100%;
}

.event-download:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/*
 * Event hero image — horizontal layout.
 * Prod. parity (intui-system _header.scss): mobile min-height 316px + object-fit cover;
 * tablet/desktop horizontal: width 100%, height auto (natural crop). Nie korygować do px z Figmy.
 */

.event-hero {
  width: 100%;
  margin-bottom: var(--mobile-content-m);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-hero {
    margin-bottom: var(--gap-stack);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-hero {
    margin-bottom: var(--tablet-content-l);
  }
}

.event-hero__frame {
  position: relative;
  width: 100%;
  overflow: hidden;
  background-color: var(--placeholder-surface);
  min-height: 19.75rem; /* 316px — mobile */
}

.event-hero__image {
  display: block;
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  height: 100%;
  min-height: 19.75rem;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-hero__frame {
    min-height: 0;
  }

  .event-hero__image {
    height: auto;
    min-height: 0;
  }
}

.event-hero__placeholder {
  display: block;
  width: 100%;
  min-height: 19.75rem;
  background-color: var(--placeholder-surface);
}

@media (min-width: 769px) {
  .event-hero__placeholder {
    min-height: 12rem;
  }
}

/* Photo credit caption — typografia .caption (typography-base); tu margines + kolor/opacity. */

.event-hero__caption {
  margin-top: 5px;
  padding: 0 5px;
  color: inherit;
  opacity: 0.75;
}

/* Świadomy lokalny próg ~650px (duże telefony), NIE jeden z dwóch globalnych
   breakpointów (769/1025). Na wąskich telefonach podpis ma 5px bocznego
   marginesu, żeby nie dotykał krawędzi; od ~650px margines znika i podpis
   wyrównuje się do krawędzi kadru. */

@media (min-width: 651px) {
  .event-hero__caption {
    padding: 0;
  }
}

/*
 * Event header — title + sidebar (Figma 3:3579, Info 3:3583)
 */

.event-header {
  display: grid;
  grid-column: 1 / -1;
  width: 100%;
  border-top: var(--section-divider);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header {
    grid-template-columns: subgrid;
    align-items: start;
  }
}

.event-header__title-col {
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-content-l);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__title-col {
    padding-top: var(--media-block-pb);
    padding-bottom: var(--media-block-pb);
    padding-right: var(--desktop-content-m);
  }
}

.event-header__title {
  margin: 0 0 var(--mobile-content-l);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__title {
    margin-bottom: var(--desktop-content-l);
  }
}

.event-header__back {
  display: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__back {
    display: inline-flex;
  }
}

/* Meta bar — tablet/mobile only */

.event-header__meta-bar {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-m);
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-content-l);
  border-top: var(--section-divider);
}

.event-header__meta-bar--event {
  gap: 0;
}

.event-header__meta-bar--event .event-header__meta-tags {
  margin-top: var(--mobile-content-l);
  padding-block: var(--mobile-content-l);
  border-top: var(--section-divider);
}

.event-header__meta-bar--event .event-header__meta-action {
  margin-top: var(--mobile-content-l);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-header__meta-bar {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--desktop-content-m);
    padding-top: var(--content-pt-section);
    padding-bottom: var(--content-pt-section);
  }

  .event-header__meta-bar--event {
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
  }

  .event-header__meta-bar--event .event-header__meta-tags {
    margin-top: var(--gap-stack);
    padding-block: var(--content-pt-section);
  }

  .event-header__meta-bar--event .event-header__meta-action {
    margin-top: var(--gap-stack);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__meta-bar {
    display: none;
  }
}

.event-header__meta-left {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m);
  width: 100%;
  min-width: 0;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-header__meta-left {
    flex-wrap: nowrap;
    justify-content: flex-start;
    width: auto;
    gap: var(--desktop-content-xl);
  }

  .event-header__meta-bar--event .event-header__meta-left {
    width: 100%;
  }
}

.event-header__meta-date .event-header__time {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--content-xs);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-header__meta-date .event-header__time {
    gap: var(--content-xs);
  }

  .event-header__meta-date .event-header__weekday {
    margin: 0;
  }
}

.event-header__meta-action {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--mobile-content-s);
  width: 100%;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-header__meta-action {
    flex-direction: row;
    align-items: center;
    width: auto;
    flex-shrink: 0;
    gap: var(--desktop-content-m);
  }
}

.event-header__meta-action .btn {
  width: 100%;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-header__meta-action .btn {
    width: auto;
  }
}

.event-header__info {
  display: none;
  flex-direction: column;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__info {
    display: flex;
    border-top: none;
  }
}

.event-header__row {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: var(--desktop-content-xxl);
  border-top: var(--section-divider);
}

.event-header__row:first-child {
  border-top: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__info .event-header__row + .event-header__row {
    border-top: var(--section-divider);
  }
}

.event-header__row--category,
.event-header__row--date {
  padding-left: 0.25rem; /* 4px — Figma Category/Date Div */
}

.event-header__row--ticket {
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: var(--desktop-content-m);
  padding-left: 0;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page:not(.event-page--mediateka) .event-header__info .event-header__row--tags {
    align-items: flex-start;
    justify-content: flex-start;
    min-height: 0;
    padding-block: var(--content-pt-section);
  }
}

.event-header__time {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--desktop-content-xs);
}

.event-header__weekday {
  margin: 0;
}

.event-header__datetime {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--desktop-content-xs);
  margin: 0;
}

.event-header__separator {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  height: 1rem;
  color: var(--text-primary);
}

.event-header__separator svg {
  display: block;
  width: 1px;
  height: 1rem;
}

.event-header__price {
  margin: 0;
  line-height: 1;
}

/* Credit line (Mediateka: „Fot. {autor}") — pod tytułem, nad back-linkiem */

.event-header__credit {
  margin: 0 0 var(--mobile-content-l);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__credit {
    margin-bottom: var(--desktop-content-l);
  }
}

/* Opis materiału (Mediateka video) — pod tytułem/credit, nad back-linkiem */

.event-header__description {
  margin: var(--mobile-content-l) 0;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-header__description {
    margin: var(--desktop-content-l) 0;
  }
}

/* Hashtagi — wspólna struktura listy; odstępy per kontekst (Figma vs wydarzenie). */

.event-header__tags {
  display: flex;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Wydarzenia: ciaśniejsze odstępy (wielowierszowa chmura tagów). */

.event-page:not(.event-page--mediateka) .event-header__tags {
  -moz-column-gap: var(--content-xs);
       column-gap: var(--content-xs); /* 16px */
  row-gap: var(--content-xs); /* 16px */
}

.event-page:not(.event-page--mediateka) .event-header__tag-link,
.event-page:not(.event-page--mediateka) .event-header__tag .tag-link {
  text-box: trim-both cap alphabetic;
}

.event-header__tag {
  display: flex;
  min-width: 0;
  max-width: 100%;
  margin: 0;
}

.event-header__tag-link,
.event-header__tag .tag-link {
  color: var(--text-primary);
  text-decoration: none;
  overflow-wrap: anywhere;
}

.event-header__tag-link.tag-link--secondary,
.event-header__tag .tag-link.tag-link--secondary {
  color: var(--text-tertiary);
}

.event-header__meta-tags {
  width: 100%;
}

/* ==========================================================================
   Gallery (Mediateka: siatka zdjęć) — Figma "Title Div" / "Info"
   Tytuł jako-wpisano (nie upper), tekst z text-box trim (cap→baseline),
   hashtagi w skali S2 16px na każdym BP.
   ========================================================================== */

/* Figma stosuje text-box-trim na tytule i metryczce (nie na credit/host). */

.event-page--gallery .event-header__title,
.event-page--gallery .event-header__weekday,
.event-page--gallery .event-header__time,
.event-page--gallery .event-header__datetime,
.event-page--video .event-header__title,
.event-page--video .event-header__weekday,
.event-page--video .event-header__time,
.event-page--video .event-header__datetime {
  text-box: trim-both cap alphabetic;
}

/* Tytuł: cyfry lining + proportional (Figma fontFeatureSettings) — np. „200 lat". */

.event-page--gallery .event-header__title,
.event-page--video .event-header__title {
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* Credit „Fot. …" jest ostatni w kolumnie na mobile/tablecie — odstęp do siatki
   daje pb kolumny tytułu (Figma: jednolity gap w "Title Div"), nie własny margines. */

@media (max-width: 1024px) {
  .event-page--gallery .event-header__credit {
    margin-bottom: 0;
  }
}

/* Title Div: pb 36px na tablecie (Figma Top Section gap). Mobile 32 / desktop 40 z bazy. */

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-page--gallery .event-header__title-col {
    padding-bottom: var(--content-pt-section);
  }

  /* Tytuł → metryczka: gap Title Div 36px na tablecie (mobile 32 / desktop 48 z bazy). */
  .event-page--gallery .event-header__title {
    margin-bottom: var(--gap-stack);
  }
}

/* Meta-bar (Date Div + Hashtag Div): wewnętrzne odstępy dają meta-date/meta-tags,
   więc zerujemy własny padding-top i gap wrappera — zostaje border-top (linia nad
   datą) i padding-bottom (odstęp do creditu/opisu). Bez tego rytm rozjeżdża się
   o ~pt+gap (podwójny: wrapper + wewnętrzny padding). Figma "Info" nie ma gapu. */

:is(.event-page--video, .event-page--gallery) .event-header__meta-bar {
  gap: 0;
  padding-top: 0;
}

/* ==========================================================================
   Video + Gallery (Mediateka: single) — Figma "Title Div" / "Info"
   Współdzielą układ metryczki (Date Div + Hashtag Div): mobile/tablet wpisana
   w kolumnę tytułu, desktop w sidebarze. Reguły metryczki poniżej obejmują oba
   warianty przez :is(); rzeczy specyficzne dla video (opis, pb Title Div)
   pozostają na .event-page--video.
   ========================================================================== */

/* Title Div: pb 36px mobile/tablet, 40px desktop. */

.event-page--video .event-header__title-col {
  padding-bottom: var(--content-pt-section);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page--video .event-header__title-col {
    padding-bottom: var(--media-block-pb);
  }
}

/* Opis: Opcja B — bez dolnego marginesu na mobile/tablet (dol = padding kolumny). */

.event-page--video .event-header__description {
  margin: var(--mobile-content-l) 0 0;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-page--video .event-header__description {
    max-width: var(--content-measure-tablet);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page--video .event-header__description {
    margin: var(--desktop-content-l) 0;
    max-width: var(--content-measure-desktop);
  }
}

/* Meta-bar mobile/tablet: kolumna (nie space-between z wydarzeń). */

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  :is(.event-page--video, .event-page--gallery) .event-header__meta-bar {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
  }
}

:is(.event-page--video, .event-page--gallery) .event-header__meta-left {
  width: 100%;
}

/* Date Div: PONIEDZIAŁEK + data w jednym wierszu (gap 8px). */

:is(.event-page--video, .event-page--gallery) .event-header__meta-date {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--mobile-content-xxs);
  padding-block: var(--mobile-content-l);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  :is(.event-page--video, .event-page--gallery) .event-header__meta-date {
    padding-block: var(--content-pt-section);
  }
}

/* Mediateka — Hashtag Div (Figma 78:13139): gap 32px, pt 36px, min-height 96px. */

.event-page--mediateka .event-header__tags {
  gap: var(--content-xs); /* 16px mobile */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-page--mediateka .event-header__tags {
    gap: var(--desktop-content-m); /* 32px */
  }
}

.event-page--mediateka .event-header__tag-link,
.event-page--mediateka .event-header__tag .tag-link {
  text-box: trim-both cap alphabetic;
}

/* Hashtag Div w meta-bar: linie góra/dół + padding (Figma "Info"). */

:is(.event-page--video, .event-page--gallery) .event-header__meta-tags {
  border-top: var(--section-divider);
  border-bottom: var(--section-divider);
  padding-block: var(--mobile-content-l);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  :is(.event-page--video, .event-page--gallery) .event-header__meta-tags {
    padding-block: var(--content-pt-section);
  }
}

/* Desktop sidebar: Date Div + Hashtag Div (Figma "Info" 78:13132). */

@media (min-width: 1025px) { /* --breakpoint-desktop */
  :is(.event-page--video, .event-page--gallery) .event-header__info .event-header__row--date {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: var(--desktop-content-xxs);
  }

  .event-page--mediateka .event-header__info .event-header__row--tags {
    align-items: flex-start;
    justify-content: flex-start;
    min-height: var(--desktop-content-xxl); /* 96px — Figma Hashtag Div */
    padding-top: var(--content-pt-section); /* 36px */
    padding-bottom: 0;
  }
}

/*
 * Event vertical masthead — poster layout (columns via grid.css utilities).
 * Horizontal hero: patrz event-hero.css (prod. parity, natural crop tablet+).
 * Vertical: stałe min-height per BP — proporcje plakatu z Figmy, nie prod. horizontal.
 */

.event-masthead--vertical {
  display: contents;
}

/*
 * Tablet+: own subgrid so title (left) and hero (right) share one row.
 * With display:contents the lead (DOM after hero) could not backfill the
 * hero's row under sparse auto-placement and dropped below it — on the
 * 6-col tablet grid the col-start-5 hero pushed the span-4 lead to row 2.
 */

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-masthead--vertical {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: subgrid;
  }

  .event-masthead--vertical > .event-masthead__lead,
  .event-masthead--vertical > .event-hero--vertical {
    grid-row: 1;
  }
}

.event-masthead__lead {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border-top: var(--section-divider);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-masthead__lead {
    padding-top: var(--content-pt-section);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-masthead__lead {
    min-height: 53.3125rem; /* 853px — Figma vertical photo */
    padding-top: var(--tablet-content-l);
    padding-bottom: 0;
  }
}

.event-masthead__title-col {
  padding-top: var(--mobile-content-m);
  padding-bottom: var(--mobile-content-m);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-masthead__title-col {
    padding-top: 0;
    padding-bottom: 0;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-masthead__title-col {
    padding-top: var(--tablet-content-l);
    padding-bottom: 0;
  }

  .event-masthead__title {
    margin: 0 0 var(--desktop-content-l);
  }
}

.event-masthead__back {
  display: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-masthead__back {
    display: inline-flex;
  }
}

.event-masthead__info {
  display: none;
  flex-direction: column;
  max-width: 27rem; /* 432px — Figma Info */
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-masthead__info {
    display: flex;
  }
}

.event-masthead__meta-bar {
  display: flex;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-masthead__meta-bar {
    display: none;
  }
}

/* Vertical hero — poster proportions */

.event-page--vertical .event-hero--vertical {
  margin-bottom: 0;
}

.event-page--vertical .event-hero--vertical .event-hero__frame {
  height: 100%;
  min-height: 28.75rem; /* 460px — Figma mobile */
}

.event-page--vertical .event-hero--vertical .event-hero__image,
.event-page--vertical .event-hero--vertical .event-hero__placeholder {
  min-height: 28.75rem;
  height: 100%;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-page--vertical .event-hero--vertical .event-hero__frame {
    min-height: 19.75rem; /* 316px — Figma tablet */
  }

  .event-page--vertical .event-hero--vertical .event-hero__image,
  .event-page--vertical .event-hero--vertical .event-hero__placeholder {
    min-height: 19.75rem;
    height: 100%;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page--vertical .event-hero--vertical .event-hero__frame {
    min-height: 53.3125rem; /* 853px */
  }

  .event-page--vertical .event-hero--vertical .event-hero__image,
  .event-page--vertical .event-hero--vertical .event-hero__placeholder {
    min-height: 53.3125rem;
    height: 100%;
  }
}

.event-page--vertical .event-hero--vertical .event-hero__image {
  -o-object-fit: cover;
     object-fit: cover;
  height: 100%;
}

@media (min-width: 769px) {
  .event-page--vertical .event-hero--vertical {
    margin-bottom: var(--gap-stack);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page--vertical .event-hero--vertical {
    margin-bottom: var(--tablet-content-l);
  }
}

/*
 * Event content sections — 4+6 layout
 */

.event-section {
  width: 100%;
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--content-pt-section);
  border-top: var(--section-divider);
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-section {
    padding-top: var(--content-pt-section);
    padding-bottom: var(--tablet-content-l);
    gap: var(--gap-stack);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-section {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
    align-items: start;
    padding-top: var(--content-pt-section);
    padding-bottom: var(--tablet-content-l);
  }
}

.event-section__label-col {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  min-height: auto;
  margin-bottom: 0;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-section__label-col {
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    min-height: 6.25rem;
    margin-bottom: 0;
  }
}

.event-section__heading {
  margin: 0;
}

.event-section__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.0625rem;
  height: 2.0625rem;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--text-primary);
  cursor: pointer;
}

.event-section__toggle:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.event-section__toggle svg {
  display: block;
  width: 100%;
  height: 100%;
}

.event-section__toggle-icon--minus {
  display: none;
}

.event-section.is-expanded .event-section__toggle-icon--plus {
  display: none;
}

.event-section.is-expanded .event-section__toggle-icon--minus {
  display: block;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-section__toggle {
    /* Desktop: treść zawsze widoczna; toggle przygotowany pod mobile */
    pointer-events: none;
  }
}

.event-section__content-col {
  min-width: 0;
}

.event-section__content {
  margin: 0;
}

.event-section__content > *:first-child {
  margin-top: 0;
}

.event-section__content > *:last-child {
  margin-bottom: 0;
}

.event-section__content p + p {
  margin-top: var(--mobile-content-xs);
}

.event-section__content > p + p.subheading-2 {
  margin-top: var(--gap-stack);
}

.event-section__lead {
  margin-bottom: var(--mobile-content-s);
}

.event-section__lead p {
  margin: 0;
}

/*
 * Listy w opisie — kolorowe punktory wg filaru (--filar-color na .event-page).
 * Prod. intui-wydarzenia: l-metryczka__col ul li::before.
 */

.event-page .event-section__content ul {
  margin: 0;
  padding-left: 0;
  list-style: none;
}

.event-page .event-section__content ul > li {
  position: relative;
  padding-left: 1.25rem;
  list-style: none;
}

.event-page .event-section__content ul > li::marker {
  font-size: 0;
}

.event-page .event-section__content ul > li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 0.4375rem;
  height: 0.4375rem;
  border-radius: 50%;
  background: var(--filar-color, currentColor);
}

.event-page .event-section__content ul > li + li,
.event-page .event-section__content ol > li + li {
  margin-top: 0.625rem;
}

.event-page .event-section__content ol {
  margin: 0;
  padding-left: 1.25rem;
  list-style-position: outside;
}

.event-page .event-section__content ol > li::marker {
  color: var(--text-primary);
}

/* Akordeon — tylko sekcje z data-event-section (show_toggle), mobile/tablet */

.event-section[data-event-section]:not(.is-expanded) .event-section__content-col {
  display: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-section[data-event-section] .event-section__content-col {
    display: block;
  }
}

/*
 * Event photo grid — siatka zdjęć (Mediateka: galeria single).
 */

.event-photo-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--mobile-gutter);
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--content-pt-section);
  border-bottom: var(--section-divider);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-photo-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--desktop-content-s);
    padding-top: var(--content-pt-section);
    padding-bottom: var(--content-pt-section);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-photo-grid {
    gap: var(--desktop-gutter);
    padding-top: var(--media-block-pb);
    padding-bottom: var(--media-block-pb);
  }
}

.event-page--gallery .event-photo-grid {
  padding-top: 0;
}

.event-photo-grid__item {
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background-color: var(--placeholder-surface);
}

.event-photo-grid__trigger {
  display: block;
  width: 100%;
  height: 100%;
  color: inherit;
  text-decoration: none;
  cursor: zoom-in;
}

.event-photo-grid__trigger:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.event-photo-grid__image {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

dialog.event-photo-lightbox {
  box-sizing: border-box;
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  margin: 0;
  padding: var(--mobile-content-l);
  overflow: hidden;
  border: none;
  background: rgba(0, 13, 12, 0.92);
  color: var(--base-00);
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

dialog.event-photo-lightbox[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}

.event-photo-lightbox::backdrop {
  background: rgba(0, 13, 12, 0.92);
}

.event-photo-lightbox__dismiss {
  position: absolute;
  inset: 0;
  z-index: 0;
  padding: 0;
  border: none;
  background: transparent;
  cursor: default;
}

.event-photo-lightbox__figure {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: -moz-fit-content;
  width: fit-content;
  margin: 0;
  max-width: 100%;
}

.event-photo-lightbox__image {
  display: block;
  max-width: 100%;
  max-height: calc(100vh - 7rem);
  width: auto;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
  -webkit-user-drag: none;
}

.event-photo-lightbox__caption {
  margin: 0.5rem 0 0;
  color: inherit;
  opacity: 0.75;
  text-align: left;
  -webkit-user-select: text;
     -moz-user-select: text;
          user-select: text;
}

.event-photo-lightbox__close,
.event-photo-lightbox__nav {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem;
  border: none;
  background: transparent;
  color: var(--base-00);
  cursor: pointer;
}

.event-photo-lightbox__close:focus-visible,
.event-photo-lightbox__nav:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.event-photo-lightbox__close {
  top: var(--mobile-content-s);
  right: var(--mobile-content-s);
}

.event-photo-lightbox__close svg {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}

.event-photo-lightbox__nav svg {
  display: block;
  width: 2.0625rem;
  height: 2.0625rem;
}

.event-photo-lightbox__prev {
  top: 50%;
  left: var(--mobile-content-s);
  transform: translateY(-50%);
}

.event-photo-lightbox__next {
  top: 50%;
  right: var(--mobile-content-s);
  transform: translateY(-50%);
}

/*
 * Event gallery — horizontal scroll (layout sekcji: event-media-section.css).
 */

.event-gallery__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.event-gallery__heading {
  margin: 0;
}

.event-gallery__nav {
  display: flex;
  align-items: center;
  gap: var(--desktop-content-s);
}

.event-gallery__track-wrap {
  overflow: hidden;
  margin-left: calc(-1 * var(--mobile-container-padding));
  margin-right: calc(-1 * var(--mobile-container-padding));
  padding-left: var(--mobile-container-padding);
  padding-right: var(--mobile-container-padding);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-gallery__track-wrap {
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
  }
}

.event-gallery__track {
  display: flex;
  gap: var(--mobile-gutter);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding-bottom: var(--mobile-content-m);
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.event-gallery__track::-webkit-scrollbar {
  display: none;
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-gallery__track {
    gap: var(--desktop-content-s);
    padding-bottom: var(--media-block-pb);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-gallery__track {
    gap: var(--desktop-content-m);
    padding-bottom: var(--media-block-pb);
  }
}

@media (prefers-reduced-motion: reduce) {
  .event-gallery__track {
    scroll-behavior: auto;
  }
}

.event-gallery__slide {
  flex: 0 0 min(100%, 15.375rem);
  scroll-snap-align: start;
  aspect-ratio: 246 / 185;
  overflow: hidden;
  background-color: var(--placeholder-surface);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-gallery__slide {
    flex-basis: 34.25rem;
    aspect-ratio: 548 / 411;
  }
}

.event-gallery__trigger {
  display: block;
  width: 100%;
  height: 100%;
  color: inherit;
  text-decoration: none;
  cursor: zoom-in;
}

.event-gallery__trigger:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.event-gallery__slide img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/*
 * Wspólny rytm sekcji mediów na single (galeria slider + powiązane wideo).
 */

.event-gallery,
.event-video-section {
  width: 100%;
  padding-top: var(--mobile-content-l);
  border-top: var(--section-divider);
}

.event-video-section {
  padding-bottom: var(--mobile-content-m);
  border-bottom: var(--section-divider);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-gallery,
  .event-video-section {
    padding-top: var(--content-pt-section);
  }

  .event-video-section {
    padding-bottom: var(--media-block-pb);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-gallery,
  .event-video-section {
    padding-top: var(--content-pt-section);
  }

  .event-video-section {
    padding-bottom: var(--media-block-pb);
  }
}

.event-video-section + .event-gallery {
  border-top: 0;
}

.event-gallery__header,
.event-video-section__header {
  min-height: 3.3125rem;
  padding-bottom: var(--mobile-content-m);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-gallery__header,
  .event-video-section__header {
    padding-bottom: var(--media-block-pb);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-gallery__header,
  .event-video-section__header {
    padding-bottom: var(--media-block-pb);
  }
}

.event-video-section__players {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-video-section__players {
    gap: var(--gap-stack);
  }
}

.event-video-section__item .event-hero {
  margin: 0;
}

/*
 * Event patrons / logotypy
 */

.event-patrons {
  width: 100%;
  border-top: var(--section-divider);
}

.event-patrons__intro {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--mobile-content-m);
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-content-m);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-patrons__intro {
    padding-top: var(--content-pt-section);
    padding-bottom: var(--tablet-content-l);
  }

  .event-patrons__logos {
    gap: var(--desktop-content-s);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-patrons {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
  }

  .event-patrons__intro {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
    gap: 0;
    padding-top: var(--content-pt-section);
    padding-bottom: var(--tablet-content-l);
  }

  .event-patrons__logos {
    grid-column: 1 / -1;
  }
}

.event-patrons__heading {
  margin: 0;
}

.event-patrons__dopisek {
  margin: 0;
}

.event-patrons__logos {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--mobile-gutter);
  padding-bottom: var(--tablet-content-l);
}

/* Zamknięcie bloku patronów tylko gdy nie ma nawigacji pod spodem (Figma 3:3651) */

.event-patrons:not(:has(+ .event-navigation)) .event-patrons__logos {
  border-bottom: var(--section-divider);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-patrons__logos {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--desktop-content-m);
    padding-bottom: var(--tablet-content-l);
  }
}

/* Figma node 3:3651 — logo cell heights */

.event-patrons__logo-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 5.4375rem; /* 87px — mobile */
  padding: var(--mobile-content-s);
  background-color: var(--placeholder-surface);
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .event-patrons__logo-cell {
    height: 7.6875rem; /* 123px — tablet */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-patrons__logo-cell {
    height: 9.875rem; /* 158px — desktop */
  }
}

.event-patrons__logo-cell img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
}

.event-patrons + .event-patrons .event-patrons__intro {
  border-top: none;
}

/*
 * Event prev/next navigation — invert hover (prod. button-hover pattern)
 */

.event-navigation {
  padding-top: var(--mobile-content-l);
  border-top: var(--section-divider);
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-navigation {
    padding-top: var(--desktop-content-l);
  }
}

.event-navigation__links {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.25rem;
}

.event-navigation__previous,
.event-navigation__next {
  flex: 1;
  max-width: calc(50% - 0.625rem);
}

.event-navigation__link {
  position: relative;
  z-index: 0;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  overflow: hidden;
  padding: 0.75rem 1rem;
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: var(--text-primary);
  transform: perspective(1px) translateZ(0);
  transition: color var(--duration-slow) var(--easing-elastic);
}

.event-navigation__link::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: inherit;
  background: var(--main-off-black);
  transform: scale(0);
  transition: transform var(--duration-slow) var(--easing-elastic);
}

.event-navigation__link svg {
  display: block;
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
}

.event-navigation__title {
  position: relative;
  line-height: 1.4;
  font-weight: 500;
  transition: color var(--duration-slow) var(--easing-elastic);
}

.event-navigation__link:hover .event-navigation__title,
.event-navigation__link:focus-visible .event-navigation__title {
  color: var(--base-00);
}

.event-navigation__previous .event-navigation__link {
  justify-content: flex-start;
  text-align: left;
}

.event-navigation__next .event-navigation__link {
  justify-content: flex-end;
  text-align: right;
}

.event-navigation__link:hover,
.event-navigation__link:focus-visible {
  color: var(--base-00);
}

.event-navigation__previous .event-navigation__link::before {
  transform: scaleX(0);
  transform-origin: left center;
}

.event-navigation__next .event-navigation__link::before {
  transform: scaleX(0);
  transform-origin: right center;
}

.event-navigation__link:hover::before,
.event-navigation__link:focus-visible::before {
  transform: scaleX(1);
}

.event-navigation__link:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/*
 * Single wydarzenia — sekcja „Zobacz także".
 * Spec: docs/specs/event-see-also-spec.md  |  Figma 87:31180 (desktop).
 *
 * Reuse: .category-tag, .mediateka-card, .mediateka-card-grid, .news-card, .badge.
 */

/* ==========================================================================
   Shell — full-bleed grey background
   ========================================================================== */

.event-see-also {
  background-color: var(--grey-100);
  /* Odstęp od treści artykułu (np. nawigacja prev/next) — poza szarym tłem sekcji */
  margin-top: var(--mobile-content-xxl);
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--tablet-section-s);
}

.event-see-also__inner {
  row-gap: var(--mobile-content-l);
}

.event-see-also__title {
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.event-see-also__body {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

/* ==========================================================================
   Podsekcje — divider + nagłówek + treść
   ========================================================================== */

.event-see-also__subsection {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
  padding-top: var(--mobile-content-m);
  border-top: var(--section-divider);
}

.event-see-also__subsection-title {
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* ==========================================================================
   Wydarzenia — lista (data + kategoria + tytuł)
   ========================================================================== */

.event-see-also__events-list {
  display: flex;
  flex-direction: column;
  gap: var(--gap-stack);
}

.see-also-event {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-m);
}

.see-also-event__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--desktop-content-m);
}

.see-also-event__date,
.see-also-event__title,
.see-also-event__title-link {
  text-box: trim-both cap alphabetic;
}

.see-also-event__date {
  margin: 0;
}

.see-also-event__category {
  margin: 0;
}

/* Figma: kropka kategorii nadlewa się na wiersz capa etykiety */

.see-also-event .category-tag__dot {
  margin-block: -0.25rem;
}

.see-also-event__title-link {
  color: inherit;
  text-decoration: none;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.event-media-marks {
  white-space: nowrap;
}

/* ==========================================================================
   Aktualności — siatka (override .news-card z archiwum)
   ========================================================================== */

.event-see-also__news-grid {
  row-gap: 0;
}

.event-see-also__news-grid .news-card {
  grid-column: 1 / -1;
  align-self: start;
  height: auto;
  min-height: 0;
  padding: 0;
  border-top: var(--section-divider);
  margin-bottom: -1px;
}

.event-see-also__news-grid .news-card:last-child {
  border-bottom: var(--section-divider);
}

.event-see-also__news-grid .news-card--no-cta {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-m);
  padding-top: var(--mobile-content-m);
  padding-bottom: var(--mobile-content-m);
}

.event-see-also__news-grid .news-card--no-cta .news-card__title {
  margin: 0;
  padding-right: var(--desktop-content-2xs);
}

.event-see-also__news-grid .news-card__title-link {
  color: inherit;
  text-decoration: none;
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* Mediateka grid — reuse mediateka-grid.css spans */

.event-see-also__mediateka-grid {
  row-gap: var(--gap-stack);
}

/* Zwijanie długich list (repertuar, mediateka) */

.event-see-also__subsection--collapsible.is-collapsed .event-see-also__item--overflow {
  display: none;
}

.event-see-also__show-all-wrap {
  display: flex;
  justify-content: center;
}

.event-see-also__subsection--collapsible.is-expanded .event-see-also__show-all-wrap {
  display: none;
}

/* ==========================================================================
   Tablet
   ========================================================================== */

@media (min-width: 769px) { /* --breakpoint-tablet */
  .event-see-also {
    margin-top: var(--tablet-content-xxl);
    padding-top: var(--content-pt-section);
  }

  .event-see-also__inner {
    row-gap: var(--repertoire-heading-gap);
  }

  .event-see-also__body {
    gap: var(--repertoire-heading-gap);
  }

  .event-see-also__subsection {
    gap: var(--tablet-content-l);
    padding-top: var(--content-pt-section);
  }

  .event-see-also__events-list {
    gap: var(--repertoire-heading-gap);
  }

  .event-see-also__news-grid {
    -moz-column-gap: var(--desktop-content-s);
         column-gap: var(--desktop-content-s);
  }

  .event-see-also__news-grid .news-card {
    grid-column: span 3;
    border-bottom: var(--section-divider);
  }

  .event-see-also__news-grid .news-card:last-child {
    border-bottom: var(--section-divider);
  }

  .event-see-also__mediateka-grid {
    row-gap: var(--tablet-content-xl);
  }
}

/* ==========================================================================
   Desktop
   ========================================================================== */

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-see-also {
    margin-top: var(--desktop-content-xxl);
    padding-top: var(--desktop-content-xl);
    padding-bottom: var(--desktop-content-xxl);
  }

  .event-see-also__events-list {
    gap: var(--tablet-content-xl);
  }

  .event-see-also__news-grid {
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    row-gap: var(--desktop-gutter);
  }

  .event-see-also__news-grid .news-card {
    grid-column: span 4;
    border-top: 0;
    border-bottom: 0;
    margin-bottom: 0;
  }

  .event-see-also__news-grid .news-card:last-child {
    border-bottom: 0;
  }

  .event-see-also__news-grid .news-card--no-cta {
    padding-top: 0;
    padding-bottom: 0;
  }

  .event-see-also__mediateka-grid {
    row-gap: var(--tablet-content-xl);
  }
}

/*
 * Repertuar zbiorczy — Figma Events Calendar (41:5839 / 41:5369 / 41:4851)
 * Spec: docs/specs/repertuar-spec.md
 *
 * ETAP 2 — WARSTWA WIZUALNA:
 * typografia wg spec §5, reuse komponentów §6, dividery §8.
 * Layout i progi kontenerowe bez zmian względem Etapu 1.
 *
 * STRATEGIA KONTENEROWA (C-pełne):
 * Media queries: padding-bottom sekcji. Odstęp nad tytułem: pt nagłówka @container ≥920px.
 * Cała struktura (nagłówek, kalendarz, dzień, wiersz) sterowana @container —
 * template part adaptuje się do szerokości SLOTU (repertuar zbiorczy, SG,
 * podobne wydarzenia), nie okna, i przełącza się w jednym punkcie.
 * Kontenery: .repertoire (sekcja — dla nagłówka, kalendarza i dni),
 * .repertoire-day__item (dla wiersza). Kontekst osadzający reużywany part
 * musi dostarczyć przodka z container-type: inline-size.
 *
 * Progi kontenera (szerokość wiersza):
 *   700px  ≈ 769 (--breakpoint-tablet)  − 2×24 paddingu − ~20px marginesu
 *   920px  ≈ 1025 (--breakpoint-desktop) − 2×40 paddingu − ~20px marginesu
 *   1260px = mikro-próg daty: poniżej skrót dnia pod numerem (kolumny 1–2
 *            są węższe niż relacje „31 NIEDZ. + godzina” z Figmy — zero
 *            nakładania bez skalowania typografii)
 *
 * UWAGA — margines ~20px w progach jest OBOWIĄZKOWY: media queries mierzą
 * okno Z paskiem przewijania, kontener jest mierzony BEZ niego. Skok
 * paddingu .container na breakpointach okna czyni szerokość kontenera
 * niemonotoniczną; próg trafiający w strefę podwójnego pokrycia
 * (±szerokość paska) powoduje oscylację wariantu przy zwężaniu okna.
 *
 * Wiersz wydarzenia = grid; w wariancie desktopowym repeat(12, 1fr)
 * + --desktop-gutter odtwarza tracki .grid-container przy pełnej szerokości.
 * -------------------------------------------------------------------------- */

/* ==========================================================================
   WARSTWA WIDOKU — padding dolny sekcji (media queries — bez wpływu na
   odstęp breadcrumb → tytuł). Odstęp nad tytułem miesiąca: padding-top
   nagłówka w @container ≥920px (element nie może odpytywać własnego kontenera).
   ========================================================================== */

.repertoire {
  container-type: inline-size; /* kontener zapytań dla całej struktury sekcji */
  padding-bottom: var(--mobile-content-xl);
}

/* Figma mierzy paddingi/gapy do tekstu przyciętego trim-both (cap → baseline).
   Bez trimu identyczne wartości renderują się optycznie większe o pół-leading
   (+8px pod miesiącem 40px, +6px nad godziną/kategorią 16px, +6px pod tytułem).
   Progressive enhancement — brak wsparcia = dotychczasowy wygląd. */

.repertoire__month,
.repertoire-day__num,
.repertoire-day__abbr,
.repertoire-event__time,
.repertoire-event__title,
.repertoire-event .category-tag__label {
  text-box: trim-both cap alphabetic;
}

/* Figma: wiersz kategorii ma wysokość capa etykiety (h-12), kropka nadlewa się
   ±4px poza wiersz. Bez tego kropka (20px) zawyża wiersz i rozjeżdża baseline
   godziny i etykiety o 4px (desktop). */

.repertoire-event .category-tag__dot {
  margin-block: -0.25rem;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .repertoire {
    padding-bottom: var(--repertoire-section-pb-tablet); /* 64px */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .repertoire {
    padding-bottom: var(--desktop-content-xxl); /* 96px */
  }
}

/* ==========================================================================
   STRUKTURA SEKCJI — nagłówek miesiąca, kalendarz (container queries)
   ========================================================================== */

.repertoire__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-block: var(--mobile-content-m); /* Figma mobile: py 24 */
}

/* Prod. l-event__nav: padding 20px 0 5px (gdy pod spodem są filtry) */

.repertoire__header:has(+ .repertoire__filters) {
  align-items: center; /* prod. l-event__nav */
  padding-top: 1.25rem; /* 20px */
  padding-bottom: 0.3125rem; /* 5px */
  margin-bottom: 0;
}

.repertoire__header:has(+ .repertoire__filters) .repertoire__month {
  text-box: unset; /* prod. l-event__nav__current bez trimu */
}

/* Prod. l-event__filters (inline) + c-button / c-button--outlined */

.repertoire__filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 0.625rem; /* 10px */
  padding: 2.1875rem 0 0.9375rem; /* 35px 0 15px */
}

/* Prod. l-event__articles: margin-top 48px */

.repertoire__filters + .repertoire__calendar {
  margin-top: 3rem; /* 48px */
}

.repertoire-day.is-filter-hidden,
.repertoire-day__item.is-filter-hidden {
  display: none;
}

/* Filtry: ukryty poprzednik w DOM triggeruje `.item + .item::before` — wyłączamy
   bazową regułę i włączamy separator tylko między kolejnymi widocznymi wierszami. */

.repertoire.is-filter-active .repertoire-day__item + .repertoire-day__item::before {
  display: none !important;
  border-top: none !important;
  content: none !important;
}

/* Filtry: domyślny divider daty (__rest) i wszystkie dni wyłączone;
   pełna linia tylko na widocznych dniach (zamiast :first-child / __rest w nagłówku). */

.repertoire.is-filter-active .repertoire-day__rest {
  border-top: none;
}

.repertoire.is-filter-active .repertoire-day {
  border-top: none;
}

.repertoire.is-filter-active .repertoire-day.is-filter-day-divider {
  border-top: var(--section-divider);
}

.repertoire__filters .btn.repertoire-filter {
  display: flex;
  align-items: center;
  justify-content: center;
  height: auto;
  min-height: 0;
  padding: 0.75rem 1.5rem; /* 12px 24px — mobile */
  border-radius: 4.6875rem; /* 75px */
  overflow: visible;
  transform: none;
  font-size: 0.875rem; /* 14px */
  font-weight: 600;
  line-height: normal; /* prod.: 49px wysokości przy padding 14px */
  letter-spacing: 0.0125rem; /* 0.2px */
  text-transform: uppercase;
  color: inherit;
  transition: all 0.25s var(--easing-elastic);
}

.repertoire__filters .btn.repertoire-filter::before {
  display: none;
}

.repertoire__filters .btn.repertoire-filter.btn--outline {
  border-color: inherit;
  background-color: transparent;
}

.repertoire__filters .btn.repertoire-filter.is-active,
.repertoire__filters .btn.repertoire-filter.btn--outline:hover,
.repertoire__filters .btn.repertoire-filter.btn--outline:focus-visible {
  color: var(--base-00);
  border-color: var(--main-off-black);
  background-color: var(--main-off-black);
}

/* Prod.: .dot inline-block 10px + mr 8px, label inline-block — centrowane flexem przycisku */

.repertoire__filters .repertoire-filter__dot,
.repertoire__filters .repertoire-filter__label {
  display: inline-block;
  vertical-align: middle;
  line-height: normal;
}

.repertoire__filters .repertoire-filter__dot {
  flex-shrink: 0;
  width: 0.625rem; /* 10px */
  height: 0.625rem;
  margin-right: 0.5rem; /* 8px */
  border-radius: 50%;
  background-color: var(--green-500);
}

.repertoire__filters .repertoire-filter__dot--literatura {
  background-color: var(--blue-500);
}

.repertoire__filters .repertoire-filter__dot--muzyka {
  background-color: var(--yellow-500);
}

.repertoire__filters .repertoire-filter__dot--dla-dzieci {
  background-color: var(--purple-500);
}

.repertoire__filters .repertoire-filter__dot--film {
  background-color: var(--red-500);
}

/* Świadomy lokalny próg ~650px (duże telefony), NIE jeden z dwóch globalnych
   breakpointów (769/1025). Korekta musi zadziałać na szerokich telefonach,
   zanim wejdzie layout tabletu — dlatego 651, nie 769. Przyciski filtrów
   dostają wyższy padding pionowy (14px zamiast 12px z bazy mobile). */

@media (min-width: 651px) {
  .repertoire__filters .btn.repertoire-filter {
    padding: 0.875rem 1.5rem; /* 14px 24px */
  }
}

/* Skala identyczna z .section-title (32/40), ale NIE współdzieli klasy:
   próg 40px jest container-query (≥700px slotu), nie media-query (≥769px okna)
   — patrz STRATEGIA KONTENEROWA na górze pliku. Restamp jest tu świadomy. */

.repertoire__month {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 2rem; /* 32px — Figma M H1 Low; T/D: 40px poniżej (@container) */
  line-height: 1.05;
  letter-spacing: -0.01em;
  font-feature-settings: "lnum" 1, "pnum" 1;
  color: var(--text-primary);
}

.repertoire__nav {
  display: flex;
  gap: var(--mobile-content-m); /* 24px — stałe na wszystkich BP (Figma) */
}

.repertoire__nav .arrow-control {
  margin: -0.625rem; /* kompensacja paddingu 10px: ikony w siatce jak w Figmie */
}

.repertoire__calendar {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xl); /* 48px między dniami */
}

@container (min-width: 700px) {
  .repertoire__header {
    /* R2: brak nagłówka w widoku tabletowym Figmy — interpolacja */
    padding-block: var(--tablet-content-l); /* 40px */
  }

  .repertoire__header:has(+ .repertoire__filters) {
    padding-block: 1.25rem 0.3125rem; /* 20px 5px — prod. l-event__nav */
  }

  .repertoire__month {
    font-size: 2.5rem; /* 40px — Figma T/D H2 */
    letter-spacing: -0.02em;
  }

  .repertoire__calendar {
    gap: var(--tablet-content-l); /* 40px między dniami */
  }
}

@container (min-width: 920px) {
  .repertoire__header {
    align-items: flex-end; /* Figma items-end: baseline miesiąca → kalendarz = równe 56px */
    padding-top: var(--desktop-content-xl); /* 64px — Figma desktop; zamiast pt sekcji */
    padding-bottom: 0;
    margin-bottom: var(--repertoire-heading-gap); /* 56px — gdy brak filtrów */
  }

  .repertoire__header:has(+ .repertoire__filters) {
    align-items: center;
    padding-top: 1.25rem; /* 20px — prod. l-event__nav */
    padding-bottom: 0.3125rem; /* 5px */
    margin-bottom: 0;
  }

  .repertoire__calendar {
    gap: 0; /* rytm robią pt/pb wierszy */
    border-bottom: var(--section-divider); /* domknięcie kalendarza */
  }
}

/* ==========================================================================
   KOMPONENT — grupa dzienna i wiersz wydarzenia (container queries)
   Baza = wariant mobilny (kontener < 700px).
   ========================================================================== */

.repertoire-day {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xl); /* 48px data ↔ wydarzenia (Figma mobile) */
}

.repertoire-day__date {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  height: var(--mobile-section-m); /* 64px */
  background: var(--base-mode-background);
}

/* Wyjątek: skala 48px mobile w strefie meta-kolumny; progi @container w .repertoire-day__item */

.repertoire-day__num {
  flex-shrink: 0;
  width: var(--repertoire-meta-col); /* 56px — wspólna strefa z godziną */
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 3rem; /* 48px — Figma mobile; poza skalą .h1/.h2 */
  line-height: 1.05;
  letter-spacing: -0.02em;
  font-feature-settings: "lnum" 1, "pnum" 1;
  color: var(--text-primary);
}

.repertoire-day__rest {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 1.875rem; /* 30px — box divider+skrót (Figma mobile) */
  border-top: var(--section-divider);
}

.repertoire-day__events {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xl); /* 48px między wydarzeniami */
}

.repertoire-day__item {
  container-type: inline-size; /* kontener zapytań dla .repertoire-event */
}

/* --- Wiersz wydarzenia — baza (mobile):
   grid [strefa godziny 56px | kategoria 1fr | PJM auto]
   w1: godzina + kategoria + PJM, w2: tytuł (full), w3: przycisk (full) --- */

.repertoire-event {
  display: grid;
  grid-template-columns: var(--repertoire-meta-col) 1fr auto;
  -moz-column-gap: 0;
       column-gap: 0; /* strefa 56px zawiera odstęp (rytm komponentowy, spec §3) */
  row-gap: var(--repertoire-event-gap); /* 32px — stały M/T/D */
  align-items: center;
}

/* Mobile/tablet: wrapper przezroczysty — godzina i PJM są itemami grida wiersza.
   Wariant desktopowy: wspólny kontener meta w kolumnach 1–2 (dosunięty do prawej). */

.repertoire-event__meta {
  display: contents;
}

.repertoire-event__time {
  grid-column: 1;
  grid-row: 1;
  /* .subheading-2 w markupie */
}

.repertoire-event__category {
  grid-column: 2;
  grid-row: 1;
  justify-self: start;
  margin: 0;
}

.repertoire-event__pjm {
  grid-column: 3;
  grid-row: 1;
  display: block;
  width: 1.875rem;   /* 30px — Figma mobile */
  height: 1.5625rem; /* 25px */
  -o-object-fit: contain;
     object-fit: contain;
}

.repertoire-event__title {
  grid-column: 1 / -1;
  grid-row: 2;
  font-feature-settings: "lnum" 1, "pnum" 1;
  /* .h3.is-upper w markupie */
  transition: transform 450ms cubic-bezier(0.16, 1, 0.3, 1); /* prod. .l-single__event__title h3 */
}

.repertoire-event__title-link {
  color: inherit;
  text-decoration: none;
}

.repertoire-event__title-link:hover,
.repertoire-event__title-link:focus-visible {
  color: inherit;
  text-decoration: none;
}

/* Prod.: hover na wierszu → tytuł przesuwa się w prawo (intui-system _single-event.scss) */

.repertoire-event:hover .repertoire-event__title,
.repertoire-event:focus-within .repertoire-event__title {
  transform: translateX(2rem); /* 32px */
}

@media (prefers-reduced-motion: reduce) {
  .repertoire-event__title {
    transition: none;
  }

  .repertoire-event:hover .repertoire-event__title,
  .repertoire-event:focus-within .repertoire-event__title {
    transform: none;
  }
}

.repertoire-event__action {
  grid-column: 1 / -1;
  grid-row: 3;
}

.repertoire-event__action .btn {
  width: 100%; /* mobile: przycisk pełnej szerokości */
}

/* --------------------------------------------------------------------------
   Wariant tabletowy — kontener ≥ 700px
   Wiersz meta w rytmie 72px (spec §3).
   -------------------------------------------------------------------------- */

/* Grupa dzienna — kontener: .repertoire__calendar */

@container (min-width: 700px) {
  .repertoire-day {
    gap: var(--tablet-content-xs); /* 16px data ↔ wydarzenia */
  }

  .repertoire-day__date {
    height: var(--repertoire-date-h-tablet); /* 78px */
  }

  .repertoire-day__num {
    width: var(--repertoire-meta-col-tablet); /* 72px */
    font-size: 3.75rem; /* 60px — Figma tablet/desktop */
  }

  .repertoire-day__rest {
    height: 2.375rem; /* 38px — Figma tablet */
  }

  .repertoire-day__abbr {
    font-size: 1rem;
  }

  .repertoire-day__events {
    gap: var(--gap-stack); /* 36px */
  }

  /* Dividery: każde wydarzenie domknięte linią poza ostatnim w dniu
     (separator robi wtedy divider nagłówka kolejnej daty);
     ostatni dzień listy domknięty linią. */
  .repertoire-day__item {
    padding-bottom: var(--repertoire-event-pb); /* 48px */
    border-bottom: var(--section-divider);
  }

  .repertoire-day:not(:last-child) .repertoire-day__item:last-child {
    border-bottom: none;
  }

  /* Filtry: ostatni widoczny wiersz zamiast :last-child w DOM. */
  .repertoire-day:not(:last-child) .repertoire-day__item.is-filter-last-visible {
    border-bottom: none;
  }

  .repertoire.is-filter-active .repertoire-day__item {
    border-bottom: none;
  }

  .repertoire.is-filter-active .repertoire-day__item.is-filter-show-divider {
    border-top: var(--section-divider);
  }
}

/* Wiersz wydarzenia — kontener: .repertoire-day__item
   grid [strefa godziny 72px | kategoria | PJM | 1fr→przycisk] */

@container (min-width: 700px) {
  .repertoire-event {
    grid-template-columns: var(--repertoire-meta-col-tablet) max-content max-content 1fr;
  }

  .repertoire-event__category {
    grid-column: 2;
  }

  .repertoire-event__time {
    font-size: 1rem; /* 16px — Figma T/D */
    letter-spacing: 0.02em;
  }

  .repertoire-event__pjm {
    grid-column: 3;
    margin-left: var(--repertoire-event-gap); /* 32px za kategorią */
    width: 2.25rem;   /* 36px — Figma tablet/desktop */
    height: 1.875rem; /* 30px */
  }

  .repertoire-event__title {
    grid-row: 2;
    font-size: 2rem; /* 32px — Figma T/D */
    letter-spacing: -0.02em;
  }

  .repertoire-event__action {
    grid-column: 4;
    grid-row: 1;
    justify-self: end;
  }

  .repertoire-event__action .btn {
    width: auto;
  }
}

/* --------------------------------------------------------------------------
   Wariant desktopowy — kontener ≥ 920px
   Strefa meta = wspólny kontener na szerokość kolumn 1–2:
   numer dnia + skrót do LEWEJ, godzina + PJM do PRAWEJ krawędzi kolumny 2
   (PJM wyrównany lewą krawędzią do godziny). Kategoria+tytuł: kol. 3–10
   (tytuł snapowany do kol. 3 — korekta 4px dryfu z Figmy); przycisk 11–12.
   Poniżej 1260px skrót dnia wskakuje POD numer (zero nakładania).
   -------------------------------------------------------------------------- */

/* Grupa dzienna — kontener: .repertoire__calendar */

@container (min-width: 920px) {
  .repertoire-day {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    gap: 0;
    border-top: var(--section-divider);
  }

  /* Data w kontenerze kolumn 1–2, zakotwiczona do lewej; prawa część
     strefy należy do godziny+PJM wydarzeń (overlap w wierszu 1 dnia).
     Bazowo skrót POD numerem; obok numeru dopiero od 1260px. */
  .repertoire-day__date {
    grid-column: 1 / 3;
    grid-row: 1;
    position: static;
    z-index: auto;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    gap: var(--desktop-content-xxs); /* 8px numer ↔ skrót */
    height: auto;
    padding-top: var(--desktop-content-pt-section); /* 36px — jak wiersz wydarzenia */
    background: transparent;
    white-space: nowrap;
  }

  .repertoire-day__num {
    width: auto;
  }

  .repertoire-day__rest {
    flex: none;
    justify-content: flex-start;
    height: auto;
    border-top: none;
  }

  .repertoire-day__events {
    grid-column: 1 / -1;
    grid-row: 1;
    gap: 0;
  }

  .repertoire-day__item {
    position: relative;
    padding-bottom: 0;
    border-bottom: none;
  }

  /* Divider między wydarzeniami dnia: od linii kolumny 2 do prawej */
  .repertoire-day__item + .repertoire-day__item::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    left: calc((100% - 11 * var(--desktop-gutter)) / 12 + var(--desktop-gutter));
    border-top: var(--section-divider);
  }

  .repertoire.is-filter-active .repertoire-day__item.is-filter-show-divider::before {
    display: block !important;
    content: "" !important;
    position: absolute;
    top: 0;
    right: 0;
    left: calc((100% - 11 * var(--desktop-gutter)) / 12 + var(--desktop-gutter));
    border-top: var(--section-divider) !important;
  }

  /* Tablet (≥700px) dodaje border-top na item — na desktopie zostaje tylko ::before. */
  .repertoire.is-filter-active .repertoire-day__item.is-filter-show-divider {
    border-top: none;
  }
}

/* Mikro-próg daty: skrót dnia obok numeru (relacje z Figmy mieszczą się
   w kolumnach 1–2 dopiero od ~1260px szerokości wiersza) */

@container (min-width: 1260px) {
  .repertoire-day__date {
    flex-direction: row;
    align-items: flex-start;
  }
}

/* Wiersz wydarzenia — kontener: .repertoire-day__item */

@container (min-width: 920px) {
  .repertoire-event {
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    align-items: start;
    padding-top: var(--desktop-content-pt-section); /* 36px */
    padding-bottom: var(--repertoire-event-pb); /* 48px */
  }

  /* Kontener meta: kol. 1–2, dosunięty do prawej krawędzi kolumny 2;
     wewnątrz pion (godzina, pod nią PJM) wyrównany do lewej — jak w Figmie. */
  .repertoire-event__meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--repertoire-event-gap); /* 32px godzina ↔ PJM */
    grid-column: 1 / 3;
    grid-row: 1 / 3;
    justify-self: end;
  }

  .repertoire-event__pjm {
    margin-left: 0;
  }

  .repertoire-event__category {
    grid-column: 3 / 11;
    grid-row: 1;
  }

  .repertoire-event__title {
    grid-column: 3 / 11;
    grid-row: 2;
  }

  /* Przycisk rozpina wiersze 1–2, by nie zawyżać wiersza kategorii
     (rytm kategoria ↔ tytuł = row-gap 32px jak w Figmie) */
  .repertoire-event__action {
    grid-column: 11 / 13;
    grid-row: 1 / 3;
    justify-self: end;
    align-self: start;
  }
}

/*
 * Karta aktualności — komponent współdzielony (homepage + archiwum).
 * Placement w siatce (col-span, border-bottom, ukrywanie) należy do konsumenta
 * (home.css / news-archive.css). Tu: tylko wnętrze karty.
 *
 * Spec: docs/specs/news-archive-spec.md §1
 */

.news-card {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  height: var(--news-card-min-h-mobile);       /* 320 — Figma: stała h, nie min-h */
  padding: var(--desktop-content-m) var(--desktop-content-xxs) var(--content-pt-section); /* 32 8 36 */
  border-top: var(--section-divider);
}

/* Figma stosuje text-box-trim (cap → baseline) na tekstach karty — odstępy
   (data → tytuł 24px, justify-between do CTA) liczone do trimu, nie line boxa.
   LinkButtonBig/Small (Figma): h 12/10px + gap 5px do linii podkreślenia.
   Progressive enhancement — brak wsparcia = dotychczasowy wygląd. */

.news-card__date,
.news-card__title,
.news-card__more {
  text-box: trim-both cap alphabetic;
}

.news-card__more::before,
.news-card__more::after {
  bottom: -5px; /* Figma LinkButtonBig: gap-[5px] — linia pod baseline, nie w leadingu */
}

.news-card__date {
  margin: 0;
}

.news-card__title {                              /* .h3 z markupu (24/32); data → tytuł 24 */
  margin: var(--mobile-content-m) 0 0;
}

.news-card__more {
  margin-top: auto;                              /* odpowiednik justify-between → Link Button Big */
  color: var(--text-primary);
}

.news-card--no-cta .news-card__title {
  margin-top: var(--mobile-content-m);
}

.news-card__title-link {
  color: inherit;
  text-decoration: none;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-card {
    height: var(--news-card-min-h-tablet);       /* 352 */
    padding-bottom: var(--tablet-content-l);      /* 40 */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-card {
    height: var(--news-card-min-h-desktop);      /* 400 */
  }

  .news-card__title {
    padding-right: var(--desktop-content-2xs);   /* 20 — Title Div pr-[20px] (Figma desktop) */
  }
}

/*
 * Homepage — Etap 2 (detal).
 * Spec: docs/specs/homepage-spec.md  |  węzły Figma 50:4882 / 50:5384 / 50:5851.
 *
 * Repertuar = reuse repertoire.css (§2). Tu: wrapper sekcji, hero, news.
 */

/* ==========================================================================
   Wrapper — rytm sekcji (§6)
   ========================================================================== */

.home-main {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);          /* 32px */
  padding-bottom: var(--mobile-content-l);
}

@media (min-width: 769px) {
  .home-main {
    gap: var(--tablet-section-s);        /* 64px */
    padding-bottom: var(--tablet-section-s);
  }
}

@media (min-width: 1025px) {
  .home-main {
    gap: var(--desktop-content-xxl);     /* 96px */
    padding-bottom: var(--desktop-content-xxl);
  }
}

/* ==========================================================================
   Hero — featured event (treść na media, scrim na dole)
   Mobile: pełny bleed. Tablet/desktop: w gridzie (max 1440 + gutter).
   ========================================================================== */

.home-hero {
  box-sizing: border-box;
  width: 100%;
}

.home-hero__carousel {
  position: relative;
  width: 100%;
}

.home-hero__carousel--active {
  height: var(--home-hero-h-mobile);     /* 520px — kontekst dla stacku slajdów */
  /* Wspólny inset chrome (play/pause, kropki, padding overlayu) — symetria góra/dół */
  --home-hero-chrome-inset-block: var(--content-pt-section);   /* 36px */
  --home-hero-chrome-inset-inline: var(--mobile-container-padding);
  --home-hero-meta-band-height: 1.3125rem;                   /* subheading-2 cap, mobile */
}

.home-hero__track {
  position: relative;
  width: 100%;
  height: 100%;
}

.home-hero__slide {
  position: relative;
  width: 100%;
  height: var(--home-hero-h-mobile);     /* 520px */
  overflow: hidden;
}

/* Karuzela: slajdy w stacku + crossfade */

.home-hero__carousel--active .home-hero__slide {
  position: absolute;
  inset: 0;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--home-hero-transition, 500ms) ease;
}

.home-hero__carousel--active .home-hero__slide.is-active {
  opacity: 1;
  pointer-events: auto;
}

@media (prefers-reduced-motion: reduce) {
  .home-hero__carousel--active .home-hero__slide {
    transition: none;
  }
}

/* Pause/Play — lewy górny róg (WCAG 2.2.2); inset = ten sam co dół overlayu */

.home-hero__play-pause {
  position: absolute;
  top: var(--home-hero-chrome-inset-block, var(--content-pt-section));
  left: var(--home-hero-chrome-inset-inline, var(--mobile-container-padding));
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.38);
  color: var(--base-00);
  cursor: pointer;
  backdrop-filter: blur(6px);
  transition: background-color 0.25s ease, color 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
}

.home-hero__play-pause:hover,
.home-hero__play-pause:focus-visible {
  background: rgba(255, 255, 255, 0.9);
  color: var(--text-primary);
  outline: 2px solid var(--base-00);
  outline-offset: 2px;
}

.home-hero__play-pause:active {
  transform: scale(0.95);
}

/* Jeden przycisk — glify pause/play nałożone, crossfade przy przełączeniu */

.home-hero__icon-stack {
  position: relative;
  display: block;
  width: 1rem;
  height: 1rem;
}

.home-hero__glyph {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: scale(0.82);
  transition: opacity 0.2s cubic-bezier(0.04, 1, 0.7, 1), transform 0.2s cubic-bezier(0.04, 1, 0.7, 1);
}

.home-hero__glyph svg {
  width: 100%;
  height: 100%;
}

.home-hero__play-pause.is-playing .home-hero__glyph--pause,
.home-hero__play-pause:not(.is-playing) .home-hero__glyph--play {
  opacity: 1;
  transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
  .home-hero__glyph {
    transition: none;
  }
}

/* Kropki — ten sam inset co meta-row; wspólna wysokość pasma dla wyrównania baseline */

.home-hero__controls {
  position: absolute;
  right: var(--home-hero-chrome-inset-inline, var(--mobile-container-padding));
  bottom: var(--home-hero-chrome-inset-block, var(--content-pt-section));
  z-index: 3;
  display: flex;
  align-items: center;
  min-height: var(--home-hero-meta-band-height, 1.3125rem);
  gap: 0.5rem;
  flex-shrink: 0;
}

.home-hero__media {
  position: absolute;
  inset: 0;
  background-color: var(--placeholder-greybox);
}

.home-hero__image {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.home-hero__media::after {                /* scrim — czytelność treści (§3); WCAG 1.4.3: biały tekst ≥4.5:1 nad dowolnym zdjęciem */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent 20%, rgba(0, 0, 0, 0.55) 60%, rgba(0, 0, 0, 0.92) 100%);
}

/* Overlay = siatka strony (2/6/12 kol.), nie flex z px na sztywno.
   Dzięki temu tytuł zawija się na linii kolumny przy każdej szerokości. */

.home-hero__overlay {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);  /* mobile */
  -moz-column-gap: var(--mobile-gutter);
       column-gap: var(--mobile-gutter);
  row-gap: var(--mobile-content-l);        /* 32px — tytuł ↔ meta */
  align-content: end;                      /* treść do dołu (na scrim) */
  padding: 0 var(--mobile-container-padding) var(--content-pt-section); /* 0 16 36 */
  color: var(--base-00);
}

/* grid-column tylko na bezpośrednich dzieciach overlayu (link lub h2 bez URL). */

.home-hero__title-link,
.home-hero__overlay > .home-hero__title,
.home-hero__meta-row {
  grid-column: 1 / -1;                     /* mobile: pełna szerokość */
}

/* Wyjątek typograficzny (jak .repertoire__month): tytuł na scrimie, skala 24/32/40
   z Figmy hero — nie mapuje się na .h1 (inna skala i kolor na --base-00). */

.home-hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.5rem;                      /* 24px */
  line-height: 1.05;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  color: var(--base-00);
}

/* Link na tytule — bez domyślnego stylu <a> (kolor + podkreślenie) */

.home-hero__title-link {
  display: block;
  color: var(--base-00);
  text-decoration: none;
}

.home-hero__title-link:hover,
.home-hero__title-link:focus-visible {
  color: var(--base-00);
  text-decoration: none;
}

.home-hero__meta-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--desktop-content-m);
  min-height: var(--home-hero-meta-band-height, 1.3125rem);
}

.home-hero__meta {
  display: flex;
  align-items: center;
  gap: var(--desktop-content-m);          /* 32px — kategoria ↔ data */
}

/* Tekst meta na scrim — biały (nadpisanie .subheading-2 / category-tag) */

.home-hero__meta .category-tag__label,
.home-hero__date {
  color: var(--base-00);
}

/* Figma stosuje text-box-trim (cap → baseline) na tekstach hero — odstępy
   (row-gap tytuł↔meta 32px, padding-bottom) liczone do trimu, nie line boxa.
   Progressive enhancement — brak wsparcia = dotychczasowy wygląd. */

.home-hero__title,
.home-hero__meta .category-tag__label,
.home-hero__date {
  text-box: trim-both cap alphabetic;
}

/* Kropka kategorii (16/20px) nadlewa się poza wiersz capa etykiety (h-10/12);
   bez kompensacji zawyża meta-row i rozjeżdża baseline kategoria↔data. */

.home-hero__meta .category-tag__dot {
  margin-block: -0.25rem;
}

.home-hero__bullet {
  width: 0.5rem;
  height: 0.5rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  cursor: pointer;
  transition: background-color 0.2s ease, transform 0.2s ease;
}

.home-hero__bullet:hover,
.home-hero__bullet:focus-visible {
  background: rgba(255, 255, 255, 0.7);
  outline: 2px solid var(--base-00);
  outline-offset: 2px;
}

.home-hero__bullet.is-active {
  background: var(--base-00);
  transform: scale(1.2);
}

@media (min-width: 769px) {
  /* Tablet: media full-bleed (jak Figma x=0), inset tekstu na overlayu.
     Overlay wcięty 24 = siatka .container → span 5 trzyma grid. */
  .home-hero__carousel--active {
    height: var(--home-hero-h-tablet);    /* 417px */
    --home-hero-chrome-inset-inline: var(--tablet-container-padding);
    --home-hero-meta-band-height: 1.5rem; /* subheading-2 cap, tablet+ */
  }

  .home-hero__slide {
    height: var(--home-hero-h-tablet);    /* 417px */
  }

  .home-hero__play-pause {
    width: 2.5rem;
    height: 2.5rem;
  }

  .home-hero__overlay {
    grid-template-columns: repeat(6, 1fr);
    -moz-column-gap: var(--tablet-gutter);
         column-gap: var(--tablet-gutter);
    padding: 0 var(--tablet-container-padding) var(--content-pt-section); /* 0 24 36 — inset tekstu */
  }

  .home-hero__title-link,
  .home-hero__overlay > .home-hero__title {
    grid-column: 1 / span 5;              /* 5 z 6 kol. (z overlayu siatki, nie z flex Figmy) */
  }

  .home-hero__title {
    font-size: 2rem;                      /* 32px */
    letter-spacing: -0.02em;
  }
}

@media (min-width: 1025px) {
  /* Desktop: media wcięte gutterem 40 (Figma x=40, w=1360, NIE full-bleed). */
  .home-hero {
    max-width: var(--container-max-width);
    margin-inline: auto;
    padding-inline: var(--desktop-container-padding); /* gutter 40 */
  }

  .home-hero__carousel--active {
    height: var(--home-hero-h-desktop);   /* 680px */
    --home-hero-chrome-inset-block: var(--tablet-content-l);   /* 40px */
    --home-hero-chrome-inset-inline: var(--desktop-content-m); /* 32px */
  }

  .home-hero__slide {
    height: var(--home-hero-h-desktop);   /* 680px */
  }

  .home-hero__overlay {
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    row-gap: var(--desktop-content-m);    /* 32px */
    padding: 0 0 var(--tablet-content-l); /* 0 0 40 */
  }

  /* Inset = padding na ELEMENCIE (nie kontenerze) → siatka nietknięta.
     Tytuł: pudełko 1/span 8 (prawa krawędź na kol. 8), tekst wsunięty 32 → 864px. */
  .home-hero__title-link,
  .home-hero__overlay > .home-hero__title {
    grid-column: 1 / span 8;
    padding-left: var(--desktop-content-m); /* 32 — px-[32px] z Figmy */
  }

  .home-hero__title {
    font-size: 2.5rem;                       /* 40px */
  }

  /* Meta: kategoria x72, slider x1368 (oba wcięte 32 wewnątrz mediów). */
  .home-hero__meta-row {
    padding-inline: var(--desktop-content-m); /* 32 */
  }
}

/* ==========================================================================
   Nagłówki sekcji — typografia w .section-title (typography-base/rwd).
   Tu tylko trim line-boxa (Figma: nagłówek mierzony cap → baseline).
   ========================================================================== */

.home-repertoire__title,
.home-news__title {
  text-box: trim-both cap alphabetic;
}

/* Link sekcji „ZOBACZ…" — typografia .button (z markupu); hover: draw-underline w button.css */

.home-repertoire__link,
.home-news__link {
  color: var(--text-primary);
  white-space: nowrap;
}

/* CTA aktualności: mobile pełna etykieta, tablet+ skrócona (Figma 50:5851 vs 50:5384/50:4882) */

.home-news__link-short {
  display: none;
}

@media (min-width: 769px) {
  .home-news__link-full {
    display: none;
  }

  .home-news__link-short {
    display: inline;
  }
}

/* ==========================================================================
   Sekcja repertuaru — wrapper wokół reuse .repertoire__calendar (§4)
   ========================================================================== */

.home-repertoire__container {
  container-type: inline-size;            /* kontekst dla wierszy repertoire.css */
  /* Mobile: tytuł → lista → CTA (Figma 50:5851 — link pod kalendarzem) */
  display: grid;
  grid-template-areas:
    "title"
    "calendar"
    "link";
  row-gap: var(--mobile-content-l);       /* 32px tytuł → lista */
}

.home-repertoire__header {
  display: contents;
}

.home-repertoire__title {
  grid-area: title;
}

.home-repertoire__link {
  grid-area: link;
  margin-top: calc(var(--mobile-content-xl) - var(--mobile-content-l)); /* +16 → 48px lista → CTA */
}

.home-repertoire__container .repertoire__calendar {
  grid-area: calendar;
}

@media (min-width: 769px) {
  .home-repertoire__container {
    display: block;
  }

  .home-repertoire__header {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--mobile-content-l);
    margin-bottom: var(--gap-stack); /* 36px */
  }

  .home-repertoire__title,
  .home-repertoire__link {
    grid-area: auto;
    margin-top: 0;
  }

  .home-repertoire__container .repertoire__calendar {
    grid-area: auto;
  }
}

@media (min-width: 1025px) {
  .home-repertoire__header {
    margin-bottom: var(--repertoire-heading-gap); /* 56px */
  }
}

/* ==========================================================================
   Aktualności — siatka kart (1 / 2 / 3 kol.) (§5)
   ========================================================================== */

.home-news {
  padding-top: var(--mobile-content-m);   /* 24px — pt sekcji mobile (§5) */
}

/* Mobile: tytuł → karty → CTA (Figma 50:5851 — link pod kartami) */

.home-news .container {
  display: grid;
  grid-template-areas:
    "title"
    "grid"
    "link";
  row-gap: var(--mobile-content-l);       /* 32px między wierszami */
}

.home-news__header {
  display: contents;
}

.home-news__title {
  grid-area: title;
}

.home-news__link {
  grid-area: link;
}

.home-news__grid {
  grid-area: grid;
  row-gap: 0;                             /* karty stykają się linią (Figma gap 0) */
}

/* Karta = komponent .news-card (news-card.css). Tu tylko osadzenie w siatce. */

.home-news__grid .news-card {
  grid-column: 1 / -1;                    /* mobile: 1 kolumna */
  align-self: start;                    /* bez rozciągania do najwyższej karty w rzędzie */
}

/* Mobile: karty jedna pod drugą — separator współdzielony (bez podwajania). */

.home-news__grid .news-card:last-child {
  border-bottom: var(--section-divider);
}

@media (min-width: 769px) {
  .home-news {
    padding-top: 0;
  }

  .home-news .container {
    display: block;
  }

  .home-news__header {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: var(--tablet-content-xl); /* 56px */
  }

  .home-news__title,
  .home-news__link,
  .home-news__grid {
    grid-area: auto;
  }

  /* Tablet: 2 kafle (6+6). Trzeci ukryty — 3 w 2 kolumnach robią dziurę
     (decyzja projektowa: 2 zamiast 4). Karty obok siebie → pełna ramka. */
  .home-news__grid .news-card {
    grid-column: span 3;
    border-bottom: var(--section-divider);
  }

  .home-news__grid .news-card:nth-child(n + 3) {
    display: none;
  }
}

@media (min-width: 1025px) {
  .home-news__header {
    margin-bottom: var(--repertoire-heading-gap);    /* 56px */
  }

  .home-news__grid {
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);
    row-gap: var(--desktop-gutter);
  }

  .home-news__grid .news-card {
    grid-column: span 4;
  }

  .home-news__grid .news-card:nth-child(n + 3) {
    display: flex;
  }

  /* Figma NewsFinal desktop: tytuł wcięty z prawej (pr-[20px]) */
  .home-news .news-card__title {
    padding-right: var(--desktop-content-2xs); /* 20px */
  }
}

/*
 * Paginacja — komponent (the_posts_pagination / paginate_links → .page-numbers).
 * Wygląd elementów; rozmieszczenie (mobile pełna szer. ↔ tablet+ prawy róg) = konsument.
 *
 * Spec: docs/specs/news-archive-spec.md §6
 */

.pagination__list {
  display: flex;
  align-items: center;
  gap: var(--mobile-content-m);          /* 24 — fallback, konsument może nadpisać */
  margin: 0;
  padding: 0;
  list-style: none;
}

.pagination__item {
  display: flex;
  align-items: center;
}

/*
 * Wspólna linia bazowa dla cyfr i strzałek.
 * Bez text-box trim — trim + draw-underline (button.css) dawały różne wysokości
 * dla span (current), a (link) i prev/next (SVG).
 */

.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 1.5rem; /* subheading-2 line-height (14px × 1.5) */
  position: relative;
}

.pagination a.page-numbers {
  display: inline-flex;
  width: auto;
  text-decoration: none;
}

/* Strzałki prev/next — bez draw-underline z button.css */

.pagination .page-numbers.prev::before,
.pagination .page-numbers.prev::after,
.pagination .page-numbers.next::before,
.pagination .page-numbers.next::after {
  content: none;
  display: none;
}

/* Numery (linki) — linia draw poniżej baseline */

.pagination a.page-numbers:not(.prev):not(.next)::before,
.pagination a.page-numbers:not(.prev):not(.next)::after {
  bottom: 0;
}

/* Hover linków numerycznych: draw-underline w button.css (a.page-numbers) */

/* Bieżąca strona (span) — button.css obejmuje tylko a.page-numbers */

.pagination .page-numbers.current::before {
  content: "";
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
  height: 1px;
  width: 97.8%;
  background: var(--main-off-black);
}

.page-numbers.dots {
  letter-spacing: 0.1em;
}

.page-numbers:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/* Strzałki prev/next — mobile: kółko 33px (Figma). Obszar dotyku ≥ 24px (WCAG 2.5.8) */

.page-numbers.prev,
.page-numbers.next {
  box-sizing: border-box;
  width: 2.0625rem;  /* 33 */
  height: 2.0625rem;
  padding: 0;
  border: 1px solid var(--main-off-black);
  border-radius: 50%;
}

/* Kraniec zakresu (1. / ostatnia strona) — strzałka widoczna, lecz nieaktywna */

.page-numbers.pagination__disabled {
  cursor: default;
}

.pagination__arrow {
  display: inline-flex;
}

.pagination__arrow svg {
  display: block;
  width: 1.375rem;                       /* ~22 (obszar 33 z paddingiem) — mobile */
  height: 1.375rem;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  /* tablet+: strzałka inline bez kółka */
  .page-numbers.prev,
  .page-numbers.next {
    width: auto;
    height: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
  }

  .pagination__arrow svg {
    width: 0.9375rem;                    /* 15 — strzałka inline */
    height: 1rem;                        /* 16 */
  }
}

/*
 * Podstrona „Aktualności" (archiwum) — Etap 2 (detal).
 * Spec: docs/specs/news-archive-spec.md  |  węzły Figma 50:7798 / 50:7038 / 50:6293.
 *
 * Reuse: .news-card (news-card.css), .pagination (pagination.css), .breadcrumb, .container, .grid-container.
 */

/* ==========================================================================
   Layout sekcji — grid-areas (§3)
   Paginacja: mobile = tylko dół. Tablet+: góra przy tytule + dół po prawej.
   Bez separatora — karty same niosą linie.
   ========================================================================== */

.news-archive {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas:
    "title"
    "grid"
    "pager-footer";
  padding-top: var(--mobile-content-l);     /* 32 — breadcrumb → tytuł */
  padding-bottom: var(--page-footer-pb-mobile);
}

/* Typografia: .section-title (markup). Tu tylko layout + trim line-boxa. */

.news-archive__title {
  grid-area: title;
  text-box: trim-both cap alphabetic;
}

.news-archive__grid {
  grid-area: grid;
  margin-top: var(--mobile-content-l);      /* 32 — tytuł → siatka */
}

.news-archive__pager--header {
  display: none;
}

.news-archive__pager--footer {
  grid-area: pager-footer;
  margin-top: var(--gap-stack);             /* 36 — siatka → paginacja (mobile) */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-archive {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "title pager"
      "grid  grid"
      ".     pager-footer";
    align-items: end;                        /* tytuł ↔ paginacja przy dolnej krawędzi */
    padding-top: var(--content-pt-section);  /* 36 */
    padding-bottom: var(--page-footer-pb-tablet);
  }

  .news-archive__grid {
    margin-top: var(--tablet-content-xl);    /* 56 */
  }

  .news-archive__pager--header {
    display: block;
    grid-area: pager;
    margin-top: 0;
  }

  .news-archive__pager--footer {
    margin-top: var(--tablet-content-xl);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-archive {
    padding-top: var(--desktop-content-xl);     /* 64 */
    padding-bottom: var(--page-footer-pb-desktop);
  }

  .news-archive__grid {
    margin-top: var(--repertoire-heading-gap);  /* 56 */
  }

  .news-archive__pager--footer {
    margin-top: var(--repertoire-heading-gap);
  }
}

/* ==========================================================================
   Siatka kart — reuse .grid-container + .news-card (§4)
   row-gap: 0; każda karta ma divider top+bottom (Figma), zlewane do 1px
   przez margin-bottom: -1px (jednolite linie, segmentowane per kolumna).
   ========================================================================== */

.news-archive__grid .news-card {
  grid-column: 1 / -1;                        /* mobile: 1 kolumna */
  align-self: start;                          /* bez rozciągania do najwyższej karty w rzędzie */
  margin-bottom: -1px;
  border-bottom: var(--section-divider);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-archive__grid .news-card {
    grid-column: span 3;                      /* tablet: 2 kolumny (z 6) */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-archive__grid .news-card {
    grid-column: span 4;                      /* desktop: 3 kolumny (z 12) */
  }
}

/* ==========================================================================
   Paginacja — rozmieszczenie (§6). Wygląd elementów: pagination.css.
   ========================================================================== */

.news-archive__pager .pagination__list {
  width: 100%;
  justify-content: space-between;             /* mobile: pełna szer. */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-archive__pager .pagination__list {
    width: auto;
    justify-content: flex-end;                /* tablet+: kompakt po prawej */
    gap: var(--gap-compact);
  }
}

/*
 * Pojedynczy wpis aktualności.
 * Spec: docs/specs/news-single-spec.md
 */

.news-single {
  padding-bottom: var(--page-footer-pb-mobile);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-single {
    padding-bottom: var(--page-footer-pb-tablet);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-single {
    padding-bottom: var(--page-footer-pb-desktop);
  }
}

/* ==========================================================================
   Shell — border + subgrid tablet/desktop (§4)
   ========================================================================== */

.news-single__shell {
  grid-column: 1 / -1;
  border-top: var(--section-divider);
  border-bottom: var(--section-divider);
  padding-top: var(--mobile-content-l);       /* 32 */
  padding-bottom: var(--content-pt-section); /* 36 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-single__shell {
    display: grid;
    grid-template-columns: subgrid;
    row-gap: var(--gap-stack); /* 36 */
    padding-top: var(--content-pt-section);
    padding-bottom: var(--tablet-content-l);   /* 40 */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-single__shell {
    align-items: start;
    border-bottom: none;
    padding-bottom: 0;
    row-gap: 0;
  }
}

/* ==========================================================================
   Back — desktop only (§5)
   ========================================================================== */

.news-single__back {
  display: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-single__back {
    display: flex;
    grid-column: 1;
    align-self: start;
    margin-left: -0.625rem;  /* kompensacja paddingu .arrow-control (10px) → ikona w linii gridu */
    margin-top: -0.625rem;   /* j.w. pionowo: Figma mierzy 36px od separatora do glyphu, nie do hit-area */
  }
}

/* ==========================================================================
   Main — mobile stack; tablet: display:contents (intro 6 col, content 5 col);
   desktop: jeden blok cols 3–8 (§6)
   ========================================================================== */

.news-single__main {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-m); /* 24 */
}

/* Figma mierzy padding-top shella i gap data→tytuł do tekstu przyciętego
   (cap → baseline). Bez trimu te same wartości (32/36) renderują się optycznie
   większe o ~pół-leadingu. Lead/treść w Figmie bez trimu — line box się zgadza.
   Progressive enhancement. */

.news-single__date {
  align-self: start;
  margin: 0;
  text-box: trim-both cap alphabetic;
}

.news-single__title {
  margin: 0;
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1; /* Cormorant: cyfry lining + proportional (np. rok) */
}

.news-single__lead {
  margin: 0;
}

.news-single__content {
  min-width: 0;
}

.news-single__content > *:first-child {
  margin-top: 0;
}

.news-single__content > *:last-child {
  margin-bottom: 0;
}

.news-single__content p {
  margin: 0;
}

.news-single__content p + p {
  margin-top: var(--mobile-content-m); /* 24 — rytm akapitów = gap mainu (Figma: akapity to flex-siblingi) */
}

.news-single__content a {
  color: var(--text-primary);
}

.news-single__content a:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

@media (min-width: 769px) { /* tablet+ — rytm akapitów = gap mainu (36) */
  .news-single__content p + p {
    margin-top: var(--gap-stack); /* 36 */
  }
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .news-single__main {
    display: contents;
  }

  .news-single__date,
  .news-single__title,
  .news-single__lead {
    grid-column: 1 / -1; /* 6 kolumn */
  }

  .news-single__content {
    grid-column: span 5; /* treść główna — 5 kolumn */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .news-single__main {
    grid-column: 3 / span 6;
    gap: var(--gap-stack); /* 36 */
  }
}

/* ==========================================================================
   Content builder — rytm bloków + media (Etap 2)
   ========================================================================== */

.news-single__content > * + * {
  margin-top: var(--mobile-content-m); /* 24 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .news-single__content > * + * {
    margin-top: var(--gap-stack); /* 36 */
  }
}

.news-single__content img {
  display: block;
  max-width: 100%;
  height: auto;
}

.news-single__photos {
  display: block; /* override nested .grid-container */
  width: 100%;
  min-width: 0;
}

.news-single__photo {
  margin: 0;
}

.news-single__photo figcaption {
  margin-top: var(--mobile-content-xxs); /* 8 */
  color: var(--grey-500);
  text-align: right;
}

.news-single__video {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
}

.news-single__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/*
 * Akordeon — wspólna mechanika (<details>, ikony +/−, płynne zwijanie).
 * Layout per-szablon: static-page.css (.uss__accordion), contact.css (.contact-segment--accordion).
 * JS: assets/js/accordion.js
 */

.accordion-item {
  --accordion-duration: var(--duration-slow);
  --accordion-easing: cubic-bezier(0.22, 1, 0.36, 1);
}

.accordion-summary {
  cursor: pointer;
  list-style: none;
}

.accordion-summary::-webkit-details-marker {
  display: none;
}

.accordion-summary:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.accordion-icon {
  flex-shrink: 0;
  width: 2.0625rem;  /* 33 */
  height: 2.0625rem;
  color: var(--text-primary);
}

.accordion-icon-motion {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
  transform: rotate(0deg);
  transition: transform var(--accordion-duration) var(--accordion-easing);
}

.accordion-plus,
.accordion-minus {
  position: absolute;
  inset: 0;
  transition:
    opacity var(--accordion-duration) var(--accordion-easing),
    transform var(--accordion-duration) var(--accordion-easing);
}

.accordion-plus svg,
.accordion-minus svg {
  display: block;
  width: 100%;
  height: 100%;
}

.accordion-minus {
  opacity: 0;
}

/* Otwarty: kontener +90°, minus skompensowany −90° → pozioma kreska */

.accordion-item[open]:not([data-closing]) .accordion-icon-motion {
  transform: rotate(90deg);
}

.accordion-item[open]:not([data-closing]) .accordion-plus {
  opacity: 0;
}

.accordion-item[open]:not([data-closing]) .accordion-minus {
  opacity: 1;
  transform: rotate(-90deg);
}

/* Zamykanie: powrót minus → plus */

.accordion-item[data-closing] .accordion-icon-motion {
  transform: rotate(0deg);
}

.accordion-item[data-closing] .accordion-plus {
  opacity: 1;
}

.accordion-item[data-closing] .accordion-minus {
  opacity: 0;
  transform: rotate(-90deg);
}

/* Treść — płynne zwijanie (grid-template-rows 0fr↔1fr) */

.accordion-content {
  display: grid; /* nadpisuje UA display:none zamkniętego <details> ⇒ animacja działa */
  grid-template-rows: 0fr;
  padding-bottom: 0;
  transition:
    grid-template-rows var(--accordion-duration) var(--accordion-easing),
    padding-bottom var(--accordion-duration) var(--accordion-easing);
}

.accordion-item[open]:not([data-closing]) .accordion-content {
  grid-template-rows: 1fr;
}

.accordion-item:not([open]) .accordion-content {
  grid-template-rows: 0fr;
  padding-bottom: 0;
}

.accordion-content-inner {
  overflow: hidden;
  min-height: 0;
}

.accordion-content-inner > *:first-child { margin-top: 0; }

.accordion-content-inner > *:last-child { margin-bottom: 0; }

@media (prefers-reduced-motion: reduce) {
  .accordion-item {
    --accordion-duration: 0ms;
  }

  .accordion-icon-motion,
  .accordion-plus,
  .accordion-minus,
  .accordion-content {
    transition: none;
  }

  .accordion-item[open]:not([data-closing]) .accordion-icon-motion,
  .accordion-item[open]:not([data-closing]) .accordion-minus {
    transform: rotate(0deg);
  }

  .accordion-item:not([open]) .accordion-minus {
    display: none;
  }

  .accordion-item[open] .accordion-plus {
    display: none;
  }
}

/*
 * Uniwersalna Strona Statyczna (USS) — Etap 2 (detal: typografia, rytm, komponenty).
 * Spec: docs/specs/static-page-spec.md  |  węzły Figma 66:11621 / 66:11117 / 66:10612.
 *
 * Rytm pionowy (wyprowadzony z metadanych Figmy, mobile / tablet / desktop):
 *  --uss-gap      24 / 40 / 40  → odstęp między blokami (.uss__body row-gap, hero↔body)
 *  --uss-section  32 / 36 / 36  → przerwa sekcyjna nad blokiem z nagłówkiem + pt powłoki
 *  --uss-flow     24 / 36 / 36  → odstęp wewnątrz bloku (nagłówek↔treść↔cytat↔wideo)
 *  intro / cytat: 36 stałe na każdym BP (komponenty o własnym rytmie)
 *
 * Strefa czytania: full (mobile) / span 5 (tablet) / kol. 3–8 (desktop).
 * Full-bleed media (hero, galeria, logo): 1 / -1 na każdym BP.
 *
 * Reuse: .grid-container (grid.css), .event-gallery (event-gallery.css),
 *        .arrow-control (button.css), typografia (typography-*.css).
 */

/* ==========================================================================
   Sekcja + skala rytmu
   ========================================================================== */

.uss {
  --uss-gap: var(--mobile-content-m);      /* 24 */
  --uss-section: var(--mobile-content-l);  /* 32 */
  --uss-flow: var(--mobile-content-m);     /* 24 */

  row-gap: var(--uss-gap);
  padding-bottom: var(--page-footer-pb-mobile);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss {
    --uss-gap: var(--tablet-content-l);       /* 40 */
    --uss-section: var(--content-pt-section);  /* 36 */
    --uss-flow: var(--gap-stack);              /* 36 */
    padding-bottom: var(--page-footer-pb-tablet);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .uss {
    padding-bottom: var(--page-footer-pb-desktop);
  }
}

/* Reset marginesów elementów przepływu — rytm pionowy steruje wyłącznie flex `gap`. */

.uss :is(h1, h2, h3, p, ul, ol, blockquote, figure, cite) {
  margin: 0;
}

/* Przycięcie line-boxa nagłówków do cap/baseline — gapy renderują się cap-to-cap
   jak w Figmie (progressive enhancement, jak w news-single). */

.uss__title,
.uss__date,
.uss h2,
.uss h3 {
  text-box: trim-both cap alphabetic;
}

/* ==========================================================================
   Hero — full-bleed na każdym BP
   ========================================================================== */

.uss__hero {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 0; /* Figma itemSpacing 0 — podpis przylega do dolnej krawędzi zdjęcia */
}

.uss__media {
  width: 100%;
  background: var(--placeholder-surface);
}

.uss__media--hero {
  aspect-ratio: 358 / 270;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss__media--hero {
    aspect-ratio: 1360 / 544;
  }
}

.uss__media--inline {
  aspect-ratio: 358 / 230;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss__media--inline {
    aspect-ratio: 664 / 502;
  }
}

/* Podpis — body-s, prawy; przyciemniony do WCAG 2.1 AA (#a2a2a2 z Figmy nie spełnia) */

.uss__caption {
  color: var(--grey-500);
  text-align: right;
}

/* ==========================================================================
   Powłoka treści — mobile: flex stack; tablet/desktop: subgrid
   ========================================================================== */

.uss__body {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  row-gap: var(--uss-gap);
  border-top: var(--section-divider); /* dzielnik hero ↔ artykuł (full-bleed) */
  padding-top: var(--uss-section);
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss__body {
    display: grid;
    grid-template-columns: subgrid;
    row-gap: var(--uss-gap);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .uss__body {
    align-items: start;
  }
}

/* ==========================================================================
   Przycisk wstecz — desktop only, kolumna 1
   ========================================================================== */

.uss__back {
  display: none;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .uss__back {
    display: flex;
    grid-column: 1;
    align-self: start;
    margin-left: -0.625rem; /* kompensacja paddingu .arrow-control (10px) → ikona w linii gridu */
  }
}

/* ==========================================================================
   Bloki — strefa czytania + przerwa sekcyjna nad nagłówkiem
   ========================================================================== */

.uss__block {
  padding-top: var(--uss-section);
}

/* Blok-kontynuacja (intro, akapit po intro) — bez przerwy sekcyjnej */

.uss__block--flush {
  padding-top: 0;
}

/* Span strefy czytania */

@media (min-width: 769px) and (max-width: 1024px) { /* tablet only */
  .uss__block {
    grid-column: 1 / span 5;
  }

  .uss__intro,
  .uss__figure-block,
  .uss__faq,
  .uss__rows-block,
  .uss__block--wide {
    grid-column: 1 / -1; /* pełne 6 kolumn */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .uss__block {
    grid-column: 3 / span 6;
  }
}

/* Bloki full-bleed — zawsze cała szerokość gridu */

.uss__block--bleed {
  grid-column: 1 / -1;
}

/* ==========================================================================
   Rytm wewnątrz bloków
   ========================================================================== */

.uss__prose,
.uss__figure-block,
.uss__faq,
.uss__rows-block {
  display: flex;
  flex-direction: column;
  gap: var(--uss-flow);
}

.uss__intro {
  display: flex;
  flex-direction: column;
  gap: var(--gap-stack); /* 36 stałe (Figma: Date+Title+Lead) */
}

.uss__figure {
  display: flex;
  flex-direction: column;
  gap: 0; /* Figma itemSpacing 0 */
}

.uss__date {
  align-self: start;
}

/* Cormorant: cyfry lining + proportional (np. rok w tytule) */

.uss__title {
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* ==========================================================================
   Treść tekstowa (akapity, listy, linki inline)
   ========================================================================== */

.uss__prose > *:first-child { margin-top: 0; }

.uss__prose > *:last-child { margin-bottom: 0; }

.uss__list {
  margin: 0;
  padding-left: 1.5em;
}

.uss__prose a,
.uss__list a {
  color: var(--text-primary);
}

.uss__prose a:focus-visible,
.uss__list a:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/* ==========================================================================
   Cytat
   ========================================================================== */

.uss__quote {
  display: flex;
  flex-direction: column;
  gap: var(--gap-stack); /* 36 — treść ↔ autor */
  border-left: var(--section-divider);
  padding-left: 1.25rem; /* 20 — Figma (stałe na BP) */
  padding-bottom: var(--mobile-content-xxs); /* 8 — Figma pb-8 */
}

.uss__quote-author {
  font-style: normal;
  text-box: trim-both cap alphabetic;
}

/* ==========================================================================
   Wideo (embed placeholder + play)
   ========================================================================== */

.uss__video {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--placeholder-surface);
}

.uss__video-play {
  position: absolute;
  inset: 0;
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 8.1875rem;  /* 131 */
  height: 8.1875rem;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--main-off-black);
  cursor: pointer;
  transition: transform var(--duration-normal) var(--easing-out);
}

.uss__video-play svg {
  display: block;
  width: 100%;
  height: 100%;
}

.uss__video-play:hover,
.uss__video-play:focus-visible {
  transform: scale(1.04);
}

.uss__video-play:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

@media (prefers-reduced-motion: reduce) {
  .uss__video-play {
    transition: none;
  }
}

@media (min-width: 769px) and (max-width: 1024px) { /* tablet — wideo full 6 kol. w bloku span 5 */
  .uss__video {
    width: calc(120% + 0.2 * var(--tablet-gutter));
  }
}

/* ==========================================================================
   Siatka logotypów — full-bleed; 2 / 3 / 3 (wariant B: 2 / 3 / 4)
   ========================================================================== */

.uss__logos {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--mobile-gutter); /* 16 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss__logos {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--desktop-content-s); /* 24 */
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .uss__logos {
    gap: var(--desktop-gutter); /* 32 */
  }

  .uss__logos--wide {
    grid-template-columns: repeat(4, 1fr);
  }
}

.uss__logo {
  background: var(--placeholder-surface);
  border-radius: var(--radius-sm);
  aspect-ratio: 4 / 3; /* wariant A */
}

.uss__logos--wide .uss__logo {
  aspect-ratio: 2 / 1; /* wariant B */
}

/* ==========================================================================
   Akordeon (FAQ) — layout USS; mechanika w accordion.css
   ========================================================================== */

.uss__faq-intro {
  margin: 0;
}

.uss__accordion .accordion-item {
  border-top: var(--section-divider);
}

.uss__accordion .accordion-item:last-child {
  border-bottom: var(--section-divider);
}

.uss__accordion .accordion-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m); /* 24 */
  padding-block: var(--mobile-content-m); /* 24 */
}

.uss__accordion .accordion-title {
  flex: 1;
}

.uss__accordion .accordion-item[open]:not([data-closing]) .accordion-content {
  padding-bottom: var(--mobile-content-m); /* 24 */
}

@media (prefers-reduced-motion: reduce) {
  .uss__accordion .accordion-item[open]:not([data-closing]) .accordion-content {
    padding-bottom: var(--mobile-content-m);
  }
}

/* ==========================================================================
   Listy wierszy (do pobrania / linki zewnętrzne) — wiersz = link
   ========================================================================== */

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

.uss__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m); /* 24 */
  padding-block: var(--mobile-content-m); /* 24 */
  border-top: var(--section-divider);
  color: var(--text-primary);
  text-decoration: none;
}

.uss__rows li:last-child .uss__row {
  border-bottom: var(--section-divider);
}

.uss__row-label {
  flex: 1;
}

.uss__row:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

.uss__row-icon {
  flex-shrink: 0;
  width: 2.0625rem;  /* 33 */
  height: 2.0625rem;
  color: var(--text-primary);
}

.uss__row-icon svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* ==========================================================================
   Galeria — reuse .event-gallery; w USS bez górnego dzielnika,
   nagłówek wcięty do strefy czytania (kol. 3) na desktopie
   ========================================================================== */

.uss .event-gallery {
  border-top: none;
}

.uss .event-gallery__heading {
  margin: 0;
}

.uss .event-gallery__track-wrap {
  margin-left: 0;
  margin-right: 0;
  padding-left: 0;
  padding-right: 0;
}

.uss .event-gallery__track {
  padding-bottom: 0;
}

.uss .event-gallery__slide {
  background: var(--placeholder-surface);
  flex: 0 0 15.375rem; /* 246 — Figma mobile */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .uss .event-gallery__slide {
    flex-basis: 34.25rem; /* 548 */
    aspect-ratio: 548 / 411;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop — nagłówek do kol. 3 */
  .uss .event-gallery {
    display: grid;
    grid-template-columns: subgrid;
  }

  .uss .event-gallery__header {
    grid-column: 3 / -1;
    align-items: center; /* Figma items-center (nagłówek ↔ strzałki) */
  }

  .uss .event-gallery__track-wrap {
    grid-column: 1 / -1;
  }
}

/*
 * Strona Kontakt („Skontaktuj się z nami") — Etap 2 (detal).
 * Spec: docs/specs/contact-spec.md  |  węzły Figma 67:11899 / 67:11468 / 67:10972.
 *
 * Architektura (zaakceptowana w Etapie 1): powtarzalny wiersz „etykieta ↔ treść"
 * (.contact-segment = grid 2/6/12). Reflow wynika z umiejscowienia treści w gridzie:
 *  - tablet: treść span 5 (kol. 1–5) — nachodzi na etykietę ⇒ nowy wiersz (stack);
 *  - desktop: treść kol. 7–12 — nie nachodzi ⇒ ten sam wiersz (obok siebie).
 * Warianty: foto dyrektora (etykieta=kwadrat), akordeon działu (kontrolka +/−:
 * prawa-góra M/T → lewy-dół D dzięki rozciągniętej etykiecie).
 *
 * Reuse: .container/.grid tokens, typografia (.h2/.h3/.subheading/.body),
 *        --section-divider, ikony plus/minus, mechanika akordeonu (accordion.css).
 */

/* ==========================================================================
   Sekcja + rytm pionowy
   ========================================================================== */

.contact-section {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);              /* 32 */
  padding-top: var(--mobile-content-l);      /* 32 */
  padding-bottom: var(--content-pt-section); /* 36 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .contact-section {
    gap: var(--tablet-content-xl);            /* 56 */
    padding-top: var(--content-pt-section);   /* 36 */
    padding-bottom: var(--desktop-content-l); /* 48 */
  }
}

@media (min-width: 1025px) { /* desktop */
  .contact-section {
    padding-top: var(--desktop-content-xl);     /* 64 */
    padding-bottom: var(--desktop-content-xxl); /* 96 */
  }
}

/* Ostatnia sekcja (Wolontariusze) — większy pb przed stopką (Figma 40/64/96) */

.contact-section:last-of-type {
  padding-bottom: var(--page-footer-pb-mobile);
}

@media (min-width: 769px) {
  .contact-section:last-of-type {
    padding-bottom: var(--page-footer-pb-tablet);
  }
}

@media (min-width: 1025px) {
  .contact-section:last-of-type {
    padding-bottom: var(--page-footer-pb-desktop);
  }
}

/* Nagłówki Cormorant — trim cap/baseline jak Figma (wzorzec .uss / repertoire) */

.contact :is(h2, h3) {
  text-box: trim-both cap alphabetic;
}

/* Nagłówek sekcji — Cormorant; mobile 32 (Figma M H1 Low; .h2 bazowo = 24) */

.contact-section__title {
  font-feature-settings: "lnum" 1, "pnum" 1;
  font-size: 2rem; /* 32 — Figma M H1 Low; .h2 bazowo = 24 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .contact-section__title {
    font-size: inherit;
  }
}

/* Lista segmentów — domknięta dolnym dzielnikiem (Figma Content Div border-bottom) */

.contact-list {
  display: flex;
  flex-direction: column;
  border-bottom: var(--section-divider);
}

/* ==========================================================================
   Segment „etykieta ↔ treść" — rdzeń reflow (grid 2/6/12)
   ========================================================================== */

.contact-segment {
  display: grid;
  grid-template-columns: repeat(2, 1fr);     /* mobile: 2 kol. */
  -moz-column-gap: var(--mobile-gutter);
       column-gap: var(--mobile-gutter);          /* 16 */
  row-gap: var(--mobile-content-l);          /* 32 — etykieta ↔ treść (stack) */
  border-top: var(--section-divider);
  padding-top: var(--mobile-content-l);      /* 32 */
  padding-bottom: var(--content-pt-section); /* 36 */
}

@media (min-width: 769px) { /* --breakpoint-tablet — 6 kol. */
  .contact-segment {
    grid-template-columns: repeat(6, 1fr);
    -moz-column-gap: var(--tablet-gutter);
         column-gap: var(--tablet-gutter);          /* 20 */
    row-gap: var(--gap-stack);                 /* 36 */
    padding-top: var(--content-pt-section);    /* 36 */
    padding-bottom: var(--tablet-content-l);   /* 40 */
  }
}

@media (min-width: 1025px) { /* desktop: 12 kol. */
  .contact-segment {
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);         /* 32 */
    align-items: start;                        /* komórki do góry (Figma items-start) */
  }
}

/* Etykieta — domyślnie wiersz (tytuł [+ ewentualna kontrolka]) */

.contact-segment__term,
.contact-segment__label {
  grid-column: 1 / -1;
}

.contact-segment__label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mobile-content-m); /* 24 */
}

.contact-segment__term {
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* Treść */

.contact-segment__content {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l); /* 32 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .contact-segment__content {
    grid-column: 1 / span 5; /* span 5 — nachodzi na etykietę ⇒ nowy wiersz (stack) */
    gap: var(--gap-stack); /* 36 */
  }
}

@media (min-width: 1025px) { /* desktop */
  .contact-segment__term,
  .contact-segment__label {
    grid-column: 1 / 7;   /* kol. 1–6 */
  }
  .contact-segment__content {
    grid-column: 7 / -1;  /* kol. 7–12 (span 6) — ten sam wiersz co etykieta */
  }
}

/* Reset marginesów elementów przepływu — rytm steruje flex `gap` */

.contact-segment :is(h2, h3, h4, p) {
  margin: 0;
}

/* Pod-grupa linii (np. tel + e-mail, NIP + nr konta) — ciaśniejszy rytm */

.contact-prose {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xs); /* 12 */
}

.contact-prose .subheading-2 {
  text-box: trim-both cap alphabetic;
}

/* Linki inline w treści (mailto, www) — hover: draw-underline (button.css) */

.contact-segment__content a:not(.contact-cta) {
  color: var(--text-primary);
}

.contact-segment__content a:focus-visible {
  outline: var(--outline-focus-width) solid var(--color-accessibility-focus);
  outline-offset: var(--outline-focus-offset);
}

/* Wyjątek typograficzny: CTA link-button Figma (14 mobile / 16 T/D), nie .link-l */

.contact-cta {
  align-self: start;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.875rem;   /* 14 — Figma LinkButtonBig mobile */
  line-height: 1;
  letter-spacing: 0.02em;
  color: var(--text-primary);
  text-box: trim-both cap alphabetic;
}

@media (min-width: 769px) {
  .contact-cta {
    font-size: 1rem; /* 16 — Figma LinkButtonBig T/D */
  }
}

/* ==========================================================================
   Wariant: dyrektor (foto + bio)
   ========================================================================== */

.contact-segment--person .contact-segment__label {
  display: block; /* sam kafel zdjęcia */
}

.contact-segment--person .contact-segment__content {
  gap: var(--mobile-content-l); /* 32 */
}

@media (min-width: 769px) {
  .contact-segment--person .contact-segment__content {
    gap: var(--tablet-content-l); /* 40 */
  }
}

.contact-segment__photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: var(--placeholder-surface);
}

/* ==========================================================================
   Blok osoby (imię / stanowisko / e-mail / bio)
   ========================================================================== */

.contact-person {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-xs); /* 12 */
}

@media (min-width: 769px) {
  .contact-person {
    gap: var(--desktop-content-xs); /* 16 */
  }
}

.contact-person__name,
.contact-person__role,
.contact-person__email {
  text-box: trim-both cap alphabetic;
}

/* ==========================================================================
   Akordeon działu — layout w gridzie segmentu; mechanika w accordion.css
   ========================================================================== */

.contact-segment--accordion .accordion-title {
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* Desktop: tytuł na górze, toggle na dole (etykieta rozciągnięta do wysokości wiersza) */

@media (min-width: 1025px) {
  .contact-segment--accordion .contact-segment__label {
    flex-direction: column;
    align-items: flex-start;
    align-self: stretch;
    justify-content: space-between;
    min-height: 6.25rem; /* 100 — Figma min-h */
  }
}

/*
 * Reflow treści akordeonu w gridzie segmentu.
 * Modern Chrome owija dzieci <details> w pseudo-element ::details-content — i to ON
 * jest itemem gridu (auto-placement do 1 tora!). Dlatego placement nakładamy na pseudo.
 * Fallback (Firefox/Safari bez ::details-content): item = .accordion-content,
 * który dziedziczy grid-column z .contact-segment__content. Reguły rozdzielone, by
 * nieznany pseudo-element nie unieważnił fallbacku.
 */

.contact-segment--accordion::details-content {
  grid-column: 1 / -1;
  min-width: 0;
}

@media (min-width: 769px) { /* tablet — stack, treść span 5 */
  .contact-segment--accordion::details-content {
    grid-column: 1 / span 5;
  }
}

@media (min-width: 1025px) { /* desktop — kol. 7–12 obok etykiety */
  .contact-segment--accordion::details-content {
    grid-column: 7 / -1;
  }
}

.contact-segment--accordion .accordion-content-inner {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l); /* 32 — odstęp między osobami */
}

@media (min-width: 769px) {
  .contact-segment--accordion .accordion-content-inner {
    gap: var(--gap-stack); /* 36 */
  }
}

/* ==========================================================================
   Wariant: Wolontariusze (pojedynczy blok)
   ========================================================================== */

.contact-segment--note .contact-segment__content {
  grid-column: 1 / -1;
}

/*
 * Strona Partnerzy — Etap 2 (detal).
 * Spec: docs/specs/partnerzy-spec.md  |  węzły Figma 72:11932 / 72:12356 / 72:12783.
 *
 * Architektura (zaakceptowana w Etapie 1):
 *  - .partners-section : rytm pionowy (1:1 z .contact-section).
 *  - .partners-list    : lista segmentów domknięta dolnym dzielnikiem.
 *  - .partners-item        (Typ A) : logo + opis. Grid 1 → 6 → 12 kolumn.
 *      logo: kol. 1 (span 2, lewa), opis: tablet kol. 4–6 / desktop kol. 7–12.
 *      Reflow: mobile stack (logo nad opisem) → tablet/desktop obok siebie.
 *  - .partners-item--logos (Typ B) : same loga (Patroni). Stack M → rząd T/D.
 *
 * Reuse: typografia .section-title (32/40/40) + .body-m, --section-divider.
 * Decyzje z bramki Etapu 1: py segmentu = --tablet-section-m (72);
 * rozkład logotypów Patroni = rząd flex z równym gap + wrap (skalowalne na N).
 */

/* ==========================================================================
   Sekcja + rytm pionowy (jak .contact-section)
   ========================================================================== */

.partners-section {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);              /* 32 */
  padding-top: var(--mobile-content-l);      /* 32 */
  padding-bottom: var(--content-pt-section); /* 36 */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .partners-section {
    gap: var(--tablet-content-xl);            /* 56 */
    padding-top: var(--content-pt-section);   /* 36 */
    padding-bottom: var(--desktop-content-l); /* 48 */
  }
}

@media (min-width: 1025px) { /* desktop */
  .partners-section {
    padding-top: var(--desktop-content-xl);     /* 64 */
    padding-bottom: var(--desktop-content-xxl); /* 96 */
  }
}

/* Ostatnia sekcja przed stopką — większy pb (Figma 40/64/96, jak .contact) */

.partners-section:last-of-type {
  padding-bottom: var(--page-footer-pb-mobile);
}

@media (min-width: 769px) {
  .partners-section:last-of-type {
    padding-bottom: var(--page-footer-pb-tablet);
  }
}

@media (min-width: 1025px) {
  .partners-section:last-of-type {
    padding-bottom: var(--page-footer-pb-desktop);
  }
}

/* Nagłówek sekcji — Cormorant 32/40/40 (.section-title); trim + cyfry medianowe */

.partners-section__title {
  font-feature-settings: "lnum" 1, "pnum" 1;
  text-box: trim-both cap alphabetic;
}

/* ==========================================================================
   Lista segmentów — domknięta dolnym dzielnikiem (segmenty: border-top)
   ========================================================================== */

.partners-list {
  display: flex;
  flex-direction: column;
  border-bottom: var(--section-divider);
}

/* ==========================================================================
   Typ A — segment „logo + opis" (grid-aware: 1 / 6 / 12 kolumn)
   ========================================================================== */

.partners-item {
  display: grid;
  grid-template-columns: 1fr;                /* mobile: stack */
  row-gap: var(--tablet-content-l);          /* 40 — logo ↔ opis */
  align-items: start;
  border-top: var(--section-divider);
  padding-top: var(--tablet-content-l);      /* 40 */
  padding-bottom: var(--content-pt-section); /* 36 */
}

@media (min-width: 769px) { /* --breakpoint-tablet — logo + opis obok siebie */
  .partners-item {
    grid-template-columns: repeat(6, 1fr);
    -moz-column-gap: var(--tablet-gutter);
         column-gap: var(--tablet-gutter);        /* 20 */
    align-items: center;
    padding-top: var(--tablet-section-m);    /* 72 */
    padding-bottom: var(--tablet-section-m); /* 72 */
  }

  .partners-item__logo {
    grid-column: 1 / span 2;                 /* lewa */
  }

  .partners-item__desc {
    grid-column: 4 / -1;                     /* kol. 4–6 (≈ 381px) */
  }
}

@media (min-width: 1025px) { /* desktop: 12 kol. */
  .partners-item {
    grid-template-columns: repeat(12, 1fr);
    -moz-column-gap: var(--desktop-gutter);
         column-gap: var(--desktop-gutter);       /* 32 */
  }

  .partners-item__desc {
    grid-column: 7 / -1;                     /* kol. 7–12 (span 6 = 664px) */
  }
}

/* Logo — lewy, naturalna proporcja, znormalizowana wysokość (Figma ~57px) */

.partners-item__logo {
  display: block;
  width: auto;
  height: 3.5625rem; /* 57 */
  max-width: 100%;
  justify-self: start;
}

.partners-item__desc {
  width: 100%;
  font-size: 1rem;        /* 16 — Figma Body M na mobile */
  letter-spacing: 0.01em; /* Figma Body M: 1% */
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .partners-item__desc {
    font-size: inherit;
    letter-spacing: inherit;
  }
}

/* ==========================================================================
   Typ B — segment „same loga" (Patroni medialni): stack M → rząd T/D
   ========================================================================== */

.partners-item--logos {
  grid-template-columns: 1fr;
  row-gap: var(--tablet-content-xl);         /* 56 — loga w pionie (mobile) */
}

@media (min-width: 769px) {
  .partners-item--logos {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    -moz-column-gap: var(--tablet-section-m);
         column-gap: var(--tablet-section-m);     /* 72 */
    row-gap: var(--tablet-content-l);        /* 40 — gdy wiersz się zawinie */
  }
}

@media (min-width: 1025px) {
  .partners-item--logos {
    -moz-column-gap: var(--desktop-content-xxl);
         column-gap: var(--desktop-content-xxl);  /* 96 */
    row-gap: var(--desktop-content-l);       /* 48 */
  }
}

.partners-item--logos .partners-item__logo {
  flex-shrink: 0;
}

/*
 * Kafel Mediateki — WSPÓLNY komponent (Video / Audio / Foto / Publikacje + hub).
 * Spec: docs/specs/mediateka-listing-spec.md §4  |  Figma 78:17754 / 78:18691 / 78:13191.
 *
 * Kolumna: miniatura 16:9 (IMG + ikona play) → treść (data · tytuł · info).
 * Typografia = klasy w markupie (.badge / .subheading-2 / .h3 / .body-m); tu tylko layout,
 * kolor kontekstowy, text-box i font-feature (zgodnie z konwencją typografii).
 */

.mediateka-card {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-m); /* 24 — miniatura ↔ treść */
}

/* Miniatura wideo 16:9 — link; tło placeholder pod <img>; play wyśrodkowany */

.mediateka-card__media {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--placeholder-surface); /* #f6f6f6 — widoczne, gdy brak miniatury */
}

/* Badge typu materiału — biała pigułka na miniaturze; inset jak Figma 87:31196.
 * Lżejszy niż projekt: typografia .badge (12→14) i padding 6×12 zamiast subheading-2 + 10×16. */

.mediateka-card__badge {
  position: absolute;
  z-index: 1;
  top: 1px;
  left: 0;
  padding: var(--mobile-content-xs); /* 12 — jak Figma TAG */
  pointer-events: none;
}

/* Nad `.badge`: białe tło, ciaśniejszy padding; typografia dziedziczona z .badge */

.mediateka-card__badge-pill {
  justify-content: center;
  padding: 0.375rem 0.75rem; /* 6×12 */
  border-radius: 1.25rem; /* 20px */
  background-color: var(--base-00);
  text-box: trim-both cap alphabetic;
}

.mediateka-card__thumb {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/* Ikona play (assets/icons/play.svg — currentColor) wyśrodkowana na miniaturze */

.mediateka-card__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 8.1875rem;  /* 131 — wg Figmy stała na wszystkich BP */
  height: 8.1875rem;
  color: var(--base-00); /* biały na miniaturze — Figma / SG */
  pointer-events: none;
}

.mediateka-card__play svg {
  display: block;
  width: 100%;
  height: 100%;
}

.mediateka-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--content-xs); /* 16 — data ↔ tytuł ↔ info */
  color: var(--text-primary);
}

/* Reset UA margin na <p> — odstępy tylko z gap (Figma auto-layout); bez wpływu na .body-m poza kaflem */

.mediateka-card__body > p {
  margin: 0;
}

/* Data i tytuł — przycięcie line-boxa (Figma text-box-trim); tytuł: cyfry medianowe */

.mediateka-card__date {
  text-box: trim-both cap alphabetic;
}

.mediateka-card__title {
  font-feature-settings: "lnum" 1, "pnum" 1;
}

/* Tytuł jako link — bez własnej typografii (dziedziczy .h3); bez podkreślenia (wieloliniowy tytuł).
   text-box trim na linku (nie na h3): trim na nagłówku kurczy box h3, a link wystaje w górę. */

.mediateka-card__title-link {
  color: inherit;
  text-decoration: none;
  text-box: trim-both cap alphabetic;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .mediateka-card {
    gap: var(--desktop-content-m); /* 32 */
  }

  .mediateka-card__body {
    gap: var(--desktop-content-s); /* 24 */
  }
}

/*
 * Wspólny reflow siatki kafli mediateki (listing, hub, archiwum tagów).
 * Mobile 1 col → tablet 2 col (span 3/6) → desktop 3 col (span 4/12).
 */

.mediateka-listing__grid,
.mediateka-card-grid,
.mediateka-hub__grid {
  row-gap: var(--gap-stack);
}

.mediateka-listing__grid .mediateka-card,
.mediateka-card-grid .mediateka-card,
.mediateka-hub__grid .mediateka-card {
  grid-column: 1 / -1;
  align-self: start;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .mediateka-listing__grid,
  .mediateka-card-grid {
    -moz-column-gap: var(--desktop-content-s);
         column-gap: var(--desktop-content-s);
  }

  .mediateka-listing__grid .mediateka-card,
  .mediateka-card-grid .mediateka-card,
  .mediateka-hub__grid .mediateka-card {
    grid-column: span 3;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .mediateka-listing__grid,
  .mediateka-card-grid {
    row-gap: var(--tablet-content-xl);
  }

  .mediateka-listing__grid .mediateka-card,
  .mediateka-card-grid .mediateka-card,
  .mediateka-hub__grid .mediateka-card {
    grid-column: span 4;
  }
}

/*
 * Listing Mediateki (Video) — layout sekcji.
 * Spec: docs/specs/mediateka-listing-spec.md §3
 *
 * Siatka kafli: mediateka-grid.css
 */

.mediateka-listing {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas:
    "title"
    "divider"
    "intro"
    "grid"
    "divider-footer"
    "pager-footer";
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--page-footer-pb-mobile);
}

.mediateka-listing__title {
  grid-area: title;
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.mediateka-listing__divider {
  grid-area: divider;
  margin-top: var(--mobile-content-l);
  border-top: var(--section-divider);
}

.mediateka-listing__intro {
  grid-area: intro;
  margin-top: var(--mobile-content-l);
}

.mediateka-listing__grid {
  grid-area: grid;
  margin-top: var(--mobile-content-l);
}

.mediateka-listing__body {
  grid-area: grid;
  display: flex;
  flex-direction: column;
  gap: var(--tablet-content-l);
  margin-top: var(--mobile-content-l);
}

.mediateka-listing__body > section {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

.mediateka-listing__section-title {
  margin: 0;
}

.mediateka-listing__divider--footer {
  display: none;
}

.mediateka-listing__pager--header {
  display: none;
}

.mediateka-listing__pager--footer {
  grid-area: pager-footer;
  margin-top: var(--gap-stack);
}

.mediateka-listing__pager .pagination__list {
  width: 100%;
  justify-content: space-between;
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .mediateka-listing {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "title          pager"
      "divider        divider"
      "intro          intro"
      "grid           grid"
      "divider-footer divider-footer"
      ".              pager-footer";
    align-items: end;
    padding-top: var(--content-pt-section);
    padding-bottom: var(--page-footer-pb-tablet);
  }

  .mediateka-listing__divider {
    margin-top: var(--tablet-content-l);
  }

  .mediateka-listing__intro {
    margin-top: var(--tablet-content-l);
  }

  .mediateka-listing__grid,
  .mediateka-listing__body {
    margin-top: var(--tablet-content-xl);
  }

  .mediateka-listing__body {
    gap: var(--desktop-content-xl);
  }

  .mediateka-listing__body > section {
    gap: var(--tablet-content-l);
  }

  .mediateka-listing__divider--footer {
    display: block;
    grid-area: divider-footer;
    margin-top: var(--tablet-content-xl);
  }

  .mediateka-listing__pager--header {
    display: block;
    grid-area: pager;
    margin-top: 0;
  }

  .mediateka-listing__pager--footer {
    margin-top: var(--tablet-content-l);
  }

  .mediateka-listing__pager .pagination__list {
    width: auto;
    justify-content: flex-end;
    gap: var(--gap-compact);
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .mediateka-listing {
    padding-top: var(--desktop-content-xl);
    padding-bottom: var(--page-footer-pb-desktop);
  }

  .mediateka-listing__grid,
  .mediateka-listing__body {
    margin-top: var(--repertoire-heading-gap);
  }

  .mediateka-listing__divider--footer {
    margin-top: var(--repertoire-heading-gap);
  }
}

@media (min-width: 769px) {
  .mediateka-listing__intro {
    max-width: var(--content-measure-tablet);
  }
}

@media (min-width: 1025px) {
  .mediateka-listing__intro {
    max-width: var(--content-measure-desktop);
  }
}

/*
 * Mediateka — strona główna sekcji (hub).
 * Spec: docs/specs/mediateka-hub-spec.md
 *
 * Siatka kafli: mediateka-grid.css
 */

.mediateka-hub-main {
  padding-bottom: var(--mobile-content-xl);
}

.mediateka-hub__title {
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.mediateka-hub__flow {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-section-m);
  margin-top: var(--mobile-content-l);
}

.mediateka-hub__section {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
  padding-top: var(--mobile-content-l);
  border-top: var(--section-divider);
}

.mediateka-hub__heading {
  display: flex;
  flex-direction: column;
  gap: var(--tablet-content-l);
}

.mediateka-hub__heading-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--mobile-content-m);
}

.mediateka-hub__section-title {
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.mediateka-hub__link {
  flex-shrink: 0;
  color: var(--text-primary);
  white-space: nowrap;
  text-decoration: none;
}

.mediateka-hub__calendar {
  container-type: inline-size;
  display: grid;
  grid-template-areas:
    "title"
    "calendar"
    "link";
  row-gap: var(--mobile-content-l);
  padding-top: var(--mobile-content-xl);
  border-top: var(--section-divider);
}

.mediateka-hub__calendar-header {
  display: contents;
}

.mediateka-hub__calendar-title {
  grid-area: title;
  text-box: trim-both cap alphabetic;
  font-feature-settings: "lnum" 1, "pnum" 1;
}

.mediateka-hub__calendar .repertoire__calendar {
  grid-area: calendar;
}

.mediateka-hub__calendar-link {
  grid-area: link;
  justify-self: start;
  color: var(--text-primary);
  white-space: nowrap;
  text-decoration: none;
  margin-top: calc(var(--mobile-content-xl) - var(--mobile-content-l));
}

@media (min-width: 769px) { /* --breakpoint-tablet */
  .mediateka-hub-main {
    padding-bottom: var(--tablet-section-s);
  }

  .mediateka-hub__flow {
    gap: var(--desktop-content-xl);
    margin-top: var(--tablet-content-xl);
  }

  .mediateka-hub__section {
    gap: var(--tablet-content-l);
    padding-top: var(--content-pt-section);
  }

  .mediateka-hub__lead {
    max-width: var(--content-measure-tablet);
  }

  .mediateka-hub__calendar {
    display: block;
    padding-top: var(--tablet-section-s);
  }

  .mediateka-hub__calendar-header {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--mobile-content-m);
    margin-bottom: var(--gap-stack);
  }

  .mediateka-hub__calendar-title,
  .mediateka-hub__calendar-link {
    grid-area: auto;
    margin-top: 0;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .mediateka-hub-main {
    padding-bottom: var(--desktop-content-xxl);
  }

  .mediateka-hub__flow {
    gap: var(--desktop-content-xxl);
  }

  .mediateka-hub__lead {
    max-width: var(--content-measure-desktop);
  }

  .mediateka-hub__calendar {
    padding-top: var(--desktop-content-xxl);
  }

  .mediateka-hub__calendar-header {
    margin-bottom: var(--repertoire-heading-gap);
  }
}

/*
 * Mediateka single — video hero (16:9 player in event hero slot).
 */

.event-hero--video .event-hero__frame {
  aspect-ratio: 16 / 9;
  min-height: 0;
  background-color: var(--base-190);
}

.event-hero--video .event-hero__video {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

/*
 * Mediateka single — square hero variant (Album 664×664).
 */

.event-page--hero-square .event-hero--vertical .event-hero__frame {
  min-height: 0;
  aspect-ratio: 1 / 1;
  height: auto;
}

.event-page--hero-square .event-hero--vertical .event-hero__image,
.event-page--hero-square .event-hero--vertical .event-hero__placeholder {
  min-height: 0;
  height: 100%;
}

@media (min-width: 1025px) { /* --breakpoint-desktop */
  .event-page--hero-square .event-masthead__lead {
    min-height: 0;
  }
}

/*
 * Dev-only — zwijany panel transkrypcji pod playerem.
 * Layout only; typografia z .caption / .body-s.
 */

.dev-video-transcript {
  margin-top: var(--mobile-content-s, 0.75rem);
}

.dev-video-transcript__toggle {
  cursor: pointer;
  list-style: none;
  color: inherit;
  opacity: 0.65;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.dev-video-transcript__toggle::-webkit-details-marker {
  display: none;
}

.dev-video-transcript__toggle:hover,
.dev-video-transcript__toggle:focus-visible {
  opacity: 1;
}

.dev-video-transcript__label-hide {
  display: none;
}

.dev-video-transcript[open] > .dev-video-transcript__toggle .dev-video-transcript__label-show {
  display: none;
}

.dev-video-transcript[open] > .dev-video-transcript__toggle .dev-video-transcript__label-hide {
  display: inline;
}

.dev-video-transcript__body {
  margin-top: var(--mobile-content-s, 0.75rem);
  max-height: 24rem;
  overflow: auto;
  border-top: 1px solid var(--base-160, #d8d8d8);
  padding-top: var(--mobile-content-s, 0.75rem);
}

.dev-video-transcript__text {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font: inherit;
}

/*
 * Search page + header search — wyniki wyszukiwania (Figma 98:31696).
 */

.search-page {
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-section-l);
}

.search-page__header {
  margin-bottom: var(--mobile-content-l);
}

.search-page__heading {
  margin: 0;
  /* Dawny rozmiar samej frazy — całe H1 „fraza” — wyniki wyszukiwania */
  font-size: 2rem;
  line-height: 1.05;
  letter-spacing: -0.02em;
}

.search-page__title {
  margin: 0;
}

.search-page__form {
  display: flex;
  gap: 0;
  max-width: 100%;
  margin-bottom: var(--mobile-content-l);
}

.search-page__input {
  flex: 1;
  min-width: 0;
  padding: 0.625rem 1rem;
  border: 1px solid var(--main-off-black);
  border-right: none;
  border-radius: var(--radius-pill) 0 0 var(--radius-pill);
  background: var(--base-mode-background);
  color: var(--text-primary);
}

.search-page__input:focus {
  outline: 2px solid var(--main-off-black);
  outline-offset: 2px;
}

.search-page__submit {
  flex-shrink: 0;
  padding: 0.625rem 1.5rem;
  border: 1px solid var(--main-off-black);
  border-radius: 0 var(--radius-pill) var(--radius-pill) 0;
  background: var(--main-off-black);
  color: var(--base-mode-background);
  cursor: pointer;
}

.search-page__empty {
  color: var(--text-secondary);
}

.search-page__pager {
  padding-top: var(--mobile-content-l);
  border-top: 1px solid var(--main-off-black);
}

.search-page__pager .pagination__list {
  width: 100%;
  justify-content: space-between;
}

.search-page__sections {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Szuflada filaru — nad paskiem tagów i kupką Relevanssi */

.search-filar-drawer {
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-content-xl);
  border-top: 1px solid var(--main-off-black);
}

.search-filar-drawer__title,
.search-tag-banner__title {
  margin: 0 0 var(--mobile-content-l);
}

.search-filar-drawer__list {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

.search-filar-drawer__item {
  min-width: 0;
}

/* Tag banner — tytuł jak szuflada, separator jak kolejne sekcje */

.search-tag-banner {
  padding: var(--mobile-content-l) 0 var(--mobile-content-xl);
  border-top: 1px solid var(--main-off-black);
}

.search-tag-banner__links {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-s);
  margin: 0;
  padding: 0;
  list-style: none;
}

.search-tag-banner__link {
  color: var(--text-primary);
  text-decoration: none;
}

/* Section — ten sam padding-top co szuflada i tagi (linia → tytuł) */

.search-section {
  padding-top: var(--mobile-content-l);
  padding-bottom: var(--mobile-content-xl);
  border-top: 1px solid var(--main-off-black);
}

.search-section__title {
  margin: 0 0 var(--mobile-content-l);
}

.search-section__list {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-l);
}

.search-section__item {
  min-width: 0;
}

.search-section--collapsible.is-collapsed .search-section__item--overflow {
  display: none;
}

/* Mediateka: max 2 rzędy (1/2/3 kol.), reszta za „Pokaż więcej” */

.search-section--mediateka.is-collapsed .mediateka-card:nth-child(n + 3) {
  display: none;
}

.search-section--mediateka.is-collapsed .search-section__show-more-wrap {
  display: none;
}

.search-section--mediateka.is-collapsed:has(.mediateka-card:nth-child(3)) .search-section__show-more-wrap {
  display: flex;
}

@media (min-width: 769px) {
  .search-section--mediateka.is-collapsed .mediateka-card:nth-child(n + 3) {
    display: flex;
  }

  .search-section--mediateka.is-collapsed .mediateka-card:nth-child(n + 5) {
    display: none;
  }

  .search-section--mediateka.is-collapsed:has(.mediateka-card:nth-child(3)) .search-section__show-more-wrap {
    display: none;
  }

  .search-section--mediateka.is-collapsed:has(.mediateka-card:nth-child(5)) .search-section__show-more-wrap {
    display: flex;
  }
}

@media (min-width: 1025px) {
  .search-section--mediateka.is-collapsed .mediateka-card:nth-child(n + 5) {
    display: flex;
  }

  .search-section--mediateka.is-collapsed .mediateka-card:nth-child(n + 7) {
    display: none;
  }

  .search-section--mediateka.is-collapsed:has(.mediateka-card:nth-child(5)) .search-section__show-more-wrap {
    display: none;
  }

  .search-section--mediateka.is-collapsed:has(.mediateka-card:nth-child(7)) .search-section__show-more-wrap {
    display: flex;
  }
}

.search-section__show-more-wrap {
  display: flex;
  justify-content: center;
  margin-top: var(--mobile-content-l);
}

.search-section__all {
  margin: var(--mobile-content-l) 0 0;
}

.search-section--collapsible.is-expanded .search-section__show-more-wrap {
  display: none;
}

/* Shared result */

.search-result__date {
  margin: 0;
}

.search-result__title {
  margin: 0;
}

.search-result__title-link {
  color: inherit;
  text-decoration: none;
}

.search-page .search-result__title-link:hover,
.search-page .search-result__title-link:focus-visible,
.search-page .see-also-event__title-link:hover,
.search-page .see-also-event__title-link:focus-visible {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.12em;
}

.search-result__excerpt {
  margin-top: var(--mobile-content-s);
  color: var(--text-primary);
}

/* Trafienia — tło zamiast podkreślenia (bez kolizji z draw-underline na linku) */

.search-page .search-hit,
.search-page .search-result__excerpt .relevanssi-query-term,
.search-page .search-result__excerpt strong {
  text-decoration: none;
  font-weight: inherit;
  background-color: var(--grey-200);
  padding: 0 0.15em;
  border-radius: 2px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* Fragment wyrazu: bez paddingu, żeby podlewka nie rozcinała słowa. */

.search-page .search-hit--partial {
  padding-inline: 0;
}

/* Event row — reuse see-also spacing */

.search-result--event {
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-s);
}

/* Mediateka horizontal */

.search-result--mediateka {
  display: flex;
  gap: var(--mobile-content-m);
  align-items: flex-start;
}

.search-result__media {
  position: relative;
  flex-shrink: 0;
  width: 7.5rem;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--grey-grey100, #f6f6f6);
  text-decoration: none;
}

.search-result__thumb {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.search-result__thumb--placeholder {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--grey-grey100, #f6f6f6);
}

.search-result__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 2.5rem;
  height: 2.5rem;
  color: var(--base-00);
  pointer-events: none;
}

.search-result__play svg {
  display: block;
  width: 100%;
  height: 100%;
}

.search-result__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--mobile-content-s);
}

.search-result__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--mobile-content-s);
}

.search-result__badge {
  text-transform: uppercase;
}

/* Header search — mobile: ikona /szukaj/; desktop: formularz */

.site-header__search {
  display: flex;
  align-items: center;
}

.site-header__search-link {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--site-header-menu-size-mobile);
  height: var(--site-header-menu-size-mobile);
  border: 1px solid var(--main-off-black);
  border-radius: var(--radius-pill);
  color: var(--main-off-black);
  text-decoration: none;
}

.site-header__search-link svg {
  display: block;
  width: 1rem;
  height: 1rem;
}

.site-header__search-form {
  display: none;
  align-items: center;
  flex: 1;
  max-width: 18rem;
  min-width: 0;
}

.site-header__search-input {
  width: 100%;
  padding: 0.5rem 1rem;
  border: 1px solid var(--main-off-black);
  border-radius: var(--radius-pill);
  background: var(--base-mode-background);
  color: var(--text-primary);
  font: inherit;
}

.site-header__search-input::-moz-placeholder {
  color: var(--text-secondary);
}

.site-header__search-input::placeholder {
  color: var(--text-secondary);
}

.site-header__search-input:focus {
  outline: 2px solid var(--main-off-black);
  outline-offset: 2px;
}

@media (min-width: 769px) {
  .search-page {
    padding-top: var(--tablet-content-l);
    padding-bottom: var(--tablet-section-l);
  }

  .search-page__heading {
    font-size: 2.5rem;
  }

  .search-page__form {
    max-width: 34.375rem;
    margin-bottom: var(--tablet-content-xl);
  }

  .search-filar-drawer,
  .search-tag-banner,
  .search-section {
    padding-top: var(--tablet-content-l);
    padding-bottom: var(--tablet-content-xl);
  }

  .search-page__pager {
    padding-top: var(--tablet-content-l);
  }

  .search-page__pager .pagination__list {
    width: auto;
    justify-content: flex-end;
    gap: var(--gap-compact);
  }

  .search-filar-drawer__list,
  .search-section__list {
    gap: var(--tablet-content-l);
  }

  .search-result__media {
    width: 12.5rem;
  }

  .search-result__play {
    width: 3.25rem;
    height: 3.25rem;
  }

  .site-header__search-link {
    width: var(--site-header-menu-size);
    height: var(--site-header-menu-size);
  }
}

@media (min-width: 1025px) {
  .search-page__heading {
    font-size: 3.75rem;
    line-height: 1.05;
    letter-spacing: -0.075rem;
  }

  .search-filar-drawer,
  .search-tag-banner,
  .search-section {
    padding-bottom: var(--tablet-content-xxl);
  }

  .search-filar-drawer__list,
  .search-section__list {
    gap: var(--tablet-content-xl);
  }

  .site-header__search-link {
    display: none;
  }

  .site-header__search-form {
    display: flex;
    max-width: 20rem;
  }

  .site-header__search-input {
    font-size: 0.875rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .search-page__submit {
    transition: none;
  }
}

/* Dev-only — overlay kolumn gridu w szablonach podglądu (?grid=1) */

/*
 * Grid debug overlay — wizualizacja kolumn 2/6/12 (dev-only).
 * Renderowany wyłącznie w szablonach podglądu przy ?grid=1
 * (markup: .grid-debug > .container > .grid-container > 12 × __col).
 * Liczba widocznych kolumn podąża za breakpointami grid.css.
 * -------------------------------------------------------------------------- */

.grid-debug {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
}

.grid-debug .container,
.grid-debug .grid-container {
  height: 100%;
}

.grid-debug__col {
  height: 100%;
  background: rgba(238, 52, 36, 0.08); /* --red-500 @ 8% */
}

/* Mobile: 2 kolumny */

.grid-debug__col:nth-child(n+3) {
  display: none;
}

@media (min-width: 769px) { /* --breakpoint-tablet — 6 kolumn */
  .grid-debug__col:nth-child(n+3) {
    display: block;
  }

  .grid-debug__col:nth-child(n+7) {
    display: none;
  }
}

@media (min-width: 1025px) { /* --breakpoint-desktop — 12 kolumn */
  .grid-debug__col:nth-child(n+7) {
    display: block;
  }
}

