/**
 * Guardfos Cookie Consent — style front-endu.
 *
 * Wszystkie kolory pochodzą ze zmiennych CSS generowanych z panelu ustawień
 * (patrz GFS_Frontend::css_variables()), więc motyw można zmienić bez ruszania
 * tego pliku. Reguły są celowo zapisane wąsko i z resetem właściwości, żeby
 * style motywu nie rozjechały banera.
 */

.gfs-root,
.gfs-root * {
	box-sizing: border-box;
}

.gfs-root {
	font-family: var(--gfs-font, inherit);
	font-size: var(--gfs-font-size, 15px);
	line-height: 1.55;
	color: var(--gfs-text);
}

html.gfs-locked,
html.gfs-locked body {
	overflow: hidden;
}

/* ---------------------------------------------------------------- overlay */

.gfs-overlay[hidden] { display: none; }

.gfs-overlay {
	position: fixed;
	/* inset trafiło do Safari dopiero w 14.1 — bez tych czterech linii
	   przyciemnienie zapadłoby się do zera. */
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	inset: 0;
	background: var(--gfs-overlay);
	z-index: 2147483000;
	animation: gfs-fade .25s ease;
}

.gfs-root[data-blocking="0"] .gfs-overlay {
	pointer-events: none;
	background: transparent;
}

/* ----------------------------------------------------------------- baner */

.gfs-banner {
	position: fixed;
	z-index: 2147483001;
	width: calc(100% - 32px);
	max-width: var(--gfs-max-width, 460px);
	max-height: calc(100vh - 32px);
	overflow-y: auto;
	padding: 24px;
	background: var(--gfs-bg);
	color: var(--gfs-text);
	border: 1px solid var(--gfs-border);
	border-radius: var(--gfs-radius);
	box-shadow: var(--gfs-shadow);
}

.gfs-layout-box.gfs-pos-left .gfs-banner { left: 16px; bottom: 16px; }
.gfs-layout-box.gfs-pos-right .gfs-banner { right: 16px; bottom: 16px; }
.gfs-layout-box.gfs-pos-center .gfs-banner { left: 50%; bottom: 16px; transform: translateX(-50%); }

.gfs-layout-bar .gfs-banner {
	left: 0;
	right: 0;
	bottom: 0;
	width: 100%;
	max-width: none;
	border-radius: 0;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 20px 32px;
	align-items: center;
	padding: 20px clamp(16px, 5vw, 56px);
}

.gfs-layout-bar .gfs-banner__title,
.gfs-layout-bar .gfs-banner__body,
.gfs-layout-bar .gfs-banner__links { grid-column: 1; }
.gfs-layout-bar .gfs-banner__actions { grid-column: 2; grid-row: 1 / span 3; align-self: center; }
.gfs-layout-bar .gfs-banner__secondary { grid-column: 2; }

.gfs-layout-center .gfs-banner {
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	max-width: min(560px, calc(100% - 32px));
}

.gfs-anim-slide .gfs-banner { animation: gfs-slide .32s cubic-bezier(.16, 1, .3, 1); }
.gfs-anim-fade .gfs-banner { animation: gfs-fade .3s ease; }
.gfs-anim-none .gfs-banner,
.gfs-anim-none .gfs-modal,
.gfs-anim-none .gfs-overlay { animation: none; }

.gfs-banner__logo {
	display: block;
	max-height: 34px;
	width: auto;
	margin: 0 0 14px;
}

.gfs-banner__title {
	margin: 0 0 8px;
	font-size: var(--gfs-title-size, 19px);
	font-weight: var(--gfs-title-weight, 700);
	line-height: 1.3;
	color: var(--gfs-title, var(--gfs-text));
}

.gfs-banner__body {
	margin: 0 0 14px;
	color: var(--gfs-muted);
}

.gfs-banner__body p { margin: 0 0 8px; }
.gfs-banner__body p:last-child { margin-bottom: 0; }

.gfs-banner__controller { font-size: .9em; }

/* Przełącznik języka: nad nagłówkiem banera i w nagłówku ustawień. */
.gfs-banner__lang {
	display: flex;
	justify-content: flex-end;
	margin: -4px -4px 8px 0;
}

.gfs-modal__tools {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
}

.gfs-lang {
	display: inline-flex;
	gap: 2px;
	padding: 2px;
	border: 1px solid var(--gfs-border);
	border-radius: 999px;
}

