/*
Theme Name: Góra Spokoju
Theme URI: https://goraspokoju.pl
Author: Góra Spokoju
Description: Motyw blokowy dla ośrodka retreatowego Góra Spokoju w Inowłodzu.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: goraspokoju
*/

/* ==========================================================================
   Local fonts — eliminate Google Fonts CDN dependency (LCP optimization).
   Open Sans is a variable font (1 file per subset = all weights 300..700).
   Grape Nuts has fixed weight 400. font-display:swap → fallback shown
   immediately, swap when font loads (no FOIT).
   ========================================================================== */

@font-face {
	font-family: 'Open Sans';
	font-style: normal;
	font-weight: 300 700;
	font-display: swap;
	src: url('assets/fonts/open-sans-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Open Sans';
	font-style: normal;
	font-weight: 300 700;
	font-display: swap;
	src: url('assets/fonts/open-sans-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Grape Nuts';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/grape-nuts-400-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Grape Nuts';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('assets/fonts/grape-nuts-400-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ==========================================================================
   Global — light, premium feel
   ========================================================================== */

html {
	scroll-behavior: smooth;
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	margin: 0;
}

/* Remove WP-generated gap between header/content/footer */
.wp-site-blocks > * + * {
	margin-top: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */

/* Default heading color — set via CSS instead of theme.json so dark sections
   can override it with inheritance. */
h1, h2, h3, h4, h5, h6,
.wp-block-heading {
	color: var(--wp--preset--color--brand-forest);
}

/* Dark / colored sections — all text inherits parent color */
.has-brand-white-color h1,
.has-brand-white-color h2,
.has-brand-white-color h3,
.has-brand-white-color h4,
.has-brand-white-color h5,
.has-brand-white-color h6,
.has-brand-white-color .wp-block-heading,
.gs-section-dark h1, .gs-section-dark h2, .gs-section-dark h3,
.gs-section-dark h4, .gs-section-dark h5, .gs-section-dark h6,
.gs-section-forest h1, .gs-section-forest h2, .gs-section-forest h3,
.gs-section-forest h4, .gs-section-forest h5, .gs-section-forest h6,
.gs-section-navy h1, .gs-section-navy h2, .gs-section-navy h3,
.gs-section-navy h4, .gs-section-navy h5, .gs-section-navy h6,
.wp-block-cover h1, .wp-block-cover h2, .wp-block-cover h3,
.wp-block-cover h4, .wp-block-cover h5, .wp-block-cover h6 {
	color: inherit;
}

.has-grape-nuts-font-family,
.is-style-handwritten {
	font-family: 'Grape Nuts', cursive;
	font-weight: 400;
}

.is-style-handwritten {
	font-size: 1.35em;
	line-height: 1.3;
}

.text-gradient {
	background: linear-gradient(135deg, var(--wp--preset--color--brand-forest), var(--wp--preset--color--brand-green));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Subtitle / pillar label */
.gs-pillar-label {
	font-weight: 600;
	font-size: 1.125rem;
	color: var(--wp--preset--color--brand-green);
	margin-bottom: 1rem;
}

/* On dark backgrounds, pillar label in lime */
.gs-section-forest .gs-pillar-label,
.gs-section-dark .gs-pillar-label,
.gs-section-navy .gs-pillar-label,
.wp-block-cover .gs-pillar-label {
	color: var(--wp--preset--color--brand-lime);
}

.gs-subtitle {
	font-weight: 600;
	font-size: 1.125rem;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand-green);
}

/* ==========================================================================
   Buttons — matching React: rounded-lg, green hover
   ========================================================================== */

.wp-block-button.is-style-primary .wp-block-button__link,
.btn-primary {
	background-color: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	border-radius: 0.5rem;
	padding: 1rem 2rem;
	font-weight: 600;
	text-decoration: none;
	display: inline-block;
	transition: all var(--wp--custom--transition--default);
	border: none;
	letter-spacing: 0.01em;
}

.wp-block-button.is-style-primary .wp-block-button__link:hover,
.btn-primary:hover {
	background-color: var(--wp--preset--color--brand-green);
	color: var(--wp--preset--color--brand-white);
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(70, 149, 60, 0.3);
}

.wp-block-button.is-style-secondary .wp-block-button__link,
.btn-secondary {
	background-color: var(--wp--preset--color--brand-dark);
	color: var(--wp--preset--color--brand-white);
	border-radius: 0.5rem;
	padding: 1rem 2rem;
	font-weight: 600;
	text-decoration: none;
	display: inline-block;
	transition: all var(--wp--custom--transition--default);
	border: none;
	letter-spacing: 0.01em;
}

.wp-block-button.is-style-secondary .wp-block-button__link:hover,
.btn-secondary:hover {
	background-color: var(--wp--preset--color--brand-forest);
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
}

.wp-block-button.is-style-outline .wp-block-button__link,
.btn-outline {
	background-color: transparent;
	color: var(--wp--preset--color--brand-white);
	border: 2px solid var(--wp--preset--color--brand-white);
	border-radius: 0.5rem;
	padding: calc(1rem - 2px) calc(2rem - 2px);
	font-weight: 600;
	text-decoration: none;
	display: inline-block;
	transition: all var(--wp--custom--transition--default);
	letter-spacing: 0.01em;
}

.wp-block-button.is-style-outline .wp-block-button__link:hover,
.btn-outline:hover {
	background-color: var(--wp--preset--color--brand-white);
	color: var(--wp--preset--color--brand-dark);
	transform: translateY(-2px);
}

/* ==========================================================================
   Links on dark sections — override theme.json defaults so they stay readable
   Wrapped in :where() so footer/header/button rules win without !important.
   ========================================================================== */

:where(
	.has-brand-forest-background-color,
	.has-brand-green-background-color,
	.has-brand-dark-background-color,
	.has-brand-navy-background-color,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy,
	.wp-block-cover.is-dark
) a {
	color: var(--wp--preset--color--brand-lime);
}

:where(
	.has-brand-forest-background-color,
	.has-brand-green-background-color,
	.has-brand-dark-background-color,
	.has-brand-navy-background-color,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy,
	.wp-block-cover.is-dark
) a:hover {
	color: var(--wp--preset--color--brand-white);
}

/* ==========================================================================
   Header / Navigation — light theme with backdrop blur
   ========================================================================== */

.site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	background-color: rgba(255, 255, 255, 0.92) !important;
	background: rgba(255, 255, 255, 0.92) !important;
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
	transition: all var(--wp--custom--transition--slow);
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06);
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}

.site-header.scrolled {
	background-color: rgba(255, 255, 255, 0.97) !important;
	background: rgba(255, 255, 255, 0.97) !important;
	box-shadow: 0 2px 16px rgba(0, 0, 0, 0.08);
	padding-top: 0.125rem;
	padding-bottom: 0.125rem;
}

/* Logo shrink on scroll */
.gs-logo img {
	transition: height var(--wp--custom--transition--slow);
}

.site-header.scrolled .gs-logo img {
	height: 36px !important;
}

/* Logo */
.gs-logo {
	margin: 0;
}

.gs-logo img {
	border-radius: 0;
}

.site-header .wp-block-navigation {
	font-size: 0.875rem;
	font-weight: 500;
}

.site-header .wp-block-navigation a {
	color: var(--wp--preset--color--base-text);
	text-decoration: none;
	padding: 0.5rem 0;
	position: relative;
	transition: color var(--wp--custom--transition--default);
	letter-spacing: 0.02em;
	font-weight: 500;
}

.site-header .wp-block-navigation a::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	width: 0;
	height: 2px;
	background-color: var(--wp--preset--color--brand-green);
	transition: width var(--wp--custom--transition--default);
}

.site-header .wp-block-navigation a:hover {
	color: var(--wp--preset--color--brand-green);
}

.site-header .wp-block-navigation a:hover::after,
.site-header .wp-block-navigation .current-menu-item a::after {
	width: 100%;
}

/* .site-header .wp-block-navigation .wp-block-navigation__responsive-container {
	background-color: rgba(255, 255, 255, 0.98);
	-webkit-backdrop-filter: blur(20px);
	backdrop-filter: blur(20px);
} */

/* Override navigation text color for WP block navigation */
.site-header .wp-block-navigation,
.site-header .wp-block-navigation .wp-block-navigation-item a,
.site-header .wp-block-navigation .wp-block-navigation-item__content {
	color: var(--wp--preset--color--base-text) !important;
}

.site-header .wp-block-navigation .wp-block-navigation-item a:hover,
.site-header .wp-block-navigation .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--brand-green) !important;
}

/* Mobile hamburger — dark color for light header */
.site-header .wp-block-navigation__responsive-container-open {
	color: var(--wp--preset--color--brand-forest) !important;
}

.site-header .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--brand-forest) !important;
}

/* Mobile overlay — light theme */
.site-header .wp-block-navigation__responsive-container.is-menu-open {
	background-color: rgba(255, 255, 255, 0.98) !important;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a {
	color: var(--wp--preset--color--base-text) !important;
	font-size: 1.125rem;
}

/* Header actions group */
.gs-header-actions {
	align-items: center;
}

.gs-header-actions .wp-block-buttons {
	margin: 0;
}

/* Nav CTA button override */
.gs-nav-cta .wp-block-button__link {
	background-color: var(--wp--preset--color--brand-forest) !important;
	color: var(--wp--preset--color--brand-white) !important;
	font-size: 0.875rem !important;
	font-weight: 600;
	border-radius: 0.5rem !important;
	padding: 0.625rem 1.25rem !important;
	transition: all 0.3s ease-out !important;
}

.gs-nav-cta .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--brand-green) !important;
	color: var(--wp--preset--color--brand-white) !important;
	transform: none !important;
	box-shadow: none !important;
}

.header-phone-link {
	color: var(--wp--preset--color--base-text) !important;
	font-weight: 500;
	text-decoration: none;
	font-size: 0.875rem;
	white-space: nowrap;
	display: flex;
	align-items: center;
}

.header-phone-link svg {
	color: var(--wp--preset--color--brand-green);
}

.header-phone-link a {
	color: var(--wp--preset--color--base-text) !important;
	text-decoration: none;
	transition: color var(--wp--custom--transition--default);
}

.header-phone-link a:hover {
	color: var(--wp--preset--color--brand-green) !important;
}

/* Language switcher (Polylang). hide_current=1 → tylko 1 link widoczny (drugi język) */
.gs-language-switcher ul {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.875rem;
	font-weight: 500;
}

