/*
Theme Name: Centrum Kultury Resko
Theme URI: https://centrumkulturyresko.pl
Author: Mateusz Świstak
Author URI: https://centrumkulturyresko.pl
Description: Motyw WordPress dla Centrum Kultury, Sportu i Rekreacji w Resku. Zawiera własny panel administracyjny do zarządzania sekcjami i tekstami strony głównej, artykułami (aktualnościami), galeriami zdjęć, materiałami wideo, świetlicami oraz wydarzeniami w kalendarzu. Wygląd 1:1 z koncepcją statyczną (jasna, lekka „scena" z kolorami marki).
Version: 1.22.0
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: cksir
Tags: culture, events, calendar, gallery, custom-admin, polish, full-site-editing-ready
*/

/* Wersja: 1.22.0 — Odnośniki do innych stron w menu: panel „Centrum Kultury →
   Podstrony" ma nową sekcję, w której dodaje się pozycje menu prowadzące poza
   serwis (np. „Muzeum" → muzeum.resko.pl). Odnośnik nie tworzy podstrony —
   ma nazwę, adres (bez „https://” też zadziała), przełącznik „W menu"
   i przełącznik otwierania w nowej karcie; kolejność układa się przeciąganiem.
   Odnośniki dołączają się także do własnego menu redakcji (bez dublowania
   pozycji dodanych ręcznie), a pozycje „w nowej karcie" dostają na stronie
   target="_blank" wraz z rel="noopener noreferrer".
   Zgodna z CKSIR_VERSION w functions.php. */

/* Wersja: 1.21.2 — Redaktor redaguje całą treść serwisu: ekrany tekstów
   strony głównej, Siłowni i „Zarezerwuj salę" wymagają uprawnienia do stron
   (edit_pages) zamiast uprawnień administratora, więc redaktor wchodzi na nie
   z menu panelu i z odnośnika „Edytuj treść" w „Podstronach" — i może zapisać
   zmiany (formularze Settings API dostały filtr option_page_capability_*).
   Ustawienia ogólne, użytkownicy i świetlice pozostają u administratora.
   Zgodna z CKSIR_VERSION w functions.php. */

/* Wersja: 1.21.0 — Podstrony: panel „Centrum Kultury → Podstrony" zarządza
   wszystkimi podstronami. Podstrony stałe mają przełączniki „Widoczna"
   i „W menu" oraz odnośnik „Edytuj treść". Własne podstrony (strony
   WordPressa, np. „O nas", cennik): dodawanie, uproszczony ekran edycji,
   przełączniki widoczności i menu, kolejność w menu układana przeciąganiem.
   Ukryta podstrona przekierowuje na główną i znika z menu, kafelków,
   wyszukiwarki oraz map witryny. Redaktor dostał uprawnienia do stron
   i dostęp do panelu „Podstrony" (wersja definicji ról podbita do 3). */

/* Wersja: 1.20.0 — Podstrony: nowa pozycja panelu „Centrum Kultury →
   Podstrony" — KAŻDĄ podstronę serwisu (Wydarzenia, Aktualności, Galerie,
   Świetlice, Siłownia, Zarezerwuj salę) można włączyć lub ukryć jednym
   przełącznikiem; ukryta podstrona przekierowuje na główną, a odnośniki do
   niej (menu, kafelki, ścieżki Programu, przyciski hero, „Szybkie sprawy")
   znikają automatycznie. Świetlice: DOMYŚLNIE UKRYTE wraz ze wszystkimi
   połączeniami ze strony głównej. Nowa podstrona „Siłownia" (/silownia/):
   godziny otwarcia, cennik, informacje i blok kontaktowy — teksty edytowalne
   w panelu „Centrum Kultury → Siłownia"; Siłownia zajmuje miejsce Świetlic
   na stronie głównej (kafelek Szybkiego dostępu, ścieżka Programu, przycisk
   hero, menu). Kontakt: nagłówek karty to pełna nazwa instytucji z ustawień
   („Centrum Kultury, Sportu i Rekreacji w Resku"). Zgodna z CKSIR_VERSION
   w functions.php. */

/* Wersja: 1.19.0 — Typografia: jeszcze większa czcionka treści (artykuły,
   wydarzenia i strony statyczne: .prose 21px / 19px mobile) oraz tekstów na
   podstronach (leady, opisy świetlic, fakty, pasy CTA). Hero: usunięty kafelek
   „Zadzwoń do nas" (szybka akcja zostaje tylko dla włączonej rezerwacji sal).
   Kalendarium: panel pod kalendarzem układa dużą datę obok plakietki rodzaju
   z godziną pod nią, a lokalizacja zajmuje osobny wiersz na całej szerokości.
   Nawigacja: hamburger rysowany w CSS (równe kreski zamiast znaku „☰").
   Świetlice: bez liczników w nagłówku. Wydarzenia: liczniki na telefonie
   w dwóch kolumnach po połowie szerokości. Zgodna z CKSIR_VERSION
   w functions.php. */