/* Odnośniki prawne siedzą na samym dole, pod „Show details”, wyśrodkowane —
   dostępne, ale nie konkurujące wzrokowo z przyciskami decyzji. */
.gfs-banner__links {
	margin: 16px 0 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 4px 16px;
	font-size: var(--gfs-legal-size, 12px);
	order: 99;
}

.gfs-banner__links a {
	color: var(--gfs-link, var(--gfs-muted));
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gfs-banner__links a:hover { color: var(--gfs-accent); }

.gfs-banner__gpc {
	margin: 0 0 14px;
	padding: 10px 12px;
	font-size: .85em;
	background: var(--gfs-secondary-bg);
	border-radius: calc(var(--gfs-btn-radius) - 2px);
	color: var(--gfs-muted);
}

.gfs-banner__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.gfs-banner__secondary {
	margin-top: 12px;
	text-align: center;
}

.gfs-layout-bar .gfs-banner__secondary { text-align: right; margin-top: 8px; }

/*
 * Baner zawiera oba warianty prawne; widoczny jest ten pasujący do klasy
 * gfs-regime-* na kontenerze, którą skrypt może zmienić na surowszą, gdy
 * strona przyszła z cache z niewłaściwym wariantem.
 */
.gfs-regime-optin .gfs-variant--optout,
.gfs-regime-optout .gfs-variant--optin { display: none; }

/* --------------------------------------------------------------- przyciski */

.gfs-btn {
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: var(--gfs-btn-pad-y, 11px) var(--gfs-btn-pad-x, 18px);
	font: inherit;
	font-size: var(--gfs-btn-font, 14px);
	font-weight: var(--gfs-btn-weight, 600);
	text-transform: var(--gfs-btn-transform, none);
	letter-spacing: .03em;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid var(--gfs-border);
	border-radius: var(--gfs-btn-radius);
	background: var(--gfs-secondary-bg);
	color: var(--gfs-secondary-text);
	transition: filter .15s ease, transform .1s ease;
}

.gfs-btn:hover { filter: brightness(.96); }
.gfs-btn:active { transform: translateY(1px); }

.gfs-btn--primary {
	background: var(--gfs-accent);
	border-color: var(--gfs-accent);
	color: var(--gfs-accent-text);
}

/*
 * "Odrzuć" i "Akceptuj" muszą wyglądać na równorzędne — ta sama szerokość,
 * wysokość i rozmiar tekstu. Wytyczne EROD 03/2022 oraz decyzje CNIL i UODO
 * traktują wyróżnienie wyłącznie przycisku akceptacji jako dark pattern,
 * który unieważnia zgodę.
 */
.gfs-btn--equal {
	flex: 1 1 0;
	min-width: 130px;
}

.gfs-link-btn,
.gfs-inline-link {
	appearance: none;
	-webkit-appearance: none;
	background: none;
	border: 0;
	padding: 4px 2px;
	margin: 0;
	font: inherit;
	font-size: var(--gfs-link-size, 11px);
	font-weight: var(--gfs-link-weight, 600);
	text-transform: var(--gfs-link-transform, none);
	letter-spacing: .05em;
	color: var(--gfs-muted, inherit);
	text-decoration: underline;
	text-underline-offset: 2px;
	cursor: pointer;
}

.gfs-link-btn:hover,
.gfs-inline-link:hover { color: var(--gfs-accent); }

.gfs-root :focus-visible,
.gfs-float:focus-visible,
.gfs-embed__btn:focus-visible {
	outline: 2px solid var(--gfs-accent, #1d4ed8);
	outline-offset: 2px;
}

/* ------------------------------------------------------ centrum preferencji */

.gfs-modal {
	position: fixed;
	z-index: 2147483002;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: calc(100% - 32px);
	max-width: 620px;
	max-height: min(86vh, 760px);
	display: flex;
	flex-direction: column;
	background: var(--gfs-bg);
	color: var(--gfs-text);
	border: 1px solid var(--gfs-border);
	border-radius: var(--gfs-radius);
	box-shadow: var(--gfs-shadow);
	animation: gfs-pop .28s cubic-bezier(.16, 1, .3, 1);
}

.gfs-modal[hidden] { display: none; }
.gfs-banner[hidden] { display: none; }
.gfs-float[hidden] { display: none; }

.gfs-modal__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 20px 24px;
	border-bottom: 1px solid var(--gfs-border);
}

.gfs-modal__title {
	margin: 0;
	font-size: 1.1em;
	font-weight: 650;
}

.gfs-modal__close {
	appearance: none;
	background: none;
	border: 0;
	padding: 6px;
	margin: -6px;
	cursor: pointer;
	color: var(--gfs-muted);
	line-height: 0;
	border-radius: 8px;
}

.gfs-modal__close svg { width: 20px; height: 20px; }
.gfs-modal__close:hover { color: var(--gfs-text); background: var(--gfs-secondary-bg); }

.gfs-modal__body {
	padding: 20px 24px;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.gfs-modal__intro {
	margin: 0 0 18px;
	color: var(--gfs-muted);
	font-size: .95em;
}

.gfs-modal__foot {
	padding: 16px 24px;
	border-top: 1px solid var(--gfs-border);
	background: var(--gfs-bg);
	border-radius: 0 0 var(--gfs-radius) var(--gfs-radius);
}

.gfs-modal__foot-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.gfs-modal__meta {
	margin: 12px 0 0;
	font-size: .78em;
	color: var(--gfs-muted);
	text-align: center;
}

.gfs-modal__meta code { font-size: .95em; word-break: break-all; }

/* ------------------------------------------------------------- zakładki */

.gfs-tabs {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	border-bottom: 1px solid var(--gfs-border);
	flex: none;
}

.gfs-tab {
	appearance: none;
	background: none;
	border: 0;
	border-top: 3px solid transparent;
	margin: 0;
	padding: 15px 12px;
	font: inherit;
	font-size: .92em;
	font-weight: 700;
	letter-spacing: .045em;
	text-transform: uppercase;
	color: var(--gfs-muted);
	cursor: pointer;
	transition: color .15s ease, background .15s ease;
}

.gfs-tab { color: var(--gfs-tab-inactive, var(--gfs-muted)); }
.gfs-tab:hover { color: var(--gfs-text); }

.gfs-tab.is-active {
	color: var(--gfs-tab-active, var(--gfs-accent));
	border-top-color: var(--gfs-tab-active, var(--gfs-accent));
	background: color-mix(in srgb, var(--gfs-accent) 8%, transparent);
}

/* Przeglądarki bez color-mix() dostają zwykłe podkreślenie zakładki. */
@supports not (background: color-mix(in srgb, red 10%, transparent)) {
	.gfs-tab.is-active { background: none; }
}

[data-gfs-tabpanel][hidden] { display: none; }

.gfs-about p { margin: 0 0 14px; color: var(--gfs-muted); }
.gfs-about p:last-child { margin-bottom: 0; }
.gfs-about a { color: var(--gfs-accent); }

/* ------------------------------------------------------------- kategorie */

.gfs-cats {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gfs-cat {
	border: 0;
	border-bottom: 1px solid var(--gfs-border);
	border-radius: 0;
	margin: 0;
	padding: 0 0 4px;
}

.gfs-cat:last-child { border-bottom: 0; }

.gfs-cat__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 14px 6px;
}

.gfs-cat__name {
	font-weight: 700;
	color: var(--gfs-text);
	flex: 1 1 auto;
}

.gfs-cat__more {
	appearance: none;
	background: none;
	border: 0;
	margin: 0;
	padding: 0 14px 14px;
	font: inherit;
	font-size: .78em;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--gfs-accent);
	display: flex;
	align-items: center;
	gap: 6px;
	cursor: pointer;
}

.gfs-cat__chevron {
	width: 14px;
	height: 14px;
	flex: none;
	transition: transform .18s ease;
}

.gfs-cat__more[aria-expanded="true"] .gfs-cat__chevron { transform: rotate(180deg); }

.gfs-cat__always {
	font-size: .82em;
	font-weight: 600;
	color: var(--gfs-muted);
	white-space: nowrap;
}

.gfs-cat__panel {
	padding: 4px 14px 16px;
	overflow-x: auto;
}

.gfs-cat__panel[hidden] { display: none; }

.gfs-cat__desc {
	margin: 0;
	padding: 0 14px 10px;
	font-size: .88em;
	color: var(--gfs-muted);
}

.gfs-cat__table {
	width: 100%;
	border-collapse: collapse;
	font-size: .8em;
	table-layout: fixed;
}

.gfs-cat__table th,
.gfs-cat__table td {
	text-align: left;
	padding: 6px 8px;
	border-bottom: 1px solid var(--gfs-border);
	vertical-align: top;
	word-break: break-word;
}

.gfs-cat__table th { color: var(--gfs-muted); font-weight: 600; }

.gfs-cat__table a,
.gfs-declaration__table a {
	color: var(--gfs-table-link, #fff);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.gfs-cat__table code { font-size: .92em; color: var(--gfs-muted); }

/* ------------------------------------------------------------ przełącznik */

.gfs-switch {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	flex: none;
	position: relative;
}

.gfs-switch input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}

.gfs-switch__track {
	display: block;
	position: relative;
	width: 44px;
	height: 26px;
	flex: none;
	border-radius: 999px;
	background: var(--gfs-switch-off, var(--gfs-border));
	transition: background .18s ease;
}

.gfs-switch__thumb {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--gfs-switch-thumb, #fff);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
	transition: transform .18s ease;
}

.gfs-switch input:checked + .gfs-switch__track { background: var(--gfs-switch-on, var(--gfs-accent)); }
.gfs-switch input:checked + .gfs-switch__track .gfs-switch__thumb { transform: translateX(18px); }
.gfs-switch input:focus-visible + .gfs-switch__track { outline: 2px solid var(--gfs-accent); outline-offset: 2px; }

.gfs-switch__label { font-size: .92em; }

.gfs-optout-wrap { margin: 0 0 18px; }

/* Blok rezygnacji ma własne tło, więc musi mieć też własny kolor tekstu —
   dziedziczenie jasnego tekstu z okna dawało biel na limonce. */
.gfs-optout {
	padding: 14px 16px;
	background: var(--gfs-optout-bg, var(--gfs-secondary-bg));
	color: var(--gfs-optout-text, var(--gfs-secondary-text));
	border-radius: var(--gfs-btn-radius);
}

.gfs-optout .gfs-switch__label {
	color: var(--gfs-optout-text, var(--gfs-secondary-text));
	font-weight: 600;
}

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

/* ------------------------------------------------------------------ toast */

.gfs-toast[hidden] { display: none; }

.gfs-toast {
	position: fixed;
	z-index: 2147483003;
	left: 50%;
	bottom: 28px;
	transform: translateX(-50%);
	max-width: calc(100% - 32px);
	margin: 0;
	padding: 12px 20px;
	background: var(--gfs-bg);
	color: var(--gfs-text);
	border: 1px solid var(--gfs-border);
	border-radius: 999px;
	box-shadow: var(--gfs-shadow);
	font-size: .9em;
	text-align: center;
	animation: gfs-fade .2s ease;
}

/* -------------------------------------------------------- stały przycisk */

/*
 * Zwinięty: koło o średnicy --gfs-float-box (rozmiar ikony plus wypełnienie
 * z obu stron). Rozwinięty: zaokrąglony prostokąt z podpisem.
 *
 * Szerokość jest sterowana przez --gfs-float-box, a nie przez zawartość,
 * bo tylko wtedy zwinięty przycisk jest gwarantowanym kołem niezależnie od
 * długości podpisu i od tego, co motyw zrobi z przyciskami.
 */
.gfs-float {
	position: fixed;
	z-index: 2147482999;
	bottom: var(--gfs-float-y, 20px);
	display: inline-flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-start;
	width: var(--gfs-float-box, 48px);
	height: var(--gfs-float-box, 48px);
	min-width: 0;
	min-height: 0;
	max-width: none;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: var(--gfs-float-bg);
	color: var(--gfs-float-color);
	cursor: pointer;
	overflow: hidden;
	box-shadow: 0 6px 20px -6px rgba(15, 23, 42, .5);
	transition: width .3s cubic-bezier(.16, 1, .3, 1), background .2s ease, color .2s ease;
}

.gfs-float--left { left: var(--gfs-float-x, 20px); }
.gfs-float--right { right: var(--gfs-float-x, 20px); flex-direction: row-reverse; }

.gfs-float:hover,
.gfs-float:focus-visible {
	background: var(--gfs-float-hover-bg, var(--gfs-float-bg));
	color: var(--gfs-float-hover-fg, var(--gfs-float-color));
}

.gfs-float__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--gfs-float-box, 48px);
	height: var(--gfs-float-box, 48px);
	flex: 0 0 var(--gfs-float-box, 48px);
}