.gs-language-switcher li {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gs-language-switcher li a {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.375rem 0.625rem;
	border-radius: 0.375rem;
	color: var(--wp--preset--color--base-text);
	text-decoration: none;
	text-transform: uppercase;
	font-weight: 600;
	letter-spacing: 0.05em;
	transition: color var(--wp--custom--transition--default), background-color var(--wp--custom--transition--default);
}

.gs-language-switcher li a::before {
	content: "";
	display: inline-block;
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><path d='M2 12h20'/><path d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/></svg>") center/contain no-repeat;
	        mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><path d='M2 12h20'/><path d='M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/></svg>") center/contain no-repeat;
}

.gs-language-switcher li a:hover {
	color: var(--wp--preset--color--brand-green);
	background-color: rgba(70, 149, 60, 0.08);
}

/* Mobile actions group — telefon (ikona) + switcher. Ukryte na desktopie.
   !important bo WP auto-generated `wp-container-*-is-layout-flex` ustawia display:flex
   z taką samą specyficznością i load-order jest niedeterministyczny. */
.gs-mobile-actions {
	display: none !important;
}

.gs-mobile-actions .gs-mobile-phone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	color: var(--wp--preset--color--brand-forest);
	transition: color var(--wp--custom--transition--default);
}

.gs-mobile-actions .gs-mobile-phone:hover {
	color: var(--wp--preset--color--brand-green);
}

/* "is-mobile-only" nav-items (telefon + CTA) — ukryte na desktopie. */
.gs-main-nav .wp-block-navigation-item.is-mobile-only {
	display: none;
}

/* Mobile responsive header — < 1024px */
@media (max-width: 1024px) {
	.header-phone-link {
		display: none;
	}

	/* Ukryj cały desktopowy actions group, hamburger trzyma się prawej krawędzi */
	.site-header .gs-header-actions {
		display: none !important;
	}

	/* Mobile actions widoczne — pozycjonowane absolutnie przed hamburgerem,
	   żeby nie wpływać na flex flow i hamburger został przy viewport-right */
	.site-header .gs-mobile-actions {
		display: flex !important;
		position: absolute;
		top: 50%;
		right: 3.25rem; /* 1rem (header padding) + 24px (hamburger) + 8px gap ≈ 3.25rem */
		transform: translateY(-50%);
		gap: 0.5rem;
		align-items: center;
		z-index: 5;
		margin: 0 !important;
		padding: 0 !important;
	}

	/* Nav zajmuje resztę miejsca; hamburger justyfikuje się do prawej krawędzi */
	.site-header .gs-main-nav {
		flex: 1;
	}

	/* Switcher minimalny na mobile — kompaktowy padding, bez ikonki globusa */
	.gs-language-switcher--mobile li a {
		padding: 0.25rem 0.5rem;
		font-size: 0.8125rem;
	}

	.gs-language-switcher--mobile li a::before {
		display: none;
	}

	/* W overlay — pokaż mobile-only nav items (telefon + CTA). Phone styling + CTA primary. */
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-mobile-only {
		display: list-item !important;
	}

	/* Phone link — poprzedni item (Kontakt) ma już border-bottom 1px,
	   więc NIE dodajemy border-top żeby nie było podwójnej linii. Tylko spacing. */
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-phone {
		border-bottom: none !important;
		margin-top: 1rem !important;
		padding-top: 0.5rem !important;
	}

	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-phone a {
		font-size: 1.5rem !important;
		font-weight: 600 !important;
		color: var(--wp--preset--color--brand-green) !important;
		padding: 0.5rem 0 !important;
	}

	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-cta {
		border-bottom: none !important;
		margin-top: 0.75rem !important;
		text-align: center !important;
	}

	/* CTA — wycentrowany button o naturalnej szerokości (content + padding).
	   width: auto + max-content nadpisuje WP-owe width:100% na nav-link <a>. */
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-cta a,
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-cta a.wp-block-navigation-item__content {
		display: inline-block !important;
		width: auto !important;
		max-width: 100% !important;
		min-width: 220px;
		box-sizing: border-box !important;
		background-color: var(--wp--preset--color--brand-lime);
		color: var(--wp--preset--color--brand-forest) !important;
		padding: 0.875rem 2.5rem !important;
		border-radius: 0.5rem;
		font-weight: 700 !important;
		font-size: 1rem !important;
		text-align: center !important;
		transition: background-color var(--wp--custom--transition--default);
	}

	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.is-overlay-cta a:hover {
		background-color: var(--wp--preset--color--brand-green);
		color: var(--wp--preset--color--brand-white) !important;
	}

	/* Bigger touch targets dla zwykłych pozycji w overlay */
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:not(.is-mobile-only) .wp-block-navigation-item__content,
	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:not(.is-mobile-only) a {
		padding: 1.125rem 0 !important;
		font-size: 1.25rem !important;
		font-weight: 500 !important;
	}
}

@media (max-width: 768px) {
	.site-header {
		padding-left: 1rem !important;
		padding-right: 1rem !important;
	}
}

/* Force WP Navigation to show hamburger at wider breakpoint */
@media (max-width: 1024px) {
	.gs-main-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none;
	}
	.gs-main-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}
}

/* Mobile overlay — full-screen, high z-index so nothing overlaps it.
   !important + inset: 0 + max-width override beat WP's inline overlay rules. */
.site-header .wp-block-navigation__responsive-container.is-menu-open {
	position: fixed !important;
	inset: 0 !important;
	width: 100vw !important;
	max-width: 100vw !important;
	height: 100vh !important;
	max-height: 100vh !important;
	min-width: 100vw !important;
	z-index: 9999 !important;
	padding: 4rem 1rem 1.5rem !important;
	background-color: rgba(255, 255, 255, 0.98) !important;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	overflow-y: auto !important;
	overflow-x: hidden;
}

/* Force the inner wrappers to fill the overlay and stack left-aligned.
   Reset every layer of padding/margin that WP/browser might inject. */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close,
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog,
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	width: 100% !important;
	max-width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	display: flex !important;
	flex-direction: column !important;
	align-items: stretch !important;
	gap: 0 !important;
	max-width: 300px !important;
	margin: 0 auto !important;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	display: flex !important;
	flex-direction: column !important;
	align-items: stretch !important;
	justify-content: flex-start !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
	gap: 0 !important;
}

/* Close button (X) — wyraźnie widoczny z białym tłem + cieniem.
   UWAGA: overlay ma backdrop-filter który tworzy nowy containing block,
   więc position:fixed jest faktycznie pozycjonowany względem overlaya (a nie viewportu).
   Overlay ma inset:0, więc top:0.5rem right:0.5rem to rogiec viewportu — czyli OK. */
.site-header .wp-block-navigation__responsive-container.is-menu-open button.wp-block-navigation__responsive-container-close {
	position: fixed !important;
	top: 0.75rem !important;
	/* X wyrównany z prawą krawędzią menu content (300px wide, centered).
	   (100vw - 300px) / 2 = odstęp content od prawej krawędzi viewportu.
	   max() chroni przed ujemną wartością na bardzo wąskich ekranach. */
	right: max(0.5rem, calc((100vw - 300px) / 2)) !important;
	padding: 0.5rem !important;
	margin: 0 !important;
	background: rgba(255, 255, 255, 0.95) !important;
	border: 1px solid rgba(0, 0, 0, 0.08) !important;
	border-radius: 50% !important;
	color: var(--wp--preset--color--brand-forest) !important;
	width: 44px !important;
	height: 44px !important;
	min-width: 44px !important;
	min-height: 44px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	z-index: 10000 !important;
	cursor: pointer;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
	-webkit-appearance: none;
	appearance: none;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open button.wp-block-navigation__responsive-container-close svg {
	width: 24px !important;
	height: 24px !important;
	display: block !important;
	fill: none !important;
	stroke: currentColor !important;
	stroke-width: 2.5 !important;
}

/* Nav items — tight rows, left-aligned, no indent.
   <li> itself has zero padding; the <a> inside gets the tap target padding. */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
	border-bottom: 1px solid rgba(0, 0, 0, 0.08);
	text-align: left !important;
	list-style: none !important;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:last-child {
	border-bottom: none;
}

/* The <a> inside <li> gets the tap-target padding (left-aligned, no left indent). */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: block !important;
	width: 100% !important;
	padding: 0.625rem 0 !important;
	margin: 0 !important;
	font-size: 1.0625rem !important;
	color: var(--wp--preset--color--brand-forest) !important;
	text-decoration: none;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a {
	padding: 1rem 0;
	font-size: 1.125rem;
	font-weight: 500;
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer {
	background-color: var(--wp--preset--color--brand-dark);
	color: var(--wp--preset--color--brand-white);
}

.site-footer a {
	color: rgba(255, 255, 255, 0.7);
	text-decoration: none;
	transition: color var(--wp--custom--transition--default);
}

.site-footer a:hover {
	color: var(--wp--preset--color--brand-lime);
}

.site-footer h3,
.site-footer .wp-block-heading {
	color: var(--wp--preset--color--brand-white);
	font-size: 1rem;
	font-weight: 600;
	margin-bottom: 1rem;
}

.site-footer li {
	list-style: none;
}

.footer-tagline {
	font-family: 'Grape Nuts', cursive;
	color: var(--wp--preset--color--brand-lime);
	font-size: 1.125rem;
}

.footer-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background-color: rgba(255, 255, 255, 0.1);
	color: var(--wp--preset--color--brand-white);
	transition: all var(--wp--custom--transition--default);
}

.footer-social a:hover {
	background-color: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	transform: translateY(-2px);
}

.footer-bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	padding-top: 1.5rem;
	margin-top: 3rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.5);
	font-size: 0.875rem;
}

/* ==========================================================================
   Hero Sections
   ========================================================================== */

.hero-section {
	position: relative;
	min-height: 70vh;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	margin-top: -4.5rem;
}

.hero-section.hero-full {
	min-height: 100vh;
}

/* Branded overlay — forest tint */
.hero-overlay {
	position: relative;
}

.wp-block-cover.hero-overlay .wp-block-cover__background {
	background: linear-gradient(180deg, rgba(21, 67, 38, 0.4) 0%, rgba(21, 67, 38, 0.6) 100%) !important;
	opacity: 1 !important;
}

.wp-block-cover.hero-section .wp-block-cover__inner-container {
	max-width: 1200px;
	margin: 0 auto;
	text-align: center;
}

/* Hero typography — light & large */
.wp-block-cover.hero-section h1 {
	font-size: clamp(2.25rem, 6vw, 4rem);
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: -0.02em;
	margin-bottom: 1.5rem;
	color: var(--wp--preset--color--brand-white);
}

