/* ============================================================
   TRAWERS — motyw kolorystyczny (leśna zieleń / górski pomarańcz).
   Ten plik NIE używa zmiennych CSS (patrz main.css - cross-file
   var() nie działa niezawodnie w tym projekcie, ustalone empirycznie
   przy Wędrowniku) - literalne wartości, wygenerowane programowo
   z main.css.

   Paleta Trawers:
   primary #2D4A3E (leśna zieleń) | primary-hover/dark #1E2522
   primary-active/darker #121614 | secondary #D46A37 (górski pomarańcz)
   text #2C3531 | accent #8C7864 (tertiary, wysuszony szlak)
   quaternary #4A6984 (lodowcowy błękit - nieużywany bezpośrednio w main.css,
   dostępny do przyszłych, punktowych akcentów jeśli zajdzie potrzeba)
   lighter #F9F9F6 | light #EAECE6 | warning #E5A93C

   PEŁNA PALETA dostarczona przez użytkownika (potwierdzona ponownie
   2026-08-03) - zapisana w CAŁOŚCI, także kolory jeszcze NIE użyte
   nigdzie w tym pliku (success/danger), żeby nie zgubić ich drugi raz:
   $primary:    #2D4A3E  (głęboka, leśna zieleń - główny kolor marki, nagłówki, menu)
   $secondary:  #D46A37  (górski pomarańcz - kolor akcji, CTA)
   $tertiary:   #8C7864  (kolor wysuszonego szlaku/ziemi - elementy strukturalne)
   $quaternary: #4A6984  (lodowcowy błękit - dodatkowy akcent dla odznak/linków)
   $default:    #2C3531  (ciemny, iglasty grafit - domyślny kolor tekstu)
   $success:    #527948  (żywa zieleń mchu)
   $info:       #3B7197  (czyste niebo - informacje, komunikaty techniczne)
   $warning:    #E5A93C  (kolor schroniskowego światła - ostrzeżenia)
   $danger:     #C0392B  (czerwień alarmowa GOPR - błędy, niebezpieczeństwo)
   $lighter:    #F9F9F6  (mglisty off-white - główne tło strony)
   $light:      #EAECE6  (jasny granit/kamień - tła kart, sekcji, paneli)
   $dark:       #1E2522  (nocny las - tło stopki, ciemne sekcje nawigacji)
   $darker:     #121614  (głęboki cień skalny - najciemniejszy tekst/nagłówki)
   ($info użyty w sekcji 10, tło baneru cookieconsent - jedyny dotąd
   użyty z "nieużywanej" czwórki success/info/warning/danger).

   Podpięcie: config/sites/trawers/setup.typoscript, page.includeCSS,
   ładowane po main.css.
   ============================================================ */

/* Mostek do reszty ekosystemu Bootstrap (klasy narzędziowe typu
   .text-primary/.bg-primary/.border-primary, alerty, odznaki itd.,
   których main.css nie nadpisuje selektor-po-selektorze) — literalne
   wartości, bez zależności od --site-*. */
:root {
    --bs-primary:               #2D4A3E;
    --bs-primary-rgb:           45, 74, 62;
    --bs-link-color:            #2D4A3E;
    --bs-link-color-rgb:        45, 74, 62;
    --bs-link-hover-color:      #2D4A3E;
    --bs-link-hover-color-rgb:  45, 74, 62;
    --bs-body-color:            #2C3531;
    --mainnavigation-hightlight: #D46A37;
}


/* ============================================================
   0. KOLORY MARKI — komponenty, które bootstrap-package "wypieka"
      na sztywno przy kompilacji SCSS (nie czytają zmiennej --bs-primary
      w locie), więc trzeba je nadpisać wprost, per komponent.
   ============================================================ */