.gfs-float__icon svg,
.gfs-float__icon img {
	width: 52%;
	height: 52%;
	display: block;
}

.gfs-float__icon img { object-fit: contain; }

.gfs-float__label {
	font: inherit;
	font-size: var(--gfs-float-label, 13px);
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	opacity: 0;
	padding-right: 18px;
	transition: opacity .2s ease;
}

.gfs-float--right .gfs-float__label { padding: 0 0 0 18px; }

/* Rozwinięcie: szerokość przycisku rośnie, podpis się pojawia. Rozwija się
   także przy dotarciu klawiaturą, żeby osoba nawigująca Tabem wiedziała,
   do czego służy przycisk. */
.gfs-float--label-always,
.gfs-float--label-hover:hover,
.gfs-float--label-hover:focus-visible { width: auto; }

.gfs-float--label-always .gfs-float__label,
.gfs-float--label-hover:hover .gfs-float__label,
.gfs-float--label-hover:focus-visible .gfs-float__label { opacity: 1; }

/* Bez najechania podpis rozwijany byłby nieosiągalny. */
@media (hover: none) {
	.gfs-float--label-hover .gfs-float__label { display: none; }
	.gfs-float--label-hover:hover { width: var(--gfs-float-box, 48px); }
}

/* ------------------------------------------------- zablokowane osadzenia */