.wp-block-cover.hero-section p {
	font-size: clamp(1.125rem, 2.5vw, 1.5rem);
	font-weight: 400;
	line-height: 1.6;
	opacity: 0.9;
}

/* Scroll indicator bounce */
@keyframes gs-bounce {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(8px); }
}

.gs-scroll-indicator {
	position: absolute;
	bottom: 2rem;
	left: 50%;
	transform: translateX(-50%);
	animation: gs-bounce 2s ease-in-out infinite;
	opacity: 0.7;
	z-index: 5;
}

.gs-scroll-indicator svg {
	width: 32px;
	height: 32px;
	color: var(--wp--preset--color--brand-white);
}

/* ==========================================================================
   Cards — glassmorphism + image hover zoom
   ========================================================================== */

.gs-card {
	background: var(--wp--preset--color--brand-white);
	border-radius: var(--wp--custom--radius--default);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--sm);
	transition: transform var(--wp--custom--transition--default), box-shadow var(--wp--custom--transition--default);
}

.gs-card:hover {
	transform: translateY(-6px);
	box-shadow: var(--wp--custom--shadow--lg);
}

/* Image zoom on card hover */
.gs-card .gs-card-image img,
.gs-card > figure img,
.gs-card-image img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.gs-card:hover .gs-card-image img,
.gs-card:hover > figure img {
	transform: scale(1.08);
}

.gs-card-content {
	padding: 1.75rem;
}

/* T14 fix: ensure cards align consistently in a columns layout.
   - Zero out figure margins so images stick to the top of the card.
   - Make cards equal-height inside columns so contents below align too. */
.gs-card > figure,
.gs-card .wp-block-image,
.gs-card .gs-card-image {
	margin: 0;
	padding: 0;
}

.wp-block-columns .gs-card {
	height: 100%;
	display: flex;
	flex-direction: column;
}

.wp-block-columns .gs-card .gs-card-content {
	flex: 1;
	display: flex;
	flex-direction: column;
}

/* Dark variant */
.gs-card-dark {
	background: var(--wp--preset--color--brand-dark);
	color: var(--wp--preset--color--brand-white);
	border-radius: var(--wp--custom--radius--default);
	overflow: hidden;
	transition: transform var(--wp--custom--transition--default), box-shadow var(--wp--custom--transition--default);
}

.gs-card-dark:hover {
	transform: translateY(-6px);
	box-shadow: var(--wp--custom--shadow--xl);
}

.gs-card-dark img {
	width: 100%;
	height: 220px;
	object-fit: cover;
}

.gs-card-dark-content {
	padding: 1.75rem;
}

/* Translucent cards (on dark backgrounds) — glassmorphism */
.gs-card-glass {
	background: rgba(255, 255, 255, 0.08);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	border-radius: var(--wp--custom--radius--lg);
	border: 1px solid rgba(255, 255, 255, 0.1);
	padding: 2rem;
	transition: all var(--wp--custom--transition--slow);
}

.gs-card-glass:hover {
	border-color: rgba(217, 231, 76, 0.4);
	background: rgba(255, 255, 255, 0.12);
}

/* Stat cards — translucent on dark bg */
.gs-stat-card {
	background: rgba(255, 255, 255, 0.08);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	border-radius: var(--wp--custom--radius--default);
	padding: 2rem;
	text-align: center;
	transition: all var(--wp--custom--transition--default);
}

.gs-stat-card:hover {
	background: rgba(255, 255, 255, 0.14);
	transform: translateY(-3px);
}

.gs-stat-number {
	font-size: 2.2rem;
	font-weight: 600;
	line-height: 1;
	margin-top: 0.75rem;
}

.gs-stat-label {
	font-size: 0.9375rem;
	font-weight: 400;
	opacity: 0.8;
	letter-spacing: 0.01em;
}

/* Stat cards on light backgrounds */
.gs-stat-card-light {
	background: var(--wp--preset--color--brand-white);
	border-radius: var(--wp--custom--radius--default);
	padding: 2rem;
	text-align: center;
	box-shadow: var(--wp--custom--shadow--sm);
	transition: all var(--wp--custom--transition--default);
}

.gs-stat-card-light:hover {
	box-shadow: var(--wp--custom--shadow--md);
	transform: translateY(-2px);
}

/* Feature cards with icon */
.gs-feature-card {
	text-align: center;
	padding: 2rem 1.5rem;
	border-radius: var(--wp--custom--radius--default);
	transition: all var(--wp--custom--transition--default);
}

.gs-feature-card:hover {
	transform: translateY(-2px);
}

.gs-feature-icon {
	width: 56px;
	height: 56px;
	margin: 0 auto 1rem;
	background-color: rgba(70, 149, 60, 0.1);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--brand-green);
	transition: all var(--wp--custom--transition--default);
}

.gs-feature-card:hover .gs-feature-icon {
	background-color: rgba(70, 149, 60, 0.2);
	transform: scale(1.05);
}

/* Cover card — activity overlay cards */
.wp-block-cover.gs-cover-card {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	min-height: unset !important;
	position: relative;
}

.wp-block-cover.gs-cover-card img.wp-block-cover__image-background {
	transition: transform 0.7s ease-out;
}

.wp-block-cover.gs-cover-card:hover img.wp-block-cover__image-background {
	transform: scale(1.1);
}

/* Bottom-up dark gradient — guarantees text legibility regardless of image
   brightness or overlay dim percentage. Sits between image and content. */
.wp-block-cover.gs-cover-card::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 65%;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0.35) 45%, transparent 100%);
	pointer-events: none;
	z-index: 1;
}

.wp-block-cover.gs-cover-card .wp-block-cover__inner-container {
	position: relative;
	z-index: 2;
}

/* "Zobacz więcej →" style links inside cover-card — consistent across all pages.
   Targets plain anchors but skips block-button anchors. */
.wp-block-cover.gs-cover-card a:not(.wp-block-button__link) {
	color: var(--wp--preset--color--brand-lime);
	font-weight: 600;
	text-decoration: none;
	display: inline-block;
	transition: transform var(--wp--custom--transition--default), color var(--wp--custom--transition--default);
}

.wp-block-cover.gs-cover-card a:not(.wp-block-button__link):hover {
	color: var(--wp--preset--color--brand-white);
	transform: translateX(4px);
}

/* Glass card images */
.gs-card-glass-image {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: 0.75rem;
}

.gs-card-glass-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.gs-card-glass:hover .gs-card-glass-image img {
	transform: scale(1.05);
}

/* Check list on dark backgrounds */
.gs-card-glass .gs-check-list li {
	color: rgba(255, 255, 255, 0.8);
}

/* Food images */
.gs-food-image {
	overflow: hidden;
}

.gs-food-image img {
	transition: transform 0.5s ease-out;
}

.gs-food-image:hover img {
	transform: scale(1.1);
}

/* Activity card — image with gradient overlay */
.gs-activity-card {
	position: relative;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--lg);
	aspect-ratio: 4 / 3;
	background: var(--wp--preset--color--brand-dark);
}

.gs-activity-card img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.gs-activity-card:hover img {
	transform: scale(1.1);
}

.gs-activity-card::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(38, 38, 38, 0.9) 0%, rgba(38, 38, 38, 0.4) 40%, transparent 100%);
	z-index: 1;
}

.gs-activity-card .gs-activity-content {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 1.5rem;
	z-index: 2;
	color: var(--wp--preset--color--brand-white);
}

.gs-activity-card .gs-activity-content h3 {
	font-size: 1.25rem;
	font-weight: 600;
	margin-bottom: 0.5rem;
	color: var(--wp--preset--color--brand-white);
}

.gs-activity-card .gs-activity-content p {
	font-size: 0.875rem;
	opacity: 0.8;
	font-weight: 400;
}

/* Testimonial cards */
.gs-testimonial {
	background: var(--wp--preset--color--brand-white);
	border-radius: var(--wp--custom--radius--lg);
	padding: 2.5rem;
	box-shadow: var(--wp--custom--shadow--md);
	height: 100%;
	display: flex;
	flex-direction: column;
}

.gs-testimonial-stars {
	color: var(--wp--preset--color--brand-lime);
	font-size: 1.25rem;
	margin-bottom: 1.5rem;
	letter-spacing: 2px;
}

.gs-testimonial-text {
	font-style: italic;
	font-weight: 400;
	font-size: 1.0625rem;
	margin-bottom: 1.5rem;
	line-height: 1.7;
	flex: 1;
}

.gs-testimonial-author {
	font-weight: 600;
	color: var(--wp--preset--color--brand-forest);
}

.gs-testimonial-role {
	font-size: 0.875rem;
	opacity: 0.6;
}

/* ==========================================================================
   Sections — premium spacing
   ========================================================================== */

.gs-section {
	padding: 5rem 1.5rem;
}

.gs-section-dark {
	background-color: var(--wp--preset--color--brand-dark);
	color: var(--wp--preset--color--brand-white);
	padding: 5rem 1.5rem;
}

.gs-section-forest {
	background-color: var(--wp--preset--color--brand-forest);
	color: var(--wp--preset--color--brand-white);
	padding: 5rem 1.5rem;
}

.gs-section-navy {
	background-color: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--brand-white);
	padding: 5rem 1.5rem;
}

.gs-section-lime {
	background-color: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	padding: 5rem 1.5rem;
}

.gs-section-lime-light {
	background-color: rgba(217, 231, 76, 0.1);
	padding: 5rem 1.5rem;
}

.gs-section-gray {
	background-color: #f8f8f8;
	padding: 5rem 1.5rem;
}

.gs-section-title {
	text-align: center;
	margin-bottom: 4rem;
}

.gs-section-title h2 {
	margin-bottom: 1rem;
}

.gs-section-title p {
	max-width: 700px;
	margin: 0 auto;
	color: var(--wp--preset--color--text-muted);
	font-weight: 400;
}

.gs-section-dark .gs-section-title p,
.gs-section-forest .gs-section-title p,
.gs-section-navy .gs-section-title p,
.has-brand-white-color .gs-section-title p {
	color: rgba(255, 255, 255, 0.7);
}

/* ==========================================================================
   Responsive section-padding
   ========================================================================== */

.section-padding {
	padding-left: max(1.5rem, calc((100% - 1200px) / 2));
	padding-right: max(1.5rem, calc((100% - 1200px) / 2));
}

/* ==========================================================================
   Grid Layouts
   ========================================================================== */

.gs-grid-2 {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 2rem;
}

