/* Poprawki dostępności WCAG 2.1 AA (W-01–W-27). Ładowany po arkuszu oddziału i search.css;
   kolory oddziałów pochodzą ze zmiennej --hover-color, więc plik jest wspólny dla wszystkich domen. */

/* ── W-13 Kontrast: szary #999 (2,84:1) → #636363 (6,0:1 na białym, 5,5:1 na #f6f6f6) ── */
:root {
  --grey: #636363;
  --text-muted: #555;
  --focus-color: #0b57d0;
}
body.contrast-mode {
  --focus-color: var(--contrast-color);
  --text-muted: var(--contrast-color);
  --grey: var(--contrast-color);
}

/* półprzezroczysty tekst (opacity 0,5–0,6 dawało 3,0–4,2:1) → pełne krycie i ciemniejszy kolor */
header .main-menu a {
  opacity: 1;
  color: var(--text-muted);
}
header .main-menu a.current,
header .main-menu a:hover {
  color: var(--dark);
}
.news .news-item .text-wrapper p,
.events-list .events-item .date {
  opacity: 1;
  color: var(--text-muted);
}
.events-menu a {
  opacity: 1;
  color: var(--text-muted);
}
.events-menu a.current,
.events-menu a:hover {
  color: var(--dark);
}
body.contrast-mode header .main-menu a,
body.contrast-mode header .main-menu a.current,
body.contrast-mode header .main-menu a:hover,
body.contrast-mode .events-menu a,
body.contrast-mode .events-menu a.current,
body.contrast-mode .events-menu a:hover {
  color: var(--contrast-color);
}
/* stany hover, które obniżały kontrast przez opacity */
footer a:hover,
.news .news-item .text-wrapper .read-more:hover,
.articles-list .read-more:hover,
.tns-controls button:hover {
  opacity: 1;
}
footer a:hover,
.news .news-item .text-wrapper .read-more:hover,
.articles-list .read-more:hover {
  color: var(--hover-color);
}
body.contrast-mode a.button:hover {
  opacity: 1;
  text-decoration: underline;
}
body.contrast-mode footer a:hover,
body.contrast-mode .read-more:hover {
  color: var(--contrast-color);
  text-decoration: underline;
}
::placeholder {
  color: currentColor;
  opacity: 0.75;
}
:focus::placeholder {
  opacity: 0.75;
}
/* zbyt mały tekst w stopce (9 px) */
footer .footer-logo p {
  font-size: 12px;
}
.search-page__date {
  opacity: 1;
}
.search-page__type {
  font-size: 12px;
}

/* ── W-17 Widoczny fokus (motyw usuwał outline dla wszystkich elementów) ── */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--focus-color) !important;
  outline-offset: 2px !important;
}
main:focus-visible,
#main-content:focus {
  outline: none !important;
}
.styled-select select:focus-visible {
  color: currentColor;
  text-shadow: none;
}
/* elementy przycinane przez overflow: obrys do wewnątrz */
.slider a:focus-visible,
.item-event-header a:focus-visible,
label input:focus-visible {
  outline-offset: -3px !important;
}

/* ── W-24 Fokus niezasłonięty przez przyklejony nagłówek (≤1112 px) ── */
@media (max-width: 1112px) {
  html {
    scroll-padding-top: 96px;
  }
}

/* ── W-06 Skip link ── */
.skip-link {
  position: absolute;
  left: 8px;
  top: -100px;
  z-index: 100000;
  padding: 12px 20px;
  background: var(--dark);
  color: var(--light);
  font-weight: 600;
  text-decoration: underline;
}
.skip-link:focus {
  top: 8px;
}