.gfs-embed {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	max-width: 100%;
	overflow: hidden;
	background: var(--gfs-secondary-bg, #f1f5f9);
	border: 1px solid var(--gfs-border, #e2e8f0);
	border-radius: var(--gfs-radius, 14px);
	color: var(--gfs-text, #0f172a);
	font-family: var(--gfs-font, inherit);
}

.gfs-embed__bg {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	inset: 0;
	background-size: cover;
	background-position: center;
	filter: blur(6px) brightness(.55);
	transform: scale(1.08);
}

.gfs-embed__inner {
	position: relative;
	z-index: 1;
	max-width: 460px;
	padding: 24px;
	text-align: center;
}

.gfs-embed__title {
	margin: 0 0 6px;
	font-size: 1.02em;
	font-weight: 650;
}

.gfs-embed__body {
	margin: 0 0 16px;
	font-size: .88em;
	color: var(--gfs-muted, #475569);
}

.gfs-embed__btn {
	appearance: none;
	border: 0;
	padding: 10px 20px;
	font: inherit;
	font-weight: 600;
	border-radius: var(--gfs-btn-radius, 10px);
	background: var(--gfs-accent, #1d4ed8);
	color: var(--gfs-accent-text, #fff);
	cursor: pointer;
}

.gfs-embed__always {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	margin-top: 12px;
	font-size: .8em;
	cursor: pointer;
}

/* Gdy jest miniatura, tekst leży na przyciemnionym tle. */
.gfs-embed--thumb .gfs-embed__inner { color: #fff; }
.gfs-embed--thumb .gfs-embed__title { color: #fff; }
.gfs-embed--thumb .gfs-embed__body { color: rgba(255, 255, 255, .88); }

/* ------------------------------------------------------ odnośnik w stopce */

.gfs-footer-link {
	font-family: var(--gfs-font, inherit);
	line-height: 1.5;
}

.gfs-footer-link--left { text-align: left; }
.gfs-footer-link--center { text-align: center; }
.gfs-footer-link--right { text-align: right; }

.gfs-footer-link__btn {
	appearance: none;
	-webkit-appearance: none;
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	font: inherit;
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
	cursor: pointer;
	opacity: .85;
}

.gfs-footer-link__btn:hover { opacity: 1; }

.gfs-footer-link__btn:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
}

/* Krótkie podświetlenie bloku rezygnacji po wejściu z odnośnika. */
.gfs-optout.is-highlighted {
	animation: gfs-pulse 1.6s ease;
}

@keyframes gfs-pulse {
	0%, 100% { box-shadow: 0 0 0 0 transparent; }
	15%, 55% { box-shadow: 0 0 0 4px var(--gfs-accent, #c3d92e); }
}

/* ------------------------------------------------- deklaracja w treści */

.gfs-declaration__table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 28px;
	font-size: .92em;
}

.gfs-declaration__table th,
.gfs-declaration__table td {
	padding: 9px 10px;
	text-align: left;
	border-bottom: 1px solid var(--gfs-border, #e2e8f0);
	vertical-align: top;
	word-break: break-word;
}

.gfs-declaration__title { margin: 28px 0 6px; }
.gfs-declaration__desc { margin: 0 0 12px; opacity: .8; }

/* --------------------------------------------------------------- animacje */

@keyframes gfs-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes gfs-slide { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes gfs-pop { from { opacity: 0; transform: translate(-50%, -48%) scale(.97); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }

@media (prefers-reduced-motion: reduce) {
	.gfs-root *,
	.gfs-embed * {
		animation: none !important;
		transition: none !important;
	}
}

/* --------------------------------------------------------------- mobile */

@media (max-width: 640px) {
	.gfs-banner,
	.gfs-layout-box.gfs-pos-left .gfs-banner,
	.gfs-layout-box.gfs-pos-right .gfs-banner,
	.gfs-layout-box.gfs-pos-center .gfs-banner,
	.gfs-layout-center .gfs-banner {
		left: 8px;
		right: 8px;
		bottom: 8px;
		top: auto;
		width: auto;
		max-width: none;
		transform: none;
		padding: 20px;
	}

	.gfs-layout-bar .gfs-banner {
		grid-template-columns: 1fr;
		left: 0;
		right: 0;
		bottom: 0;
	}

	.gfs-layout-bar .gfs-banner__actions,
	.gfs-layout-bar .gfs-banner__secondary { grid-column: 1; grid-row: auto; text-align: center; }

	.gfs-modal {
		left: 8px;
		right: 8px;
		bottom: 8px;
		top: auto;
		width: auto;
		max-width: none;
		transform: none;
		max-height: 88vh;
		animation-name: gfs-slide;
	}

	.gfs-modal__head,
	.gfs-modal__body,
	.gfs-modal__foot { padding-left: 18px; padding-right: 18px; }

	.gfs-btn--equal { flex: 1 1 100%; }

	.gfs-cat__table { font-size: .74em; }

	.gfs-float--desktop { display: none; }
}

@media (forced-colors: active) {
	.gfs-banner,
	.gfs-modal,
	.gfs-btn,
	.gfs-cat,
	.gfs-switch__track { border: 1px solid CanvasText; }
}


/* ==========================================================================
   PANCERZ PRZECIW MOTYWOWI

   Zweryfikowane na produkcji (Hello Elementor): motyw deklaruje style przycisków z
   !important, przez co przegrywał z nimi nawet styl inline. Bez tego bloku
   "Decline all" potrafi wyrenderować się inaczej niż "Accept all" — a to nie
   jest usterka kosmetyczna, tylko złamanie wymogu równorzędności przycisków
   (EROD 03/2022, ICO, UODO), które unieważnia zgodę.

   Dlatego wyjątkowo używamy !important, ale wyłącznie: wewnątrz #gfs-root,
   na własnych klasach i tylko dla właściwości, które motywy realnie przejmują.
   Wartości pochodzą ze zmiennych CSS, więc panel ustawień nadal steruje
   wyglądem. Własny CSS z panelu poprzedzaj #gfs-root, żeby miał pierwszeństwo.
   ========================================================================== */

#gfs-root .gfs-btn {
	background: var(--gfs-secondary-bg) !important;
	color: var(--gfs-secondary-text) !important;
	border: 1px solid var(--gfs-border) !important;
	border-radius: var(--gfs-btn-radius) !important;
	box-shadow: none !important;
	min-height: 0 !important;
	min-width: 0 !important;
	height: auto !important;
	text-decoration: none !important;
	line-height: 1.2 !important;
	opacity: 1 !important;
}

#gfs-root .gfs-btn--primary {
	background: var(--gfs-accent) !important;
	border-color: var(--gfs-accent) !important;
	color: var(--gfs-accent-text) !important;
}

#gfs-root .gfs-link-btn,
#gfs-root .gfs-cat__more,
#gfs-root .gfs-modal__close,
#gfs-root .gfs-tab {
	background: none !important;
	box-shadow: none !important;
	border: 0 !important;
	min-height: 0 !important;
	height: auto !important;
}

#gfs-root .gfs-link-btn,
#gfs-root .gfs-modal__close,
#gfs-root .gfs-tab { color: var(--gfs-muted) !important; }

#gfs-root .gfs-cat__more { color: var(--gfs-accent) !important; }
#gfs-root .gfs-tab { color: var(--gfs-tab-inactive, var(--gfs-muted)) !important; }
#gfs-root .gfs-tab.is-active {
	color: var(--gfs-tab-active, var(--gfs-accent)) !important;
	border-top: 3px solid var(--gfs-tab-active, var(--gfs-accent)) !important;
}

#gfs-root .gfs-banner__links a {
	color: var(--gfs-link, var(--gfs-accent)) !important;
	text-decoration: underline !important;
}

/* Odnośniki w deklaracji cookies: motyw kolorował je swoim kolorem linku
   i gubił podkreślenie, przez co w ciemnym oknie były nieczytelne. */
#gfs-root .gfs-cat__table a,
.gfs-declaration__table a {
	color: var(--gfs-table-link, #fff) !important;
	text-decoration: underline !important;
	text-underline-offset: 2px;
}

#gfs-root .gfs-optout {
	background: var(--gfs-optout-bg, var(--gfs-secondary-bg)) !important;
	color: var(--gfs-optout-text, var(--gfs-secondary-text)) !important;
}

#gfs-root .gfs-optout .gfs-switch__label { color: var(--gfs-optout-text, var(--gfs-secondary-text)) !important; }

#gfs-root .gfs-banner__title {
	color: var(--gfs-title, var(--gfs-text)) !important;
	font-size: var(--gfs-title-size, 19px) !important;
	font-weight: var(--gfs-title-weight, 700) !important;
}

#gfs-root .gfs-btn {
	font-size: var(--gfs-btn-font, 14px) !important;
	font-weight: var(--gfs-btn-weight, 600) !important;
	text-transform: var(--gfs-btn-transform, none) !important;
}

#gfs-root .gfs-link-btn {
	font-size: var(--gfs-link-size, 11px) !important;
	font-weight: var(--gfs-link-weight, 600) !important;
	text-transform: var(--gfs-link-transform, none) !important;
}

#gfs-root .gfs-banner__links { font-size: var(--gfs-legal-size, 12px) !important; }

#gfs-root .gfs-float__label { color: inherit !important; }

#gfs-root .gfs-switch__track { background: var(--gfs-switch-off, var(--gfs-border)) !important; box-shadow: none !important; }
#gfs-root .gfs-switch input:checked + .gfs-switch__track { background: var(--gfs-switch-on, var(--gfs-accent)) !important; }
#gfs-root .gfs-switch__thumb { background: var(--gfs-switch-thumb, #fff) !important; }

/*
 * Sprawdzone na produkcji: motyw deklaruje display przycisków z !important,
 * przez co ikona i podpis układały się jeden pod drugim zamiast obok siebie,
 * a koło zamieniało się w prostokąt. Dlatego cała geometria musi być tu
 * wymuszona, nie tylko kolory.
 */
#gfs-root .gfs-float {
	display: inline-flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	justify-content: flex-start !important;
	height: var(--gfs-float-box, 48px) !important;
	min-width: 0 !important;
	min-height: 0 !important;
	max-width: none !important;
	padding: 0 !important;
	overflow: hidden !important;
	background: var(--gfs-float-bg) !important;
	color: var(--gfs-float-color) !important;
	border: 0 !important;
	border-radius: 999px !important;
}

#gfs-root .gfs-float--right { flex-direction: row-reverse !important; }

#gfs-root .gfs-float__icon {
	flex: 0 0 var(--gfs-float-box, 48px) !important;
	width: var(--gfs-float-box, 48px) !important;
	height: var(--gfs-float-box, 48px) !important;
}

#gfs-root .gfs-float__label { line-height: 1 !important; white-space: nowrap !important; }

/*
 * Szerokość musi być wymuszona osobno w obu stanach.
 *
 * Motyw deklaruje przyciskom width: auto z !important, więc zwinięty przycisk
 * rozciągał się do szerokości ukrytego podpisu i zamiast koła wychodził
 * prostokąt. Nie da się tego załatwić jedną regułą, bo po najechaniu
 * szerokość ma być właśnie automatyczna — stąd dwie reguły, z których druga
 * ma wyższą specyficzność i wygrywa przy najechaniu.
 */
#gfs-root .gfs-float { width: var(--gfs-float-box, 48px) !important; }

#gfs-root .gfs-float--label-always,
#gfs-root .gfs-float--label-hover:hover,
#gfs-root .gfs-float--label-hover:focus-visible { width: auto !important; }

@media (hover: none) {
	#gfs-root .gfs-float--label-hover:hover { width: var(--gfs-float-box, 48px) !important; }
}

#gfs-root .gfs-banner,
#gfs-root .gfs-modal {
	background: var(--gfs-bg) !important;
	color: var(--gfs-text) !important;
	border-color: var(--gfs-border) !important;
}