/* Wersja: 1.18.0 — Strona wydarzenia: kadr plakatu przyjmuje proporcje
   dodanego pliku (pionowy plakat = pionowy kadr), a plakietka z datą jest
   mniejsza i siedzi w rogu — nie zasłania grafiki. Przyciski „Dodaj do
   kalendarza" nazywają się teraz „Dodaj do kalendarza Google". Udostępnianie:
   kopiowanie linku działa też na telefonie (iOS/http) i pokazuje dymek
   „Skopiowano!", a przycisk Facebooka na telefonie otwiera systemowy arkusz
   udostępniania (zamiast pustej aplikacji FB). Hero: tytuł wyróżnionego
   wydarzenia jest odnośnikiem, a zdjęcie tłem całego kafelka (kadrowanym od
   góry) — tak samo pierwszy artykuł w Aktualnościach. Kalendarium: panel pod
   kalendarzem układa plakietkę rodzaju oraz godzinę i miejsce obok dużej daty
   (mniej pustych linii). Rezerwacja sal CAŁKOWICIE WYŁĄCZONA na stronie
   publicznej (menu, kafel hero, „Szybkie sprawy", lista świetlic; /rezerwacja/
   przekierowuje na główną) — powrót filtrem cksir_booking_enabled. Treść:
   większa czcionka artykułów/wydarzeń, a podwójny enter w polach opisu
   zapisuje się jako akapit. Zgodna z CKSIR_VERSION w functions.php. */

/* Wersja: 1.17.0 — Kalendarz otwiera się zawsze na BIEŻĄCYM miesiącu (nie na
   miesiącu wyróżnionego wydarzenia). Wydarzenia kilkudniowe: nowe pole „Data
   zakończenia" (wp-admin i panel opiekuna), oznaczanie wszystkich dni zakresu
   w kalendarzu, zakres na plakietkach dat („1–31 lip") i w terminie wydarzenia,
   trwające wydarzenie liczy się jako aktualne (hero / licznik / rezerwacje sal).
   Zdjęcia: duży kadr artykułu i nagłówka wydarzenia dostał reguły dopasowania
   (koniec szarych/czarnych pasów), a plakaty pokazują się w całości na rozmytym
   tle zamiast twardego kadrowania do wycinka. Zgodna z CKSIR_VERSION
   w functions.php. */

/* Wersja: 1.16.1 — Strona główna na telefonie: przywrócone przewijanie
   panelowe. Przyciąganie sekcji wróciło z „proximity" na „mandatory", więc
   przewijanie znów zatrzymuje się równo na każdym kafelku (nie w połowie /
   nie przeskakuje całego). Dół wyższych kafelków pozostaje osiągalny dzięki
   „justify-content: safe center". Zgodna z CKSIR_VERSION w functions.php. */

/* Wersja: 1.13.0 — Strona „Zarezerwuj salę": teksty edytowalne w panelu
   (nowa pozycja menu), usunięty licznik sal. Telefony i e-maile wyraźnie
   klikalne (ikona + podkreślenie). Kalendarz domyślnie zaznacza wydarzenie
   wyróżnione / najbliższe, nie pierwszy dzień miesiąca. Hero: bez kropek
   paginacji, czas zmiany treści ustawiany w panelu. Zgodna z CKSIR_VERSION
   w functions.php. */

/* Wersja: 1.12.0 — Stopka: nowy blok danych kontaktowych (adres z powiatem
   i województwem, lista telefonów, e-mail, e-Doręczenia). Nowe pola w
   „Ustawieniach ogólnych": powiat i województwo, telefony dodatkowe,
   adres e-Doręczeń. Zgodna z CKSIR_VERSION w functions.php. */

/* Wersja: 1.11.0 — Nowe formularze treści w panelu (wydarzenia, galerie):
   przyklejony dolny pasek „Opublikuj" z przełącznikiem „Szkic", wybór „Rodzaju"
   na końcu formularza, jeden wybór terminu (data + godzina), miejsca
   wielokrotnego użytku (zapisywane i wybierane, ze świetlicami), wstęp/bilety
   z ceną oraz mapa „wskaż na mapie" zamiast wpisywania współrzędnych.
   Zgodna z CKSIR_VERSION w functions.php. */

/*
  Główny arkusz wyglądu jest ładowany osobno z assets/css/main.css
  (patrz inc/enqueue.php). Ten plik zawiera wyłącznie nagłówek motywu
  wymagany przez WordPress oraz drobne reguły zależne od edytora.
*/

/* Drobne poprawki, gdy strona jest wyświetlana w środowisku WordPress. */
.admin-bar .main-nav { top: 32px; }
@media screen and (max-width: 782px) {
  .admin-bar .main-nav { top: 46px; }
}

/* Kalendarz dynamiczny: nazwa miesiąca ma pełny rozmiar (rok pozostaje
   wyszarzony i mniejszy — to zachowanie z koncepcji). */
.month-title .cal-month {
  color: var(--ink);
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
}

