/*
 * Panel dostępności: tryby kontrastu (punkty 1-6), rozmiar tekstu, odstępy i wygląd panelu (punkty 7-9).
 *
 * Tryby kontrastu panelu dostępności (wymuszona paleta).
 *
 * Zamiast wyliczać pojedyncze elementy, tryb nadaje WSZYSTKIM elementom strony kolor tekstu,
 * tła i obramowań z palety trybu; wyjątki: zdjęcia, wideo, mapy, pasek administratora
 * i podglądy trybów w panelu. Dzięki temu nowe sekcje i szablony działają bez osobnych reguł.
 *
 *   ujw-a11y-high-contrast   = biały tekst na czarnym tle
 *   ujw-a11y-yellow-on-black = żółty tekst na czarnym tle
 *   ujw-a11y-black-on-yellow = czarny tekst na żółtym tle
 *
 * :not(#ujw-a11y-boost) podnosi specyficzność ponad dotychczasowe reguły motywu i wtyczek.
 */

:root.ujw-a11y-high-contrast {
	--ujw-a11y-fg: #fff;
	--ujw-a11y-bg: #000;
}

:root.ujw-a11y-yellow-on-black {
	--ujw-a11y-fg: #ff0;
	--ujw-a11y-bg: #000;
}

:root.ujw-a11y-black-on-yellow {
	--ujw-a11y-fg: #000;
	--ujw-a11y-bg: #ff0;
}