.sr-only {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ── W-04, W-05 Przyciski w nagłówku (wcześniej <div> i <a> bez href) ── */
header .header-right .dark-mode,
#menu-opener {
  background: none;
  border: 0;
  padding: 0;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
header .header-right .dark-mode svg {
  display: block;
}

/* ── W-07 Podmenu: przycisk zamiast odnośnika „###”, rozwijanie z klawiatury ── */
header .secondary-menu .submenu-toggle,
header .secondary-menu .menu-label,
footer .menu-label {
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  color: inherit;
  font: inherit;
  text-transform: inherit;
  letter-spacing: inherit;
  cursor: default;
}
header .secondary-menu .submenu-toggle {
  cursor: pointer;
}
header .secondary-menu .wp-menu .menu-item.submenu-open > .sub-menu {
  display: inline-block;
}
/* menu boczne podstron: etykieta działu jest w nagłówku strony, tak jak wcześniej ukryty odnośnik */
.sidebar-submenu .wp-menu > .menu-item.current-menu-ancestor.menu-item > .menu-label {
  display: none;
}
@media (max-width: 1112px) {
  header .header-bottom .secondary-menu .submenu-toggle {
    display: block;
    width: 100%;
    text-align: center;
  }
}

/* ── W-12 Nagłówki: zmiana poziomów bez zmiany wyglądu ── */
h2.section-header,
.newsletter .newsletter-title {
  font-size: 40px;
}
.newsletter .newsletter-title {
  width: 30%;
  margin: 0.67em 120px 0.67em 0;
}
.newsletter .newsletter-lead {
  font-family: 'Inter', sans-serif;
  font-size: 32px;
  font-weight: 400;
  line-height: 1.5;
  margin: 1em 0 48px;
  max-width: 737px;
}
.news .news-item .text-wrapper h3 {
  font-size: 32px;
  margin: 0.83em 0;
}
.slider .slider-item .text-wrapper h2 {
  font-size: 48px;
  line-height: 1.3;
  margin-top: 0;
}
.slider .slider-item .text-wrapper h2 a,
.events-list .events-item h3 a,
.articles-list .articles-item h2 a {
  text-decoration: none;
}
.events-list .events-item h3 {
  font-size: 24px;
  margin: 0 32px;
}
@media (max-width: 1112px) {
  h2.section-header,
  .newsletter .newsletter-title {
    font-size: 32px;
  }
  .newsletter .newsletter-title {
    margin-right: 72px;
  }
  .newsletter .newsletter-lead {
    margin-top: 24px;
    font-size: 24px;
  }
  .news .news-item .text-wrapper h3 {
    font-size: 24px;
  }
  .slider .slider-item .text-wrapper h2 {
    font-size: 40px;
    margin-bottom: 4px;
  }
}
@media (max-width: 768px) {
  .newsletter .newsletter-title {
    margin-right: 0;
    width: 100%;
  }
  .slider .slider-item .text-wrapper h2 {
    font-size: 32px;
  }
  .events-list .events-item h3 {
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 6px;
  }
}

/* ── W-15 Newsletter: widoczna etykieta pola e-mail, odnośnik do polityki prywatności ── */
.newsletter .tnp.tnp-subscription .tnp-field-email label {
  display: block;
}
.newsletter .tnp-privacy-field label {
  color: var(--dark);
}
.newsletter .tnp-privacy-field a {
  text-decoration: underline;
}

/* ── W-16 Wielkość celów dotykowych: ikony w nagłówku 44×44 px ── */
header .socials a:not(.bookstore) {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 0;
}
header .socials .x {
  margin: 0;
}
header .socials a.bookstore {
  align-self: center;
  height: auto;
  padding: 12px 0;
}
header .header-right .dark-mode,
#menu-opener,
.search-toggle {
  position: relative;
}
header .header-right .dark-mode::after,
.search-toggle::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
}
header .header-right .language {
  padding: 12px 6px;
}
.paginate-links a,
.paginate-links span {
  display: inline-block;
  min-width: 44px;
  min-height: 44px;
}
.hidden-text-btn {
  min-width: 44px;
  min-height: 44px;
}