/* Własne logo w znaku marki (gdy ustawione) — pełna grafika w proporcjach,
   bez kadrowania. Wysokość (zawsze 64px) bierze z kontenera .brand-mark.has-logo. */
.brand-mark .brand-logo {
  display: block;
  width: auto;
  height: 100%;
  max-width: 320px;
  object-fit: contain;
  border-radius: 0;
}

/* W trybie kwadratowym (logo z tekstem) grafika wypełnia kwadrat 64×64
   i jest wpasowana bez zniekształceń (contain). */
.brand-mark.has-logo.is-square .brand-logo {
  width: 100%;
  height: 100%;
  max-width: none;
}

/* Obsługa zdjęć w kafelkach kart, gdy dodano obrazek wyróżniający. */
.post-card-media img,
.event-card-media img.event-photo,
.gallery-card-cover img,
.film-cover img,
.story-thumb img,
.story-visual img,
.photo img,
.tile img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 1;
}

/* Gdy karta ma prawdziwe zdjęcie, ukryj dekoracyjne kształty pod spodem. */
.has-photo::before,
.has-photo::after { display: none; }

/* Zdjęcie w dużym kadrze artykułu / strony / nagłówka wydarzenia wypełnia
   cały kadr. Wcześniej te obrazki nie miały żadnej reguły dopasowania —
   renderowały się w naturalnym rozmiarze wewnątrz kadru z overflow:hidden,
   przez co obok zdjęcia zostawał pas ciemnego tła (szary / czarny pasek). */
.figure-visual img,
.event-hero-media img.event-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 1;
}

/* Kadr musi być punktem odniesienia dla zdjęć pozycjonowanych absolutnie. */
.figure-visual,
.event-hero-media,
.featured-media { position: relative; }

/* Plakaty w pełnym kadrze: para obrazków z tego samego pliku. Rozmyte tło
   (media-backdrop) wypełnia kadr, a właściwe zdjęcie (media-contain) pokazuje
   się W CAŁOŚCI, bez kadrowania. Dzięki temu pionowy plakat wydarzenia nie
   jest przycinany do przypadkowego wycinka. */
.has-photo .media-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 1;
  filter: blur(24px) saturate(1.08) brightness(0.76);
  transform: scale(1.15);
}

.has-photo .media-contain {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  z-index: 2;
}

/* Plakietka daty wydarzenia kilkudniowego („1–31"): mniejsza liczba,
   żeby zakres zmieścił się w kwadracie plakietki. */
.date-badge.is-range b { font-size: 24px; letter-spacing: -0.045em; }
.date-badge.is-range small { letter-spacing: 0.02em; }
.event-hero-media .date-badge.is-range b { font-size: clamp(26px, 4vw, 36px); }
.event-card-media .date-badge.is-range b { font-size: 20px; }

/* Panel kalendarza: zakres dni („1–31") jest dłuższy niż pojedynczy dzień —
   zmniejszamy rozmiar, żeby nie rozpychał panelu. */
.event-date-large strong.is-range { font-size: 56px; letter-spacing: -0.055em; }
@media (max-width: 720px) {
  #wydarzenia .event-date-large strong.is-range { font-size: 32px; }
}

/* Wpisana treść redakcyjna (klasyczne bloki WordPress) w obrębie .prose. */
.prose img { max-width: 100%; height: auto; border-radius: var(--radius-md); }
.prose .wp-block-image { margin: 1.4em 0 0; }
.prose h2:first-child,
.prose h3:first-child { margin-top: 0; }

/* Responsywne osadzenie wideo (YouTube/Vimeo/plik). */
.cksir-video-embed {
  position: relative;
  width: 100%;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow);
  background: #15110f;
  aspect-ratio: 16 / 9;
}
.cksir-video-embed iframe,
.cksir-video-embed video,
.cksir-video-embed .wp-video,
.cksir-video-embed .mejs-container {
  position: absolute !important;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
}

/* Strona „Siłownia" (/silownia/): wiersze godzin otwarcia i cennika oraz
   pełnowymiarowa karta informacji pod dwiema kartami głównymi. */
.gym-rows {
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
  display: grid;
  gap: 0;
  position: relative;
  z-index: 2;
}
.gym-rows li {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  gap: 6px 16px;
  padding: 12px 0;
  border-top: 1px solid var(--line);
  font-size: 17px;
}
.gym-rows li b {
  font-weight: 760;
  letter-spacing: -0.01em;
  white-space: nowrap;
}
.dark .gym-rows li {
  border-top-color: rgba(255, 255, 255, 0.18);
}
.contact-card.gym-info {
  min-height: 0;
  margin-top: 18px;
}
.contact-card.gym-info .prose {
  font-size: 18px;
  line-height: 1.65;
}

/* Paginacja archiwów. */
.cksir-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-top: 36px;
}
.cksir-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 44px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.5);
  font-weight: 760;
  color: var(--ink);
}
.cksir-pagination .page-numbers.current,
.cksir-pagination a.page-numbers:hover {
  background: var(--dark);
  color: var(--white);
  border-color: transparent;
}