/* 1. Paleta dla wszystkich elementów. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost),
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body,
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body *:not(img, svg, svg *, video, iframe, canvas, picture, source, #wpadminbar, #wpadminbar *, .ujw-a11y-control--contrast, .ujw-a11y-control--contrast *) {
	border-color: var(--ujw-a11y-fg) !important;
	background-color: var(--ujw-a11y-bg) !important;
	background-image: none !important;
	box-shadow: none !important;
	color: var(--ujw-a11y-fg) !important;
	text-shadow: none !important;
	-webkit-text-fill-color: currentColor !important;
}

/* Elementy ozdobne z pseudo-elementów: bez teł i gradientów, w kolorze trybu. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body *:not(#wpadminbar, #wpadminbar *, .ujw-a11y-control--contrast)::before,
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body *:not(#wpadminbar, #wpadminbar *, .ujw-a11y-control--contrast)::after {
	border-color: var(--ujw-a11y-fg) !important;
	background-color: transparent !important;
	background-image: none !important;
	box-shadow: none !important;
	color: var(--ujw-a11y-fg) !important;
	text-shadow: none !important;
}

/* 2. Ikony SVG w kolorze trybu (także te z kolorem wpisanym w atrybut). */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body svg:not(#wpadminbar svg) {
	color: var(--ujw-a11y-fg) !important;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body svg:not(#wpadminbar svg) [fill]:not([fill="none"]) {
	fill: var(--ujw-a11y-fg) !important;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body svg:not(#wpadminbar svg) [stroke]:not([stroke="none"]) {
	stroke: var(--ujw-a11y-fg) !important;
}

/* 3. Logo: biała wersja na czarnym tle, czarna na żółtym. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) .ujw-site-logo > img:not(.ujw-site-logo__contrast) {
	display: none !important;
}

/* Poza trybami kontrastu białe logo jest zawsze ukryte (specyficzność wyższa niż .ujw-site-logo img motywu). */
.ujw-site-logo > img.ujw-site-logo__contrast {
	display: none;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) .ujw-site-logo > .ujw-site-logo__contrast {
	display: block !important;
}

:root.ujw-a11y-black-on-yellow:not(#ujw-a11y-boost) .ujw-site-logo > .ujw-site-logo__contrast,
:root.ujw-a11y-black-on-yellow:not(#ujw-a11y-boost) .ujw-site-footer img[src*="ujw-logo-pionowe"] {
	filter: brightness(0) !important;
}

/* Logotypy serwisów i partnerów (w oryginalnych kolorach firm) stoją na białych kafelkach -
 * jak pasek oznaczeń UE - żeby były czytelne niezależnie od tła trybu. Białe logo UJW - bez kafelka. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body :is(img.ujw-footer-sites__logo, [class*="logos"] img, [class*="__logo"] img, img[src*="logo"], img[src*="Logo"]):not(.ujw-site-logo img, [src*="ujw-logo-pionowe"], [src*="white"], [src*="biale"], [src*="-light"]) {
	padding: 4px !important;
	border-radius: 6px !important;
	background-color: #fff !important;
}

/* Baner zgody na pliki cookies wyraźnie oddzielony od treści. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body .cmplz-cookiebanner {
	border: 3px solid var(--ujw-a11y-fg) !important;
}

/* 4. Odnośniki: podkreślone w treści i stopce; w menu bez podkreślenia, ale z wyraźnym fokusem. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body a:not(.ujw-site-header a, [class*="button"], [class*="btn"], .wp-element-button, #wpadminbar a) {
	text-decoration: underline !important;
	text-decoration-thickness: 2px !important;
	text-underline-offset: 3px !important;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body a:hover:not(#wpadminbar a),
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body button:hover:not(#wpadminbar button) {
	text-decoration-thickness: 4px !important;
	outline: 2px dashed var(--ujw-a11y-fg) !important;
	outline-offset: 2px !important;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body :focus-visible {
	outline: 3px solid var(--ujw-a11y-fg) !important;
	outline-offset: 3px !important;
}

/* 5. Przyciski i pola formularzy: wyraźna ramka w kolorze tekstu. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body :is(button, input, select, textarea, .wp-block-button__link, .wp-element-button, [class*="__button"], [class*="-button"]:is(a, button)):not(#wpadminbar *, .ujw-a11y-control--contrast, .ujw-submenu-toggle, .ujw-primary-menu button) {
	border: 2px solid var(--ujw-a11y-fg) !important;
}

:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow):not(#ujw-a11y-boost) body ::placeholder {
	color: var(--ujw-a11y-fg) !important;
	opacity: 0.85;
}

/* 6. Zaznaczenie tekstu w odwróconych kolorach. */
:root:is(.ujw-a11y-high-contrast, .ujw-a11y-yellow-on-black, .ujw-a11y-black-on-yellow) ::selection {
	background: var(--ujw-a11y-fg);
	color: var(--ujw-a11y-bg);
}

/* =========================================================================
 * Pozostałe funkcje panelu dostępności.
 * ====================================================================== */

/* 7. Rozmiar tekstu: 125% i 150% dla całej strony.
 * <body> miał stałe 16 px, więc tekst dziedziczony (stopka, Kontakt, Kompas, ICDMIR) nie rósł. */
html.ujw-a11y-large-text {
	font-size: 125%;
}

html.ujw-a11y-larger-text {
	font-size: 150%;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) body,
html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) body :is(button, input, select, textarea) {
	font-size: 1rem;
}

/* Na komputerze poziome menu i przyciski nagłówka zostają w zwykłym rozmiarze (brak miejsca w jednym wierszu);
 * w menu rozwijanym (poniżej 1264 px) rosną razem z resztą tekstu. */
@media (min-width: 79.0625rem) {
	html.ujw-a11y-large-text .ujw-primary-menu a {
		font-size: 0.7rem;
	}

	html.ujw-a11y-larger-text .ujw-primary-menu a {
		font-size: 0.5833rem;
	}

	html.ujw-a11y-large-text .ujw-button--header {
		font-size: 0.75rem;
	}

	html.ujw-a11y-larger-text .ujw-button--header {
		font-size: 0.625rem;
	}

	html.ujw-a11y-large-text :is(.ujw-language-menu__toggle, .ujw-language-menu__options a) {
		font-size: 0.65rem;
	}

	html.ujw-a11y-larger-text :is(.ujw-language-menu__toggle, .ujw-language-menu__options a) {
		font-size: 0.5417rem;
	}

	html.ujw-a11y-large-text .ujw-site-header__actions .ujw-header-signup__text {
		font-size: 0.65rem;
	}

	html.ujw-a11y-larger-text .ujw-site-header__actions .ujw-header-signup__text {
		font-size: 0.5417rem;
	}
}

@media (max-width: 79rem) {
	html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujw-primary-menu a {
		font-size: 1rem;
	}
}

/* 8. Odstępy w tekście zgodne z WCAG 1.4.12 (wysokość linii 1,6; litery 0,12 em; słowa 0,16 em; akapity 2 em)
 * dla całej treści: nagłówków, tabel, kart i odnośników, nie tylko akapitów.
 * Bez nagłówka strony (logo, menu, przyciski) - poszerzone menu nachodziłoby na logo. */
html.ujw-a11y-readable-spacing body *:not(svg, svg *, #wpadminbar, #wpadminbar *, .ujw-site-header, .ujw-site-header *) {
	letter-spacing: 0.12em !important;
	line-height: 1.6 !important;
	word-spacing: 0.16em !important;
}

html.ujw-a11y-readable-spacing body :is(p, ul, ol, dl, blockquote, table) {
	margin-bottom: 2em !important;
}

html.ujw-a11y-readable-spacing body {
	overflow-wrap: anywhere;
}

/* Przy większych odstępach zajawki w kartach pokazujemy w całości, zamiast skracać je do 2-3 linii z „…”. */
html.ujw-a11y-readable-spacing body *:not(.ujw-site-header, .ujw-site-header *) {
	-webkit-line-clamp: unset !important;
	line-clamp: none !important;
}

/* 9. Panel w pełni kryjący (dotąd 98% - napisy strony minimalnie prześwitywały). */
.ujw-site-header .ujw-accessibility-panel {
	background-color: #fff;
}

/* 10. Strony z rozmiarami w pikselach (ICDMIR, Kompas Akademicki): w trybach powiększenia
 * te same rozmiary w jednostkach względnych, więc rosną razem z resztą tekstu. Zwykły widok bez zmian. */
html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) :is(.icdmir-venue-info p, .icdmir-about-right p, .icdmir-date-list li, .icdmir-contact-card p, .icdmir-authors-guidelines) {
	font-size: 0.9375rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) :is(.icdmir-organizer-title, .icdmir-speaker-name, .icdmir-organizers-about-grid-panel p) {
	font-size: 1rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) :is(.icdmir-organizer-role, .icdmir-speaker-country, .icdmir-speaker-desc) {
	font-size: 0.875rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) :is(.icdmir-venue-info h3, .icdmir-about-right h3, .icdmir-contact-card h3, .icdmir-subtitle) {
	font-size: 1.25rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .icdmir-organizers-panel h2 {
	font-size: 1.5rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) :is(.icdmir-speakers-section h2, .icdmir-venue-section h2) {
	font-size: 1.75rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project #harmonogramy .ujwp-item h3,
html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project .kompas-schedule-carousel .ujwp-item h3 {
	font-size: 1.0625rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project #harmonogramy .ujwp-item > a {
	font-size: 0.875rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project #harmonogramy .ujwp-item .ujwp-value {
	font-size: 0.75rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project .kompas-effect-card h4 {
	font-size: 1.3125rem !important;
}

html:is(.ujw-a11y-large-text, .ujw-a11y-larger-text) .ujwp-project .kompas-effects-group h3 {
	font-size: clamp(1.4375rem, 2.6vw, 1.875rem) !important;
}