/* ── W-09, W-10 Karuzela: widoczne sterowanie i pauza ── */
.tns-outer > button[data-action] {
  display: inline-block;
  position: absolute;
  z-index: 2;
  left: calc(50% + 32px);
  bottom: 84px;
  padding: 10px 16px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  background: var(--dark);
  color: var(--light);
  cursor: pointer;
}
.tns-controls button {
  width: 44px;
  height: 44px;
  cursor: pointer;
  color: var(--dark); /* etykieta jest w .sr-only; przezroczysty tekst dawał kontrast 1:1 */
}
.tns-liveregion,
.tns-visually-hidden {
  position: absolute;
  left: -10000em;
}
@media (max-width: 768px) {
  .tns-outer > button[data-action] {
    left: 50%;
    transform: translateX(-50%);
    bottom: 20px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── 1.4.10 Reflow: tytuły na liście wpisów miały stałą szerokość 21rem i były ucinane na ekranach 320 px ── */
.articles-list .articles-item h2 {
  max-width: 100%;
}
@media (max-width: 800px) {
  .articles-list .articles-item h2 {
    width: auto;
  }
}

/* zdjęcia w nagłówku wydarzenia: odnośnik nie ma własnej wysokości (obraz pływający), więc obrys rysujemy na obrazie */
.item-event-header .header-image a:focus-visible img {
  outline: 3px solid var(--focus-color);
  outline-offset: -3px;
}

/* ── Kartoteka (wtyczka): style przeniesione z bloku <style> w treści strony; błąd daty opisany tekstem ── */
.kartoteka-date {
  width: 160px;
}
.kartoteka-date.invalid {
  border-color: #c00;
}
.kartoteka-date-error {
  display: block;
  margin-left: 160px;
  color: #b00000;
  font-size: 14px;
}
.kartoteka-date-error:empty {
  display: none;
}
body.contrast-mode .kartoteka-date-error {
  color: var(--contrast-color);
}
#kartoteka-form legend {
  font-family: 'Marcellus', serif;
  font-size: 20px;
  padding: 0 8px;
}

/* tryb wysokiego kontrastu: ikona wyszukiwarki miała czarny kontur na czarnym tle */
body.contrast-mode .search-toggle svg path,
body.contrast-mode .search-offcanvas__close svg path {
  stroke: var(--contrast-color);
}

/* ── Tryb wysokiego kontrastu: komplet elementów ──
   Zmienne kolorów zamieniane w całym serwisie (żółty tekst na czarnym tle), zamiast pojedynczych wyjątków. */
body.contrast-mode {
  --dark: var(--contrast-color);
  --light: #000;
  --grey-bg: #000;
  --border-color: var(--contrast-color);
  --hover-color: #fff;
}
body.contrast-mode input,
body.contrast-mode select,
body.contrast-mode textarea {
  background-color: #000 !important;
  color: var(--contrast-color) !important;
  border-color: var(--contrast-color) !important;
}
body.contrast-mode input[type="submit"],
body.contrast-mode .button,
body.contrast-mode form button,
body.contrast-mode .hidden-text-btn,
body.contrast-mode .tns-outer > button[data-action] {
  background-color: var(--contrast-color) !important;
  color: #000 !important;
}
body.contrast-mode label,
body.contrast-mode label a,
body.contrast-mode legend,
body.contrast-mode th,
body.contrast-mode td,
body.contrast-mode caption {
  color: var(--contrast-color);
}
body.contrast-mode main a,
body.contrast-mode .newsletter a {
  color: var(--contrast-color);
}
body.contrast-mode main a.button,
body.contrast-mode main a.button:hover {
  color: #000;
}
body.contrast-mode table,
body.contrast-mode th,
body.contrast-mode td,
body.contrast-mode fieldset,
body.contrast-mode hr {
  border-color: var(--contrast-color);
}
/* blok sprzedaży biletów GoOut wstawiany skryptem zewnętrznym ma własne białe tło */
body.contrast-mode #gooutSaleForm,
body.contrast-mode #gooutSaleForm div,
body.contrast-mode #gooutSaleForm p {
  background-color: #000 !important;
  color: var(--contrast-color) !important;
}
/* Moduł BIP w trybie wysokiego kontrastu */
body.contrast-mode .bip-wrapper {
  --bip-primary: var(--contrast-color);
  --bip-primary-dark: #fff;
  --bip-accent: var(--contrast-color);
  --bip-accent-hover: #fff;
  --bip-bg: #000;
  --bip-bg-light: #000;
  --bip-bg-sidebar: #000;
  --bip-border: var(--contrast-color);
  --bip-text: var(--contrast-color);
  --bip-text-muted: var(--contrast-color);
  background: #000;
  color: var(--contrast-color);
}
body.contrast-mode .bip-header,
body.contrast-mode .bip-header__title,
body.contrast-mode .bip-header__institution,
body.contrast-mode .bip-search-submit,
body.contrast-mode .bip-menu__link--active,
body.contrast-mode .bip-submenu__link--active,
body.contrast-mode .bip-table thead th,
body.contrast-mode .bip-subcategories-list li a:hover,
body.contrast-mode .bip-pagination .page-numbers.current,
body.contrast-mode .bip-footer,
body.contrast-mode .bip-footer a,
body.contrast-mode .bip-footer__institution a,
body.contrast-mode .bip-footer__links a {
  color: #000 !important;
}
body.contrast-mode .bip-category-card,
body.contrast-mode .bip-table tbody tr:hover {
  background: #000;
}
body.contrast-mode .bip-wrapper label,
body.contrast-mode .bip-wrapper td,
body.contrast-mode .bip-wrapper a:not(.bip-menu__link--active):not(.bip-submenu__link--active) {
  color: var(--contrast-color);
}
body.contrast-mode .bip-footer a:not(#x),
body.contrast-mode .bip-header a:not(#x) {
  color: #000;
}

/* nagłówki w treści wpisów po korekcie poziomu (functions/a11y-content.php) zachowują wygląd pierwotnego poziomu */
.muzn-h1 { font-size: 40px; }
.muzn-h2 { font-size: 32px; }
.muzn-h3 { font-size: 24px; }
.muzn-h4 { font-size: 1em; }
.muzn-h5 { font-size: 0.83em; }
.muzn-h6 { font-size: 0.67em; }
@media (max-width: 1112px) {
  .muzn-h1 { font-size: 32px; }
  .muzn-h2 { font-size: 24px; }
  .muzn-h3 { font-size: 20px; }
}

/* tryb wysokiego kontrastu: kolory wpisane przez redakcję w treści (style="color: …", <font color>) */
body.contrast-mode main [style*="color"],
body.contrast-mode main font[color] {
  color: var(--contrast-color) !important;
  background-color: transparent !important;
}

/* ── Newsletter: układ formularza po przywróceniu widocznych etykiet (oba pola jednakowe, wyrównane) ── */
.newsletter .form-wrapper .tnp.tnp-subscription form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px 24px;
  align-items: end;
  max-width: 737px;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field {
  margin: 0;
  padding: 0;
  width: auto;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field label {
  display: block;
  margin: 0 0 8px;
  font-size: 14px;
  text-align: left;
  color: var(--dark);
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field input[type="text"],
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field input[type="email"] {
  box-sizing: border-box;
  width: 100% !important;
  height: 53px !important;
  margin: 0 !important;
  padding: 0 12px !important;
  background-color: var(--grey-bg) !important;
  border: none !important;
  border-bottom: 1px solid #767676 !important; /* 1.4.11: granica pola min. 3:1 */
  font-size: 14px !important;
  text-align: left;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-privacy-field {
  grid-column: 1;
  align-self: center;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-privacy-field label {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  overflow: visible;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-privacy-field input[type="checkbox"] {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin: 1px 0 0 !important;
  padding: 0;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field-button {
  grid-column: 2;
  text-align: right !important;
}
.newsletter .form-wrapper .tnp.tnp-subscription .tnp-field-button .tnp-submit {
  width: 100%;
  margin: 0 !important;
  padding: 19px 24px !important;
}
@media (max-width: 640px) {
  .newsletter .form-wrapper .tnp.tnp-subscription form {
    grid-template-columns: 1fr;
    text-align: left;
  }
  .newsletter .form-wrapper .tnp.tnp-subscription .tnp-privacy-field,
  .newsletter .form-wrapper .tnp.tnp-subscription .tnp-field-button {
    grid-column: 1;
  }
  .newsletter .form-wrapper form input {
    margin-bottom: 0;
  }
}

/* program: nagłówki filtrów „Oddział” i „Miesiąc” */
.events-menu .events-menu__title {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  margin: 0 0 8px;
}
@media (max-width: 1279px) {
  .events-menu .events-menu__title {
    display: block;
  }
}
/* blok „Plik”: przycisk „Pobierz” nie styka się z odnośnikiem z nazwą pliku i ma co najmniej 24 px wysokości (WCAG 2.2, 2.5.8) */
.wp-block-file a + .wp-block-file__button {
  display: inline-block;
  min-height: 24px;
  line-height: 24px;
  margin-left: 12px;
}