.gs-grid-3 {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.5rem;
}

.gs-grid-4 {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1.5rem;
}

.gs-grid-5 {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 1.5rem;
}

.gs-grid-6 {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 1.5rem;
}

@media (min-width: 1025px) {
	.gs-section,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy,
	.gs-section-lime,
	.gs-section-lime-light,
	.gs-section-gray {
		padding: 7rem max(1.5rem, calc((100% - 1200px) / 2));
	}
}

@media (max-width: 1024px) {
	.gs-grid-4,
	.gs-grid-5,
	.gs-grid-6 {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 768px) {
	.gs-grid-3,
	.gs-grid-4,
	.gs-grid-5,
	.gs-grid-6 {
		grid-template-columns: repeat(2, 1fr);
	}

	.gs-section,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy,
	.gs-section-lime,
	.gs-section-lime-light,
	.gs-section-gray {
		padding: 3.5rem 1rem;
	}

	.gs-section-title {
		margin-bottom: 2.5rem;
	}

	.hero-section {
		min-height: 50vh;
	}

	.hero-section.hero-full {
		min-height: 75vh;
	}
}

@media (max-width: 480px) {
	.gs-grid-2,
	.gs-grid-3 {
		grid-template-columns: 1fr;
	}
}

/* ==========================================================================
   WP Block columns enhancements
   ========================================================================== */

.wp-block-columns {
	gap: 2rem;
}

@media (max-width: 768px) {
	.wp-block-columns:not(.is-not-stacked-on-mobile) {
		gap: 1.5rem;
	}
}

/* ==========================================================================
   WP Block cover improvements
   ========================================================================== */

.wp-block-cover {
	overflow: hidden;
}

.wp-block-cover img.wp-block-cover__image-background {
	transition: transform 8s ease-out;
}

.wp-block-cover:hover img.wp-block-cover__image-background {
	transform: scale(1.03);
}

/* ==========================================================================
   WP Block image — smooth corners, hover
   ========================================================================== */

.wp-block-image img {
	border-radius: 0.5rem;
}

.wp-block-image.size-large img {
	border-radius: var(--wp--custom--radius--default);
}

/* ==========================================================================
   WP Block Gallery
   ========================================================================== */

.wp-block-gallery {
	--wp--style--gallery-gap-default: 1rem;
	gap: var(--wp--style--unstable-gallery-gap, var(--wp--style--gallery-gap-default));
}

.wp-block-gallery .wp-block-image {
	margin: 0;
	overflow: hidden;
	border-radius: 0.5rem;
}

.wp-block-gallery .wp-block-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0.5rem;
	transition: transform 0.5s ease-out;
}

.wp-block-gallery .wp-block-image:hover img {
	transform: scale(1.05);
}

/* Gallery with crop (default) — equal height rows */
.wp-block-gallery.has-nested-images.is-cropped .wp-block-image {
	aspect-ratio: auto;
}

.wp-block-gallery.has-nested-images.is-cropped .wp-block-image img {
	object-fit: cover;
	height: 100%;
}

/* Columns setting — ensure the grid works */
.wp-block-gallery.has-nested-images {
	display: flex;
	flex-wrap: wrap;
}

.wp-block-gallery.columns-1 .wp-block-image {
	width: 100%;
	flex-basis: 100%;
}

.wp-block-gallery.columns-2 .wp-block-image {
	width: calc(50% - var(--wp--style--gallery-gap-default) / 2);
	flex-basis: calc(50% - var(--wp--style--gallery-gap-default) / 2);
	flex-grow: 0;
}

.wp-block-gallery.columns-3 .wp-block-image {
	width: calc(33.333% - var(--wp--style--gallery-gap-default) * 2 / 3);
	flex-basis: calc(33.333% - var(--wp--style--gallery-gap-default) * 2 / 3);
	flex-grow: 0;
}

.wp-block-gallery.columns-4 .wp-block-image {
	width: calc(25% - var(--wp--style--gallery-gap-default) * 3 / 4);
	flex-basis: calc(25% - var(--wp--style--gallery-gap-default) * 3 / 4);
	flex-grow: 0;
}

.wp-block-gallery.columns-5 .wp-block-image {
	width: calc(20% - var(--wp--style--gallery-gap-default) * 4 / 5);
	flex-basis: calc(20% - var(--wp--style--gallery-gap-default) * 4 / 5);
	flex-grow: 0;
}

.wp-block-gallery.columns-6 .wp-block-image {
	width: calc(16.666% - var(--wp--style--gallery-gap-default) * 5 / 6);
	flex-basis: calc(16.666% - var(--wp--style--gallery-gap-default) * 5 / 6);
	flex-grow: 0;
}

/* Gallery figcaption */
.wp-block-gallery .wp-block-image figcaption {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 0.75rem 1rem;
	background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
	color: var(--wp--preset--color--brand-white);
	font-size: var(--wp--preset--font-size--small);
	border-radius: 0 0 0.5rem 0.5rem;
	margin: 0;
}

/* Responsive — collapse columns on smaller screens */
@media (max-width: 768px) {
	.wp-block-gallery.columns-3 .wp-block-image,
	.wp-block-gallery.columns-4 .wp-block-image,
	.wp-block-gallery.columns-5 .wp-block-image,
	.wp-block-gallery.columns-6 .wp-block-image {
		width: calc(50% - var(--wp--style--gallery-gap-default) / 2);
		flex-basis: calc(50% - var(--wp--style--gallery-gap-default) / 2);
	}
}

@media (max-width: 480px) {
	.wp-block-gallery.columns-2 .wp-block-image,
	.wp-block-gallery.columns-3 .wp-block-image,
	.wp-block-gallery.columns-4 .wp-block-image,
	.wp-block-gallery.columns-5 .wp-block-image,
	.wp-block-gallery.columns-6 .wp-block-image {
		width: 100%;
		flex-basis: 100%;
	}
}

/* ==========================================================================
   Contact Form (CF7 styling)
   ========================================================================== */

/* Optional card wrapper around CF7 — gives the form a translucent panel look. */
.gs-contact-form {
	background: rgba(255, 255, 255, 0.08);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	border-radius: var(--wp--custom--radius--lg);
	padding: 2.5rem;
}

/* Base styles target CF7's own .wpcf7-form so the form looks right even without the .gs-contact-form wrapper. Default = dark variant (white text on translucent inputs). For light sections, add .gs-contact-form-light wrapper. */
.wpcf7-form {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

.wpcf7-form p {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.wpcf7-form .wpcf7-form-control-wrap {
	display: block;
	position: relative;
}

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form input[type="number"],
.wpcf7-form input[type="date"],
.wpcf7-form textarea,
.wpcf7-form select {
	width: 100%;
	padding: 0.875rem 1rem;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 0.5rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 400;
	transition: border-color var(--wp--custom--transition--default), box-shadow var(--wp--custom--transition--default), background-color var(--wp--custom--transition--default);
	background-color: rgba(255, 255, 255, 0.08);
	color: var(--wp--preset--color--brand-white);
	box-sizing: border-box;
}

.wpcf7-form input::placeholder,
.wpcf7-form textarea::placeholder {
	color: rgba(255, 255, 255, 0.45);
}

.wpcf7-form input:focus,
.wpcf7-form textarea:focus,
.wpcf7-form select:focus {
	outline: none;
	border-color: var(--wp--preset--color--brand-lime);
	box-shadow: 0 0 0 3px rgba(217, 231, 76, 0.18);
	background-color: rgba(255, 255, 255, 0.12);
}

.wpcf7-form textarea {
	min-height: 140px;
	resize: vertical;
}

.wpcf7-form select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='1,1 6,7 11,1'/></svg>");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	background-size: 12px 8px;
	padding-right: 2.5rem;
}

.wpcf7-form select option {
	color: var(--wp--preset--color--brand-dark);
	background-color: var(--wp--preset--color--brand-white);
}

.wpcf7-form label {
	display: block;
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: 0.01em;
}

/* The native <br> CF7 inserts between label text and the input — kill it, gap handles spacing. */
.wpcf7-form label br {
	display: none;
}

.wpcf7-form .wpcf7-list-item {
	display: inline-flex;
	align-items: flex-start;
	gap: 0.625rem;
	margin: 0 1rem 0 0;
}

.wpcf7-form .wpcf7-list-item-label {
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.9375rem;
	line-height: 1.5;
}

.wpcf7-form input[type="checkbox"],
.wpcf7-form input[type="radio"] {
	appearance: none;
	-webkit-appearance: none;
	width: 1.125rem;
	height: 1.125rem;
	margin: 0.1875rem 0 0 0;
	border: 1.5px solid rgba(255, 255, 255, 0.4);
	background-color: rgba(255, 255, 255, 0.08);
	cursor: pointer;
	flex-shrink: 0;
	transition: all var(--wp--custom--transition--fast);
	position: relative;
}

.wpcf7-form input[type="checkbox"] {
	border-radius: 0.25rem;
}

.wpcf7-form input[type="radio"] {
	border-radius: 50%;
}

.wpcf7-form input[type="checkbox"]:checked,
.wpcf7-form input[type="radio"]:checked {
	background-color: var(--wp--preset--color--brand-lime);
	border-color: var(--wp--preset--color--brand-lime);
}

.wpcf7-form input[type="checkbox"]:checked::after {
	content: "";
	position: absolute;
	left: 4px;
	top: 0px;
	width: 5px;
	height: 10px;
	border: solid var(--wp--preset--color--brand-dark);
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.wpcf7-form input[type="radio"]:checked::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 0.5rem;
	height: 0.5rem;
	background-color: var(--wp--preset--color--brand-dark);
	border-radius: 50%;
	transform: translate(-50%, -50%);
}

.wpcf7-form input[type="checkbox"]:focus,
.wpcf7-form input[type="radio"]:focus {
	outline: none;
	box-shadow: 0 0 0 3px rgba(217, 231, 76, 0.25);
}

.wpcf7-form .wpcf7-acceptance .wpcf7-list-item {
	display: flex;
	margin: 0;
}

.wpcf7-form .wpcf7-acceptance .wpcf7-list-item-label {
	font-size: 0.8125rem;
	color: rgba(255, 255, 255, 0.7);
}

.wpcf7-form .wpcf7-submit {
	background-color: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	border-radius: 0.5rem;
	padding: 1rem 2rem;
	font-weight: 600;
	font-size: 1rem;
	font-family: inherit;
	border: none;
	cursor: pointer;
	transition: all var(--wp--custom--transition--default);
	width: 100%;
	letter-spacing: 0.01em;
}

.wpcf7-form .wpcf7-submit:hover:not([disabled]) {
	background-color: var(--wp--preset--color--brand-green);
	color: var(--wp--preset--color--brand-white);
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(70, 149, 60, 0.3);
}

.wpcf7-form .wpcf7-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--brand-lime);
	outline-offset: 3px;
}

