/*
 * ============================================================================
 * MEGA-MENU "MIASTA" — WARSTWA MOBILNA (2026-09-06)
 * ============================================================================
 *
 * Ładowany PO css/megamenu-desktop.css i zależny od niego w kolejce enqueue.
 *
 * ZASADA NADRZĘDNA TEGO PLIKU: desktop jest zamknięty i nietykalny.
 * css/megamenu-desktop.css pozostaje JEDYNYM źródłem prawdy dla ≥992px i nie
 * został w ogóle zmieniony. Wszystko tutaj żyje w `@media (max-width:991px)`
 * — CAŁY plik, bez wyjątku.
 *
 * OD 2026-09-08 (optymalizacja Core Web Vitals): ten arkusz jest kolejkowany
 * z atrybutem `media="(max-width: 991px)"` (piąty parametr wp_enqueue_style()
 * w mobilet_pl_enqueue_megamenu_assets(), inc/megamenu.php) — przeglądarka
 * nadal go pobiera, ale NIE blokuje na nim renderu strony, gdy viewport nie
 * pasuje (czyli na desktopie). WARUNEK KONIECZNY tego mechanizmu: plik NIE
 * MOŻE zawierać żadnej reguły spoza `@media (max-width:991px)` — na desktopie
 * przeglądarka może w ogóle nie wziąć go pod uwagę przy pierwszym renderze.
 * Z tego powodu trzy reguły niegdyś tu bazowe (poza media query), neutralizujące
 * markup mobilny na desktopie — `.mega-menu__toolbar{display:contents}`,
 * `.mega-menu__filters{display:none}`, `.mega-menu__char-hint{display:none}` —
 * zostały PRZENIESIONE do css/megamenu-desktop.css (sekcja "REGUŁY BAZOWE —
 * neutralizacja markupu mobilnego", ładowana bezwarunkowo, bez atrybutu
 * media). Każda PRZYSZŁA reguła dodana do TEGO pliku musi trafić do wnętrza
 * `@media (max-width:991px)`; jeśli coś ma obowiązywać także na desktopie,
 * miejsce na to jest w megamenu-desktop.css, nie tutaj.
 *
 * ---------------------------------------------------------------------------
 * PUŁAPKA `.menu-mobile #main-menu a`/`li` — DO PILNOWANIA PRZY KAŻDEJ
 * KOLEJNEJ ZMIANIE TUTAJ, KLUCZOWE PRZY PRZYSZŁEJ MIGRACJI NA PRODUKCJĘ
 * ---------------------------------------------------------------------------
 * `.menu-mobile #main-menu a` I `.menu-mobile #main-menu li` (obie w
 * nowymobilet.css, `@media(max-width:991px)`) to PRODUKCYJNE reguły (ID
 * `#main-menu` w selektorze, specyficzność (1,1,1)) — pierwsza ustawia
 * `font-size:1.2rem`+`padding:.25rem 2rem .25rem 0` na KAŻDYM `<a>`
 * wewnątrz `#main-menu`, druga `padding:.25rem 0` na KAŻDYM `<li>` — a cały
 * ten panel JEST potomkiem `#main-menu`. Żaden klasowy selektor w TYM pliku
 * (bez względu na liczbę klas) nie przebije ich bez `!important` — dokładnie
 * ten sam, wielokrotnie już udokumentowany w CLAUDE.md pitfall co
 * desktopowe `#main-menu a` (megamenu-desktop.css), tylko w mobilnej odsłonie
 * tych reguł, i nie ograniczony do samych linków. Znalezione i naprawione
 * 2026-09-07, na żywym podglądzie, w DWÓCH rundach: (1) `<a>`-owa wersja —
 * computed style pokazał `font-size:19.1875px` zamiast zadeklarowanego
 * `.875rem` na przycisku "Zobacz wszystkie miasta"; naprawione we
 * WSZYSTKICH trzech miejscach, gdzie `<a>` dostaje własny font-size/
 * padding/line-height (`.mega-menu__all-link.button`,
 * `.mega-menu__column-list a`, `.mega-menu__result`). (2) `<li>`-owa wersja
 * — zgłoszony "kilkupikselowy pasek szary nad panelem, znikający przy
 * scrollu" — `.25rem` górnego paddingu z tej reguły na `.mega-menu__inner-item`
 * (jedyny `<li>` w tym panelu, opakowujący całą treść) odsłaniało szare tło
 * `.sub-menu` nad białym sticky toolbarem; naprawione tam jednym
 * `padding:0!important`, patrz jej reguła niżej. **PRZY KAŻDYM KOLEJNYM
 * `<a>`/`<li>` dodawanym do tego panelu z własnym font-size/padding/
 * line-height/margin: dodać `!important` OD RAZU, nie czekać na zgłoszenie
 * buga na żywo — i sprawdzić obie reguły (`a` ORAZ `li`), nie tylko jedną.**
 * Obie reguły są PRODUKCYJNE — i od migracji 2026-09-07 ten plik też jest
 * produkcyjny, więc pułapka nie jest już hipotetyczna: `#main-menu` i
 * `.menu-mobile` to na żywo dokładnie te same selektory co na stagingu.
 *
 * ---------------------------------------------------------------------------
 * CO BYŁO NIE TAK W WERSJI MOBILNEJ PRZED TĄ WARSTWĄ
 * ---------------------------------------------------------------------------
 * `.mega-menu--test .mega-menu__columns { grid-template-columns: repeat(3,1fr) }`
 * w css/megamenu-desktop.css jest zadeklarowane POZA jakimkolwiek media query,
 * więc telefon próbował zmieścić trzy kolumny miast w szerokości ekranu.
 * Panel nie miał też żadnego innego przystosowania: pole wyszukiwania było
 * pierwszym elementem PRZEWIJANEJ listy ~230 pozycji i po kilku ekranach
 * scrolla przestawało istnieć.
 */