/* przyciski — gradient secondary→primary, na hover pogłębiony do primary→dark */
.btn-primary,
.frame-type-felogin_login input[type=submit] {
    --bs-btn-color:               #ffffff;
    --bs-btn-bg:                  #2D4A3E;
    --bs-btn-border-color:        #2D4A3E;
    --bs-btn-hover-color:         #ffffff;
    --bs-btn-hover-bg:            #1E2522;
    --bs-btn-hover-border-color:  #1E2522;
    --bs-btn-active-bg:           #121614;
    --bs-btn-active-border-color: #121614;
    --bs-btn-focus-shadow-rgb:    45, 74, 62;
    background-image: linear-gradient(135deg, #D46A37, #2D4A3E);
    border: none;
    box-shadow: 0 2px 8px rgba(3, 37, 42, .25);
    transition: box-shadow .2s ease, transform .2s ease, background-image .2s ease;
}

.btn-primary:hover,
.frame-type-felogin_login input[type=submit]:hover {
    background-image: linear-gradient(135deg, #2D4A3E, #1E2522);
    box-shadow: 0 4px 14px rgba(3, 37, 42, .35);
    transform: translateY(-1px);
}

.btn-outline-primary {
    --bs-btn-color:               #D46A37;
    --bs-btn-border-color:        #D46A37;
    --bs-btn-hover-color:         #ffffff;
    --bs-btn-hover-bg:            #D46A37;
    --bs-btn-hover-border-color:  #D46A37;
}

/* tła ramek (pole "Ramka" → kolor tła elementu treści) — gradient dla głębi.
   Wariant "ciemny środek" (ujednolicony 2026-08-09 na wszystkich serwisach) -
   TE SAME dwa kolory co poprzednio (secondary/primary), tylko układ: primary
   (ciemniejszy) na środku, secondary (jaśniejszy) rozchodzący się na boki,
   poziomo (90deg). */
.frame-background-primary {
    --frame-color:            #ffffff;
    --frame-background:       #2D4A3E;
    --frame-link-color:       #ffffff;
    --frame-link-hover-color: #ffffff;
    background-image: linear-gradient(90deg, #D46A37 0%, #2D4A3E 50%, #D46A37 100%);
}

.frame-background-dark {
    --frame-color:            #ffffff;
    --frame-background:       #1E2522;
    --frame-link-color:       #2D4A3E;
    --frame-link-hover-color: #1E2522;
}

.frame-background-light {
    --frame-color:            #1E2522;
    --frame-background:       #f8f9fa;
    --frame-link-color:       #2D4A3E;
    --frame-link-hover-color: #1E2522;
}

/* stopka górna (linki, cała treść) — linki w kolorze akcentu, NIE primary:
   primary jest tak ciemny, że na ciemnym tle stopki byłby praktycznie
   niewidoczny (ciemne na ciemnym). */
.footer-section-content {
    /* ten sam kąt co gradient nagłówków (135°), ale z jaśniejszym środkiem
       (secondary) i ciemnymi krawędziami (dark) zamiast płaskiego dwustopniowego */
    background: linear-gradient(135deg, #1E2522 0%, #2D4A3E 50%, #1E2522 100%) !important;
    --frame-color:             #ffffff;
    --frame-background:        #1E2522;
    --frame-link-color:        #8C7864;
    --frame-link-hover-color:  #ffffff;
}

/* przycisk "do góry" — stały kolor to dotychczasowy hover (primary),
   hover to akcent (--site-accent, $tertiary). Kolor ikony na hover
   przełączony na ciemny (primary) — biała ikona na jasnym piaskowym
   tle byłaby słabo czytelna. */
.scroll-top {
    --scrolltop-bg: #2D4A3E;
    --scrolltop-hover-bg: #8C7864;
    --scrolltop-hover-color: #2D4A3E;
    transition: background-color .3s ease-in-out, color .3s ease-in-out, transform .25s ease, box-shadow .25s ease;
}

/* Uniesienie + poświata w kolorze akcentu na hover, ten sam charakter
   co unoszenie kart tekst-ikona/galerii — tylko przeniesiony na
   okrągły przycisk, w umiarkowanym zakresie (1.08), żeby przycisk
   przypięty do rogu ekranu nie wyglądał na "nerwowy". */
.scroll-top:hover,
.scroll-top:focus {
    transform: scale(1.08);
    box-shadow: 0 6px 18px rgba(140, 120, 100, .55);
}

.scroll-top .scroll-top-icon {
    transition: transform .25s ease;
}

.scroll-top:hover .scroll-top-icon,
.scroll-top:focus .scroll-top-icon {
    /* rotate(45deg) to baza kształtu strzałki (theme) — trzeba go
       zachować w tym samym transform, inaczej podbicie nadpisałoby
       obrót i ikona straciłaby kształt */
    transform: rotate(45deg) translateY(-3px);
}

/* Ikony w modułach "Tekst i ikona" — dotychczas kolor tła kółka był zapisany
   na sztywno (inline style) per element treści, z poprzedniej, zielonej
   palety. Nadpisujemy !important, żeby wszystkie ikony spójnie używały
   nowego zestawu barw niezależnie od tego, co ma w sobie rekord. */
.texticon-inner-icon {
    background-image: linear-gradient(135deg, #D46A37, #2D4A3E) !important;
    background-color: #2D4A3E !important;
    color: #ffffff !important;
}


/* ============================================================
   0b. PASEK NAWIGACJI — nowe tło, tekst, dolna linia, podkreślenie hover
   ============================================================
   Dotyczy TYLKO stanów z pełnym tłem (.navbar-default na podstronach,
   .navbar-transition na stronie głównej po scrollu) — stan przezroczysty
   na starcie strony głównej (na tle karuzeli, biały tekst) zostaje bez zmian,
   bo ma osobne, bardziej specyficzne reguły w bootstrap-package. */

.navbar-mainnavigation {
    /* tło paska w stanie "solid" — .navbar-default/.navbar-transition czytają
       kolor przez rgba(var(--bs-white-rgb), var(--bs-bg-opacity)), więc
       wystarczy podmienić samą zmienną RGB zamiast walczyć z !important */
    --bs-white-rgb: 249, 249, 246; /* #F9F9F6 - site-lighter Trawers */
    /* tekst i ikony linków menu w stanie "solid" — transparentny stan
       ma WŁASne, bardziej specyficzne nadpisanie na biało, więc to tutaj
       go nie dotyczy */
    --bs-navbar-color:        #2D4A3E;
    --bs-navbar-hover-color:  #2D4A3E;
    --bs-navbar-active-color: #2D4A3E;
}

.navbar-default,
.navbar-mainnavigation.navbar-transition {
    border-bottom: 1.5px solid #CFD4C6;
}

/* Podkreślenie najechanej pozycji menu — grubsze, w kolorze warning,
   animacja "wysuwania" (scaleX) zamiast domyślnego zanikania opacity,
   ten sam charakter co animowane podkreślenie linków w treści. */
.navbar-mainnavigation .nav-link.nav-link-main:before {
    height: 3px;
    background: #E5A93C;
    opacity: 1;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .25s ease;
}

.navbar-mainnavigation .nav-link.nav-link-main:hover:before,
.navbar-mainnavigation .nav-link.nav-link-main:focus-visible:before {
    opacity: 1;
    transform: scaleX(1);
}


/* ============================================================
   1. NAWIGACJA — drobne uzupełnienia, których SCSS nie obejmuje
   ============================================================ */

/* Logo skaluje się razem z paskiem przy scrollowaniu (BP używa --mainnavigation-nav-height) */
.navbar-mainnavigation .navbar-brand-image img {
    max-height: calc(var(--mainnavigation-nav-height) * 0.45); /* +12.5% względem poprzednich 0.40 */
    transition: max-height 0.27s cubic-bezier(0, 0, 0.58, 1);
}

/* Ikony logowania / wyszukiwania dodane w MainAfter.html — kolor jak standardowy
   Bootstrap "navbar-light" (taki sam odcień jak reszta ikon/togglera w jasnym pasku).
   Na stronie głównej (navbar-default-transition) białe dopóki nie przewinięto -
   te same selektory co bootstrap-package używa dla .nav-link (patrz theme.css:
   ".navbar-default-transition:not(.navbar-transition) .navbar-nav>li>.nav-link"),
   więc zachowanie jest identyczne i tak samo niezawodne (czysty CSS, bez JS-timingu). */
a.nav-login-icon,
a.nav-search-icon {
    color: #2D4A3E;
    display: flex;
    align-items: center;
    text-decoration: none;
    transition: color 0.15s ease;
}

a.nav-login-icon {
    margin-left: 1.5rem;
}

a.nav-search-icon {
    margin-left: 1rem;
}

a.nav-login-icon:hover,
a.nav-search-icon:hover {
    color: rgba(0, 0, 0, .9);
}

a.nav-login-icon svg,
a.nav-search-icon svg {
    width: 20px;
    height: 20px;
}

.navbar-default-transition:not(.navbar-transition) a.nav-login-icon,
.navbar-default-transition:not(.navbar-transition) a.nav-search-icon,
.navbar-inverse-transition:not(.navbar-transition) a.nav-login-icon,
.navbar-inverse-transition:not(.navbar-transition) a.nav-search-icon {
    color: rgba(255, 255, 255, .9);
}

.navbar-default-transition:not(.navbar-transition) a.nav-login-icon:hover,
.navbar-default-transition:not(.navbar-transition) a.nav-search-icon:hover,
.navbar-inverse-transition:not(.navbar-transition) a.nav-login-icon:hover,
.navbar-inverse-transition:not(.navbar-transition) a.nav-search-icon:hover {
    color: #fff;
}

.navbar-default-transition:not(.navbar-transition) .navbar-nav > li > .nav-link,
.navbar-inverse-transition:not(.navbar-transition) .navbar-nav > li > .nav-link {
    text-shadow: 0 1px 3px rgba(0, 0, 0, .85), 0 1px 10px rgba(0, 0, 0, .5);
}

.navbar-default-transition:not(.navbar-transition) .navbar-brand-image img,
.navbar-inverse-transition:not(.navbar-transition) .navbar-brand-image img,
.navbar-default-transition:not(.navbar-transition) a.nav-login-icon,
.navbar-default-transition:not(.navbar-transition) a.nav-search-icon,
.navbar-inverse-transition:not(.navbar-transition) a.nav-login-icon,
.navbar-inverse-transition:not(.navbar-transition) a.nav-search-icon,
.navbar-default-transition:not(.navbar-transition) .navbar-toggler,
.navbar-inverse-transition:not(.navbar-transition) .navbar-toggler {
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, .85));
}

/* Reguła wymuszająca hamburger 992-1199px USUNIĘTA 2026-08-12 - był to ślepy
   duplikat main.css bez żadnej personalizacji per-site (patrz zasada w
   feedback_css_theming), main.css teraz obsługuje ten zakres inaczej (poziomy
   pasek bez ikon, tak jak 1200-1399px), duplikat tutaj by to blokował. */


/* ============================================================
   1c. NAGŁÓWKI KARUZELI (Border/Header Media) — białe i pogrubione
   ============================================================
   Produkcja ustawia kolor nagłówka karuzeli inline (style="color:#FFFFFF"
   na otaczającym divie .valign) per slajd. Nowsza wersja bootstrap-package
   w tym projekcie nie generuje już tego wrappera/inline stylu wcale
   (uproszczona struktura karuzeli), więc domyślnie tekst wychodził ciemny
   i nieczytelny na zdjęciu w tle. Odtworzone jako stały, globalny styl. */

.carousel-header,
.carousel-subheader {
    color: #fff;
    font-weight: 700;
    text-shadow: 0 2px 6px rgba(0, 0, 0, .75);
}

/* Gradient od dołu slajdu USUNIĘTY na życzenie użytkownika (2026-08-01) -
   patrz main.css sekcja 1c po wyjaśnienie. */
.carousel-content {
    position: relative;
}

.carousel-content-inner {
    position: relative;
    z-index: 1;
}


/* ============================================================
   1d. ELEMENT TREŚCI "TYLKO NAGŁÓWEK" (CType=header) — białe, pogrubione
   ============================================================
   Ten typ elementu w bootstrap-package zawsze renderuje się z kolorowym
   tłem (frame-background-primary, zielone), więc potrzebuje białego,
   pogrubionego tekstu żeby był czytelny - w przeciwieństwie do zwykłych
   nagłówków innych elementów (texticon itp.), które mają jasne tło i
   muszą zostać przy domyślnym ciemnym kolorze. */

.frame-type-header .element-header {
    color: #fff;
    font-weight: 700;
}

.frame-type-header .element-subheader {
    color: #fff;
    font-weight: 400;
}


/* ============================================================
   1e. MENU BOCZNE (subnav) — stylistyka "karty", jak zakładki (tabs):
   biały panel z ramką/cieniem, aktywna/najechana pozycja podświetlona
   tłem + kolorowy pasek z boku zamiast domyślnego trójkąta.
   ============================================================ */

/* Ramka menu bocznego - "light" tej witryny (#EAECE6) jest zbyt blisko
   bieli tła panelu, ledwo widoczna (zgłoszenie użytkownika, 2026-08-09) -
   zamieniona na neutralny szary, ten sam co ramka kart galerii
   main.css (rgba(3,37,42,.12)), niezależny od palety. */
.subnav-nav {
    background: #ffffff;
    border: 1px solid rgba(3, 37, 42, .12);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
}

.subnav-item + .subnav-item {
    border-top: 1px solid rgba(3, 37, 42, .12);
}

.subnav-link {
    border: none !important;
    padding: .65rem 1rem;
    color: #2D4A3E;
    transition: background-color .2s ease, color .2s ease, padding-left .2s ease, box-shadow .2s ease;
}

.subnav-link:before {
    display: none !important;
}

.subnav-link:hover,
.subnav-link:focus {
    background-color: #F9F9F6 !important;
    color: #2D4A3E;
    padding-left: 1.25rem;
    /* linia boczna na hover w primary — dla pozycji aktywnej i tak
       wygrywa box-shadow z reguły .active (deklarowana niżej, ta sama
       specyficzność, kolejność w pliku rozstrzyga), więc kolor warning
       aktywnej pozycji zostaje nienaruszony nawet pod kursorem */
    box-shadow: inset 3px 0 0 0 #2D4A3E;
}

.active > .subnav-link {
    color: #2D4A3E !important;
    background-color: #F9F9F6 !important;
    font-weight: 600;
    box-shadow: inset 3px 0 0 0 #E5A93C;
}


/* ============================================================
   1f. STOPKA DOLNA (footer-section-meta) — odcień jak produkcja
   ============================================================
   Analogicznie: domyślny motyw daje tu #212121, produkcja ma #232323. */

.footer-section-meta {
    background: #121614 !important;
    --frame-background: #121614;
    --frame-link-color: #8C7864;
    --frame-link-hover-color: #ffffff;
}


/* ============================================================
   1g. STOPKA GÓRNA, KOLUMNA ŚRODKOWA — logo PTTK wyśrodkowane
   ============================================================
   Element treści (textpic/gallery) domyślnie wyrównuje obrazek do lewej
   krawędzi kolumny (flex, justify-content: flex-start). */

.footer-section-content-column-middle .gallery-row {
    justify-content: center;
}

/* To samo miejsce renderuje też logo PTTK jako element "galerii" (textpic) —
   ale logo jest okrągłe, więc ogólny styl "karty" (biała ramka, cień,
   padding) dodany niżej dla właściwych galerii zdjęć wygląda tu źle
   (białe kwadratowe tło pod okrągłym logo). Neutralizujemy go punktowo. */
.footer-section-content-column-middle .gallery-item figure {
    border: none;
    box-shadow: none;
    padding: 0;
    background: transparent;
    border-radius: 0;
}

.footer-section-content-column-middle .gallery-item:hover figure {
    box-shadow: none;
    border-color: transparent;
}

.footer-section-content-column-middle .gallery-item figure img {
    background-color: transparent;
    /* rozmiar źródłowego pliku to 150x150 - bootstrap-package dolicza
       własny, większy rozmiar z układu kolumn galerii, więc wymuszamy
       wprost, żeby logo nie było większe niż na pozostałych serwisach */
    max-width: 150px;
    width: 100%;
}

/* Link z logiem PTTK w tej kolumnie NIE ma żadnego tekstu (samo `<img>`
   w `<a>`) - animowane podkreślenie linków w treści (sekcja niżej,
   "Linki w treści") liczy pozycję kreski względem wysokości LINII TEKSTU
   (line-height), nie względem faktycznej wysokości obrazka, więc kreska
   wychodziła w poprzek środka loga zamiast pod nim. Zamiast poprawiać
   pozycjonowanie tylko dla tego jednego linku - po prostu wyłączona,
   bo pod samym logiem i tak nie ma tekstu do podkreślenia. */
.footer-section-content-column-middle .frame :not(.btn) > a:not([class]),
.footer-section-content-column-middle .frame p a:not([class]) {
    background-image: none;
}

/* Na telefonach (poniżej 768px kolumny stopki górnej stackują się jedna
   pod drugą) — wyśrodkuj całą zawartość, łącznie z kolumną "Dane rejestrowe"
   (ma na sztywno .text-end) i "Strony oddziałowe" (domyślnie do lewej). */
@media (max-width: 767.98px) {
    .footer-section-content-column {
        text-align: center;
    }

    .footer-section-content-column .text-end,
    .footer-section-content-column .text-start,
    .footer-section-content-column .text-right,
    .footer-section-content-column .text-left {
        text-align: center !important;
    }
}




/* ============================================================
   2. KONTENER TREŚCI
   ============================================================ */

#page-content {
    max-width: 1320px;
    margin: 0 auto;
    padding-left: 20px;
    padding-right: 20px;
    width: 100%;
}

/* ============================================================
   TEXT AND ICON — ramka z zaokrąglonymi narożnikami i cieniem wersja CLAUDE
   ============================================================ */
/* TEXT AND ICON — ramka z zaokrąglonymi narożnikami i cieniem wersja GEMINI
   wyrównuje wysokości ramek */

/* 1. RAMKA + TŁO — gradient light->lighter->biel (zamiast zdjęcia,
   które okazało się zbyt rozpraszające), ramka w kolorze secondary */
.frame-type-texticon .texticon {
    border: 1.5px solid #D46A37 !important;
    border-radius: 8px;
    padding: 1.5rem;
    /* radialny, niecentryczny — "źródło światła" w lewym górnym rogu,
       gasnące przez lighter do light w kierunku przeciwległego rogu.
       Tło większe niż karta (background-size) + przesuwana pozycja,
       żeby "światło" mogło płynnie wędrować na hover (patrz niżej) */
    background: radial-gradient(circle at 20% 15%, #ffffff 0%, #F9F9F6 45%, #EAECE6 100%);
    background-size: 160% 160%;
    background-position: 0% 0%;
    transition: box-shadow .25s ease, border-color .25s ease, border-width .25s ease, transform .25s ease, background-position .5s ease;
}

/* 2. ŁAŃCUCH WYSOKOŚCI (EQUAL HEIGHT) */

/* Rząd musi być flexem */
.section-row {
    display: flex !important;
    flex-wrap: wrap;
    align-items: stretch !important;
}

/* Kolumna musi być flexem */
.section-column-third {
    display: flex !important;
    flex-direction: column !important;
}

/* WYMUSZENIE WZROSTU NA WSZYSTKICH WARSTWACH WEWNĄTRZ */
/* Dodajemy tutaj klasy, które widzę w Twoim inspektorze: .frame-container-default oraz .frame-inner */
.section-column-third .frame,
.frame-group-container,
.frame-group-inner,
.frame-container-default,
.frame-inner,
.texticon {
    display: flex !important;
    flex-direction: column !important;
    flex-grow: 1 !important;
    height: auto !important;
}

/* Opcjonalnie: upewnij się, że tekst w środku nie jest ściśnięty */
.texticon-content {
    flex-grow: 1;
}

/* Hover dla ramki — lekkie uniesienie + głębszy cień. Kolor ramki
   zostaje w tej samej rodzinie (secondary), tylko "przyciemniony" do
   primary (ten sam zabieg co animowane podkreślenie linków — nie
   zmiana koloru, tylko pogłębienie tego samego tonu) + delikatnie
   grubsza. */
.frame-type-texticon .texticon:hover {
    box-shadow: 0 10px 24px rgba(3, 37, 42, 0.18);
    border-width: 2.5px !important;
    border-color: #2D4A3E !important;
    transform: translateY(-3px);
    /* "światło" wędruje w stronę przeciwległego rogu */
    background-position: 100% 100%;
}


/* ============================================================
   ODŚWIEŻENIE WYGLĄDU 2026-07-27 — mikroanimacje i detale
   ============================================================ */

/* Galeria zdjęć — jednakowa wysokość kafli z zachowaniem proporcji zdjęć
   (bez przycinania), delikatna ramka, cień pogłębiający się po najechaniu,
   plus zoom samego zdjęcia. Ten sam wzorzec co custom-online.css. */
.gallery-row {
    align-items: stretch;
}

.gallery-item {
    display: flex;
    flex-direction: column;
}

.gallery-item figure {
    flex: 1;
    display: flex;
    flex-direction: column;
    margin-bottom: 0;
    overflow: hidden;
    border-radius: var(--bs-border-radius);
    border: 1px solid rgba(3, 37, 42, .12);
    padding: 6px;
    /* cień bez przesunięcia (0 0) — rozkłada się równo dookoła zamiast "uciekać" w dół */
    box-shadow: 0 0 8px rgba(3, 37, 42, .08);
    transition: box-shadow .25s ease, border-color .25s ease;
}

.gallery-item:hover figure {
    box-shadow: 0 0 22px rgba(3, 37, 42, .4);
    border-color: rgba(3, 37, 42, .3);
}

.gallery-item figure picture,
.gallery-item figure a {
    flex: 1;
    display: flex;
    min-height: 140px;
}

.gallery-item figure img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center center;
    background-color: #ffffff;
    display: block;
    transition: transform .35s ease;
}

.gallery-item:hover figure img {
    transform: scale(1.06);
}

/* Podpis pod zdjęciem — wyśrodkowany, z odstępem odsuwającym go od
   zdjęcia (transform:scale na hover wizualnie "wjeżdża" na sąsiada
   w tym samym elemencie figure, bo overflow:hidden tnie tylko na
   zewnętrznej krawędzi, nie między rodzeństwem) */
.gallery-item .caption {
    text-align: center;
    margin-top: .6rem;
}

/* Linki w treści — animowane podkreślenie zamiast statycznego,
   ten sam język co pasek nawigacji (nav-link-main:before) */
.frame :not(.btn) > a:not([class]),
.frame p a:not([class]) {
    text-decoration: none;
    background-image: linear-gradient(#E5A93C, #E5A93C);
    background-position: 0 100%;
    background-repeat: no-repeat;
    background-size: 0% 2px;
    transition: background-size .25s ease, color .15s ease;
}

.frame :not(.btn) > a:not([class]):hover,
.frame p a:not([class]):hover {
    background-size: 100% 2px;
}

/* Pasek nawigacji — efekt "szkła" i cień, gdy ma pełne tło (podstrony
   z .navbar-default ORAZ strona główna po przewinięciu, .navbar-transition).
   Stan przezroczysty (hero na stronie głównej przed scrollem) zostaje bez
   zmian, żeby nie rozmywać zdjęcia w tle karuzeli. */
.navbar-default,
.navbar-mainnavigation.navbar-transition {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 4px 20px rgba(3, 37, 42, .22);
}

.navbar-default,
.navbar-default-transition.navbar-transition {
    --bs-bg-opacity: .92;
}

/* Cytat / wyróżniony fragment tekstu — akcent w kolorze marki zamiast
   domyślnej szarej kreski Bootstrapa */
.frame blockquote,
blockquote.blockquote {
    border-left: 3px solid #8C7864;
    padding-left: 1rem;
    font-style: italic;
}

/* Nagłówek karuzeli — delikatne wejście przy załadowaniu strony */
@keyframes szb-fade-up {
    from {
        opacity: 0;
        transform: translateY(16px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.carousel-item.active .carousel-header {
    animation: szb-fade-up .6s ease-out both;
}

.carousel-item.active .carousel-subheader {
    animation: szb-fade-up .6s ease-out .12s both;
}

@media (prefers-reduced-motion: reduce) {
    .carousel-item.active .carousel-header,
    .carousel-item.active .carousel-subheader {
        animation: none;
    }
}

/* ============================================================
   ZAKŁADKI (element "Tabs") — wygląd "połączonej karty": aktywna
   zakładka zlewa się wizualnie z panelem treści pod nią, akcentowany
   górny pasek w kolorze warning, reszta w języku kart z innych sekcji
   (biel, delikatna ramka, zaokrąglenie, cień).
   ============================================================ */

/* Kontener zakładek (.contentcontainer, b13/container) to CSS grid
   z globalnym odstępem --contentcontainer-gap:40px (używanym też do
   rozstawiania kolumn w innych typach kontenerów, np. 2/3/4-kolumnowych)
   — to on wpychał 40px przerwy między pasek zakładek a panel treści,
   mimo że oba mają być wizualnie połączone. Zerowany TYLKO tutaj. */
.contentcontainer[data-container-identifier="szlakbrdy_tabs"] {
    --contentcontainer-gap: 0;
}

.nav-tabs {
    border-bottom: 1px solid #EAECE6;
    gap: .25rem;
}

.nav-tabs .nav-link {
    position: relative;
    border: 1px solid transparent;
    border-top-left-radius: var(--bs-border-radius);
    border-top-right-radius: var(--bs-border-radius);
    color: #2D4A3E;
    font-weight: 600;
    padding: .6rem 1.25rem;
    transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.nav-tabs .nav-link:hover,
.nav-tabs .nav-link:focus {
    border-color: transparent;
    background-color: #F9F9F6;
    isolation: isolate;
}

.nav-tabs .nav-link.active {
    color: #2D4A3E;
    background-color: #ffffff;
    border-color: #EAECE6 #EAECE6 #ffffff;
    box-shadow: 0 -4px 14px rgba(3, 37, 42, .1);
}

.nav-tabs .nav-link.active:before {
    content: "";
    position: absolute;
    top: -1px;
    left: -1px;
    right: -1px;
    height: 3px;
    border-top-left-radius: var(--bs-border-radius);
    border-top-right-radius: var(--bs-border-radius);
    background: linear-gradient(90deg, #E5A93C, #8C7864);
}

.tab-content {
    background-color: #ffffff;
    border: 1px solid #EAECE6;
    border-top: none;
    border-bottom-left-radius: var(--bs-border-radius);
    border-bottom-right-radius: var(--bs-border-radius);
    border-top-right-radius: var(--bs-border-radius);
    padding: 1.5rem;
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
}


/* ============================================================
   3. SUBMENU GÓRNEGO MENU (dropdown) — ten sam język "karty"
   co menu boczne (subnav, patrz 1e.): biały panel, ramka w
   --site-light, cień, kolorowy pasek z boku przy najechanej/
   aktywnej pozycji zamiast domyślnego szarego tła Bootstrapa.
   Na desktopie (pełne poziome menu, od 1200px — patrz breakpoint
   hamburgera w 1.) rozwija się dodatkowo po najechaniu myszką,
   niezależnie od dotychczasowego mechanizmu kliknięcia (Bootstrap
   JS/Popper) używanego na dotyku/mobile — oba działają równolegle.
   ============================================================ */

.navbar-mainnavigation .dropdown-menu {
    --bs-dropdown-bg: #ffffff;
    --bs-dropdown-border-color: #EAECE6;
    --bs-dropdown-border-radius: var(--bs-border-radius);
    --bs-dropdown-box-shadow: 0 8px 22px rgba(3, 37, 42, .16);
    padding: .4rem 0;
    overflow: hidden;
}

.navbar-mainnavigation .dropdown-menu-simple .dropdown-nav > .nav-item + .nav-item,
.navbar-mainnavigation .dropdown-menu-mega .dropdown-nav .dropdown-nav > .nav-item + .nav-item {
    border-top: 1px solid #EAECE6;
}

.navbar-mainnavigation .nav-link-dropdown {
    padding: .65rem 1rem;
    color: #2D4A3E;
    transition: background-color .2s ease, color .2s ease, padding-left .2s ease, box-shadow .2s ease;
}

.navbar-mainnavigation .nav-link-dropdown:hover,
.navbar-mainnavigation .nav-link-dropdown:focus {
    background-color: #F9F9F6;
    color: #2D4A3E;
    padding-left: 1.25rem;
    /* jw. (subnav) — linia boczna na hover w primary, aktywna pozycja
       (reguła .active niżej, ta sama specyficzność) zachowuje warning */
    box-shadow: inset 3px 0 0 0 #2D4A3E;
}

.navbar-mainnavigation .nav-link-dropdown.active {
    color: #2D4A3E;
    background-color: #F9F9F6;
    font-weight: 600;
    box-shadow: inset 3px 0 0 0 #E5A93C;
}

/* Rozwijanie po najechaniu myszką — tylko tam, gdzie realnie widać
   pełne poziome menu bez hamburgera (patrz sekcja 1.: 992-1199px jest
   celowo wymuszony na hamburger, więc prawdziwy próg desktopu to
   1200px). Menu trzyma się w layoucie (position:absolute niezależnie
   od hover), więc pokazywanie/ukrywanie przez opacity+visibility
   zamiast display nie powoduje "skoków" treści pod spodem i pozwala
   na płynne przejście spójne z resztą mikroanimacji serwisu. */
@media (min-width: 1200px) {
    .navbar-mainnavigation .nav-style-simple .dropdown-menu,
    .navbar-mainnavigation .nav-style-mega .dropdown-menu {
        display: block;
        top: 100%;
        /* margin-top:0 (nie --bs-dropdown-spacer, domyślnie .5rem) —
           motyw zostawiał martwą, niehoverowalną strefę między linkiem
           a panelem; kursor tracił hover w tej przerwie zanim zdążył
           dotrzeć do menu, więc ono znikało zanim dało się kliknąć
           pozycję. Panel przylega teraz bezpośrednio do paska. */
        margin-top: 0;
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transform: translateY(6px);
        /* przy CHOWANIU dodatkowy grace period (.28s) zanim visibility
           faktycznie przełączy się na hidden — margines bezpieczeństwa
           na wypadek chwilowej niedokładności ruchu myszką; przy hover
           (:hover/:focus-within) ten delay jest zerowany, więc otwarcie
           reaguje od razu, bez opóźnienia */
        transition: opacity .18s ease, transform .18s ease, visibility 0s linear .28s;
    }

    .navbar-mainnavigation .nav-style-simple .dropdown-menu {
        left: 0;
    }

    .navbar-mainnavigation .nav-item.nav-style-simple:hover > .dropdown-menu,
    .navbar-mainnavigation .nav-item.nav-style-mega:hover > .dropdown-menu,
    .navbar-mainnavigation .nav-item.nav-style-simple:focus-within > .dropdown-menu,
    .navbar-mainnavigation .nav-item.nav-style-mega:focus-within > .dropdown-menu {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
        transform: translateY(0);
        transition-delay: 0s;
    }

    /* Strzałka rozwijania niepotrzebna przy hover — chowamy ją tylko
       wizualnie (klik nadal działa dla klawiatury/dotyku na tym
       breakpoincie, gdyby ktoś mimo wszystko z niego skorzystał). */
    .navbar-mainnavigation .nav-link-toggle .nav-link-indicator {
        transition: transform .18s ease;
    }

    .navbar-mainnavigation .nav-item.nav-style-simple:hover .nav-link-toggle .nav-link-indicator,
    .navbar-mainnavigation .nav-item.nav-style-mega:hover .nav-link-toggle .nav-link-indicator {
        transform: rotate(180deg);
    }
}

/* Zagnieżdżony (3.) poziom w mega-dropdownie — wystąpi tylko na witrynach,
   których struktura stron jest głębsza niż na szlakbrdy (tam mega nigdy
   się nie pojawia, bo żaden dropdown nie schodzi tam do 3. poziomu).
   Bootstrap Package renderuje kolumny 2. poziomu pogrubione, ale zagnieżdżone
   dzieci bez żadnego stylu (płaska lista tej samej szerokości) — dodajemy
   wcięcie + mniejszą czcionkę + --site-secondary, żeby hierarchia była
   czytelna niezależnie od tego, ile poziomów ma dana witryna. */
.navbar-mainnavigation .dropdown-menu-mega .dropdown-nav .dropdown-nav {
    margin-top: .15rem;
    margin-bottom: .35rem;
}

.navbar-mainnavigation .dropdown-menu-mega .dropdown-nav .dropdown-nav .nav-link-dropdown {
    padding-top: .35rem;
    padding-bottom: .35rem;
    padding-left: 1.5rem;
    font-size: .875rem;
    font-weight: 400;
    color: #D46A37;
}

.navbar-mainnavigation .dropdown-menu-mega .dropdown-nav .dropdown-nav .nav-link-dropdown:hover,
.navbar-mainnavigation .dropdown-menu-mega .dropdown-nav .dropdown-nav .nav-link-dropdown:focus {
    padding-left: 1.75rem;
}


/* ============================================================
   4. TABELE (element treści "Tabela") — kontener jak karta
   (ramka --site-light, cień, zaokrąglone rogi), nagłówek w
   --site-secondary z białym pogrubionym tekstem, wiersze treści
   naprzemienne: pierwszy biały, potem co drugi --site-lighter.
   ============================================================ */

.frame-type-table .table-responsive {
    border: 1px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
    /* tylko overflow-y ukryty (żeby zaokrąglenie realnie przycinało
       górne/dolne rogi tabeli) — overflow-x zostaje auto, inaczej
       szerokie tabele straciłyby poziomy scroll na wąskich ekranach */
    overflow-x: auto;
    overflow-y: hidden;
}

.frame-type-table .table {
    margin-bottom: 0;
    --bs-table-border-color: #EAECE6;
}

.frame-type-table .table > :not(caption) > * > * {
    padding: .65rem 1rem;
    vertical-align: middle;
}

.frame-type-table thead th {
    background-color: #D46A37;
    color: #ffffff;
    font-weight: 700;
    border-bottom-color: #D46A37;
}

.frame-type-table tbody tr td {
    background-color: #ffffff;
}

.frame-type-table tbody tr:nth-child(even) td {
    background-color: #F9F9F6;
}

.frame-type-table tbody tr td {
    transition: background-color .2s ease;
}

.frame-type-table tbody tr:hover td {
    background-color: #EAECE6;
}

/* Akcentowy pasek "wysuwający się od środka" w pierwszej kolumnie —
   ten sam motyw animacji (transform:scaleY, transform-origin:center)
   co podkreślenie linku w menu głównym i w treści, tylko obrócony
   pionowo. */
.frame-type-table tbody tr td:first-child {
    position: relative;
    transition: background-color .2s ease, color .2s ease, font-weight .2s ease;
}

.frame-type-table tbody tr td:first-child:before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: #E5A93C;
    transform: scaleY(0);
    transform-origin: center;
    transition: transform .22s ease;
}

.frame-type-table tbody tr:hover td:first-child:before {
    transform: scaleY(1);
}

.frame-type-table tbody tr:hover td:first-child {
    color: #2D4A3E;
    font-weight: 600;
}

.frame-type-html {
    overflow-x: auto;
}

.frame-type-html table {
    border-collapse: collapse;
    max-width: 100%;
}

.frame-type-html table td,
.frame-type-html table th {
    border: 1px solid #EAECE6;
    padding: .5rem .75rem;
}


/* ============================================================
   5. POLA FORMULARZY — spójna kolorystyka z paletą marki. Motyw
   "wypieka" kolor ramki/fokusu na sztywno przy kompilacji SCSS
   (patrz zasada w sekcji 0.), więc trzeba go nadpisać wprost.
   Obejmuje też "gołe" pola felogin bez klasy .form-control w
   markupie (motyw celuje w nie osobno przez input[type], w tym
   samym miejscu co .form-control — stąd te same selektory tutaj)
   oraz checkbox zgody RODO w rejestracji sf_register: markup tego
   pola to .custom-control/-input/-label, klasy z Bootstrapa 4 —
   ten motyw (BS5) nie ma dla nich ŻADNEGO CSS, więc bez tych
   reguł pole renderowało się jako gołe, natywne query bez stylu.
   ============================================================ */

.form-control,
.form-select,
.frame-type-felogin_login input[type=text],
.frame-type-felogin_login input[type=password] {
    border-color: #EAECE6;
    /* kreska pod polem, "wysuwana" na fokusie — ten sam motyw co
       podkreślenie linków w treści/menu, tu w kolorze warning dla
       kontrastu z tealową ramką fokusu (2 tony zamiast dublowania
       tego samego koloru w dwóch miejscach) */
    background-image: linear-gradient(#E5A93C, #E5A93C);
    background-repeat: no-repeat;
    background-position: left bottom;
    background-size: 0% 2px;
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out, background-size .3s ease;
}

.form-control:focus,
.form-select:focus,
.form-group input[type=file]:focus,
.frame-type-felogin_login input[type=text]:focus,
.frame-type-felogin_login input[type=password]:focus {
    border-color: #D46A37;
    box-shadow: 0 0 0 .25rem rgba(212, 106, 55, .25);
    background-size: 100% 2px;
}

/* Autouzupełnianie przeglądarki (np. zapamiętane logowanie/hasło) nakłada
   WŁASNE, natywne tło pola (Chrome/Edge: niebieskawe lub żółte) przez
   pseudo-klasę :-webkit-autofill - background-color/background-image
   same w sobie tego nie nadpiszą, jedyny niezawodny sposób to
   "oszukanie" ogromnym, wstawionym (inset) box-shadow w tym samym
   kolorze co tło pola. Bez tego pole logowania po zapamiętaniu przez
   przeglądarkę wygląda inaczej niż reszta formularzy i "zjada"
   widoczność cienkiego paska pod spodem. */
.form-control:-webkit-autofill,
.form-control:-webkit-autofill:hover,
.form-control:-webkit-autofill:focus,
.frame-type-felogin_login input:-webkit-autofill,
.frame-type-felogin_login input:-webkit-autofill:hover,
.frame-type-felogin_login input:-webkit-autofill:focus {
    -webkit-text-fill-color: #2C3531;
    -webkit-box-shadow: 0 0 0 1000px #ffffff inset;
    box-shadow: 0 0 0 1000px #ffffff inset;
    transition: background-color 5000s ease-in-out 0s, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.form-label {
    color: #2D4A3E;
    font-weight: 600;
    transition: color .2s ease;
}

/* Etykieta reaguje na fokus pola pod nią — mikro-feedback, że pole
   jest aktywne. Trzy różne miejsca to trzy różne markupy formularzy
   (EXT:form ma klasę .form-label, felogin/sf_register mają gołe
   <label> bez klasy), stąd osobne selektory per typ formularza. */
.form-element:focus-within .form-label {
    color: #D46A37;
}

.frame-type-felogin_login fieldset > div:focus-within label,
.frame-type-sfregister_create div:focus-within label,
.frame-type-sfregister_edit div:focus-within label {
    color: #D46A37;
    transition: color .2s ease;
}

.required {
    color: #E5A93C;
    font-weight: 700;
}

.custom-control {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
}

.custom-control-input {
    appearance: none;
    flex-shrink: 0;
    width: 1.2em;
    height: 1.2em;
    margin-top: .15em;
    border: 1.5px solid #EAECE6;
    border-radius: .3em;
    background-color: #ffffff;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.custom-control-input:checked {
    background-color: #D46A37;
    border-color: #D46A37;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 65% 65%;
    animation: szb-checkbox-pop .3s ease;
}

@keyframes szb-checkbox-pop {
    0% { transform: scale(1); }
    40% { transform: scale(1.25); }
    100% { transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
    .custom-control-input:checked {
        animation: none;
    }
}

.custom-control-input:focus {
    outline: 0;
    border-color: #D46A37;
    box-shadow: 0 0 0 .2rem rgba(212, 106, 55, .25);
}

.custom-control-label {
    cursor: pointer;
    padding-top: .1em;
}


/* ============================================================
   6. MAPA NA STRONACH KONTAKTOWYCH — ta sama "ramka" co zdjęcia
   w galerii (biała karta, delikatna ramka, zaokrąglone rogi,
   padding), ale bez hover/cienia (mapa nie jest klikalną kartą).
   Selektor celuje w konkretny wrapper (div[style*=max-width:600px])
   zamiast całego .frame-type-html, żeby nie dotknąć innych,
   niepowiązanych elementów HTML na stronie.
   ============================================================ */

.frame-type-html div[style*="max-width:600px"] {
    border: 1px solid rgba(3, 37, 42, .12);
    border-radius: var(--bs-border-radius);
    padding: 6px;
    background-color: #ffffff;
    overflow: hidden;
}


/* ============================================================
   7. BREADCRUMB — tło $lighter, delikatna linia oddzielająca od
   treści pod spodem.
   ============================================================ */

.breadcrumb-section {
    background-color: #F9F9F6;
    border-bottom: 1px solid #EAECE6;
}


/* ============================================================
   8. AKORDEON, PANEL (alert) I GRUPA KART — dociągnięcie do
   stylistyki serwisu. Sporo kolorów tu jest "wypieczonych" przy
   kompilacji SCSS (stary, zielony motyw domyślny) niezależnie od
   naszych nadpisań --bs-primary itd., więc trzeba je nadpisać
   wprost — ten sam wzorzec co w sekcjach 0./5.
   ============================================================ */

/* --- Akordeon (szlakbrdy_accordion_grid) — nagłówek (zwinięty) w
   tym samym języku co panel/alert: kolorowe tło, biały pogrubiony
   tekst. Rozwinięty panel zostaje przy dotychczasowym jasnym stylu
   (--site-lighter/--site-primary) — to teraz "stan aktywny". */
.accordion {
    --bs-accordion-btn-bg: #D46A37;
    --bs-accordion-btn-color: #ffffff;
    --bs-accordion-active-bg: #F9F9F6;
    --bs-accordion-active-color: #2D4A3E;
    --bs-accordion-border-color: #EAECE6;
    --bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(212, 106, 55, .25);
    /* ikony strzałki — SVG ma kolor "wypieczony" (stary zielony motyw),
       w data-URI nie da się użyć var(), stąd literalny hex dla obu
       stanów: biała na kolorowym tle nagłówka, ciemna na jasnym tle
       rozwiniętego panelu */
    --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2307373e' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    border-radius: var(--bs-border-radius);
    overflow: hidden;
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
}

.accordion-button {
    font-weight: 600;
    transition: background-color .2s ease, color .2s ease;
}

.accordion-button:hover {
    background-color: #1E2522;
}

.accordion-button:not(.collapsed):hover {
    background-color: #F9F9F6;
}

/* "wodotryski": strzałka odbija się przy rozwijaniu (spring-easing
   zamiast liniowego obrotu), treść wjeżdża z lekkim fade-up — ten
   sam motyw co nagłówek karuzeli (szb-fade-up, zdefiniowany wyżej) */
.accordion-button::after {
    transition: transform .35s cubic-bezier(.34, 1.56, .64, 1);
}

.accordion-collapse.show .accordion-body {
    animation: szb-fade-up .35s ease-out both;
}

@media (prefers-reduced-motion: reduce) {
    .accordion-collapse.show .accordion-body {
        animation: none;
    }
}

/* --- Panel (alert card, CType=panel) — kolor nagłówka per wariant
   (card-panel-primary/secondary/info/warning), reszta wariantów
   (success/danger/light/dark) zostaje na razie na domyślnych
   kolorach motywu, bo w treści serwisu nie występują */
.card-panel-primary {
    --cardpanel-header-background: #2D4A3E;
    --cardpanel-header-color: #ffffff;
    --cardpanel-border-color: #2D4A3E;
}

.card-panel-secondary,
.card-panel-info {
    --cardpanel-header-background: #D46A37;
    --cardpanel-header-color: #ffffff;
    --cardpanel-border-color: #D46A37;
}

.card-panel-warning {
    --cardpanel-header-background: #E5A93C;
    --cardpanel-header-color: #ffffff;
    --cardpanel-border-color: #E5A93C;
}

.frame-type-panel .btn-info {
    --bs-btn-color: #ffffff;
    --bs-btn-bg: #D46A37;
    --bs-btn-border-color: #D46A37;
    --bs-btn-hover-color: #ffffff;
    --bs-btn-hover-bg: #1E2522;
    --bs-btn-hover-border-color: #1E2522;
    --bs-btn-active-bg: #1E2522;
    --bs-btn-active-border-color: #1E2522;
    --bs-btn-focus-shadow-rgb: 212, 106, 55;
}

/* --- Grupa kart (card_group) — scalona z językiem "karty" tekst-ikona
   (ta sama ramka/gradient/hover co .frame-type-texticon .texticon wyżej),
   zamiast osobnego, prostszego stylu. Nagłówek/treść/przycisk wyśrodkowane. */
.card-group-element-item .card {
    border: 1.5px solid #D46A37 !important;
    border-radius: 8px;
    background: radial-gradient(circle at 20% 15%, #ffffff 0%, #F9F9F6 45%, #EAECE6 100%);
    background-size: 160% 160%;
    background-position: 0% 0%;
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
    transition: box-shadow .25s ease, border-color .25s ease, border-width .25s ease, transform .25s ease, background-position .5s ease;
    position: relative;
    text-align: center;
}

.card-group-element-item .card:hover {
    box-shadow: 0 10px 24px rgba(3, 37, 42, .18);
    border-width: 2.5px !important;
    border-color: #2D4A3E !important;
    background-position: 100% 100%;
}

.card-group-element-item .card-title {
    color: #2D4A3E;
    font-weight: 600;
}

.card-group-element-item .card-footer {
    background: transparent;
    border-top: none;
}

.card-group-element-item .card-footer .btn {
    position: static;
}

.card-group-element-item .card-footer .btn:after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}


/* ============================================================
   9. AKTUALNOŚCI I RELACJE (georgringer/news, styl Twb5) — pierwszy
   serwis w projekcie z tym typem treści (szlakbrdy go nie ma), więc
   układ zaprojektowany od zera, w tym samym języku "karty" co reszta
   serwisu (galeria/tekst-ikona/grupa kart): biała karta, ramka
   --site-light, cień, uniesienie na hover.
   Uwaga: w projekcie NIE MA Font Awesome (Twb5 zakłada <i class="fas
   fa-*">), więc te ikony są ukryte - bez tego renderowałyby się jako
   puste kwadraciki. Rozdzielacze "|" w linii meta zostają (czysty tekst
   z szablonu, nie CSS).
   ============================================================ */

.news-list-view {
    list-style: none;
    padding-left: 0;
    display: flex;
    flex-direction: column;
    gap: 2.25rem;
}

.news-list-view .list-group-item {
    background: linear-gradient(135deg, #F9F9F6, #EAECE6);
    border: 1px solid #8C7864;
    border-radius: var(--bs-border-radius);
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
    padding: 1.5rem;
    transition: box-shadow .25s ease, border-color .25s ease, transform .25s ease;
}

.news-list-view .list-group-item:hover {
    box-shadow: 0 10px 24px rgba(3, 37, 42, .18);
    border-color: #D46A37;
    transform: translateY(-3px);
}

.news-list-item h3 {
    font-size: 1.4rem;
    font-weight: 700;
    margin-bottom: .5rem;
}

.news-list-item h3 a {
    color: #2D4A3E;
    text-decoration: none;
    transition: color .15s ease;
}

.news-list-item h3 a:hover {
    color: #D46A37;
}

.news-list-item .extra,
.frame-type-news_newsdetail .extra {
    color: #D46A37;
    font-size: .875rem;
    margin-bottom: .75rem;
}

.news-list-item .extra i,
.frame-type-news_newsdetail .extra i,
.frame-type-news_newsdetail .news-related i {
    display: none;
}

.news-list-item .extra .label,
.frame-type-news_newsdetail .extra .label {
    background: #F9F9F6;
    color: #2D4A3E;
    padding: .1rem .6rem;
    border-radius: 1rem;
    font-size: .8rem;
}

.news-list-item .lead {
    font-size: 1rem;
    color: #2C3531;
}

/* Paginacja - style spójne z resztą serwisu (dotyczy każdej paginacji
   w projekcie zbudowanej na natywnych klasach Bootstrapa, nie tylko news) */
.pagination {
    gap: .35rem;
}

.pagination .page-link {
    border: 1.5px solid #EAECE6;
    color: #2D4A3E;
    border-radius: var(--bs-border-radius);
    transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.pagination .page-link:hover {
    background-color: #F9F9F6;
    border-color: #D46A37;
    color: #2D4A3E;
}

.pagination .page-item.active .page-link {
    background-color: #2D4A3E;
    border-color: #2D4A3E;
    color: #ffffff;
}

.pagination .page-item.disabled .page-link {
    border-color: #EAECE6;
    color: #D46A37;
    opacity: .5;
}

/* Przyciski "pierwsza"/"poprzednia"/"następna"/"ostatnia" (dodane obok
   oryginalnej listy numerów stron w Partials/List/Pagination.html) są
   STAŁE (flex-shrink:0) po obu stronach - środkowa lista numerów jest
   w osobnym, przewijalnym poziomo kontenerze (.page-numbers-viewport),
   więc przy dużej liczbie stron (np. Relacje ~55) pokazuje się tyle
   numerów ile się zmieści, bez zawijania do nowego wiersza - reszta
   dostępna przewinięciem, strzałki po bokach zawsze widoczne. */
.pagination.pagination-scroll {
    flex-wrap: nowrap;
    overflow: hidden;
}

.pagination.pagination-scroll .pagination-fixed {
    flex-shrink: 0;
}

.pagination.pagination-scroll .page-numbers-viewport {
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: thin;
}

.pagination.pagination-scroll .page-numbers-inner {
    display: flex;
    list-style: none;
    padding: 0;
    margin: 0;
    gap: .35rem;
    width: max-content;
}

/* Widok szczegółowy pojedynczego newsa/relacji — to samo tło/ramka co
   karta na liście, żeby oba widoki wyglądały spójnie */
.frame-type-news_newsdetail .frame-inner {
    background: linear-gradient(135deg, #F9F9F6, #EAECE6);
    border: 1px solid #8C7864;
    border-radius: var(--bs-border-radius);
    padding: 1.5rem;
}

.frame-type-news_newsdetail h1 {
    border-color: #EAECE6 !important;
    color: #2D4A3E;
}

.frame-type-news_newsdetail .lead {
    font-size: 1.1rem;
}

.frame-type-news_newsdetail .thumbnail {
    border: 1.5px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    padding: .5rem;
    margin-bottom: 1rem;
    background: #ffffff;
}

.frame-type-news_newsdetail .thumbnail img {
    border-radius: calc(var(--bs-border-radius) - 3px);
}

.frame-type-news_newsdetail .thumbnail .caption {
    text-align: center;
    margin-top: .5rem;
    font-size: .9rem;
    color: #D46A37;
}

.frame-type-news_newsdetail .news-related .list-group-item {
    border: none;
    border-top: 1px solid #EAECE6;
    border-radius: 0;
    padding: .65rem 0;
}

.frame-type-news_newsdetail .news-related .list-group-item:first-child {
    border-top: none;
}

/* ============================================================
   1h. TŁO STRONY — fotografia Trawersu (odpowiednik main.css/szlakbrdy,
   ale WŁASNY plik - ten blok jest per-site, nie ma go w main.css)
   ============================================================ */

body {
    /* Font serwisu (self-hosted, fonts-local.css) - :root override nie działa
       cross-file w tym projekcie, więc ustawiony bezpośrednio jako właściwość */
    font-family: 'Barlow', system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    background-image: url('/fileadmin/user_upload/trawers/background_trawers.webp');
    background-size: cover;
    background-position: center top;
    background-attachment: fixed;
    background-repeat: no-repeat;
}

/* Wymuszenie odstępów między elementami listy Bootstrap */
.news-list-view .list-group-item {
    margin-bottom: 0.3rem !important; /* Tutaj regulujesz wielkość odstępu */
}

/* Usunięcie marginesu pod ostatnim elementem, żeby nie psuł układu strony */
.news-list-view .list-group-item:last-child {
    margin-bottom: 0 !important;
}


/* ============================================================
   10. BANER COOKIECONSENT (bootstrap-package) — literalny odpowiednik
   sekcji main.css "10. BANER COOKIECONSENT", paleta Trawersu.
   Tło baneru używa koloru "info" z ORYGINALNEGO zestawu palety Trawersu
   ($info: #3B7197, dostarczony przez użytkownika 2026-08-03), NIE
   primary/dark - gradient to jasny/ciemny ODCIEŃ TEJ SAMEJ barwy info
   (przeliczone w HSL, nie inny kolor marki), ten sam wzorzec co main.css.
   ============================================================ */
:root {
    --cookieconsent-bg: #152835;
    --cookieconsent-color: #ffffff;
    --cookieconsent-link-color: #82AFCE;
    --cookieconsent-button-bg: #2D4A3E;
}

.cc-window {
    background-image: linear-gradient(135deg, #152835, #0D1921);
    box-shadow: 0 -4px 20px rgba(13, 25, 33, .3);
    position: fixed;
}

.cc-header {
    color: #82AFCE;
}

.cc-link:hover,
.cc-link:focus {
    color: #ffffff;
}

/* "Wodotrysk" - przesuwający się pasek światła, patrz main.css (ten sam
   mechanizm/animacja, uniwersalny - @keyframes cc-shine zdefiniowane raz
   w main.css, ten plik ładuje się PO nim). */
.cc-window::after {
    content: '';
    position: absolute;
    top: 0;
    left: -60%;
    width: 40%;
    height: 100%;
    background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .16), transparent);
    animation: cc-shine 7s ease-in-out infinite;
    pointer-events: none;
}

.cc-btn {
    border-radius: var(--bs-border-radius);
    background-image: linear-gradient(135deg, #D46A37, #2D4A3E);
    border: none;
    color: #ffffff;
    box-shadow: 0 2px 8px rgba(18, 22, 20, .25);
    transition: box-shadow .2s ease, transform .2s ease, background-image .2s ease;
}

.cc-btn:hover,
.cc-btn:focus {
    background-image: linear-gradient(135deg, #2D4A3E, #1E2522);
    box-shadow: 0 4px 14px rgba(18, 22, 20, .35);
    transform: translateY(-1px);
    color: #ffffff;
}

/* ============================================================
   11. STRONA WYNIKÓW WYSZUKIWANIA (ke_search) - odpowiednik
   main.css sekcja 11, kolory literalne Trawers
   ============================================================ */

.tx-kesearch-pi1 .clearer {
    display: block;
    height: 0;
    line-height: 0;
    clear: both;
}

.tx-kesearch-pi1 form {
    margin-bottom: 1.5rem;
}

.kesearch_searchbox {
    border: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: .75rem;
}

.kesearchbox {
    flex: 1 1 260px;
    margin-bottom: 0;
}

#ke_search_sword {
    width: 100%;
    border: 1px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    padding: .6rem .9rem;
    font-size: 1rem;
    color: #2C3531;
}

#ke_search_sword:focus {
    outline: none;
    border-color: #2D4A3E;
    box-shadow: 0 0 0 .15rem #F9F9F6;
}

/* Przyciski Anuluj/Szukaj wyrównane wysokością z polem tekstowym
   (padding .6rem + border 1px z obu stron = calc niżej), tak samo jak
   .nav-search-submit w sekcji 1. (dropdown w górnym menu). */
span.resetbutt a.resetButton,
span.submitbutt input[type="submit"] {
    display: inline-flex;
    align-items: center;
    height: calc(1.5em + 1.2rem + 2px);
    padding: 0 1.3rem;
    border-radius: var(--bs-border-radius);
    font-weight: 600;
    font-size: 1rem;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

span.submitbutt input[type="submit"] {
    border: 1px solid #2D4A3E;
    background: #2D4A3E;
    color: #fff;
}

span.submitbutt input[type="submit"]:hover {
    background: #1E2522;
    border-color: #1E2522;
}

span.resetbutt a.resetButton {
    border: 1px solid #EAECE6;
    background: transparent;
    color: #2D4A3E;
}

span.resetbutt a.resetButton:hover {
    background: #F9F9F6;
    border-color: #2D4A3E;
}

#kesearch_num_results {
    color: #D46A37;
    font-size: .9rem;
    margin-bottom: .75rem;
}

/* Sortowanie wyników (opcja w BE wtyczki - obecnie wyłączona na
   wszystkich serwisach, ale styl gotowy "na przyszłość" tak jak
   indeksery ke_search - patrz project_ke_search_news_indexing.md) */
#kesearch_ordering .ordering {
    margin-bottom: 1rem;
}

#kesearch_ordering ul {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem 1rem;
    list-style: none;
    padding: 0;
    margin: 0;
}

#kesearch_ordering li.sortlink a {
    color: #2D4A3E;
    text-decoration: none;
    font-size: .9rem;
}

#kesearch_ordering li.sortlink a:hover {
    text-decoration: underline;
}

#kesearch_ordering span.up,
#kesearch_ordering span.down {
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: .3em;
    vertical-align: middle;
}

#kesearch_ordering span.up {
    border-style: solid;
    border-width: 0 .3em .35em;
    border-color: transparent transparent #2D4A3E;
}

#kesearch_ordering span.down {
    border-style: solid;
    border-width: .35em .3em 0;
    border-color: #2D4A3E transparent transparent;
}

/* Karty wyników - ten sam wzorzec co .news-list-view (sekcja 9) */
#kesearch_results {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.result-list-item {
    background: linear-gradient(135deg, #F9F9F6, #EAECE6);
    border: 1px solid #8C7864;
    border-radius: var(--bs-border-radius);
    box-shadow: 0 8px 22px rgba(3, 37, 42, .08);
    padding: 1.75rem 2rem;
    transition: box-shadow .25s ease, border-color .25s ease, transform .25s ease;
}

.result-list-item:hover {
    box-shadow: 0 10px 24px rgba(3, 37, 42, .18);
    border-color: #D46A37;
    transform: translateY(-3px);
}

.result-number {
    color: #D46A37;
    font-weight: 600;
    margin-right: .4rem;
}

.result-title {
    display: block;
    font-size: 1.2rem;
    font-weight: 600;
    color: #2D4A3E;
    margin-bottom: .5rem;
}

/* Wynik może nie mieć linku (strona docelowa ukryta w drzewie stron -
   przypadek Seniorzy, patrz project_ke_search_news_indexing.md) -
   .result-title jest wtedy zwykłym tekstem bez <a>, poniższe reguły
   celują tylko w <a>, więc taki wynik zostaje czytelny, po prostu bez
   podkreślenia/koloru linku. */
.result-title a {
    color: inherit;
    text-decoration: none;
}

.result-title a:hover {
    text-decoration: underline;
}

.add-info {
    font-size: .85rem;
    color: #D46A37;
    margin-bottom: .75rem;
}

.add-info i {
    font-style: normal;
    font-weight: 600;
}

.teaser_icon img {
    float: left;
    max-width: 90px;
    max-height: 90px;
    object-fit: cover;
    border-radius: var(--bs-border-radius);
    margin: 0 1rem .5rem 0;
    border: 1px solid #EAECE6;
    background: #ffffff;
}

.result-teaser {
    display: block;
    color: #2C3531;
    line-height: 1.55;
}

/* Podświetlenie trafionej frazy w zajawce (wtyczka sama owija ją w
   <span class="hit"> w resultrow.teaser) - kolor warning, tak jak reszta
   akcentów/podświetleń w serwisie (np. aktywna pozycja menu, sekcja 1/8) */
.result-teaser .hit,
.result-title .hit {
    background: #E5A93C;
    color: #121614;
    font-weight: 700;
    padding: 0 .15em;
    border-radius: 2px;
}

/* Stronicowanie */
.pages_total {
    padding: .75rem 0;
    margin: 1.5rem 0;
    border-top: 1px solid #EAECE6;
    border-bottom: 1px solid #EAECE6;
    text-align: center;
}

.result_txt {
    font-size: .85rem;
    color: #D46A37;
    margin-bottom: .5rem;
}

.kesearch_pagebrowser ul.pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .35rem;
    list-style: none;
    padding: 0;
    margin: 0;
}

.kesearch_pagebrowser .page-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.2rem;
    height: 2.2rem;
    padding: 0 .6rem;
    border: 1px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    color: #2D4A3E;
    text-decoration: none;
    font-size: .9rem;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.kesearch_pagebrowser .page-link:hover {
    background: #F9F9F6;
    border-color: #2D4A3E;
}

.kesearch_pagebrowser .page-item.active .page-link {
    background: #2D4A3E;
    border-color: #2D4A3E;
    color: #fff;
}

.kesearch_pagebrowser .page-item.disabled .page-link {
    opacity: .4;
    pointer-events: none;
}

#kesearch_query_time {
    text-align: center;
    font-size: .8rem;
    color: #D46A37;
    margin-top: 1rem;
}

/* Filtry (opcja w BE wtyczki, obecnie nieużywana na żadnym serwisie) -
   styl gotowy "na przyszłość", tak jak sortowanie wyżej */
#kesearch_filters {
    margin-bottom: 1rem;
}

#kesearch_filters select {
    border: 1px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    padding: .5rem .7rem;
    margin-bottom: .75rem;
}

#kesearch_filters .list {
    border: 1px solid #EAECE6;
    border-radius: var(--bs-border-radius);
    padding: .75rem;
    margin-bottom: .75rem;
    width: auto;
    max-width: 320px;
}