.wpcf7-form .wpcf7-submit[disabled] {
	opacity: 0.6;
	cursor: not-allowed;
}

.wpcf7-form.submitting {
	opacity: 0.7;
	pointer-events: none;
}

.wpcf7-form .wpcf7-spinner {
	display: inline-block;
	width: 1.25rem;
	height: 1.25rem;
	margin: 0 0 0 0.75rem;
	vertical-align: middle;
	background: none;
	border: 2px solid rgba(255, 255, 255, 0.25);
	border-top-color: var(--wp--preset--color--brand-lime);
	border-radius: 50%;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.2s ease;
}

.wpcf7-form .wpcf7-spinner.is-active,
.wpcf7-form.submitting .wpcf7-spinner {
	opacity: 1;
	visibility: visible;
	animation: gs-spin 0.8s linear infinite;
}

@keyframes gs-spin {
	to { transform: rotate(360deg); }
}

.wpcf7-form .wpcf7-not-valid {
	border-color: #ff6b6b !important;
	box-shadow: 0 0 0 3px rgba(255, 107, 107, 0.15) !important;
}

.wpcf7-form .wpcf7-not-valid-tip {
	display: block;
	margin-top: 0.375rem;
	color: #ffb3b3;
	font-size: 0.8125rem;
	font-weight: 500;
}

.wpcf7-form .wpcf7-response-output {
	margin: 1.5rem 0 0 0;
	padding: 1rem 1.25rem;
	border: none;
	border-radius: 0.5rem;
	font-size: 0.9375rem;
	line-height: 1.5;
	background-color: rgba(255, 255, 255, 0.06);
	color: rgba(255, 255, 255, 0.9);
}

.wpcf7-form.sent .wpcf7-response-output {
	background-color: rgba(70, 149, 60, 0.18);
	color: #d6f0d1;
	border-left: 3px solid var(--wp--preset--color--brand-green);
}

.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.unaccepted .wpcf7-response-output,
.wpcf7-form.spam .wpcf7-response-output,
.wpcf7-form.aborted .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output {
	background-color: rgba(255, 107, 107, 0.15);
	color: #ffd1d1;
	border-left: 3px solid #ff6b6b;
}

/* Light variant — opt-in wrapper for light/lime sections (e.g. Kontakt page) */
.gs-contact-form-light {
	background: var(--wp--preset--color--brand-white);
	box-shadow: var(--wp--custom--shadow--lg);
	border-radius: var(--wp--custom--radius--lg);
	padding: 2.5rem;
}

.gs-contact-form-light .wpcf7-form input[type="text"],
.gs-contact-form-light .wpcf7-form input[type="email"],
.gs-contact-form-light .wpcf7-form input[type="tel"],
.gs-contact-form-light .wpcf7-form input[type="url"],
.gs-contact-form-light .wpcf7-form input[type="number"],
.gs-contact-form-light .wpcf7-form input[type="date"],
.gs-contact-form-light .wpcf7-form textarea,
.gs-contact-form-light .wpcf7-form select {
	background-color: var(--wp--preset--color--brand-white);
	border: 1px solid #e5e5e5;
	color: var(--wp--preset--color--brand-dark);
}

.gs-contact-form-light .wpcf7-form input::placeholder,
.gs-contact-form-light .wpcf7-form textarea::placeholder {
	color: #999;
}

.gs-contact-form-light .wpcf7-form input:focus,
.gs-contact-form-light .wpcf7-form textarea:focus,
.gs-contact-form-light .wpcf7-form select:focus {
	border-color: var(--wp--preset--color--brand-green);
	box-shadow: 0 0 0 3px rgba(70, 149, 60, 0.12);
	background-color: var(--wp--preset--color--brand-white);
}

.gs-contact-form-light .wpcf7-form select {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%23262626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='1,1 6,7 11,1'/></svg>");
}

.gs-contact-form-light .wpcf7-form label {
	color: var(--wp--preset--color--brand-dark);
}

.gs-contact-form-light .wpcf7-form .wpcf7-list-item-label {
	color: var(--wp--preset--color--brand-dark);
}

.gs-contact-form-light .wpcf7-form .wpcf7-acceptance .wpcf7-list-item-label {
	color: #555;
}

.gs-contact-form-light .wpcf7-form input[type="checkbox"],
.gs-contact-form-light .wpcf7-form input[type="radio"] {
	border-color: #ccc;
	background-color: var(--wp--preset--color--brand-white);
}

.gs-contact-form-light .wpcf7-form input[type="checkbox"]:checked,
.gs-contact-form-light .wpcf7-form input[type="radio"]:checked {
	background-color: var(--wp--preset--color--brand-green);
	border-color: var(--wp--preset--color--brand-green);
}

.gs-contact-form-light .wpcf7-form input[type="checkbox"]:checked::after {
	border-color: var(--wp--preset--color--brand-white);
}

.gs-contact-form-light .wpcf7-form input[type="radio"]:checked::after {
	background-color: var(--wp--preset--color--brand-white);
}

.gs-contact-form-light .wpcf7-form input[type="checkbox"]:focus,
.gs-contact-form-light .wpcf7-form input[type="radio"]:focus {
	box-shadow: 0 0 0 3px rgba(70, 149, 60, 0.18);
}

.gs-contact-form-light .wpcf7-form .wpcf7-spinner {
	border-color: rgba(0, 0, 0, 0.1);
	border-top-color: var(--wp--preset--color--brand-green);
}

.gs-contact-form-light .wpcf7-form .wpcf7-not-valid-tip {
	color: #c53030;
}

.gs-contact-form-light .wpcf7-form .wpcf7-not-valid {
	border-color: #e53e3e !important;
	box-shadow: 0 0 0 3px rgba(229, 62, 62, 0.1) !important;
}

.gs-contact-form-light .wpcf7-form .wpcf7-response-output {
	background-color: #f7f7f7;
	color: var(--wp--preset--color--brand-dark);
}

.gs-contact-form-light .wpcf7-form.sent .wpcf7-response-output {
	background-color: rgba(70, 149, 60, 0.1);
	color: var(--wp--preset--color--brand-forest);
}

.gs-contact-form-light .wpcf7-form.invalid .wpcf7-response-output,
.gs-contact-form-light .wpcf7-form.unaccepted .wpcf7-response-output,
.gs-contact-form-light .wpcf7-form.spam .wpcf7-response-output,
.gs-contact-form-light .wpcf7-form.aborted .wpcf7-response-output,
.gs-contact-form-light .wpcf7-form.failed .wpcf7-response-output {
	background-color: rgba(229, 62, 62, 0.08);
	color: #c53030;
}

@media (max-width: 768px) {
	.gs-contact-form,
	.gs-contact-form-light {
		padding: 1.75rem 1.5rem;
	}
}

/* ==========================================================================
   Map
   ========================================================================== */

.gs-map-container iframe {
	width: 100%;
	height: 400px;
	border-radius: var(--wp--custom--radius--lg);
	border: 0;
	box-shadow: var(--wp--custom--shadow--xl);
}

/* Distance grid */
.gs-distance-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1rem;
	margin-top: 2rem;
}

.gs-distance-item {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem;
	background: rgba(250, 250, 250, 1);
	border-radius: 0.75rem;
	transition: all var(--wp--custom--transition--default);
}

.gs-distance-item:hover {
	background: rgba(217, 231, 76, 0.18);
}

.gs-distance-city {
	font-weight: 600;
	font-size: 0.9375rem;
}

.gs-distance-time {
	font-size: 0.8125rem;
	opacity: 0.6;
	font-weight: 400;
}

@media (max-width: 768px) {
	.gs-distance-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 480px) {
	.gs-distance-grid {
		grid-template-columns: 1fr;
	}
}

/* ==========================================================================
   Tabs (for Sale page)
   ========================================================================== */

.gs-tabs-nav {
	display: flex;
	gap: 0.75rem;
	margin-bottom: 2.5rem;
	flex-wrap: wrap;
	justify-content: center;
}

.gs-tab-btn {
	padding: 0.75rem 1.5rem;
	border: none;
	border-radius: 0.5rem;
	background: rgba(217, 231, 76, 0.15);
	color: var(--wp--preset--color--brand-dark);
	font-weight: 600;
	font-size: 0.9375rem;
	cursor: pointer;
	transition: all var(--wp--custom--transition--default);
}

.gs-tab-btn:hover {
	background: rgba(217, 231, 76, 0.3);
}

.gs-tab-btn.active {
	background: var(--wp--preset--color--brand-green);
	color: var(--wp--preset--color--brand-white);
}

.gs-tab-panel {
	display: none;
}

.gs-tab-panel.active {
	display: block;
}

/* ==========================================================================
   FAQ / Accordion
   ========================================================================== */

/* FAQ block — native <details><summary>, subtle left-aligned style */
.gs-faq {
	display: flex;
	flex-direction: column;
	gap: 0;
	text-align: left;
}

.gs-faq-item {
	border-bottom: 1px solid rgba(0, 0, 0, 0.08);
	transition: background-color 0.3s ease;
}

.gs-faq-item:first-child {
	border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.gs-faq-item summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 1.25rem 0.5rem;
	font-size: 1.0625rem;
	font-weight: 600;
	cursor: pointer;
	color: var(--wp--preset--color--brand-dark);
	list-style: none;
	transition: color 0.3s ease, padding-left 0.3s ease;
}

.gs-faq-item summary::-webkit-details-marker {
	display: none;
}

.gs-faq-item summary::after {
	content: '';
	display: block;
	width: 1.125rem;
	height: 1.125rem;
	flex-shrink: 0;
	margin-left: 1.5rem;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2346953C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-size: contain;
	background-repeat: no-repeat;
	transition: transform 0.3s ease;
}

.gs-faq-item summary:hover {
	color: var(--wp--preset--color--brand-forest);
	padding-left: 0.75rem;
}

/* Open state */
.gs-faq-item[open] summary {
	color: var(--wp--preset--color--brand-forest);
}

.gs-faq-item[open] summary::after {
	transform: rotate(180deg);
}

.gs-faq-answer {
	padding: 0 0.5rem 1.5rem 0.5rem;
}