#gfs-root h2,
#gfs-root p,
#gfs-root code,
#gfs-root td,
#gfs-root th {
	color: inherit !important;
	background: none !important;
	text-shadow: none !important;
}

#gfs-root .gfs-cat__desc,
#gfs-root .gfs-banner__body,
#gfs-root .gfs-modal__intro,
#gfs-root .gfs-cat__always { color: var(--gfs-muted) !important; }

/* Placeholder osadzenia żyje w treści strony, poza #gfs-root. */
.gfs-embed .gfs-embed__btn {
	background: var(--gfs-accent, #c3d92e) !important;
	color: var(--gfs-accent-text, #1a1a1a) !important;
	border: 0 !important;
	border-radius: var(--gfs-btn-radius, 999px) !important;
	box-shadow: none !important;
	height: auto !important;
	min-height: 0 !important;
}


/* ==========================================================================
   WARIANTY AWARYJNE DLA STARSZYCH PRZEGLĄDAREK

   Baner zgód musi być używalny także tam, gdzie nowsze funkcje CSS jeszcze
   nie działają. Jeśli "Odrzuć" i "Akceptuj" skleją się w jeden blok albo
   placeholder osadzenia zapadnie się do zera wysokości, to nie jest wyłącznie
   kwestia estetyki — przycisk odmowy musi pozostać równie czytelny.
   ========================================================================== */

/* Odstępy we flexboksie: Safari poniżej 14.1 ignoruje gap. */
@supports not (row-gap: 1px) {
	.gfs-banner__actions,
	.gfs-modal__foot-actions { margin: 0 -5px; }

	.gfs-banner__actions > *,
	.gfs-modal__foot-actions > * { margin: 5px; }

	.gfs-banner__links a { margin-right: 16px; }

	.gfs-cat__head > * { margin-right: 10px; }
	.gfs-cat__head > *:last-child { margin-right: 0; }
}

/* aspect-ratio dla osadzeń trafiło do Safari dopiero w 15. */
@supports not (aspect-ratio: 16 / 9) {
	.gfs-embed { min-height: 260px; }
}

/* :focus-visible pojawiło się w Safari 15.4 — starsze wersje potrzebują
   zwykłego :focus, żeby obsługa klawiaturą pozostała widoczna (WCAG 2.4.7). */
@supports not selector(:focus-visible) {
	.gfs-root button:focus,
	.gfs-root a:focus,
	.gfs-root input:focus + .gfs-switch__track,
	.gfs-float:focus,
	.gfs-embed__btn:focus {
		outline: 2px solid var(--gfs-accent, #c3d92e);
		outline-offset: 2px;
	}
}

/* Przełącznik języka — ten sam pancerz co przyciski decyzji: motyw nadaje
   <button> tło, obramowanie i minimalną wysokość z !important. */
#gfs-root .gfs-lang__btn {
	appearance: none !important;
	background: none !important;
	border: 0 !important;
	border-radius: 999px !important;
	box-shadow: none !important;
	color: var(--gfs-muted) !important;
	cursor: pointer;
	font-family: inherit !important;
	font-size: 11px !important;
	font-weight: 700 !important;
	letter-spacing: .04em !important;
	line-height: 1.2 !important;
	text-transform: uppercase !important;
	padding: 4px 9px !important;
	margin: 0 !important;
	min-height: 0 !important;
	min-width: 0 !important;
	height: auto !important;
	width: auto !important;
}

#gfs-root .gfs-lang__btn:hover { color: var(--gfs-text) !important; }

#gfs-root .gfs-lang__btn[aria-pressed="true"] {
	background: var(--gfs-accent) !important;
	color: var(--gfs-accent-text) !important;
}

#gfs-root .gfs-lang__btn:focus-visible {
	outline: 2px solid var(--gfs-accent) !important;
	outline-offset: 2px !important;
}