#kesearch_filters .list .head {
    display: block;
    font-weight: 600;
    color: #2D4A3E;
    border-bottom: 1px solid #EAECE6;
    padding-bottom: .5rem;
    margin-bottom: .5rem;
}

#kesearch_filters .list ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

#kesearch_filters .list li {
    margin-bottom: .35rem;
}

#kesearch_filters .list li a {
    color: #2C3531;
    text-decoration: none;
}

#kesearch_filters .list li a:hover {
    color: #2D4A3E;
    text-decoration: underline;
}

#kesearch_filters .list li.selected {
    font-weight: 600;
    color: #2D4A3E;
}

#kesearch_filters label {
    display: block;
    font-weight: 600;
    color: #2D4A3E;
    margin-bottom: .35rem;
}

/* ============================================================
   ODŚWIEŻENIE WYGLĄDU (2026-08-13) — odpowiednik main.css sekcja 12,
   kolor literalny Trawers. Wypróbowane najpierw na wędrowniku na
   wyraźną prośbę, potem zaakceptowane i rozszerzone na resztę serwisów -
   reszta efektu (wow-reveal, animacja banera, prefers-reduced-motion)
   jest wspólna w main.css, tu zostaje TYLKO nadpisanie koloru domalówki
   na miniaturkach Aktualności/Relacji. */
.news-list-item .col-md-3::after {
    background: linear-gradient(160deg, #2D4A3E 0%, transparent 65%);
}