.gs-faq-answer p {
	color: rgba(38, 38, 38, 0.65);
	font-size: 0.9375rem;
	line-height: 1.8;
	font-weight: 400;
	margin: 0;
}

/* FAQ items — staggered scroll animation (only when animate-on-scroll is set) */
.gs-faq.animate-on-scroll .gs-faq-item {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.5s ease-out, transform 0.5s ease-out, box-shadow 0.3s ease;
}

.gs-faq.animate-on-scroll.visible .gs-faq-item {
	opacity: 1;
	transform: translateY(0);
}

.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(1) { transition-delay: 0.05s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(2) { transition-delay: 0.1s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(3) { transition-delay: 0.15s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(4) { transition-delay: 0.2s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(5) { transition-delay: 0.25s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(6) { transition-delay: 0.3s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(7) { transition-delay: 0.35s; }
.gs-faq.animate-on-scroll.visible .gs-faq-item:nth-child(8) { transition-delay: 0.4s; }

/* FAQ block — editor styles (match frontend appearance) */
.gs-faq-editor-label {
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--wp--preset--color--brand-green);
	padding: 0.5rem 0.5rem 0.75rem;
	opacity: 0.6;
}

.editor-styles-wrapper .gs-faq {
	padding: 0.5rem 0 1rem;
}

.gs-faq-item-editor {
	border-bottom: 1px solid rgba(0, 0, 0, 0.08);
	padding: 0;
	text-align: left;
}

.gs-faq-item-editor:first-child {
	border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.gs-faq-question-editor {
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--wp--preset--color--brand-dark);
	padding: 1.25rem 0.5rem;
}

.gs-faq-answer-editor {
	padding: 0 0.5rem 1.5rem 0.5rem;
}

.gs-faq-answer-editor p {
	color: rgba(38, 38, 38, 0.65);
	font-size: 0.9375rem;
	line-height: 1.8;
}

/* ==========================================================================
   Scroll Animations — smoother
   ========================================================================== */

.animate-on-scroll {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.45s ease-out, transform 0.45s ease-out;
}

.animate-on-scroll.visible {
	opacity: 1;
	transform: translateY(0);
}

.animate-on-scroll.delay-1 { transition-delay: 0.08s; }
.animate-on-scroll.delay-2 { transition-delay: 0.16s; }
.animate-on-scroll.delay-3 { transition-delay: 0.24s; }
.animate-on-scroll.delay-4 { transition-delay: 0.32s; }
.animate-on-scroll.delay-5 { transition-delay: 0.4s; }
.animate-on-scroll.delay-6 { transition-delay: 0.48s; }

/* Scale animation variant */
.animate-scale {
	opacity: 0;
	transform: scale(0.95);
	transition: opacity 0.45s ease-out, transform 0.45s ease-out;
}

.animate-scale.visible {
	opacity: 1;
	transform: scale(1);
}

/* Slide from right */
.animate-slide-right {
	opacity: 0;
	transform: translateX(40px);
	transition: opacity 0.45s ease-out, transform 0.45s ease-out;
}

.animate-slide-right.visible {
	opacity: 1;
	transform: translateX(0);
}

/* Respect prefers-reduced-motion — skip all entrance animations, show content immediately */
@media (prefers-reduced-motion: reduce) {
	.animate-on-scroll,
	.animate-scale,
	.animate-slide-right {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}

/* ==========================================================================
   Badges
   ========================================================================== */

.gs-badge {
	display: inline-block;
	padding: 0.375rem 1rem;
	border-radius: 9999px;
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.gs-badge-lime {
	background-color: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
}

.gs-badge-forest {
	background-color: var(--wp--preset--color--brand-forest);
	color: var(--wp--preset--color--brand-white);
}

.gs-badge-green {
	background-color: rgba(70, 149, 60, 0.15);
	color: var(--wp--preset--color--brand-green);
}

.gs-badge-navy {
	background-color: var(--wp--preset--color--brand-navy);
	color: var(--wp--preset--color--brand-white);
}

.gs-badge-purple {
	background-color: #8b5cf6;
	color: var(--wp--preset--color--brand-white);
}

.gs-badge-orange {
	background-color: #f97316;
	color: var(--wp--preset--color--brand-white);
}

.gs-badge-blue {
	background-color: #3b82f6;
	color: var(--wp--preset--color--brand-white);
}

/* ==========================================================================
   Process steps
   ========================================================================== */

.gs-process-step {
	position: relative;
	text-align: center;
	padding: 2rem 1.5rem;
}

.gs-process-number {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	font-weight: 600;
	font-size: 1.25rem;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto 1rem;
}

/* ==========================================================================
   Room comparison table
   ========================================================================== */

.gs-table-wrapper {
	overflow-x: auto;
	border-radius: var(--wp--custom--radius--default);
	box-shadow: var(--wp--custom--shadow--sm);
}

.gs-table {
	width: 100%;
	border-collapse: collapse;
}

.gs-table th {
	background: var(--wp--preset--color--brand-forest);
	color: var(--wp--preset--color--brand-white);
	padding: 1rem 1.25rem;
	text-align: left;
	font-weight: 600;
	font-size: 0.875rem;
	letter-spacing: 0.02em;
}

.gs-table td {
	padding: 0.875rem 1.25rem;
	border-bottom: 1px solid #f0f0f0;
	font-weight: 400;
}

.gs-table tr:hover td {
	background: #fafafa;
}

/* ==========================================================================
   Event cards
   ========================================================================== */

.gs-event-card {
	background: var(--wp--preset--color--brand-white);
	border-radius: var(--wp--custom--radius--default);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--sm);
	transition: all var(--wp--custom--transition--default);
}

.gs-event-card:hover {
	transform: translateY(-6px);
	box-shadow: var(--wp--custom--shadow--lg);
}

.gs-event-card img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.gs-event-card:hover img {
	transform: scale(1.05);
}

.gs-event-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	font-size: 0.8125rem;
	color: #888;
	margin: 0.75rem 0;
	font-weight: 400;
}

/* Events grid — Query Loop post-template */
.gs-events-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
	list-style: none;
	padding: 0;
}

.gs-event-card .wp-block-post-featured-image {
	margin: 0;
	overflow: hidden;
}

.gs-event-card .wp-block-post-featured-image img {
	border-radius: 0;
}

.gs-event-card .wp-block-post-title a {
	text-decoration: none;
	color: var(--wp--preset--color--brand-dark);
	transition: color var(--wp--custom--transition--default);
}

.gs-event-card .wp-block-post-title a:hover {
	color: var(--wp--preset--color--brand-green);
}

.gs-event-card .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.gs-event-cta {
	margin-top: 0.75rem;
}

.gs-event-cta a {
	color: var(--wp--preset--color--brand-green);
	font-weight: 600;
	text-decoration: none;
	transition: gap var(--wp--custom--transition--default);
}

.gs-event-cta a:hover {
	color: var(--wp--preset--color--brand-forest);
}

@media (max-width: 1024px) {
	.gs-events-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 768px) {
	.gs-events-grid {
		grid-template-columns: 1fr;
	}
}

/* Single event page */
.gs-single-event .gs-event-single-meta {
	margin-bottom: 1.5rem;
}

.gs-single-event .gs-event-single-meta .gs-badge {
	margin-bottom: 1rem;
}

.gs-single-event .gs-event-single-meta .gs-event-meta {
	font-size: 0.9375rem;
	color: var(--wp--preset--color--text-muted);
}

/* ==========================================================================
   Audience cards ("Dla kogo jesteśmy") — light, premium, borderless
   ========================================================================== */

.gs-dla-kogo {
	background-color: var(--wp--preset--color--gray-50);
}

.gs-audience-card {
	padding: 0;
	transition: transform var(--wp--custom--transition--default);
}

.gs-audience-card:hover {
	padding-bottom: 6px;
	border-bottom: 3px solid var(--wp--preset--color--brand-lime);
	transform: translateY(-4px);
	transition: transform var(--wp--custom--transition--default);
}

.gs-audience-image {
	overflow: hidden;
	border-radius: 0.75rem;
}

.gs-audience-image img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	transition: transform 0.7s ease-out;
}

.gs-audience-card:hover .gs-audience-image img {
	transform: scale(1.05);
}

.gs-audience-link a {
	color: var(--wp--preset--color--brand-green);
	font-weight: 600;
	text-decoration: none;
	font-size: 0.9375rem;
	transition: color var(--wp--custom--transition--default);
}

.gs-audience-link a:hover {
	color: var(--wp--preset--color--brand-forest);
}

/* ==========================================================================
   Stars for ratings
   ========================================================================== */

.gs-stars {
	color: var(--wp--preset--color--brand-lime);
	letter-spacing: 2px;
}

/* ==========================================================================
   Check list (✓ items)
   ========================================================================== */

.gs-check-list {
	list-style: none;
	padding: 0;
}

.gs-check-list li {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	padding: 0.5rem 0;
	font-weight: 400;
}

.gs-check-list li::before {
	content: '✓';
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.25rem;
	height: 1.25rem;
	min-width: 1.25rem;
	border-radius: 50%;
	background: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	font-size: 0.7rem;
	font-weight: 700;
	margin-top: 0.15em;
}

/* ==========================================================================
   Aspect ratio helpers
   ========================================================================== */

.gs-aspect-video { aspect-ratio: 16 / 9; }
.gs-aspect-4-3 { aspect-ratio: 4 / 3; }
.gs-aspect-square { aspect-ratio: 1 / 1; }
.gs-aspect-portrait { aspect-ratio: 9 / 16; }

/* ==========================================================================
   Image gallery — main image + clickable thumbnail strip (gallery.js)
   ========================================================================== */

.gs-gallery-main {
	border-radius: 1rem;
	overflow: hidden;
	margin: 0;
	box-shadow: var(--wp--custom--shadow--md);
	/* Override any inherited aspect-ratio (e.g. .gs-aspect-video) — main image uses its natural ratio. */
	aspect-ratio: auto !important;
}

.gs-gallery-main img {
	width: 100%;
	height: auto;
	object-fit: unset;
	display: block;
	transition: opacity 0.25s ease-out;
}

.gs-gallery-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 0.75rem;
}

.gs-gallery-thumb {
	flex: 0 0 auto;
	width: 80px;
	height: 60px;
	padding: 0;
	border: 2px solid transparent;
	border-radius: 0.5rem;
	overflow: hidden;
	cursor: pointer;
	background: none;
	opacity: 0.65;
	transition: border-color var(--wp--custom--transition--default), opacity var(--wp--custom--transition--default), transform var(--wp--custom--transition--default);
}

.gs-gallery-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.gs-gallery-thumb:hover {
	opacity: 1;
	transform: translateY(-2px);
}

.gs-gallery-thumb.is-active {
	border-color: var(--wp--preset--color--brand-lime);
	opacity: 1;
}

@media (max-width: 480px) {
	.gs-gallery-thumb {
		width: 64px;
		height: 48px;
	}
}

/* ==========================================================================
   WordPress block overrides — premium polish
   ========================================================================== */

/* Let WP block gap handle spacing — only reset outer margins */
.wp-block-cover,
.wp-block-spacer,
.wp-block-separator {
	margin-top: 0;
	margin-bottom: 0;
}

/* Full-width sections — ensure no constrained width from WP */
.wp-block-cover.hero-section,
.wp-block-cover.hero-overlay,
.wp-block-group.gs-section,
.wp-block-group.gs-section-dark,
.wp-block-group.gs-section-forest,
.wp-block-group.gs-section-navy,
.wp-block-group.gs-section-lime,
.wp-block-group.gs-section-lime-light,
.wp-block-group.gs-section-gray {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* Override WP default button padding */
.wp-block-button .wp-block-button__link {
	padding: 0.75rem 1.75rem;
	font-size: 0.9375rem;
}

.wp-block-button.is-style-primary .wp-block-button__link {
	padding: 0.75rem 1.75rem;
}

.wp-block-button.is-style-outline .wp-block-button__link {
	padding: calc(0.75rem - 2px) calc(1.75rem - 2px);
}

/* Separator — subtle, not harsh */
.wp-block-separator {
	border: none;
	height: 1px;
	background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.1), transparent);
	opacity: 1;
}

.wp-block-separator.has-brand-lime-color {
	background: linear-gradient(to right, transparent, var(--wp--preset--color--brand-lime), transparent);
}

/* Spacer — reduce default */
.wp-block-spacer {
	margin: 0;
}

/* Buttons container — even spacing */
.wp-block-buttons {
	gap: 1rem;
}

/* Group block — no extra margin */
.wp-block-group > *:first-child {
	margin-top: 0;
}

.wp-block-group > *:last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   Chips / pills (equipment tags)
   ========================================================================== */

.gs-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	background: rgba(217, 231, 76, 0.2);
	color: var(--wp--preset--color--brand-dark);
	padding: 0.375rem 0.75rem;
	border-radius: 9999px;
	font-size: 0.8125rem;
	font-weight: 500;
}