/* ==========================================================================
   MOBILE ≤991px — CAŁA zawartość pliku, bez wyjątku (patrz komentarz wyżej)
   ========================================================================== */

@media (max-width: 991px) {

	/* Panel przewija się jako całość. GÓRNY padding `.sub-menu` zostaje `0`
	   (przeniesiony na elementy wewnętrzne nie jest tu potrzebny — górnej
	   krawędzi treści i tak nie ma czym "podbić" — kluczowe jest, żeby pasek
	   sticky mógł przykleić się do samej krawędzi scrollportu, bez prześwitu
	   treści nad sobą). DOLNY padding, SUPERSEDED 2026-09-07 — patrz
	   obszerny komentarz przy tej regule niżej — wrócił NA `.sub-menu` samo
	   (nie na elementy wewnętrzne), bo to jedyne miejsce gwarantujące
	   przestrzeń jako naprawdę ostatnią rzecz przed końcem scrolla. */
	/*
	 * POPRAWKA 2026-09-07 (zgłoszona ponownie jako "nadal dolna krawędź
	 * listy jest przycinana" — poprzednia próba, `padding-bottom` na
	 * WEWNĘTRZNYCH `.mega-menu__columns`/`.mega-menu__search-results`,
	 * najwyraźniej niewystarczająca) — dolny odstęp przeniesiony na TEN
	 * kontener, czyli element, na którym FAKTYCZNIE dzieje się scroll
	 * (`overflow-y:auto` z bazowej `.sub-menu`, nowymobilet.css) — to
	 * jedyne miejsce, gdzie dodatkowa przestrzeń jest GWARANTOWANA jako
	 * ostatnia rzecz przed naturalnym końcem scrollowalnego obszaru,
	 * niezależnie od tego, która wewnętrzna treść (kolumny czy wyniki) jest
	 * akurat widoczna — poprzednia poprawka na dwóch OSOBNYCH wewnętrznych
	 * kontenerach była bardziej pośrednia. `padding-top`/`-right`/`-left`
	 * ZOSTAJĄ `0` (bez zmian, wciąż potrzebne, żeby sticky pasek mógł
	 * przykleić się bez prześwitu u góry — patrz komentarz niżej), tylko
	 * `padding-bottom` dostaje realną wartość, tą samą technikę
	 * `env(safe-area-inset-bottom)` co już wcześniej dodana (bezskutecznie
	 * samodzielnie) na wewnętrznych kontenerach.
	 */
	.sub-menu.mega-menu--test {
		padding: 0 0 calc(4rem + env(safe-area-inset-bottom, 0)) 0 !important;
		overscroll-behavior: contain;
	}

	/*
	 * `padding:0 !important` (2026-09-07) — NAPRAWA prawdziwego buga
	 * zgłoszonego na żywym podglądzie: "kilkupikselowy pasek szary nad
	 * panelem wyszukiwania, znikający przy scrollu, gdy sticky pasek
	 * przykleja się do nagłówka". Przyczyna: TA SAMA rodzina bugów co przy
	 * `#main-menu a` (patrz obszerny komentarz na górze pliku) — tym razem
	 * `.menu-mobile #main-menu li` (nowymobilet.css, `@media(max-width:991px)`,
	 * specyficzność ID (1,1,1)) ustawia `padding:.25rem 0` na KAŻDYM `<li>`
	 * wewnątrz `#main-menu`, w tym na tym `<li>` (jedyny bezpośredni potomek
	 * `<ul class="sub-menu">`, opakowujący CAŁĄ treść panelu — toolbar,
	 * kolumny, wyniki). Ten `<li>` nie ma własnego tła (przezroczysty), więc
	 * `.25rem` górnego paddingu odsłaniało szare tło `.sub-menu`
	 * (`background-color:var(--light)`, baza mobilnego drill-downu) NAD
	 * białym `.mega-menu__toolbar` (`position:sticky;top:0`) — stąd pasek.
	 * Ten sam `.25rem` u góry to też dokładna przyczyna efektu przy scrollu:
	 * padding jest częścią NORMALNEGO PRZEPŁYWU (nie sticky), więc scrolluje
	 * się razem z resztą treści — po przescrollowaniu go sticky toolbar
	 * dociera do `top:0` scrollportu i dopiero wtedy faktycznie przykleja
	 * się bez odstępu, co odczuwalne jest jako "panel przesuwa się w górę".
	 * `!important` — jedyny sposób na przebicie selektora z ID, ten sam
	 * wzorzec co reszta tego pliku.
	 */
	.mega-menu--test .mega-menu__inner-item {
		list-style: none;
		padding: 0 !important;
	}

	.mega-menu--test .wrapper.mega-menu__grid {
		display: block;
		max-width: none;
		padding: 0;
		min-height: 0;
	}

	/* --- Pasek narzędzi: wyszukiwarka + chipy, przyklejony do góry -------
	   Sticky jest na WSPÓLNYM kontenerze, nie na dwóch osobnych elementach —
	   te miałyby oba `top:0` i nachodziłyby na siebie, a nadanie chipom
	   `top` równego wysokości paska wyżej wymagałoby mierzenia jej JS-em
	   (czego ten projekt świadomie unika). */
	/*
	 * `box-shadow` zamiast `border-bottom` (2026-09-07, na życzenie) — te
	 * same dwie wartości/warstwy co `#header` w stanie spoczynku/białym
	 * (nowymobilet.css, `#header{box-shadow:...}`) — spójny język "krawędzi"
	 * między nagłówkiem strony a przyklejonym paskiem wyszukiwania w panelu,
	 * zamiast dwóch różnych wizualnie separatorów (twarda linia vs. cień).
	 */
	.mega-menu--test .mega-menu__toolbar {
		display: block;
		position: sticky;
		top: 0;
		z-index: 3;
		background-color: var(--white);
		box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 3px 12px rgba(0, 0, 0, 0.06);
	}

	.mega-menu--test .mega-menu__top {
		padding: 1rem 1rem .75rem;
		border-bottom: 0;
	}

	/* Wiersz nagłówka rozkłada się w pionie: najpierw wyszukiwarka (główne
	   zadanie przy 230 miastach), pod nią link wyjścia. Przycisk pobierania
	   aplikacji jest na mobile ukryty — w wąskim pasku konkurowałby
	   z wyszukiwarką, a jest dostępny z menu głównego i ze stopki. */
	/* `gap` ŚWIADOMIE nie jest tu użyty (mimo że wydawałby się naturalny dla
	   flexboksa) — to WŁASNOŚĆ KONTENERA, rezerwowana między torami
	   niezależnie od rozmiaru elementów w nich; ten sam mechanizm i ta sama
	   pułapka, którą ten projekt już raz napotkał przy CSS Grid w
	   `.mega-menu__top-row` na desktopie (patrz obszerny komentarz w
	   css/megamenu-desktop.css: "gap w CSS Grid jest WŁASNOŚCIĄ KONTENERA
	   między TORAMI, nie marginesem elementu"). Gdyby zostać przy `gap`,
	   kolaps przycisku (`.is-searching` niżej) zostawiałby martwy odstęp
	   `.75rem`, którego żadna animacja marginesu by nie cofnęła. Odstęp
	   przeniesiony w całości na `margin-bottom` samego przycisku — jedyny
	   element, który go potrzebuje (bezpośrednio nad polem wyszukiwania). */
	.mega-menu--test .mega-menu__top-row {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding-bottom: 0;
		border-bottom: 0;
	}

	/* Selektor musi powtórzyć CAŁY łańcuch z desktopowej reguły
	   `.mega-menu__top-row .button.mega-menu__download-btn` (0,3,0 + !important,
	   css/megamenu-desktop.css) i dołożyć jeszcze jedną klasę — inaczej krótsze
	   `.mega-menu--test .mega-menu__download-btn` (0,2,0) przegrywa mimo
	   własnego !important i przycisk zostaje widoczny (zmierzone: display:flex,
	   pełna szerokość, w pasku nad chipami). */
	.mega-menu--test .mega-menu__top-row .button.mega-menu__download-btn {
		display: none !important;
	}

	.mega-menu--test .mega-menu__search {
		width: 100%;
		max-width: none;
		margin-right: 0;
		justify-self: stretch;
	}

	/* 44px wysokości = wygodny cel dotykowy. font-size 1rem (16px) to twarde
	   minimum na iOS — mniejszy powoduje automatyczny zoom viewportu przy
	   fokusie na polu. */
	.mega-menu--test .mega-menu__search-input {
		width: 100%;
		min-width: 0;
		height: 2.75rem;
		font-size: 1rem;
	}

	.mega-menu--test .mega-menu__search-clear {
		width: 2.75rem;
		height: 2.75rem;
	}

	/* Link "Zobacz wszystkie miasta" na pełną szerokość, w strefie kciuka
	   NAD polem wyszukiwania (kolejność w DOM: przycisk, potem search —
	   patrz inc/megamenu.php).
	   ------------------------------------------------------------------
	   Trzy naprawy zgłoszone na żywym podglądzie (2026-09-06), wszystkie
	   z tego samego źródła: `.mega-menu__top-row .mega-menu__all-link.button`
	   w css/megamenu-desktop.css jest regułą GLOBALNĄ — leży POZA którymkolwiek
	   z czterech bloków `@media(min-width:992px)` tego pliku (zweryfikowane
	   narzędziowo, licznikiem głębokości nawiasów), więc jej `color:var(--black)`
	   i `font-size:1rem` (dobrane pod desktop, gdzie panel otwiera się
	   hoverem i osobny wyjątek `#header:has(.js-mega-menu-miasta:hover)...`
	   wymusza biały tekst) DOCIERAJĄ też na mobile, gdzie ten wyjątek
	   nigdy się nie uruchamia (panel otwiera się przez `.dropdown-toggle`,
	   nie przez `:hover`) — stąd czarny tekst na niebieskim tle i
	   niespójny rozmiar czcionki względem chipów obok.
	   1) `color:white` + `font-size:.875rem` — dopasowane do
	      `.mm-chip[aria-pressed="true"]` (też niebieskie tło, biały tekst,
	      ten sam rozmiar) — jeden język typograficzny dla obu "przycisków"
	      widocznych w tym samym pasku.
	   2) `height:2.75rem` — WYLICZONE tak, by dokładnie odpowiadało
	      `.mega-menu__search-input` (patrz wyżej, też `2.75rem`): oba
	      elementy mają `box-sizing:border-box` (odziedziczone/ustawione już
	      wcześniej), więc przy równym `height` ich EFEKTYWNA, renderowana
	      wysokość jest identyczna co do piksela niezależnie od różnic w
      	      paddingu/bordery między nimi — nie trzeba przeliczać niczego
	      ręcznie, `border-box` robi to za nas. Bez tej reguły przycisk
	      dziedziczył desktopowe `--mm-control-height` (`calc(2.5rem + 2px)`
	      = 42px), o 2px niższe niż 44px search-inputu — różnica ledwie
	      zauważalna, ale niespójna.
	   ------------------------------------------------------------------
	   Kolaps w trybie wyszukiwania — WYSOKOŚCIĄ, nie szerokością. Desktopowy
	   `.is-searching` (css/megamenu-desktop.css) zeruje `max-width`/`margin-right`
	   /padding i border LEWY-PRAWY, bo tam przycisk stoi OBOK search bara w
	   jednym wierszu grida. Na mobile stoi NAD nim w kolumnie — zerowanie
	   samej szerokości (co i tak już się dzieje, ta reguła jest globalna)
	   zostawiłoby niewidoczny, ale wciąż zajmujący pełną wysokość prostokąt,
	   więc pole wyszukiwania nigdy by się nie przesunęło w górę. Stąd
	   DRUGI, niezależny kolaps — GÓRA-DÓŁ zamiast LEWO-PRAWO — dokładający
	   się do tego, co global rule już robi, nie zastępujący go.
	   `max-height` (nie `height`) jest tym, co się animuje: przy
	   `box-sizing:border-box` sam padding+border nie pozwoliłyby zejść
	   poniżej ich sumy, gdyby zmieniać `height` wprost — `max-height` jako
	   PUŁAP nie ma tego ograniczenia i przy starcie ustawiony dokładnie na
	   `2.75rem` (czyli na już zadaną wysokość) nie przycina niczego w
	   spoczynku. `transition` zdefiniowany na regule SPOCZYNKOWEJ, nie
	   tylko na `.is-searching` — inaczej wejście w tryb wyszukiwania by się
	   animowało, a wyjście skakałoby bez animacji (ten sam, już
	   udokumentowany błąd, jakiego unika desktopowa wersja tego mechanizmu). */
	/*
	 * PRAWDZIWY BUG znaleziony na żywym podglądzie (2026-09-07, DevTools na
	 * /tora-tora-tora, urządzenie mobilne) — zgłoszony jako "coś tu nie gra"
	 * przy sprawdzaniu font-size tego przycisku. Computed style pokazał
	 * `font-size: 19.1875px` (≈1.2rem), NIE `.875rem` (14px) zadeklarowane
	 * niżej — a padding też nie ten, co w kodzie. **Przyczyna: DOKŁADNIE ten
	 * sam, wielokrotnie już w tym projekcie udokumentowany pitfall
	 * specyficzności ID>klasy (patrz `#main-menu a` w CLAUDE.md dla
	 * desktopu), tylko w wersji MOBILNEJ** — `.menu-mobile #main-menu a`
	 * (nowymobilet.css, `@media(max-width:991px)`) ma specyficzność (1,1,1)
	 * [1×ID `#main-menu` + 1×klasa `.menu-mobile` + typ `a`] i ustawia
	 * WPROST `font-size:1.2rem` + `padding:.25rem 2rem .25rem 0` na KAŻDYM
	 * `<a>` wewnątrz `#main-menu` — czyli też na tym linku. Ta reguła (0,3,0,
	 * same klasy) przegrywa z ID niezależnie od liczby klas — `font-size`
	 * WYGRYWAŁ od nowymobilet.css, a `padding` (shorthand, 4 strony naraz)
	 * kasował NIE TYLKO moje `padding-top`/`-bottom` tutaj, ale też
	 * odziedziczone z desktopowej bazy `padding-left`/`-right:1.5rem`
	 * (megamenu-desktop.css) — realny padding renderował się jako
	 * `.25rem 2rem .25rem 0`, nie `.75rem 1.5rem` jak zamierzono.
	 * **Naprawa: `!important`** — ten sam, świadomy wzorzec co przy analogicznym
	 * desktopowym bugu (`#main-menu a` w megamenu-desktop.css) — oraz PEŁNY,
	 * jawny `padding` (4 strony, nie tylko top/bottom) w TEJ regule, żeby nie
	 * polegać na dziedziczonych z desktopu wartościach lewo/prawo, które
	 * ta sama reguła też potrafi po cichu nadpisać.
	 */
	.mega-menu--test .mega-menu__all-link.button {
		width: 100%;
		max-width: none;
		margin-right: 0;
		margin-bottom: .75rem;
		text-align: center;
		height: 2.75rem;
		color: var(--white);
		font-size: .875rem !important;
		padding: .75rem 1.5rem !important;
		border-top-width: 1px;
		border-bottom-width: 1px;
		max-height: 2.75rem;
		overflow: hidden;
		transition: max-height .25s ease-in-out, margin-bottom .25s ease-in-out,
			padding-top .25s ease-in-out, padding-bottom .25s ease-in-out,
			border-top-width .25s ease-in-out, border-bottom-width .25s ease-in-out,
			opacity .2s ease-in-out;
	}

	/*
	 * PRAWDZIWY BUG (2026-09-07, zgłoszony na żywym podglądzie) — tekst
	 * przycisku czerniał na hover, mimo `color:var(--white)` w regule
	 * spoczynkowej wyżej. Przyczyna: SITEWIDE `a.button:hover { color:
	 * initial !important; ... }` (`nowymobilet.css`,
	 * `@media(max-width:420px)`) — generyczna reguła (dowolny `<a
	 * class="button">`, nie coś specyficznego dla mega-menu), trafiająca
	 * TEŻ ten link (ma klasę `.button`). `color:initial` cofa kolor do
	 * przeglądarkowej wartości domyślnej (czarny), a `!important` bije
	 * niż-`!important` `color:var(--white)` z bazowej reguły wyżej
	 * niezależnie od specyficzności. Naprawa: własny `!important` o wyższej
	 * specyficzności (4 klasy/pseudoklasy vs. 2 klasy+typ w regule-winowajcy)
	 * — celowo TYLKO tutaj, nie modyfikacja sitewide reguły w
	 * `nowymobilet.css` (nieznany, potencjalnie szeroki wpływ na inne
	 * przyciski `<a class="button">` w serwisie poza tym panelem).
	 */
	.mega-menu--test .mega-menu__all-link.button:hover {
		color: var(--white) !important;
	}

	.mega-menu--test.is-searching .mega-menu__top-row .mega-menu__all-link.button {
		max-height: 0;
		margin-bottom: 0;
		/*
		 * !important (2026-09-07) — musi przebić `!important` na bazowej
		 * regule wyżej (ta sama para: kolaps działa TYLKO na właściwościach
		 * wpływających na WYSOKOŚĆ — top/bottom, patrz jej komentarz —
		 * left/right (1.5rem) świadomie NIETKNIĘTE, dziedziczą się z bazy).
		 * Wygrywa specyficznością nad bazową regułą (więcej klas w
		 * selektorze), więc nie potrzebuje nic ponad to.
		 */
		padding-top: 0 !important;
		padding-bottom: 0 !important;
		border-top-width: 0;
		border-bottom-width: 0;
	}

	/* --- Chipy filtrujące --------------------------------------------- */

	.mega-menu--test .mega-menu__filters {
		display: flex;
		gap: .5rem;
		padding: 0 1rem .75rem;
		overflow-x: auto;
		scrollbar-width: none;
	}

	.mega-menu--test .mega-menu__filters::-webkit-scrollbar {
		display: none;
	}

	.mega-menu--test .mm-chip {
		flex: 0 0 auto;
		min-height: 2.25rem;
		padding: 0 .875rem;
		border: 1px solid var(--lightgray);
		border-radius: 1.125rem;
		background-color: var(--white);
		color: var(--black);
		font-size: .875rem;
		font-weight: 500;
		line-height: 1;
		cursor: pointer;
	}

	.mega-menu--test .mm-chip[aria-pressed="true"] {
		background-color: var(--blue);
		border-color: var(--blue);
		color: var(--white);
	}

	.mega-menu--test .mm-chip:focus-visible {
		outline: 2px solid var(--darkblue);
		outline-offset: 2px;
	}

	/* Chipy tracą sens, gdy trwa wyszukiwanie (filtrują listę miast, a lista
	   miast jest wtedy i tak zastąpiona wynikami) — znikają, a w ich miejscu
	   (ten sam padding co `.mega-menu__filters` wyżej, żeby nic nie
	   "skakało" pionowo) pojawia się `.mega-menu__char-hint`. */
	.mega-menu--test.is-searching .mega-menu__filters {
		display: none;
	}

	/* `:not(:empty)` zamiast osobnego atrybutu/klasy widoczności —
	   js/megamenu-search.js tylko wypełnia/czyści `textContent`
	   ("Wpisz jeszcze N liter…" poniżej progu 3 znaków, `''` od progu w
	   górę), a pusty element sam znika. Jeden mniejszy stan do
	   zsynchronizowania niż `hidden`+treść osobno. */
	.mega-menu--test.is-searching .mega-menu__char-hint:not(:empty) {
		display: block;
		margin: 0;
		padding: 0 1rem .75rem;
		font-size: .8125rem;
		color: var(--gray);
	}

	/* --- Treść: trzy kolumny stają się trzema sekcjami jedna pod drugą --- */

	/*
	 * `padding-bottom` SUPERSEDED 2026-09-07 (druga runda) — pierwsza próba
	 * (`3rem`+safe-area TUTAJ) okazała się niewystarczająca ("nadal dolna
	 * krawędź listy jest przycinana"). Główny, gwarantowany "oddech" na
	 * końcu scrolla przeniesiony na `.sub-menu.mega-menu--test` (realny
	 * scrollujący kontener, patrz jej reguła wyżej w pliku) — TU zostaje
	 * skromne `2rem`, czysto kosmetyczny odstęp między treścią a kontenerem
	 * nadrzędnym, nie jedyna linia obrony przed przycinaniem.
	 */
	.mega-menu--test .mega-menu__columns {
		display: block;
		overflow-y: visible;
		padding: 1rem 1rem 2rem;
		margin: 0;
	}

	/* Reguła autorska ZAWSZE bije regułę przeglądarki [hidden]{display:none}
	   (różne originy kaskady), więc bez tego jawnego wyjątku atrybut `hidden`
	   nie ukryłby kolumn — element zostawałby w layoucie. */
	.mega-menu--test .mega-menu__columns[hidden],
	.mega-menu--test .mega-menu__column[hidden],
	.mega-menu--test .mega-menu__search-results[hidden] {
		display: none;
	}

	/*
	 * PRAWDZIWY BUG (2026-09-07, zgłoszony: "lista odfiltrowana wg 'Parkingi'
	 * i 'Nowości' ma zbędny, dodatkowy odstęp nad tytułem kategorii") —
	 * selektor `+` (adjacent sibling) dopasowuje na podstawie STRUKTURY DOM,
	 * NIE widoczności — `.mega-menu__column` odfiltrowana atrybutem `hidden`
	 * (patrz js/megamenu-mobile.js) WCIĄŻ liczy się jako "poprzedni element
	 * .mega-menu__column" dla kolejnej kolumny w DOM, mimo że jest
	 * `display:none`. Efekt: przy filtrze pokazującym WYŁĄCZNIE "Parkingi"
	 * (kolumna 2) lub "Nowe" (kolumna 3), ta jedna widoczna kolumna nadal
	 * dostawała `margin-top:1.75rem`, bo w DOM wciąż ma przed sobą (ukrytą)
	 * kolumnę "Bilety"/"Parkingi" — osierocony odstęp, wiszący nad tytułem
	 * bez żadnej widocznej sekcji nad nim, którą miałby oddzielać.
	 * Naprawa: `:not([hidden])` po OBU stronach selektora — margines
	 * pojawia się teraz WYŁĄCZNIE między dwiema FAKTYCZNIE widocznymi z rzędu
	 * kolumnami (czyli w stanie "Wszystko", między 1↔2 i 2↔3 — bez zmian),
	 * nigdy gdy poprzedzająca kolumna jest ukryta.
	 */
	.mega-menu--test .mega-menu__column:not([hidden])+.mega-menu__column:not([hidden]) {
		margin-top: 1.75rem;
	}

	.mega-menu--test .mega-menu__column-icon svg {
		width: 1.5rem;
		height: 1.5rem;
	}

	/* Cały wiersz miasta jest jednym celem dotykowym o wygodnej wysokości,
	   z separatorem — inaczej ~230 pozycji zlewa się w ścianę tekstu.
	   `padding:0!important` (2026-09-07) — ten sam `.menu-mobile #main-menu li`
	   pitfall co przy `.mega-menu__inner-item` (patrz obszerny komentarz na
	   górze pliku): bez tego `.25rem` górnego/dolnego paddingu z tamtej
	   reguły dokładałoby się do `min-height:2.75rem`/`padding:.75rem .25rem`
	   już ustawionych na `<a>` w środku (niżej), rozciągając wiersz ponad
	   zamierzoną wysokość i przesuwając ten border-bottom niżej, niż
	   wyznacza sama zawartość linku. */
	/*
	 * `border-bottom` na `var(--white)` (2026-09-07, na życzenie) — SUPERSEDED
	 * `var(--lightgray)`. Separator jako biała linia (nie szara) — widoczna
	 * jako subtelne rozdzielenie na (jaśniejszym niż biel) tle listy, zamiast
	 * jako klasyczna szara kreska.
	 */
	.mega-menu--test .mega-menu__column-list li {
		border-bottom: 1px solid var(--white);
		padding: 0 !important;
	}

	/*
	 * !important na font-size/line-height/padding (2026-09-07) — TEN SAM bug
	 * co przy `.mega-menu__all-link.button` wyżej (patrz jej obszerny
	 * komentarz po pełne wyjaśnienie): `.menu-mobile #main-menu a`
	 * (nowymobilet.css, specyficzność ID (1,1,1)) trafia KAŻDY `<a>`
	 * wewnątrz `#main-menu`, w tym linki miast w kolumnach — bez
	 * `!important` renderowałyby się z jego `font-size:1.2rem`/
	 * `padding:.25rem 2rem .25rem 0`, nie z wartościami zadeklarowanymi tutaj.
	 *
	 * WYSOKOŚĆ 45px + separator w OPTYCZNYM ŚRODKU (2026-09-07, na życzenie)
	 * — `min-height:2.75rem`(44px)+`padding:.75rem .25rem` (SUPERSEDED)
	 * zastąpione jawnym `height:45px` + `display:flex!important;
	 * align-items:center` (zamiast `display:block!important`). Powód zmiany
	 * mechanizmu, nie tylko wartości: `min-height` to PODŁOGA, nie stała —
	 * rzeczywista wysokość wynikała z sumy paddingu i wysokości linii tekstu
	 * (`line-height:1.3` × `font-size:1rem`), która mogła nieznacznie
	 * PRZEKROCZYĆ 44px zależnie od metryk fontu — nie dawało to gwarancji
	 * "dokładnie 45px". Jawny `height` eliminuje tę niepewność. `align-items:
	 * center` (flex) centruje tekst PIONOWO w tej stałej wysokości —
	 * ponieważ `<li>` sąsiadujące wiersze stykają się bez odstępu (border
	 * leży dokładnie na wspólnej krawędzi dwóch 45px boksów), tekst
	 * wycentrowany w KAŻDYM z nich jest automatycznie równoodległy od
	 * separatora nad i pod sobą — to WŁAŚNIE definicja "separator w
	 * optycznym środku pomiędzy dwoma elementami", osiągnięta konstrukcyjnie
	 * (przez centrowanie), nie przez ręczne dobieranie paddingu na oko.
	 * Padding poziomy (`.25rem`) zostaje — tekst wciąż odsunięty od lewej/
	 * prawej krawędzi wiersza.
	 */
	.mega-menu--test .mega-menu__column-list a {
		display: flex !important;
		align-items: center;
		height: 45px;
		padding: 0 .25rem !important;
		font-size: 1rem !important;
		line-height: 1.3 !important;
	}

	/* --- Wyniki wyszukiwania ------------------------------------------- */

	/*
	 * `padding-bottom` SUPERSEDED 2026-09-07 (druga runda) — ta sama zmiana
	 * i to samo uzasadnienie co przy `.mega-menu__columns` wyżej: skromne
	 * `2rem`, główny "oddech" na końcu scrolla przeniesiony na
	 * `.sub-menu.mega-menu--test`.
	 */
	.mega-menu--test .mega-menu__search-results {
		padding: 1rem 1rem 2rem;
		overflow-y: visible;
		margin: 0;
	}

	/*
	 * !important na padding (2026-09-07) — TEN SAM bug co wyżej: karta wyniku
	 * to też `<a>` wewnątrz `#main-menu`, więc `.menu-mobile #main-menu a`
	 * (nowymobilet.css) nadpisywałaby ten padding swoim `.25rem 2rem .25rem 0`
	 * bez tego. Tekst w środku (`.mega-menu__result-title`/`-subtitle`) ma
	 * WŁASNY font-size na `<span>`-ach (megamenu-desktop.css), więc font-size
	 * `<a>` z tamtej reguły i tak by go nie dotknął — jedynie padding
	 * kontenera wymagał tej naprawy.
	 */
	.mega-menu--test .mega-menu__result {
		padding: .625rem .75rem !important;
	}

	/* --- Karty "Nowości i zapowiedzi" ----------------------------------- */

	/*
	 * PRAWDZIWY BUG (2026-09-07, zgłoszony: "między miniaturką a górną
	 * krawędzią karty jest mały odstęp") — TEN SAM `.menu-mobile #main-menu a`
	 * pitfall co przy pozostałych `<a>` w tym panelu (patrz obszerny
	 * komentarz przy `.mega-menu__all-link.button` wyżej): karta
	 * "Nowości" (`<a class="mega-menu__news-card">`) też jest `<a>` wewnątrz
	 * `#main-menu`, więc `.menu-mobile #main-menu a{padding:.25rem 2rem
	 * .25rem 0}` (nowymobilet.css, specyficzność ID) nadpisywała desktopowe
	 * `padding:0` (megamenu-desktop.css, bez `!important`, samymi klasami nie
	 * do przebicia). Efekt: `.25rem` górnego paddingu zmniejszało dostępną
	 * wysokość WEWNĄTRZ karty o tyle samo, a miniatura (własny, sztywny
	 * `height:100px` na `<img>`, nie skurczony przez to zmniejszenie)
	 * zaczynała się dopiero PO tym pasku — stąd odstęp nad miniaturą (i,
	 * symetrycznie, jej dolna krawędź wystawała 100px+.25rem poza kartę,
	 * przycinana przez `overflow:hidden`, niewidoczna, ale też błędna).
	 * `!important` naprawia to tak samo jak wszędzie indziej w tym pliku.
	 *
	 * ROZMIAR MINIATURY 100px→65px (na życzenie: "zyskasz więcej miejsca po
	 * prawej stronie" — mniejsza miniatura = więcej szerokości na tekst
	 * obok, karta ma stałą całkowitą szerokość kolumny).
	 *
	 * WYSOKOŚĆ KARTY 100px→65px, SUPERSEDED 2026-09-07 (druga runda, na
	 * życzenie: "karta okazuje się za wysoka... dostosujesz jej wysokość do
	 * miniatury?") — poprzednia wersja zostawiała desktopowe 100px i
	 * centrowała mniejszą miniaturę w środku (`align-self:center` +
	 * zaokrąglenie na wszystkich 4 rogach, bo miniatura nie dotykała już
	 * góry/dołu) — na życzenie ZAMIAST tego karta kurczy się DO miniatury:
	 * `height:65px` (nadpisuje desktopowe 100px, samą klasą, bez
	 * `!important` — wystarcza, bo nic z rodziny `#main-menu` nie ustawia
	 * `height`, tylko `padding`/`font-size`/`display`, patrz wyżej). Efekt
	 * uboczny, ŚWIADOMY: `align-items:stretch` (desktopowa baza) znów
	 * poprawnie rozciąga miniaturę na PEŁNĄ wysokość karty (65px = 65px,
	 * zgodne 1:1) — `align-self:center` z poprzedniej wersji USUNIĘTY jako
	 * zbędny, zaokrąglenie WRÓCIŁO do "tylko lewe rogi" (SUPERSEDED
	 * "wszystkie 4 rogi" z poprzedniej wersji) — miniatura znów styka się z
	 * górną I dolną krawędzią karty, więc oryginalny, desktopowy wzorzec
	 * jednostronnego zaokrąglenia znów ma sens.
	 *
	 * RYZYKO, świadomie zaakceptowane: `.mega-menu__news-card-body` (padding
	 * `.5rem .85rem`, do 3 wierszy tekstu — nazwa/etykiety/termin
	 * uruchomienia) mogła mieścić 3 linie w 100px; w 65px (mniej więcej
	 * -35px wysokości) trzeci wiersz ("Od {data}...", tylko dla miast z
	 * kategorią plan-*) może zacząć się ucinać przez `overflow:hidden` na
	 * karcie. Nie skracane teraz prewencyjnie (poza zakresem tego zlecenia,
	 * dotyczy tylko podzbioru miast) — do sprawdzenia na żywo, zgłosić
	 * osobno, jeśli okaże się realnym problemem.
	 */
	.mega-menu--test .mega-menu__news-card {
		padding: 0 !important;
		height: 65px;
	}

	.mega-menu--test .mega-menu__news-card-thumb {
		width: 65px;
		height: 65px;
	}
}