.gs-chip .gs-check-icon {
	color: var(--wp--preset--color--brand-green);
	font-weight: 700;
}

/* ==========================================================================
   Layout cards (room arrangements)
   ========================================================================== */

.gs-layout-card {
	background: var(--wp--preset--color--brand-white);
	border: 1px solid #e5e5e5;
	border-radius: 0.5rem;
	padding: 0.75rem;
}

.gs-layout-name {
	font-weight: 600;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--brand-dark);
}

.gs-layout-cap {
	font-size: 0.8125rem;
	color: rgba(38, 38, 38, 0.6);
	font-weight: 400;
}

/* ==========================================================================
   Map legend
   ========================================================================== */

.gs-map-legend {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.gs-map-legend-item {
	display: flex;
	align-items: center;
	gap: 1rem;
}

.gs-map-legend-dot {
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	flex-shrink: 0;
}

.gs-map-legend-label {
	flex: 1;
	color: var(--wp--preset--color--brand-white);
	font-weight: 400;
}

.gs-map-legend-count {
	color: rgba(255, 255, 255, 0.6);
	font-weight: 400;
	font-size: 0.875rem;
}

/* ==========================================================================
   Attraction items (Okolica page)
   ========================================================================== */

.gs-attraction-item {
	background: var(--wp--preset--color--brand-white);
	border: 1px solid #e5e5e5;
	border-radius: var(--wp--custom--radius--default);
	padding: 1.25rem;
	transition: all var(--wp--custom--transition--default);
}

.gs-attraction-item:hover {
	border-color: var(--wp--preset--color--brand-lime);
	box-shadow: var(--wp--custom--shadow--sm);
}

/* ==========================================================================
   Video placeholder
   ========================================================================== */

.gs-video-placeholder {
	aspect-ratio: 16 / 9;
	background: rgba(255, 255, 255, 0.05);
	border-radius: var(--wp--custom--radius--lg);
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px dashed rgba(255, 255, 255, 0.2);
	color: rgba(255, 255, 255, 0.4);
	font-size: 1.125rem;
}

/* ==========================================================================
   Cover card content overlay
   ========================================================================== */

.gs-cover-card-content {
	position: relative;
	z-index: 2;
}

/* ==========================================================================
   Form submit button (inside gs-contact-form)
   ========================================================================== */

.gs-form-submit {
	margin-top: 1.5rem;
}

/* ==========================================================================
   FAQ cards (static, like React reference)
   ========================================================================== */

.gs-faq-card {
	background: rgba(217, 231, 76, 0.1);
	border-radius: var(--wp--custom--radius--default);
	padding: 1.5rem;
	margin-bottom: 1rem;
}

.gs-faq-card .gs-faq-q {
	font-weight: 600;
	color: var(--wp--preset--color--brand-forest);
	line-height: 1.4;
	letter-spacing: 0;
}

.gs-faq-card .gs-faq-a {
	color: rgba(38, 38, 38, 0.7);
	font-weight: 400;
	padding-left: 2rem;
	margin-top: 0.5rem;
}

/* ==========================================================================
   Distance cards (Kontakt page)
   ========================================================================== */

.gs-distance-card {
	background: var(--wp--preset--color--brand-white);
	border-radius: 0.75rem;
	padding: 1rem 1.25rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	box-shadow: var(--wp--custom--shadow--sm);
}

.gs-distance-card .gs-distance-city {
	font-weight: 600;
	color: var(--wp--preset--color--brand-dark);
}

.gs-distance-card .gs-distance-time {
	color: rgba(38, 38, 38, 0.6);
	font-weight: 400;
}

/* Social links in hero — override WP default styles */
.hero-section .wp-block-social-links {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 1rem;
}

.hero-section .wp-block-social-links .wp-social-link {
	width: 48px;
	height: 48px;
	background: rgba(255, 255, 255, 0.1);
	border-radius: 50%;
	transition: all var(--wp--custom--transition--default);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	margin: 0;
}

/* Make the <a> fill the <li> and center the SVG inside the circle */
.hero-section .wp-block-social-links .wp-social-link .wp-block-social-link-anchor {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}

.hero-section .wp-block-social-links .wp-social-link .wp-block-social-link-anchor svg {
	width: 22px;
	height: 22px;
}

.hero-section .wp-block-social-links .wp-social-link:hover {
	background: var(--wp--preset--color--brand-lime);
	color: var(--wp--preset--color--brand-dark);
	transform: scale(1.1);
}

/* ==========================================================================
   Lucide SVG Icons — CSS icon system
   ========================================================================== */

.gs-icon {
	display: inline-block;
	width: 24px;
	height: 24px;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	vertical-align: middle;
	flex-shrink: 0;
}

.gs-icon-lg {
	width: 32px;
	height: 32px;
}

/* Feature icon circle — used in stat cards and feature cards */
.gs-feature-icon .gs-icon {
	width: 28px;
	height: 28px;
	filter: brightness(0) saturate(100%) invert(40%) sepia(60%) saturate(500%) hue-rotate(85deg);
}

/* White icons (for dark backgrounds) */
.gs-section-dark .gs-icon,
.gs-section-forest .gs-icon,
.gs-section-navy .gs-icon,
.wp-block-cover .gs-icon,
.gs-stat-card .gs-icon {
	filter: brightness(0) invert(1);
}

/* Lime icons (for accents on dark bg) */
.gs-icon-lime {
	filter: brightness(0) saturate(100%) invert(88%) sepia(30%) saturate(600%) hue-rotate(20deg) !important;
}

/* --- Activity icons --- */
.gs-icon-bike { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18.5' cy='17.5' r='3.5'/%3E%3Ccircle cx='5.5' cy='17.5' r='3.5'/%3E%3Ccircle cx='15' cy='5' r='1'/%3E%3Cpath d='M12 17.5V14l-3-3 4-3 2 3h2'/%3E%3C/svg%3E"); }
.gs-icon-sailboat { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 18H2a4 4 0 0 0 4-4V6a2 2 0 0 1 4 0v8l8 4Z'/%3E%3Cpath d='M2 18h20'/%3E%3C/svg%3E"); }
.gs-icon-trophy { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9H4.5a2.5 2.5 0 0 1 0-5H6'/%3E%3Cpath d='M18 9h1.5a2.5 2.5 0 0 0 0-5H18'/%3E%3Cpath d='M4 22h16'/%3E%3Cpath d='M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22'/%3E%3Cpath d='M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22'/%3E%3Cpath d='M18 2H6v7a6 6 0 0 0 12 0V2Z'/%3E%3C/svg%3E"); }
.gs-icon-flame { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z'/%3E%3C/svg%3E"); }
.gs-icon-map { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 6 6-3 6 3 6-3v15l-6 3-6-3-6 3z'/%3E%3Cpath d='M9 3v15'/%3E%3Cpath d='M15 6v15'/%3E%3C/svg%3E"); }
.gs-icon-waves { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1'/%3E%3Cpath d='M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1'/%3E%3Cpath d='M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1'/%3E%3C/svg%3E"); }

/* --- Place / stat icons --- */
.gs-icon-home { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpolyline points='9 22 9 12 15 12 15 22'/%3E%3C/svg%3E"); }
.gs-icon-users { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E"); }
.gs-icon-trees { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 10v.2A3 3 0 0 1 8.9 16v0H5v0h0a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z'/%3E%3Cpath d='M7 16v6'/%3E%3Cpath d='M13 19v3'/%3E%3Cpath d='M18 12v.2A3 3 0 0 1 16.9 18v0H13v0h0a3 3 0 0 1-1-5.8V12a3 3 0 0 1 6 0Z'/%3E%3C/svg%3E"); }
.gs-icon-star { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E"); }
.gs-icon-mappin { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }

/* --- UI icons --- */
.gs-icon-arrow-right { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E"); }
.gs-icon-message { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E"); }
.gs-icon-clipboard { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='M12 11h4'/%3E%3Cpath d='M12 16h4'/%3E%3Cpath d='M8 11h.01'/%3E%3Cpath d='M8 16h.01'/%3E%3C/svg%3E"); }
.gs-icon-utensils { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2'/%3E%3Cpath d='M7 2v20'/%3E%3Cpath d='M21 15V2v0a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7'/%3E%3C/svg%3E"); }
.gs-icon-target { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Ccircle cx='12' cy='12' r='6'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3C/svg%3E"); }
.gs-icon-handshake { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m11 17 2 2a1 1 0 1 0 3-3'/%3E%3Cpath d='m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4'/%3E%3Cpath d='m21 3 1 11h-2'/%3E%3Cpath d='M3 3 2 14l6.5 6.7a1 1 0 1 0 3-3l-6.22-5.12'/%3E%3C/svg%3E"); }
.gs-icon-dumbbell { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.4 14.4 9.6 9.6'/%3E%3Cpath d='M18.657 21.485a2 2 0 1 1-2.829-2.828l-1.767 1.768a2 2 0 1 1-2.829-2.829l6.364-6.364a2 2 0 1 1 2.829 2.829l-1.768 1.767a2 2 0 1 1 2.828 2.829z'/%3E%3Cpath d='m2.515 18.657a2 2 0 1 1 2.828-2.829l1.768-1.768a2 2 0 1 1 2.828-2.828l-6.363 6.363a2 2 0 1 1-2.829 2.829l1.768-1.768a2 2 0 1 1-2.828-2.828z'/%3E%3C/svg%3E"); }
.gs-icon-heart { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E"); }
.gs-icon-leaf { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 20A7 7 0 0 1 9.8 6.9C15.5 4.9 17 3.5 19 2c1 2 2 4.5 2 8 0 5.5-4.78 10-10 10Z'/%3E%3Cpath d='M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12'/%3E%3C/svg%3E"); }
.gs-icon-sun { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2'/%3E%3Cpath d='M12 20v2'/%3E%3Cpath d='m4.93 4.93 1.41 1.41'/%3E%3Cpath d='m17.66 17.66 1.41 1.41'/%3E%3Cpath d='M2 12h2'/%3E%3Cpath d='M20 12h2'/%3E%3Cpath d='m6.34 17.66-1.41 1.41'/%3E%3Cpath d='m19.07 4.93-1.41 1.41'/%3E%3C/svg%3E"); }
.gs-icon-moon { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E"); }
.gs-icon-wifi { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h.01'/%3E%3Cpath d='M2 8.82a15 15 0 0 1 20 0'/%3E%3Cpath d='M5 12.859a10 10 0 0 1 14 0'/%3E%3Cpath d='M8.5 16.429a5 5 0 0 1 7 0'/%3E%3C/svg%3E"); }
.gs-icon-phone { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E"); }
.gs-icon-mail { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E"); }

/* Activity icons — yoga/wellness, pool/sauna, kids, massage/spa, outdoor cinema */
.gs-icon-flower { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5a3 3 0 1 1 3 3m-3-3a3 3 0 1 0-3 3m3-3v1M9 8a3 3 0 1 0 3 3M9 8h1m5 0a3 3 0 1 1-3 3m3-3h-1m-2 3v-1'/%3E%3Ccircle cx='12' cy='8' r='2'/%3E%3Cpath d='M12 10v12'/%3E%3Cpath d='M12 22c4.2 0 7-1.667 7-5-4.2 0-7 1.667-7 5Z'/%3E%3Cpath d='M12 22c-4.2 0-7-1.667-7-5 4.2 0 7 1.667 7 5Z'/%3E%3C/svg%3E"); }
.gs-icon-droplets { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z'/%3E%3Cpath d='M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97'/%3E%3C/svg%3E"); }
.gs-icon-baby { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5'/%3E%3Cpath d='M15 12h.01'/%3E%3Cpath d='M19.38 6.813A9 9 0 0 1 20.8 10.2a2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1'/%3E%3Cpath d='M9 12h.01'/%3E%3C/svg%3E"); }
.gs-icon-sparkles { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z'/%3E%3Cpath d='M20 2v4'/%3E%3Cpath d='M22 4h-4'/%3E%3Ccircle cx='4' cy='20' r='2'/%3E%3C/svg%3E"); }
.gs-icon-film { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3Cpath d='M7 3v18'/%3E%3Cpath d='M3 7.5h4'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M3 16.5h4'/%3E%3Cpath d='M17 3v18'/%3E%3Cpath d='M17 7.5h4'/%3E%3Cpath d='M17 16.5h4'/%3E%3C/svg%3E"); }

/* ==========================================================================
   WordPress editor adjustments
   ========================================================================== */

.editor-styles-wrapper {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* Heading colors in editor */
.editor-styles-wrapper h1,
.editor-styles-wrapper h2,
.editor-styles-wrapper h3,
.editor-styles-wrapper h4,
.editor-styles-wrapper h5,
.editor-styles-wrapper h6,
.editor-styles-wrapper .wp-block-heading {
	color: var(--wp--preset--color--brand-forest);
}

/* Dark/colored sections in editor — headings inherit parent color */
.editor-styles-wrapper .has-brand-white-color h1,
.editor-styles-wrapper .has-brand-white-color h2,
.editor-styles-wrapper .has-brand-white-color h3,
.editor-styles-wrapper .has-brand-white-color .wp-block-heading,
.editor-styles-wrapper .gs-section-dark h1,
.editor-styles-wrapper .gs-section-dark h2,
.editor-styles-wrapper .gs-section-dark h3,
.editor-styles-wrapper .gs-section-forest h1,
.editor-styles-wrapper .gs-section-forest h2,
.editor-styles-wrapper .gs-section-forest h3,
.editor-styles-wrapper .gs-section-navy h1,
.editor-styles-wrapper .gs-section-navy h2,
.editor-styles-wrapper .gs-section-navy h3,
.editor-styles-wrapper .wp-block-cover h1,
.editor-styles-wrapper .wp-block-cover h2,
.editor-styles-wrapper .wp-block-cover h3 {
	color: inherit;
}

/* Full-width sections in editor */
.editor-styles-wrapper .gs-section,
.editor-styles-wrapper .gs-section-dark,
.editor-styles-wrapper .gs-section-forest,
.editor-styles-wrapper .gs-section-navy,
.editor-styles-wrapper .gs-section-lime,
.editor-styles-wrapper .gs-section-lime-light,
.editor-styles-wrapper .gs-section-gray {
	max-width: none !important;
	margin-left: -1px !important;
	margin-right: -1px !important;
}

/* Animate-on-scroll — show immediately in editor (no IntersectionObserver) */
.editor-styles-wrapper .animate-on-scroll,
.editor-styles-wrapper .animate-scale,
.editor-styles-wrapper .animate-slide-right {
	opacity: 1;
	transform: none;
}

/* Cards and interactive elements — keep clickable in editor */
.editor-styles-wrapper .gs-card,
.editor-styles-wrapper .gs-stat-card,
.editor-styles-wrapper .gs-testimonial,
.editor-styles-wrapper .gs-card-glass,
.editor-styles-wrapper .gs-event-card {
	pointer-events: auto;
}

/* Handwritten font in editor */
.editor-styles-wrapper .has-grape-nuts-font-family,
.editor-styles-wrapper .is-style-handwritten {
	font-family: 'Grape Nuts', cursive;
}

/* ==========================================================================
   T13 — Quote contrast: Grape Nuts is a thin handwritten font, so quote text
   in brand-forest can read as a placeholder. Add a left accent bar and bump
   the color to ensure it reads as intentional emphasis.
   ========================================================================== */

.wp-block-quote {
	border-left: 4px solid var(--wp--preset--color--brand-lime);
	padding: 0.5rem 0 0.5rem 1.5rem;
	margin-left: 0;
	color: var(--wp--preset--color--brand-forest);
}

.wp-block-quote p {
	margin: 0;
}

/* On dark sections the lime accent stays, but text needs to be light */
:where(
	.has-brand-forest-background-color,
	.has-brand-green-background-color,
	.has-brand-dark-background-color,
	.has-brand-navy-background-color,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy
) .wp-block-quote {
	color: var(--wp--preset--color--brand-white);
}

/* ==========================================================================
   M1 — Offset sticky header below the WP admin bar for logged-in users.
   Public visitors don't have .admin-bar so they're unaffected.
   ========================================================================== */

.admin-bar .site-header {
	top: 32px;
}

@media (max-width: 782px) {
	.admin-bar .site-header {
		top: 46px;
	}
}

/* ==========================================================================
   Mobile hardening (Sprint 3 — audit M2/M4/M5/M6)
   ========================================================================== */

/* M2: Force-hide inline nav and force-show hamburger at <=1024px. !important needed
   because WP block-navigation injects its own breakpoint CSS at ~600px. */
@media (max-width: 1024px) {
	.gs-main-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none !important;
	}

	.gs-main-nav .wp-block-navigation__responsive-container-open {
		display: flex !important;
		visibility: visible !important;
	}
}

/* M4: hero h1 — allow word wrapping on small screens and lower the clamp minimum
   so "Wytchnienie" and similar long words don't overflow. */
@media (max-width: 480px) {
	.wp-block-cover h1.wp-block-heading,
	.hero-section h1 {
		font-size: clamp(1.75rem, 8vw, 2.5rem) !important;
		word-wrap: break-word;
		overflow-wrap: break-word;
		hyphens: auto;
		line-height: 1.15;
	}
}

/* M5: long button labels — allow wrap instead of overflow, slight font-size step down. */
@media (max-width: 480px) {
	.wp-block-button__link {
		white-space: normal;
		word-break: break-word;
		font-size: 0.9375rem;
		line-height: 1.25;
		padding-left: 1.25rem;
		padding-right: 1.25rem;
	}
}

/* M6: small viewports — guarantee horizontal padding on sectioned content
   so headings don't slide under the viewport edge. */
@media (max-width: 480px) {
	.gs-section,
	.gs-section-dark,
	.gs-section-forest,
	.gs-section-navy,
	.gs-section-lime,
	.gs-section-lime-light,
	.gs-section-gray {
		padding-left: 1.25rem !important;
		padding-right: 1.25rem !important;
	}

	.wp-block-group.has-background,
	.wp-block-cover .wp-block-cover__inner-container {
		padding-left: max(1rem, env(safe-area-inset-left));
		padding-right: max(1rem, env(safe-area-inset-right));
	}
}

/* ==========================================================================
   Print — clean
   ========================================================================== */

@media print {
	.site-header,
	.site-footer,
	.gs-scroll-indicator,
	.wp-block-buttons {
		display: none;
	}

	body {
		padding-top: 0;
	}

	.animate-on-scroll,
	.animate-scale,
	.animate-slide-right {
		opacity: 1;
		transform: none;
	}
}
