/* ==========================================================================
   Narwiańskim Szlakiem — główny arkusz stylów
   Kolory i układ wyprowadzone z zatwierdzonych projektów (Homepage + Kontakt).
   ========================================================================== */

/* Atrybut [hidden] zawsze ukrywa element (nadpisuje display z klas) */
[hidden] { display: none !important; }

/* Bezpiecznik: inline SVG bez wymiarów nie może się rozdąć */
svg:not([width]):not([height]) { width: 1em; height: 1em; }

/* --- Tokeny --- */
:root {
	/* Kolory z logo */
	--teal-900: #123a47;
	--teal-800: #164a5b;
	--teal-700: #1a5568;   /* nagłówki, ciemne sekcje */
	--teal-600: #1f6478;
	--green-600: #4a9e3f;
	--green-500: #57b23f;  /* przycisk główny */
	--green-400: #6dbe45;
	--river-blue: #2e86c1;
	--yellow: #e8d64b;

	--ink: #22333b;
	--muted: #5a6b72;
	--line: #e4ebe8;
	--bg: #f5f8f6;
	--bg-soft: #eef4f1;
	--white: #ffffff;

	--radius-sm: 8px;
	--radius: 14px;
	--radius-lg: 20px;
	--shadow-sm: 0 2px 8px rgba(18, 58, 71, .06);
	--shadow: 0 8px 30px rgba(18, 58, 71, .08);
	--shadow-lg: 0 18px 50px rgba(18, 58, 71, .12);

	--container: 1320px;
	--gap: 24px;

	--font-head: 'Poppins', system-ui, sans-serif;
	--font-body: 'Inter', system-ui, sans-serif;
}

/* --- Reset / bazowe --- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: var(--font-body);
	color: var(--ink);
	background: var(--bg);
	line-height: 1.6;
	font-size: 16px;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--river-blue); text-decoration: none; transition: color .2s; }
a:hover { color: var(--teal-700); }
h1, h2, h3, h4 { font-family: var(--font-head); color: var(--teal-700); line-height: 1.2; margin: 0 0 .5em; font-weight: 700; }
p { margin: 0 0 1em; }
ul { margin: 0; padding: 0; list-style: none; }

.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 24px; }

.screen-reader-text {
	position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
	white-space: nowrap; border: 0; padding: 0; margin: -1px;
}
.skip-link { position: absolute; left: -999px; top: 0; z-index: 1000; background: var(--green-500); color: #fff; padding: 10px 16px; border-radius: 0 0 8px 0; }
.skip-link:focus { left: 0; }

:focus-visible { outline: 3px solid var(--river-blue); outline-offset: 2px; border-radius: 4px; }

/* --- Przyciski (bez zawijania tekstu) --- */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	font-family: var(--font-head); font-weight: 600; font-size: 15px;
	padding: 12px 24px; border-radius: 40px; border: 2px solid transparent;
	cursor: pointer; white-space: nowrap; line-height: 1; transition: all .2s;
	text-align: center;
}
.btn svg { width: 18px; height: 18px; flex: none; }
.btn--primary { background: var(--green-500); color: #fff; border-color: var(--green-500); }
.btn--primary:hover { background: var(--green-600); border-color: var(--green-600); color: #fff; }
.btn--dark { background: var(--teal-700); color: #fff; border-color: var(--teal-700); }
.btn--dark:hover { background: var(--teal-800); color: #fff; }
.btn--outline { background: transparent; color: var(--teal-700); border-color: var(--teal-700); }
.btn--outline:hover { background: var(--teal-700); color: #fff; }
.btn--block { width: 100%; }
.btn--lg { padding: 15px 30px; font-size: 16px; }

/* ==========================================================================
   TOPBAR
   ========================================================================== */
.topbar { background: var(--teal-700); color: rgba(255,255,255,.9); font-size: 13.5px; }
.topbar__inner { display: flex; align-items: center; justify-content: space-between; min-height: 40px; gap: 20px; }
.topbar__contact { display: flex; align-items: center; gap: 22px; }
.topbar__item { display: inline-flex; align-items: center; gap: 7px; color: rgba(255,255,255,.9); white-space: nowrap; }
.topbar__item:hover { color: #fff; }
.topbar__item svg { opacity: .85; }
.topbar__right { display: flex; align-items: center; gap: 18px; }
.topbar__social { display: flex; align-items: center; gap: 12px; }
.topbar__social-link { color: rgba(255,255,255,.85); display: inline-flex; }
.topbar__social-link svg { width: 15px; height: 15px; }
.topbar__social-link:hover { color: #fff; }
.topbar__access { display: flex; align-items: center; gap: 8px; padding-left: 16px; border-left: 1px solid rgba(255,255,255,.2); }
.access-toggle {
	background: transparent; border: 0; color: rgba(255,255,255,.85); cursor: pointer;
	font-family: var(--font-head); font-weight: 600; font-size: 13px; display: inline-flex;
	align-items: center; padding: 4px 6px; border-radius: 6px;
}
.access-toggle:hover { color: #fff; background: rgba(255,255,255,.12); }

/* ==========================================================================
   HEADER (jednolity, jeden wiersz menu — bez zawijania)
   ========================================================================== */
.site-header { background: var(--white); position: sticky; top: 0; z-index: 200; box-shadow: var(--shadow-sm); }
.site-header__inner { display: flex; align-items: center; gap: 28px; min-height: 76px; }
.site-header__logo { flex: none; display: block; }
.site-header__logo img { height: 52px; width: auto; }

.site-nav { flex: 1 1 auto; display: flex; justify-content: center; }
.site-nav__list { display: flex; align-items: center; gap: 30px; flex-wrap: nowrap; }
.site-nav__list > li { position: relative; }
.site-nav__list > li > a {
	font-family: var(--font-head); font-weight: 500; font-size: 15px; color: var(--teal-700);
	white-space: nowrap; padding: 8px 0; display: inline-block; position: relative;
}
.site-nav__list > li > a:hover,
.site-nav__list > li.current-menu-item > a { color: var(--green-500); }
.site-nav__list > li > a::after {
	content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 2px;
	background: var(--green-500); transition: width .2s;
}
.site-nav__list > li:hover > a::after,
.site-nav__list > li.current-menu-item > a::after { width: 100%; }

/* Submenu (dropdown) */
.site-nav__list ul.sub-menu {
	position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(8px);
	background: #fff; min-width: 230px; box-shadow: var(--shadow); border-radius: var(--radius-sm);
	padding: 8px; opacity: 0; visibility: hidden; transition: all .2s; z-index: 10;
	border: 1px solid var(--line);
}
.site-nav__list li:hover > ul.sub-menu { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(4px); }
.site-nav__list ul.sub-menu li a {
	display: block; padding: 9px 14px; font-size: 14.5px; color: var(--ink); border-radius: 6px; white-space: nowrap;
}
.site-nav__list ul.sub-menu li a:hover { background: var(--bg-soft); color: var(--green-500); }
.menu-item__caret { display:inline-block; vertical-align:middle; margin-left:2px; transition:transform .2s; }
.site-nav__list > li.menu-item-has-children:hover .menu-item__caret { transform:rotate(180deg); }

.site-header__actions { flex: none; display: flex; align-items: center; gap: 16px; }
.header-search-toggle {
	background: transparent; border: 0; color: var(--teal-700); cursor: pointer; padding: 6px;
	display: inline-flex; border-radius: 8px;
}
.header-search-toggle:hover { color: var(--green-500); background: var(--bg-soft); }
.header__login { padding: 11px 22px; }
.header__login-icon { display: inline-flex; }
.header__login-icon svg { width: 16px; height: 16px; }

/* Menu konta (zalogowany) */
.account-menu { position: relative; }
.account-menu__trigger {
	display: inline-flex; align-items: center; gap: 10px; background: var(--bg-soft);
	border: 1px solid var(--line); border-radius: 40px; padding: 6px 14px 6px 6px; cursor: pointer;
	font-family: var(--font-head); font-weight: 600; font-size: 14px; color: var(--teal-700);
}
.account-menu__trigger:hover { border-color: var(--green-400); }
.account-menu__avatar img { border-radius: 50%; }
.account-menu__name { white-space: nowrap; }
.account-menu__badge {
	background: var(--green-500); color: #fff; font-size: 11px; border-radius: 20px;
	min-width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; padding: 0 5px;
}
.account-menu__dropdown {
	position: absolute; right: 0; top: calc(100% + 10px); background: #fff; min-width: 220px;
	box-shadow: var(--shadow); border-radius: var(--radius-sm); padding: 8px; border: 1px solid var(--line);
	opacity: 0; visibility: hidden; transform: translateY(6px); transition: all .2s; z-index: 20;
}
.account-menu.is-open .account-menu__dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.account-menu__dropdown li a { display: block; padding: 9px 14px; border-radius: 6px; color: var(--ink); font-size: 14.5px; }
.account-menu__dropdown li a:hover { background: var(--bg-soft); color: var(--green-500); }

/* Wyszukiwarka rozwijana */
.header-search { background: var(--bg-soft); border-top: 1px solid var(--line); padding: 18px 0; }
.header-search__form { display: flex; gap: 12px; max-width: 640px; margin: 0 auto; }
.header-search__form input {
	flex: 1; padding: 13px 18px; border: 1px solid var(--line); border-radius: 40px; font-size: 15px;
	font-family: var(--font-body); background: #fff;
}
.header-search__form input:focus { outline: none; border-color: var(--green-400); }

/* Hamburger */
.nav-toggle { display: none; flex-direction: column; gap: 5px; background: transparent; border: 0; cursor: pointer; padding: 8px; }
.nav-toggle span { width: 24px; height: 2px; background: var(--teal-700); border-radius: 2px; transition: .2s; }
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ==========================================================================
   SEKCJE / NAGŁÓWKI SEKCJI
   ========================================================================== */
.section { padding: 76px 0; }
.section--tight { padding: 54px 0; }
.section__head { text-align: center; max-width: 720px; margin: 0 auto 44px; }
.section__title { font-size: clamp(28px, 3.4vw, 40px); font-weight: 700; margin-bottom: 12px; }
.section__subtitle { color: var(--muted); font-size: 17px; margin: 0; }

/* ==========================================================================
   HERO (front page)
   ========================================================================== */
.hero {
	position: relative; min-height: 560px; display: flex; align-items: center; justify-content: center;
	text-align: center; color: #fff; overflow: hidden;
}
.hero__bg { position: absolute; inset: 0; z-index: 0; }
.hero__bg img { width: 100%; height: 100%; object-fit: cover; }
.hero__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(18,58,71,.35), rgba(18,58,71,.55)); }
.hero__inner { position: relative; z-index: 1; width: 100%; max-width: 780px; padding: 60px 24px; }
.hero__title { color: #fff; font-size: clamp(34px, 5vw, 56px); font-weight: 800; margin-bottom: 18px; line-height: 1.1; }
.hero__title .accent { color: var(--yellow); display: block; }
.hero__lead { font-size: 18px; color: rgba(255,255,255,.92); max-width: 560px; margin: 0 auto 30px; }

/* Pasek wyszukiwania hero */
.hero-search {
	display: flex; align-items: center; gap: 10px; background: #fff; padding: 10px;
	border-radius: 50px; box-shadow: var(--shadow-lg); max-width: 620px; margin: 0 auto;
}
.hero-search__field { flex: 1; display: flex; align-items: center; gap: 8px; padding: 6px 14px; color: var(--ink); }
.hero-search__field + .hero-search__field { border-left: 1px solid var(--line); }
.hero-search__field svg { width: 18px; height: 18px; color: var(--green-500); flex: none; }
.hero-search__field input {
	border: 0; outline: none; font-size: 15px; font-family: var(--font-body); width: 100%; background: transparent; color: var(--ink);
}
.hero-search .btn { flex: none; }

.hero__tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px; }
.hero__tag {
	background: rgba(255,255,255,.15); backdrop-filter: blur(4px); color: #fff; padding: 7px 18px;
	border-radius: 30px; font-size: 14px; border: 1px solid rgba(255,255,255,.25); white-space: nowrap;
}
.hero__tag:hover { background: rgba(255,255,255,.28); color: #fff; }

/* ==========================================================================
   KAFELKI KATEGORII (pod hero)
   ========================================================================== */
.quicknav { margin-top: -46px; position: relative; z-index: 5; }
.quicknav__grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
.quicknav__item {
	background: #fff; border-radius: var(--radius); padding: 26px 14px; text-align: center;
	box-shadow: var(--shadow-sm); border: 1px solid var(--line); transition: transform .2s, box-shadow .2s;
	display: flex; flex-direction: column; align-items: center; gap: 12px;
}
.quicknav__item:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.quicknav__icon {
	width: 54px; height: 54px; border-radius: 50%; background: var(--bg-soft); display: flex;
	align-items: center; justify-content: center; color: var(--green-500);
}
.quicknav__icon svg { width: 26px; height: 26px; }
.quicknav__item:nth-child(4) .quicknav__icon { background: #fdf6d8; color: #c9a922; }
.quicknav__label { font-family: var(--font-head); font-weight: 600; font-size: 15px; color: var(--teal-700); }

/* ==========================================================================
   WYDARZENIA (kalendarz + lista) na front page
   ========================================================================== */
.events-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }

/* Mini-kalendarz */
.mini-cal { background: #fff; border-radius: var(--radius); padding: 26px; box-shadow: var(--shadow-sm); border: 1px solid var(--line); }
.mini-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.mini-cal__title { font-family: var(--font-head); font-weight: 700; color: var(--teal-700); font-size: 18px; margin: 0; }
.mini-cal__nav { display: flex; gap: 6px; }
.mini-cal__nav button { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--line); background: #fff; cursor: pointer; color: var(--teal-700); display: inline-flex; align-items: center; justify-content: center; }
.mini-cal__nav button:hover { background: var(--bg-soft); }
.mini-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.mini-cal__dow { font-size: 12px; color: var(--muted); font-weight: 600; padding: 6px 0; }
.mini-cal__day {
	aspect-ratio: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
	border-radius: 8px; font-size: 14px; color: var(--ink); position: relative; cursor: default;
}
.mini-cal__day.is-muted { color: var(--line); }
.mini-cal__day.has-event { background: var(--bg-soft); }
.mini-cal__day.is-active { background: var(--green-500); color: #fff; font-weight: 600; }
.mini-cal__day.is-active-dark { background: var(--teal-700); color: #fff; font-weight: 600; }
.mini-cal__dot { width: 4px; height: 4px; border-radius: 50%; background: currentColor; margin-top: 2px; }

/* Lista wydarzeń */
.event-list { display: flex; flex-direction: column; gap: 14px; }
.event-item {
	display: flex; align-items: center; gap: 16px; background: #fff; border: 1px solid var(--line);
	border-radius: var(--radius); padding: 16px 20px; box-shadow: var(--shadow-sm); transition: transform .2s;
}
.event-item:hover { transform: translateX(4px); border-color: var(--green-400); }
.event-item__date {
	flex: none; width: 56px; text-align: center; background: var(--bg-soft); border-radius: 10px; padding: 8px 4px;
}
.event-item__day { font-family: var(--font-head); font-weight: 700; font-size: 20px; color: var(--teal-700); line-height: 1; }
.event-item__month { font-size: 11px; color: var(--green-500); font-weight: 600; letter-spacing: .5px; }
.event-item__body { flex: 1; min-width: 0; }
.event-item__title { font-family: var(--font-head); font-weight: 600; font-size: 16px; color: var(--teal-700); margin: 0 0 4px; }
.event-item__meta { display: flex; flex-wrap: wrap; gap: 14px; font-size: 13px; color: var(--muted); }
.event-item__meta span { display: inline-flex; align-items: center; gap: 5px; }
.event-item__arrow { flex: none; color: var(--green-500); }
.events-cta { margin-top: 8px; }

/* ==========================================================================
   MAPA-TEASER (front page)
   ========================================================================== */
.map-teaser {
	position: relative; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg);
	background: linear-gradient(135deg, #3a8a8f, #2d7a7f); min-height: 460px;
}
.map-teaser__canvas { position: absolute; inset: 0; }
.map-teaser__canvas img { width: 100%; height: 100%; object-fit: cover; }
.map-teaser__panel {
	position: absolute; top: 22px; left: 22px; background: #fff; border-radius: var(--radius); padding: 18px;
	width: 260px; box-shadow: var(--shadow); z-index: 3;
}
.map-teaser__search { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; margin-bottom: 14px; }
.map-teaser__search svg { width: 16px; height: 16px; color: var(--muted); }
.map-teaser__search input { border: 0; outline: none; font-size: 14px; width: 100%; font-family: var(--font-body); }
.map-filter { display: flex; flex-direction: column; gap: 8px; }
.map-filter__item {
	display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 8px; font-size: 14px;
	cursor: pointer; border: 1px solid transparent; transition: .15s;
}
.map-filter__item .dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.map-filter__item.is-active { background: var(--bg-soft); font-weight: 500; }
.map-filter__item:hover { background: var(--bg-soft); }
.map-teaser__cta {
	position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%); z-index: 3;
}
.map-teaser__badge {
	position: absolute; top: 22px; right: 22px; background: #fff; border-radius: 10px; padding: 10px 14px;
	box-shadow: var(--shadow); font-size: 13px; z-index: 3;
}
.map-teaser__badge strong { display: block; color: var(--green-500); }
.map-teaser__zoom { position: absolute; bottom: 22px; right: 22px; display: flex; flex-direction: column; gap: 6px; z-index: 3; }
.map-teaser__zoom button { width: 34px; height: 34px; border: 0; background: #fff; border-radius: 8px; box-shadow: var(--shadow-sm); cursor: pointer; font-size: 18px; color: var(--teal-700); }

/* Karty pod mapą */
.map-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 22px; }
.map-card {
	background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 18px;
	display: flex; align-items: flex-start; gap: 14px; box-shadow: var(--shadow-sm); transition: transform .2s;
}
.map-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.map-card__icon { width: 40px; height: 40px; flex: none; border-radius: 10px; background: var(--bg-soft); display: flex; align-items: center; justify-content: center; color: var(--green-500); }
.map-card__icon svg { width: 20px; height: 20px; }
.map-card { text-decoration: none; }
.map-card__title { display: block; font-family: var(--font-head); font-weight: 600; font-size: 15px; color: var(--teal-700); margin: 0 0 2px; }
.map-card__desc { display: block; font-size: 13px; color: var(--muted); margin: 0; }

/* ==========================================================================
   CTA SPOŁECZNOŚĆ
   ========================================================================== */
.community {
	background: linear-gradient(120deg, var(--teal-700), var(--teal-800)); border-radius: var(--radius-lg);
	padding: 54px; color: #fff; display: grid; grid-template-columns: 1.1fr .9fr; gap: 40px; align-items: center;
	position: relative; overflow: hidden;
}
.community__title { color: #fff; font-size: clamp(26px, 3vw, 36px); margin-bottom: 16px; }
.community__text { color: rgba(255,255,255,.9); font-size: 16px; margin-bottom: 24px; max-width: 440px; }
.community__features { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 28px; max-width: 440px; }
.community__feature { display: flex; align-items: center; gap: 10px; font-size: 14.5px; color: rgba(255,255,255,.92); }
.community__feature svg { width: 18px; height: 18px; color: var(--green-400); flex: none; }
.community__actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.community__login-link { color: #fff; font-size: 14.5px; }
.community__login-link a { color: var(--green-400); font-weight: 600; }
.community__visual { position: relative; }
.community__card {
	background: #fff; border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow-lg);
	color: var(--ink); max-width: 280px; margin-left: auto;
}
.community__card-head { width: 42px; height: 42px; border-radius: 50%; background: var(--teal-700); margin-bottom: 16px; display: flex; align-items: center; justify-content: center; color: #fff; }
.community__card-line { height: 10px; border-radius: 6px; background: var(--bg-soft); margin-bottom: 10px; }
.community__card-line.short { width: 60%; }
.community__card-map { height: 90px; border-radius: 10px; background: var(--bg-soft); display: flex; align-items: center; justify-content: center; color: var(--green-500); margin: 14px 0; }

/* ==========================================================================
   AKTUALNOŚCI (grid kart)
   ========================================================================== */
.news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.news-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); transition: transform .2s, box-shadow .2s; display: flex; flex-direction: column; }
.news-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.news-card__media { aspect-ratio: 16 / 10; overflow: hidden; }
.news-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.news-card:hover .news-card__media img { transform: scale(1.05); }
.news-card__body { padding: 22px; display: flex; flex-direction: column; flex: 1; }
.news-card__date { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); margin-bottom: 10px; }
.news-card__date svg { width: 14px; height: 14px; }
.news-card__title { font-family: var(--font-head); font-weight: 600; font-size: 18px; color: var(--teal-700); margin: 0 0 10px; line-height: 1.3; }
.news-card__excerpt { font-size: 14.5px; color: var(--muted); margin: 0 0 18px; flex: 1; }
.news-card__link { font-family: var(--font-head); font-weight: 600; font-size: 14px; color: var(--green-500); display: inline-flex; align-items: center; gap: 6px; margin-top: auto; }
.news-card__link svg { width: 16px; height: 16px; flex: none; }
.news-card__link:hover { gap: 10px; color: var(--green-600); }
.news-cta { text-align: center; margin-top: 40px; }

/* ==========================================================================
   STRONA KONTAKT
   ========================================================================== */
.page-head { padding: 56px 0 12px; }
.page-head__title { font-size: clamp(30px, 3.6vw, 42px); margin-bottom: 12px; }
.page-head__lead { color: var(--muted); font-size: 17px; max-width: 620px; }

.contact-layout { display: grid; grid-template-columns: 1.4fr 1fr; gap: 34px; align-items: start; padding-bottom: 20px; }

.contact-form {
	background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 34px; box-shadow: var(--shadow-sm);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-group { margin-bottom: 20px; }
.form-group label { display: block; font-family: var(--font-head); font-weight: 600; font-size: 14px; color: var(--teal-700); margin-bottom: 8px; }
.form-group input, .form-group textarea, .form-group select {
	width: 100%; padding: 13px 16px; border: 1px solid var(--line); border-radius: 10px; font-size: 15px;
	font-family: var(--font-body); background: #fbfdfc; color: var(--ink); transition: border-color .2s;
}
.form-group input:focus, .form-group textarea:focus, .form-group select:focus { outline: none; border-color: var(--green-400); background: #fff; }
.form-group textarea { min-height: 150px; resize: vertical; }
.form-consent { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: var(--muted); margin-bottom: 22px; }
.form-consent input { width: 18px; height: 18px; flex: none; margin-top: 2px; accent-color: var(--green-500); }

.contact-side { display: flex; flex-direction: column; gap: 22px; }
.contact-info {
	background: var(--teal-700); color: #fff; border-radius: var(--radius-lg); padding: 30px;
}
.contact-info__title { color: #fff; font-size: 20px; display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
.contact-info__title .ico { width: 26px; height: 26px; border-radius: 50%; background: var(--green-500); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.contact-info__title .ico svg { width: 14px; height: 14px; }
.contact-info__item { display: flex; gap: 14px; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.12); }
.contact-info__item:last-of-type { border-bottom: 0; }
.contact-info__item .ico { width: 38px; height: 38px; flex: none; border-radius: 10px; background: rgba(255,255,255,.1); display: flex; align-items: center; justify-content: center; color: var(--green-400); }
.contact-info__item .ico svg { width: 18px; height: 18px; }
.contact-info__label { font-family: var(--font-head); font-weight: 600; font-size: 14px; color: #fff; margin: 0 0 2px; }
.contact-info__value { font-size: 14px; color: rgba(255,255,255,.85); margin: 0; }
.contact-info__value a { color: rgba(255,255,255,.85); }
.contact-info__value a:hover { color: #fff; }
.contact-info__social { margin-top: 22px; }
.contact-info__social-label { font-family: var(--font-head); font-weight: 600; font-size: 14px; margin-bottom: 12px; }
.contact-info__social-links { display: flex; gap: 10px; }
.contact-info__social-links a { width: 38px; height: 38px; border-radius: 50%; background: rgba(255,255,255,.1); display: flex; align-items: center; justify-content: center; color: #fff; }
.contact-info__social-links a svg { width: 18px; height: 18px; }
.contact-info__social-links a:hover { background: var(--green-500); }

.contact-gminy {
	background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 30px; box-shadow: var(--shadow-sm);
}
.contact-gminy__title { font-size: 18px; margin-bottom: 18px; }
.contact-gminy__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; }
.contact-gminy__item { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ink); }
.contact-gminy__item svg { width: 15px; height: 15px; color: var(--muted); flex: none; }

.contact-map { padding: 20px 0 60px; }
.contact-map__title { margin-bottom: 22px; font-size: 26px; }
.contact-map__frame { position: relative; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); height: 460px; background: var(--bg-soft); }
.contact-map__frame #ns-contact-map { width: 100%; height: 100%; }
.contact-map__card {
	position: absolute; top: 22px; left: 22px; z-index: 500; background: #fff; border-radius: var(--radius);
	padding: 18px; box-shadow: var(--shadow); max-width: 240px;
}
.contact-map__card-title { display: flex; align-items: center; gap: 8px; font-family: var(--font-head); font-weight: 600; color: var(--teal-700); margin-bottom: 8px; }
.contact-map__card-title .pin { width: 24px; height: 24px; border-radius: 8px; background: var(--green-500); display: flex; align-items: center; justify-content: center; color: #fff; flex: none; }
.contact-map__card-title .pin svg { width: 14px; height: 14px; }
.contact-map__card-address { font-size: 13px; color: var(--muted); margin-bottom: 14px; }

/* ==========================================================================
   ARCHIWA / GRID OFERT
   ========================================================================== */
.archive-layout { display: grid; grid-template-columns: 280px 1fr; gap: 34px; align-items: start; padding: 40px 0 70px; }
.filters { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow-sm); position: sticky; top: 96px; }
.filters__title { font-size: 17px; margin-bottom: 18px; }
.filters__group { margin-bottom: 20px; }
.filters__label { font-family: var(--font-head); font-weight: 600; font-size: 13px; color: var(--teal-700); margin-bottom: 8px; display: block; text-transform: uppercase; letter-spacing: .4px; }
.filters select, .filters input { width: 100%; padding: 11px 14px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; font-family: var(--font-body); }
.offer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.offer-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); transition: transform .2s, box-shadow .2s; display: flex; flex-direction: column; }
.offer-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.offer-card__media { aspect-ratio: 3 / 2; overflow: hidden; background: var(--bg-soft); }
.offer-card__media img { width: 100%; height: 100%; object-fit: cover; }
.offer-card__body { padding: 20px; display: flex; flex-direction: column; flex: 1; }
.offer-card__tag { align-self: flex-start; font-size: 12px; font-weight: 600; color: var(--green-600); background: #eaf6e6; padding: 4px 12px; border-radius: 30px; margin-bottom: 12px; }
.offer-card__title { font-family: var(--font-head); font-weight: 600; font-size: 17px; color: var(--teal-700); margin: 0 0 8px; }
.offer-card__meta { font-size: 13px; color: var(--muted); display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.offer-card__excerpt { font-size: 14px; color: var(--muted); margin: 0 0 16px; flex: 1; }

.archive-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; gap: 16px; flex-wrap: wrap; }
.archive-toolbar__count { color: var(--muted); font-size: 14px; }
.view-toggle { display: flex; gap: 6px; }
.view-toggle button { padding: 8px 14px; border: 1px solid var(--line); background: #fff; border-radius: 8px; cursor: pointer; font-size: 13px; color: var(--teal-700); display: inline-flex; align-items: center; gap: 6px; }
.view-toggle button.is-active { background: var(--teal-700); color: #fff; border-color: var(--teal-700); }

/* Pagination */
.ns-pagination { display: flex; justify-content: center; gap: 8px; margin-top: 44px; }
.ns-pagination a, .ns-pagination span { padding: 10px 16px; border-radius: 8px; border: 1px solid var(--line); background: #fff; color: var(--teal-700); font-weight: 600; font-size: 14px; }
.ns-pagination .current { background: var(--green-500); color: #fff; border-color: var(--green-500); }

/* ==========================================================================
   PANEL UŻYTKOWNIKA
   ========================================================================== */
.panel-layout { display: grid; grid-template-columns: 250px 1fr; gap: 30px; padding: 40px 0 70px; align-items: start; }
.panel-nav { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow-sm); position: sticky; top: 96px; }
.panel-nav a { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 8px; color: var(--ink); font-family: var(--font-head); font-weight: 500; font-size: 14.5px; }
.panel-nav a svg { width: 18px; height: 18px; color: var(--muted); }
.panel-nav a:hover { background: var(--bg-soft); }
.panel-nav a.is-active { background: var(--green-500); color: #fff; }
.panel-nav a.is-active svg { color: #fff; }
.panel-content { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 30px; box-shadow: var(--shadow-sm); min-height: 400px; }

/* Wiadomości */
.messages-layout { display: grid; grid-template-columns: 300px 1fr; gap: 0; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; min-height: 480px; }
.messages-list { border-right: 1px solid var(--line); overflow-y: auto; }
.message-conv { display: flex; gap: 12px; padding: 16px; border-bottom: 1px solid var(--line); cursor: pointer; }
.message-conv:hover, .message-conv.is-active { background: var(--bg-soft); }
.message-conv__avatar img { border-radius: 50%; }
.message-conv__name { font-family: var(--font-head); font-weight: 600; font-size: 14px; color: var(--teal-700); }
.message-conv__preview { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; }
.message-conv__unread { background: var(--green-500); color: #fff; font-size: 11px; border-radius: 20px; padding: 1px 7px; }
.messages-thread { display: flex; flex-direction: column; }
.thread-messages { flex: 1; padding: 20px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; }
.thread-bubble { max-width: 70%; padding: 12px 16px; border-radius: 14px; font-size: 14.5px; }
.thread-bubble.is-me { align-self: flex-end; background: var(--green-500); color: #fff; border-bottom-right-radius: 4px; }
.thread-bubble.is-them { align-self: flex-start; background: var(--bg-soft); color: var(--ink); border-bottom-left-radius: 4px; }
.thread-form { display: flex; gap: 10px; padding: 16px; border-top: 1px solid var(--line); }
.thread-form input { flex: 1; padding: 12px 16px; border: 1px solid var(--line); border-radius: 40px; font-family: var(--font-body); font-size: 14px; }

/* ==========================================================================
   LOGOWANIE / REJESTRACJA
   ========================================================================== */
.auth-wrap { max-width: 980px; margin: 0 auto; padding: 50px 24px 70px; }
.auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.auth-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 36px; box-shadow: var(--shadow-sm); }
.auth-card__title { font-size: 24px; margin-bottom: 8px; }
.auth-card__sub { color: var(--muted); font-size: 15px; margin-bottom: 26px; }
.account-types { display: grid; gap: 12px; margin-bottom: 22px; }
.account-type { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 2px solid var(--line); border-radius: 10px; cursor: pointer; transition: .15s; }
.account-type:hover { border-color: var(--green-400); }
.account-type input { accent-color: var(--green-500); width: 18px; height: 18px; }
.account-type__label { font-family: var(--font-head); font-weight: 600; font-size: 14.5px; color: var(--teal-700); }
.account-type__desc { font-size: 12.5px; color: var(--muted); }

/* ==========================================================================
   ALERTY
   ========================================================================== */
.ns-alert { padding: 14px 18px; border-radius: 10px; font-size: 14.5px; margin-bottom: 20px; }
.ns-alert--success { background: #eaf6e6; color: var(--green-600); border: 1px solid #c9e6bf; }
.ns-alert--error { background: #fdecec; color: #c0392b; border: 1px solid #f5c6c6; }

/* ==========================================================================
   POJEDYNCZY WPIS (single)
   ========================================================================== */
.single-hero { position: relative; height: 420px; overflow: hidden; }
.single-hero img { width: 100%; height: 100%; object-fit: cover; }
.single-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent, rgba(18,58,71,.6)); }
.single-hero__inner { position: absolute; bottom: 0; left: 0; right: 0; z-index: 2; color: #fff; padding: 40px 0; }
.single-hero__title { color: #fff; font-size: clamp(28px, 4vw, 44px); margin: 0; }
.single-layout { display: grid; grid-template-columns: 1fr 340px; gap: 40px; padding: 44px 0 70px; align-items: start; }
.single-body { font-size: 16px; color: var(--ink); }
.single-body img { border-radius: var(--radius); margin: 20px 0; }
.single-sidebar { position: sticky; top: 96px; display: flex; flex-direction: column; gap: 20px; }
.info-box { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow-sm); }
.info-box__title { font-size: 17px; margin-bottom: 16px; }
.info-box__row { display: flex; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.info-box__row:last-child { border-bottom: 0; }
.info-box__row svg { width: 18px; height: 18px; color: var(--green-500); flex: none; }
.single-map { height: 220px; border-radius: var(--radius); overflow: hidden; }

/* ==========================================================================
   STOPKA (ciemny teal, 4 kolumny — wg projektu)
   ========================================================================== */
.site-footer { background: var(--teal-700); color: rgba(255,255,255,.82); margin-top: 40px; }
.site-footer__inner {
	display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.3fr; gap: 40px;
	padding: 60px 0 44px;
}
.site-footer__logo { display: inline-block; margin-bottom: 18px; }
.site-footer__logo img { height: 48px; width: auto; }
.site-footer__desc { font-size: 14px; color: rgba(255,255,255,.75); margin: 0 0 20px; max-width: 300px; line-height: 1.7; }
.site-footer__social { display: flex; gap: 12px; }
.site-footer__social-link {
	width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.1);
	display: flex; align-items: center; justify-content: center; color: #fff;
}
.site-footer__social-link svg { width: 18px; height: 18px; }
.site-footer__social-link:hover { background: var(--green-500); color: #fff; }

.site-footer__heading {
	font-family: var(--font-head); font-weight: 600; font-size: 16px; color: #fff;
	margin: 0 0 20px;
}
.site-footer__menu { display: flex; flex-direction: column; gap: 12px; }
.site-footer__menu li a {
	color: rgba(255,255,255,.78); font-size: 14.5px; display: inline-flex; align-items: center; gap: 8px;
	transition: color .2s, padding .2s;
}
.site-footer__menu li a::before {
	content: "›"; color: var(--green-400); font-weight: 700;
}
.site-footer__menu li a:hover { color: #fff; padding-left: 4px; }

.site-footer__contact-item {
	display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: rgba(255,255,255,.78);
	margin-bottom: 14px; line-height: 1.5;
}
.site-footer__contact-item::before { content: none; }
.site-footer__contact-item svg { color: var(--green-400); flex: none; margin-top: 3px; }
.site-footer__contact-item a { color: rgba(255,255,255,.78); }
.site-footer__contact-item a:hover { color: #fff; }

.site-footer__bottom { border-top: 1px solid rgba(255,255,255,.12); }
.site-footer__bottom-inner {
	display: flex; align-items: center; justify-content: space-between; gap: 20px;
	padding: 22px 0; flex-wrap: wrap;
}
.site-footer__copy { margin: 0; font-size: 13.5px; color: rgba(255,255,255,.6); }
.site-footer__legal { display: flex; gap: 24px; }
.site-footer__legal a { font-size: 13.5px; color: rgba(255,255,255,.6); }
.site-footer__legal a:hover { color: #fff; }

/* ==========================================================================
   RESPONSYWNOŚĆ
   ========================================================================== */
@media (max-width: 1100px) {
	.quicknav__grid { grid-template-columns: repeat(3, 1fr); }
	.map-cards { grid-template-columns: repeat(2, 1fr); }
	.news-grid, .offer-grid { grid-template-columns: repeat(2, 1fr); }
	.site-nav__list { gap: 20px; }
	.site-nav__list > li > a { font-size: 14px; }
}

@media (max-width: 960px) {
	.site-nav {
		position: fixed; inset: 0 0 0 auto; width: min(320px, 82vw); background: #fff; z-index: 300;
		transform: translateX(100%); transition: transform .3s; padding: 90px 24px 30px; overflow-y: auto;
		box-shadow: var(--shadow-lg); justify-content: flex-start;
	}
	.site-nav.is-open { transform: translateX(0); }
	.site-nav__list { flex-direction: column; align-items: stretch; gap: 4px; }
	.site-nav__list > li > a { padding: 12px 8px; font-size: 16px; border-bottom: 1px solid var(--line); }
	.site-nav__list ul.sub-menu { position: static; transform: none; opacity: 1; visibility: visible; box-shadow: none; border: 0; padding: 0 0 0 16px; }
	.site-nav__list ul.sub-menu li a { padding: 10px 8px; font-size: 15px; }
	.menu-item__caret { display: none; }
	.nav-toggle { display: flex; }
	.events-layout, .community, .contact-layout, .archive-layout, .panel-layout, .single-layout, .auth-grid, .messages-layout { grid-template-columns: 1fr; }
	.filters, .panel-nav, .single-sidebar { position: static; }
	.community__features { grid-template-columns: 1fr; }
	.topbar__contact { gap: 14px; }
	.site-footer__inner { grid-template-columns: 1fr 1fr; gap: 30px; }
	.site-footer__brand { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
	.topbar { display: none; }
	.quicknav__grid { grid-template-columns: repeat(2, 1fr); }
	.map-cards, .news-grid, .offer-grid, .contact-gminy__grid, .form-row { grid-template-columns: 1fr; }
	.hero-search { flex-direction: column; border-radius: var(--radius); }
	.hero-search__field + .hero-search__field { border-left: 0; border-top: 1px solid var(--line); }
	.hero-search .btn { width: 100%; }
	.section { padding: 50px 0; }
	.community, .contact-form, .contact-info { padding: 26px; }
	.map-teaser__panel { position: static; width: auto; margin: 16px; }
	.site-footer__inner { grid-template-columns: 1fr; gap: 32px; padding: 44px 0 32px; }
	.site-footer__bottom-inner { flex-direction: column; align-items: flex-start; gap: 12px; }
}

/* Dostępność: wysoki kontrast */
body.ns-contrast { --bg: #fff; --ink: #000; --muted: #333; --line: #999; filter: contrast(1.3); }
body.ns-contrast .topbar, body.ns-contrast .site-footer { background: #000; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
	* { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* ==========================================================================
   MAKIETY 2 — dodatkowe komponenty (katalog, szczegóły, kalendarz, panel,
   rejestracja, jak działa, mapa pełna)
   ========================================================================== */

/* --- Breadcrumbs --- */
.breadcrumbs { display:flex; align-items:center; gap:8px; font-size:13.5px; color:var(--ink); padding:24px 0 4px; flex-wrap:wrap; }
.breadcrumbs a { color:var(--teal-700); font-weight:500; }
.breadcrumbs a:hover { color:var(--green-600); text-decoration:underline; }
.breadcrumbs span { color:var(--muted); }

/* --- btn small --- */
.btn--sm { padding:8px 16px; font-size:13px; }

/* ==========================================================================
   KATALOG ATRAKCJI (Image 4)
   ========================================================================== */
.catalog-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:22px; flex-wrap:wrap; }
.catalog-head .page-head__title { margin:0; }
.view-toggle { display:flex; gap:8px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:5px; }
.view-toggle button, .view-toggle a { display:inline-flex; align-items:center; gap:7px; padding:9px 18px; border-radius:9px; border:0; background:transparent; cursor:pointer; font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--muted); }
.view-toggle button.is-active, .view-toggle a.is-active { background:var(--teal-700); color:#fff; }
.view-toggle__map { color:var(--muted); }

.catalog-search { position:relative; margin-bottom:36px; }
.catalog-search svg { position:absolute; left:22px; top:50%; transform:translateY(-50%); width:20px; height:20px; color:var(--muted); }
.catalog-search input { width:100%; padding:18px 22px 18px 56px; border:1px solid var(--line); border-radius:16px; font-size:16px; font-family:var(--font-body); box-shadow:var(--shadow-sm); }
.catalog-search input:focus { outline:none; border-color:var(--green-400); }

.filter-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:22px; box-shadow:var(--shadow-sm); margin-bottom:22px; }
.filter-card__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.filter-card .filters__label { margin:0; }
.check-row { display:flex; align-items:center; gap:10px; padding:8px 0; font-size:14.5px; color:var(--ink); cursor:pointer; }
.check-row input { width:18px; height:18px; accent-color:var(--green-500); flex:none; }
.check-row__ico { display:inline-flex; color:var(--muted); }
.check-row__ico svg { width:16px; height:16px; }
.filters select { margin-top:8px; }

.catalog-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:24px; flex-wrap:wrap; }
.catalog-toolbar__count { color:var(--muted); font-size:14.5px; }
.catalog-toolbar__count strong { color:var(--ink); }
.catalog-sort { font-size:14px; color:var(--muted); display:inline-flex; align-items:center; gap:8px; }
.catalog-sort select { padding:8px 12px; border:1px solid var(--line); border-radius:8px; font-family:var(--font-body); font-size:14px; font-weight:600; color:var(--teal-700); }

.catalog-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.atr-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .2s, box-shadow .2s; display:flex; flex-direction:column; }
.atr-card:hover { transform:translateY(-4px); box-shadow:var(--shadow); }
.atr-card__media { position:relative; aspect-ratio:16/11; overflow:hidden; display:block; }
.atr-card__media img { width:100%; height:100%; object-fit:cover; }
.atr-card__badge { position:absolute; top:14px; left:14px; font-size:11px; font-weight:700; letter-spacing:.5px; color:#fff; padding:5px 12px; border-radius:30px; }
.atr-card__badge.is-nature { background:var(--green-500); }
.atr-card__badge.is-heritage { background:var(--river-blue); }
.atr-card__badge.is-culture { background:#e8b923; }
.atr-card__badge.is-sport { background:var(--green-500); }
.atr-card__body { padding:20px; display:flex; flex-direction:column; flex:1; }
.atr-card__title { font-family:var(--font-head); font-weight:700; font-size:18px; color:var(--teal-700); margin:0 0 8px; }
.atr-card__gmina { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--muted); margin:0 0 10px; }
.atr-card__gmina svg { color:var(--green-500); }
.atr-card__excerpt { font-size:14px; color:var(--muted); margin:0 0 16px; flex:1; }
.atr-card__btn { margin-top:auto; }
.atr-card__cat { font-size:11px; font-weight:700; letter-spacing:.5px; color:var(--green-600); margin-bottom:8px; display:block; }

/* ==========================================================================
   SZCZEGÓŁY ATRAKCJI (Image 8)
   ========================================================================== */
.atr-gallery { display:grid; grid-template-columns:2fr 1fr; gap:16px; margin:12px 0 34px; }
.atr-gallery__main { border-radius:var(--radius-lg); overflow:hidden; aspect-ratio:16/10; }
.atr-gallery__main img { width:100%; height:100%; object-fit:cover; }
.atr-gallery__thumbs { display:grid; grid-template-rows:repeat(3,1fr); gap:16px; }
.atr-gallery__thumb { position:relative; border-radius:var(--radius); overflow:hidden; }
.atr-gallery__thumb img { width:100%; height:100%; object-fit:cover; }
.atr-gallery__thumb.has-more::after { content:""; position:absolute; inset:0; background:rgba(18,58,71,.6); }
.atr-gallery__more { position:absolute; inset:0; z-index:2; display:flex; align-items:center; justify-content:center; color:#fff; font-family:var(--font-head); font-weight:700; font-size:18px; }

.atr-layout { display:grid; grid-template-columns:1fr 380px; gap:40px; align-items:start; padding-bottom:20px; }
.atr-tags { display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
.atr-tag { font-size:11px; font-weight:700; letter-spacing:.5px; padding:5px 14px; border-radius:30px; background:#eaf6e6; color:var(--green-600); }
.atr-tag:nth-child(2) { background:#e6f0f8; color:var(--river-blue); }
.atr-title { font-size:clamp(28px,3.4vw,40px); margin-bottom:20px; }
.atr-content { font-size:16px; color:var(--ink); line-height:1.8; }
.atr-content p { margin-bottom:18px; }

.atr-amenities { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:28px; margin-top:30px; box-shadow:var(--shadow-sm); }
.atr-amenities__title { display:flex; align-items:center; gap:10px; font-size:19px; margin-bottom:22px; }
.atr-amenities__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.atr-amenity { display:flex; align-items:center; gap:12px; padding:16px; border:1px solid var(--line); border-radius:var(--radius); font-size:14.5px; color:var(--ink); }
.atr-amenity__ico { width:38px; height:38px; flex:none; border-radius:10px; background:var(--bg-soft); display:flex; align-items:center; justify-content:center; color:var(--teal-700); }
.atr-amenity__ico svg { width:18px; height:18px; }

.atr-sidebar { position:sticky; top:96px; display:flex; flex-direction:column; gap:20px; }
.atr-map-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:16px; box-shadow:var(--shadow-sm); }
.atr-map-card__map { height:180px; border-radius:var(--radius); overflow:hidden; margin-bottom:14px; background:var(--bg-soft); }
.atr-info { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:26px; box-shadow:var(--shadow-sm); }
.atr-info__title { font-size:19px; margin-bottom:18px; }
.atr-info__row { display:flex; gap:14px; padding:14px 0; border-bottom:1px solid var(--line); font-size:14px; color:var(--ink); }
.atr-info__row:last-of-type { border-bottom:0; }
.atr-info__ico { width:36px; height:36px; flex:none; border-radius:10px; background:var(--bg-soft); display:flex; align-items:center; justify-content:center; color:var(--green-500); }
.atr-info__ico svg { width:17px; height:17px; }
.atr-info__row strong { color:var(--teal-700); font-family:var(--font-head); }
.atr-info__hours { padding-top:18px; margin-top:4px; border-top:1px solid var(--line); }
.atr-info__hours-title { font-size:15px; margin-bottom:12px; }
.atr-info__hours-row { display:flex; justify-content:space-between; font-size:14px; padding:6px 0; color:var(--muted); }
.atr-info__hours-row strong { color:var(--teal-700); }
.atr-info__hours-note { font-size:12.5px; color:var(--muted); font-style:italic; margin:10px 0 0; }
.atr-info__form { margin-top:20px; }

.atr-similar { padding:40px 0 20px; }
.atr-similar__head { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:28px; gap:16px; flex-wrap:wrap; }
.atr-similar__all { font-family:var(--font-head); font-weight:600; color:var(--green-500); }
.atr-similar__foot { display:flex; align-items:center; justify-content:space-between; margin-top:auto; }
.atr-similar__loc { font-size:12.5px; color:var(--muted); display:inline-flex; align-items:center; gap:5px; }

/* ==========================================================================
   PEŁNY KALENDARZ (Image 3)
   ========================================================================== */
.fullcal { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-sm); margin-bottom:44px; }
.fullcal__toolbar { display:flex; align-items:center; gap:16px; padding:20px 24px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.fullcal__nav { display:flex; align-items:center; gap:12px; }
.fullcal__nav a { width:38px; height:38px; border:1px solid var(--line); border-radius:10px; display:inline-flex; align-items:center; justify-content:center; color:var(--teal-700); }
.fullcal__nav a:hover { background:var(--bg-soft); }
.fullcal__month { font-family:var(--font-head); font-weight:700; font-size:18px; color:var(--teal-700); min-width:150px; text-align:center; }
.fullcal__views { display:flex; gap:8px; margin-left:auto; background:var(--bg-soft); padding:4px; border-radius:10px; }
.fullcal__view { display:inline-flex; align-items:center; gap:7px; padding:8px 16px; border:0; background:transparent; border-radius:8px; cursor:pointer; font-family:var(--font-head); font-weight:600; font-size:13.5px; color:var(--muted); }
.fullcal__view.is-active { background:#fff; color:var(--teal-700); box-shadow:var(--shadow-sm); }
.fullcal__grid { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); }
.fullcal__dow { padding:14px; text-align:center; font-size:12px; font-weight:700; letter-spacing:.5px; color:var(--muted); border-bottom:1px solid var(--line); }
.fullcal__cell { min-height:110px; min-width:0; border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:10px; display:flex; flex-direction:column; gap:5px; overflow:hidden; }
.fullcal__cell:nth-child(7n) { border-right:0; }
.fullcal__cell.is-muted { background:#fafcfb; }
.fullcal__cell.is-today { background:#f0f7f3; }
.fullcal__cell.is-today .fullcal__num { color:var(--green-500); font-weight:700; }
.fullcal__num { font-size:14px; font-weight:600; color:var(--ink); }
.fullcal__event { display:block; max-width:100%; font-size:11.5px; font-weight:600; padding:4px 9px; border-radius:7px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-decoration:none; line-height:1.4; transition:transform .1s; }
.fullcal__event:hover { transform:translateX(2px); }
.fullcal__event.is-blue { background:#e6f0f8; color:var(--river-blue); }
.fullcal__event.is-green { background:#eaf6e6; color:var(--green-600); }
.fullcal__event.is-yellow { background:#fdf6d8; color:#b8901a; }
.fullcal__event.is-lime { background:#eef7d8; color:#7a9e1a; }
/* W trybie podświetlania odnośników nie szpeć kafelków wydarzeń */
body.ns-links .fullcal__event { outline:none !important; text-decoration:none !important; }

.cal-upcoming__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:24px; gap:16px; flex-wrap:wrap; }
.cal-upcoming__all { font-family:var(--font-head); font-weight:600; color:var(--green-500); }
.cal-events { display:flex; flex-direction:column; gap:16px; padding-bottom:40px; }
.cal-event { display:flex; align-items:center; gap:20px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:18px 22px; box-shadow:var(--shadow-sm); }
.cal-event__date { flex:none; width:66px; height:66px; border-radius:14px; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#fff; }
.cal-event__date.is-dark { background:var(--teal-700); }
.cal-event__date.is-green { background:var(--green-500); }
.cal-event__day { font-family:var(--font-head); font-weight:700; font-size:24px; line-height:1; }
.cal-event__month { font-size:11px; font-weight:600; letter-spacing:.5px; }
.cal-event__body { flex:1; min-width:0; }
.cal-event__meta { display:flex; align-items:center; gap:12px; margin-bottom:6px; flex-wrap:wrap; }
.cal-event__cat { font-size:10.5px; font-weight:700; letter-spacing:.5px; padding:3px 10px; border-radius:20px; }
.cal-event__cat.is-culture { background:#fdf6d8; color:#b8901a; }
.cal-event__cat.is-sport { background:#e6f0f8; color:var(--river-blue); }
.cal-event__cat.is-music { background:#eef7d8; color:#7a9e1a; }
.cal-event__time { font-size:12.5px; color:var(--muted); display:inline-flex; align-items:center; gap:5px; }
.cal-event__title { font-family:var(--font-head); font-weight:700; font-size:18px; color:var(--teal-700); margin:0 0 6px; }
.cal-event__loc { font-size:13px; color:var(--muted); display:inline-flex; align-items:center; gap:5px; }
.cal-event__btn { flex:none; }

/* ==========================================================================
   OGŁOSZENIA (Image 5)
   ========================================================================== */
.ogl-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:24px 0 20px; flex-wrap:wrap; }
.ogl-head .page-head__title, .ogl-head .page-head__lead { margin:0; }
.ogl-head .page-head__lead { margin-top:8px; }
.ogl-search { display:flex; gap:12px; background:#fff; border:1px solid var(--line); border-radius:16px; padding:12px; box-shadow:var(--shadow-sm); margin-bottom:34px; flex-wrap:wrap; }
.ogl-search__field { flex:1; min-width:200px; display:flex; align-items:center; gap:10px; padding:0 14px; }
.ogl-search__field svg { width:18px; height:18px; color:var(--muted); flex:none; }
.ogl-search__field input { width:100%; border:0; outline:none; font-size:15px; font-family:var(--font-body); }
.ogl-search__select { border:1px solid var(--line); border-radius:10px; padding:0 16px; font-family:var(--font-body); font-size:14px; color:var(--teal-700); background:#fff; min-width:180px; }

.ogl-layout { display:grid; grid-template-columns:280px 1fr; gap:30px; align-items:start; padding-bottom:60px; }
.ogl-cats { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:18px; box-shadow:var(--shadow-sm); margin-bottom:20px; }
.ogl-cats__title { display:flex; align-items:center; gap:10px; font-size:16px; margin-bottom:14px; }
.ogl-cats__title svg { width:18px; height:18px; }
.ogl-cat { display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:10px; color:var(--ink); font-size:14.5px; }
.ogl-cat:hover { background:var(--bg-soft); }
.ogl-cat.is-active { background:#eaf6e6; color:var(--green-600); font-weight:600; }
.ogl-cat__ico { display:inline-flex; color:var(--muted); }
.ogl-cat__ico svg { width:18px; height:18px; }
.ogl-cat.is-active .ogl-cat__ico { color:var(--green-500); }
.ogl-cat__count { margin-left:auto; font-size:12.5px; color:var(--muted); background:var(--bg-soft); padding:2px 10px; border-radius:20px; }
.ogl-cat.is-active .ogl-cat__count { background:#fff; color:var(--green-600); }

.ogl-promo { background:var(--bg-soft); border:1px dashed var(--line); border-radius:var(--radius); padding:20px; }
.ogl-promo__badge { display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.5px; color:var(--green-600); background:#eaf6e6; padding:4px 10px; border-radius:20px; margin-bottom:10px; }
.ogl-promo p { font-size:13.5px; color:var(--muted); margin:0 0 10px; }
.ogl-promo a { font-family:var(--font-head); font-weight:600; font-size:13.5px; color:var(--green-500); }

.ogl-list { display:flex; flex-direction:column; gap:20px; }
.ogl-card { display:flex; gap:0; background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); transition:box-shadow .2s; }
.ogl-card:hover { box-shadow:var(--shadow); }
.ogl-card.is-promo { border-color:var(--green-400); }
.ogl-card__media { flex:none; width:200px; overflow:hidden; }
.ogl-card__media img { width:100%; height:100%; object-fit:cover; }
.ogl-card__body { flex:1; padding:20px 24px; display:flex; flex-direction:column; min-width:0; }
.ogl-card__top { display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.ogl-card__cat { font-size:10.5px; font-weight:700; letter-spacing:.5px; padding:3px 10px; border-radius:20px; background:#eaf6e6; color:var(--green-600); }
.ogl-card__date { font-size:12.5px; color:var(--muted); display:inline-flex; align-items:center; gap:5px; }
.ogl-card__fav { margin-left:auto; background:transparent; border:0; color:var(--line); cursor:pointer; padding:4px; }
.ogl-card__fav:hover { color:var(--green-500); }
.ogl-card__fav svg { width:20px; height:20px; }
.ogl-card__title { font-family:var(--font-head); font-weight:700; font-size:19px; color:var(--teal-700); margin:0 0 8px; }
.ogl-card__excerpt { font-size:14px; color:var(--muted); margin:0 0 16px; flex:1; }
.ogl-card__foot { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.ogl-card__meta { display:flex; align-items:center; gap:18px; }
.ogl-card__price { font-family:var(--font-head); font-weight:800; font-size:22px; color:var(--teal-700); }
.ogl-card__loc { font-size:13px; color:var(--muted); display:inline-flex; align-items:center; gap:5px; }

/* ==========================================================================
   PANEL UŻYTKOWNIKA (Image 6)
   ========================================================================== */
.panel-layout { display:grid; grid-template-columns:260px 1fr; gap:30px; padding:30px 0 60px; align-items:start; }
.panel-nav { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:16px; box-shadow:var(--shadow-sm); position:sticky; top:96px; }
.panel-nav__link { display:flex; align-items:center; gap:14px; padding:13px 16px; border-radius:12px; color:var(--ink); font-family:var(--font-head); font-weight:500; font-size:14.5px; margin-bottom:4px; }
.panel-nav__link svg { width:20px; height:20px; color:var(--muted); flex:none; }
.panel-nav__link:hover { background:var(--bg-soft); }
.panel-nav__link.is-active { background:var(--teal-700); color:#fff; }
.panel-nav__link.is-active svg { color:#fff; }
.panel-nav__badge { margin-left:auto; background:#d9414f; color:#fff; font-size:11px; border-radius:20px; min-width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; padding:0 6px; }
.panel-nav__sep { height:1px; background:var(--line); margin:12px 8px; }
.panel-nav__logout { display:flex; align-items:center; gap:14px; padding:13px 16px; border-radius:12px; color:#d9414f; font-family:var(--font-head); font-weight:600; font-size:14.5px; }
.panel-nav__logout svg { width:20px; height:20px; }
.panel-nav__logout:hover { background:#fdecec; color:#d9414f; }

.panel-main { min-width:0; }
.panel-welcome { margin-bottom:24px; }
.panel-welcome__title { font-size:clamp(24px,3vw,32px); margin:0 0 6px; }
.panel-welcome__sub { color:var(--muted); font-size:15px; margin:0; }

.panel-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-bottom:24px; }
.panel-stat { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:22px; box-shadow:var(--shadow-sm); display:flex; align-items:center; gap:16px; }
.panel-stat__ico { width:52px; height:52px; flex:none; border-radius:14px; display:flex; align-items:center; justify-content:center; }
.panel-stat__ico svg { width:24px; height:24px; }
.panel-stat__ico.is-green { background:#eaf6e6; color:var(--green-600); }
.panel-stat__ico.is-blue { background:#e6f0f8; color:var(--river-blue); }
.panel-stat__ico.is-yellow { background:#fdf6d8; color:#b8901a; }
.panel-stat__label { display:block; font-size:12px; font-weight:600; letter-spacing:.4px; color:var(--muted); text-transform:uppercase; margin-bottom:4px; }
.panel-stat__value { font-family:var(--font-head); font-weight:800; font-size:28px; color:var(--teal-700); line-height:1; }

.panel-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:26px; box-shadow:var(--shadow-sm); margin-bottom:24px; }
.panel-card__head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; flex-wrap:wrap; }
.panel-card__title { font-size:19px; margin:0; }
.panel-card__link { font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--green-500); }

.panel-table { width:100%; border-collapse:collapse; }
.panel-table thead th { text-align:left; font-size:11.5px; font-weight:700; letter-spacing:.5px; color:var(--muted); text-transform:uppercase; padding:0 12px 14px; border-bottom:1px solid var(--line); }
.panel-table thead th:last-child { text-align:right; }
.panel-table tbody td { padding:16px 12px; border-bottom:1px solid var(--line); font-size:14.5px; color:var(--ink); vertical-align:middle; }
.panel-table tbody tr:last-child td { border-bottom:0; }
.panel-table tbody td:last-child { text-align:right; }
.panel-table__name { font-family:var(--font-head); font-weight:600; color:var(--teal-700); display:flex; align-items:center; gap:12px; }
.panel-table__thumb { width:40px; height:40px; flex:none; border-radius:10px; overflow:hidden; background:var(--bg-soft); }
.panel-table__thumb img { width:100%; height:100%; object-fit:cover; }
.panel-badge { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; padding:5px 14px; border-radius:20px; }
.panel-badge::before { content:""; width:7px; height:7px; border-radius:50%; }
.panel-badge.is-active { background:#eaf6e6; color:var(--green-600); }
.panel-badge.is-active::before { background:var(--green-500); }
.panel-badge.is-pending { background:#fdf6d8; color:#b8901a; }
.panel-badge.is-pending::before { background:#e8b923; }

.panel-messages { display:flex; flex-direction:column; }
.panel-msg { display:flex; align-items:center; gap:14px; padding:16px 4px; border-bottom:1px solid var(--line); }
.panel-msg:last-child { border-bottom:0; }
.panel-msg:hover { background:var(--bg-soft); }
.panel-msg__avatar img { border-radius:50%; }
.panel-msg__body { flex:1; min-width:0; }
.panel-msg__name { font-family:var(--font-head); font-weight:700; font-size:14.5px; color:var(--teal-700); display:block; }
.panel-msg__text { font-size:13.5px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block; }
.panel-msg__time { font-size:11px; font-weight:600; letter-spacing:.4px; color:var(--muted); }
.panel-msg__dot { width:8px; height:8px; border-radius:50%; background:var(--river-blue); flex:none; }

/* Account menu w headerze — rola pod nazwą */
.account-menu__role { display:block; font-size:11.5px; color:var(--muted); font-weight:400; }

/* ==========================================================================
   REJESTRACJA (Image 7)
   ========================================================================== */
.auth-page { padding:40px 0 70px; }
.auth-hero { text-align:center; max-width:720px; margin:0 auto 40px; }
.auth-hero__title { font-size:clamp(28px,3.6vw,40px); margin-bottom:12px; }
.auth-hero__title span { color:var(--green-500); }
.auth-hero__lead { color:var(--muted); font-size:17px; margin:0; }

.acc-types { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; max-width:1000px; margin:0 auto 36px; }
.acc-type { background:#fff; border:2px solid var(--line); border-radius:var(--radius-lg); padding:30px 24px; text-align:center; cursor:pointer; transition:.15s; display:flex; flex-direction:column; align-items:center; gap:6px; position:relative; }
.acc-type:hover { border-color:var(--green-400); }
.acc-type input { position:absolute; opacity:0; }
.acc-type.is-selected { border-color:var(--green-500); box-shadow:0 0 0 4px rgba(87,178,63,.1); }
.acc-type__ico { width:66px; height:66px; border-radius:50%; display:flex; align-items:center; justify-content:center; margin-bottom:10px; }
.acc-type__ico svg { width:30px; height:30px; }
.acc-type__ico.is-green { background:#eaf6e6; color:var(--green-600); }
.acc-type__ico.is-blue { background:#e6f0f8; color:var(--river-blue); }
.acc-type__ico.is-gray { background:var(--bg-soft); color:var(--muted); }
.acc-type__name { font-family:var(--font-head); font-weight:700; font-size:17px; color:var(--teal-700); }
.acc-type__desc { font-size:13.5px; color:var(--muted); }

.auth-form-wrap { max-width:640px; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:40px; box-shadow:var(--shadow); }
.auth-form__heading { font-size:24px; margin-bottom:24px; text-align:center; }
.auth-form__switch { text-align:center; margin:18px 0 0; color:var(--muted); font-size:14.5px; }
.auth-form__switch a { color:var(--green-500); font-weight:600; }
.auth-form-wrap .form-consent a { color:var(--green-500); }

/* ==========================================================================
   JAK DZIAŁA PLATFORMA (Image 2)
   ========================================================================== */
.jd-hero { background:var(--bg-soft); padding:70px 0; text-align:center; position:relative; overflow:hidden; }
.jd-hero__title { font-size:clamp(32px,4.4vw,52px); margin-bottom:20px; }
.jd-hero__lead { max-width:720px; margin:0 auto; color:var(--muted); font-size:17px; line-height:1.7; }
.jd-eyebrow { display:inline-block; font-size:12px; font-weight:700; letter-spacing:1px; color:var(--green-600); background:#eaf6e6; padding:6px 16px; border-radius:20px; margin-bottom:14px; }

.jd-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.jd-step { text-align:center; padding:0 12px; }
.jd-step__ico { width:80px; height:80px; margin:0 auto 20px; border-radius:20px; display:flex; align-items:center; justify-content:center; border:2px solid; }
.jd-step__ico svg { width:34px; height:34px; }
.jd-step__ico.is-green { border-color:var(--green-400); color:var(--green-500); background:#f4fbf1; }
.jd-step__ico.is-blue { border-color:#a9cfe8; color:var(--river-blue); background:#f2f8fc; }
.jd-step__ico.is-yellow { border-color:#f0dd8a; color:#c9a922; background:#fdfae8; }
.jd-step__ico.is-dark { border-color:var(--teal-600); color:var(--teal-700); background:#f1f6f7; }
.jd-step__title { font-size:19px; margin-bottom:10px; }
.jd-step__desc { font-size:14px; color:var(--muted); line-height:1.6; }

.jd-benefits { display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
.jd-benefit { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:32px; box-shadow:var(--shadow-sm); }
.jd-benefit__ico { width:56px; height:56px; border-radius:16px; display:flex; align-items:center; justify-content:center; margin-bottom:20px; }
.jd-benefit__ico svg { width:26px; height:26px; }
.jd-benefit__ico.is-green { background:#eaf6e6; color:var(--green-600); }
.jd-benefit__ico.is-blue { background:#e6f0f8; color:var(--river-blue); }
.jd-benefit__ico.is-yellow { background:#fdf6d8; color:#b8901a; }
.jd-benefit__title { font-size:21px; margin-bottom:18px; }
.jd-benefit__list { display:flex; flex-direction:column; gap:14px; }
.jd-benefit__list li { position:relative; padding-left:30px; font-size:14.5px; color:var(--muted); line-height:1.5; }
.jd-benefit__list li::before { content:""; position:absolute; left:0; top:2px; width:18px; height:18px; background-repeat:no-repeat; background-position:center; }
.jd-benefit__list.is-green li::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2357b23f' stroke-width='3'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E"); }
.jd-benefit__list.is-blue li::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232e86c1' stroke-width='3'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E"); }
.jd-benefit__list.is-yellow li::before { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c9a922' stroke-width='3'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E"); }

.jd-cta { background:linear-gradient(120deg,var(--teal-700),var(--teal-800)); border-radius:var(--radius-lg); padding:50px; display:grid; grid-template-columns:1.1fr .9fr; gap:40px; align-items:center; color:#fff; }
.jd-cta__title { color:#fff; font-size:clamp(24px,3vw,34px); margin-bottom:16px; }
.jd-cta__text { color:rgba(255,255,255,.9); font-size:16px; margin-bottom:26px; max-width:440px; }
.jd-opinion { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.14); border-radius:var(--radius); padding:24px; }
.jd-opinion__head { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.jd-opinion__avatar img { border-radius:50%; }
.jd-opinion__author { font-family:var(--font-head); font-weight:700; font-size:15px; color:#fff; display:block; }
.jd-opinion__role { font-size:12.5px; color:rgba(255,255,255,.7); }
.jd-opinion__text { font-size:14.5px; color:rgba(255,255,255,.9); font-style:italic; margin:0; line-height:1.6; }

/* ==========================================================================
   MAPA PEŁNA (Image 1)
   ========================================================================== */
.mapfull { display:grid; grid-template-columns:340px 1fr; height:calc(100vh - 116px); min-height:600px; }
.mapfull__panel { background:#fff; border-right:1px solid var(--line); padding:28px 24px; overflow-y:auto; }
.mapfull__title { display:flex; align-items:center; gap:12px; font-size:22px; margin-bottom:8px; }
.mapfull__title svg { width:22px; height:22px; color:var(--green-500); }
.mapfull__hint { font-size:13.5px; color:var(--muted); margin-bottom:24px; }
.mapfull__filters { display:flex; flex-direction:column; gap:12px; margin-bottom:24px; }
.maplayer { display:flex; align-items:center; gap:14px; padding:14px 16px; border:1px solid var(--line); border-radius:14px; cursor:pointer; transition:.15s; }
.maplayer:hover { border-color:var(--green-400); }
.maplayer__ico { width:34px; height:34px; flex:none; border-radius:10px; background:var(--bg-soft); display:flex; align-items:center; justify-content:center; }
.maplayer__ico svg { width:18px; height:18px; }
.maplayer__name { flex:1; font-family:var(--font-head); font-weight:600; font-size:14.5px; color:var(--teal-700); }
.maplayer__switch { position:relative; width:44px; height:24px; flex:none; }
.maplayer__switch input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; z-index:2; }
.maplayer__slider { position:absolute; inset:0; background:var(--line); border-radius:20px; transition:.2s; }
.maplayer__slider::before { content:""; position:absolute; left:3px; top:3px; width:18px; height:18px; background:#fff; border-radius:50%; transition:.2s; }
.maplayer__switch input:checked + .maplayer__slider { background:var(--green-500); }
.maplayer__switch input:checked + .maplayer__slider::before { transform:translateX(20px); }
.mapfull__locate { margin-top:8px; }

.mapfull__canvas { position:relative; }
.mapfull__canvas #ns-full-map { width:100%; height:100%; }
.mapfull__legend { position:absolute; bottom:24px; right:24px; z-index:500; background:#fff; border-radius:var(--radius); padding:14px 18px; box-shadow:var(--shadow); }
.mapfull__legend-row { display:flex; align-items:center; gap:10px; font-size:11px; font-weight:700; letter-spacing:.4px; color:var(--muted); padding:4px 0; }
.mapfull__legend-line { width:26px; height:4px; border-radius:2px; }

/* Karta punktu na mapie (popup Leaflet) */
.mappoint-card { min-width:220px; }
.mappoint-card__title { font-family:var(--font-head); font-weight:700; font-size:16px; color:var(--teal-700); margin:0 0 6px; }
.mappoint-card__desc { font-size:13px; color:var(--muted); margin:0 0 10px; }
.mappoint-card__link { font-family:var(--font-head); font-weight:600; color:var(--green-500); }

/* ==========================================================================
   RESPONSYWNOŚĆ — makiety 2
   ========================================================================== */
@media (max-width:1100px) {
	.catalog-grid, .jd-benefits, .panel-stats, .jd-steps { grid-template-columns:repeat(2,1fr); }
	.acc-types { grid-template-columns:1fr; max-width:520px; }
	.atr-amenities__grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:960px) {
	.atr-layout, .atr-gallery, .ogl-layout, .jd-cta { grid-template-columns:1fr; }
	.atr-sidebar, .panel-nav { position:static; }
	.mapfull { grid-template-columns:1fr; height:auto; }
	.mapfull__panel { border-right:0; border-bottom:1px solid var(--line); }
	.mapfull__canvas { height:70vh; }
	.ogl-card { flex-direction:column; }
	.ogl-card__media { width:100%; height:200px; }
	.panel-layout { grid-template-columns:1fr; }
	.fullcal__cell { min-height:80px; }
}
@media (max-width:640px) {
	.catalog-grid, .jd-benefits, .panel-stats, .jd-steps, .atr-amenities__grid { grid-template-columns:1fr; }
	.fullcal__event { display:none; }
	.fullcal__cell.is-today .fullcal__num, .fullcal__cell { position:relative; }
	.cal-event { flex-wrap:wrap; }
	.cal-event__btn { width:100%; }
	.catalog-head, .ogl-head { flex-direction:column; align-items:stretch; }
}

/* Stos nazwa + rola w przycisku konta (nagłówek) */
.account-menu__names { display:flex; flex-direction:column; line-height:1.15; text-align:left; }

/* ==========================================================================
   FORMULARZE FRONT-END, ALERTY, HONEYPOT, PODGLĄD HASŁA
   ========================================================================== */
.ns-form .form-group { margin-bottom:18px; }
.ns-form textarea { width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:10px; font-family:var(--font-body); font-size:15px; resize:vertical; }
.ns-form input[type="file"] { font-size:14px; }

.ns-alert { padding:14px 18px; border-radius:12px; font-size:14.5px; margin-bottom:20px; border:1px solid transparent; }
.ns-alert--success { background:#eaf6e6; border-color:#bfe4b0; color:#2f6d24; }
.ns-alert--error { background:#fdecec; border-color:#f3c2c2; color:#a02020; }
.ns-alert a { color:inherit; text-decoration:underline; font-weight:600; }

/* Honeypot — ukryty przed ludźmi, widoczny dla botów */
.ns-hp { position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }

/* Podgląd hasła */
.pw-field { position:relative; }
.pw-field input { width:100%; padding-right:46px; }
.pw-toggle { position:absolute; right:8px; top:50%; transform:translateY(-50%); background:transparent; border:0; cursor:pointer; color:var(--muted); padding:6px; border-radius:8px; display:inline-flex; }
.pw-toggle:hover { color:var(--teal-700); background:var(--bg-soft); }
.pw-toggle svg { width:20px; height:20px; }
.pw-toggle__eye-off { display:none; }
.pw-toggle.is-visible .pw-toggle__eye { display:none; }
.pw-toggle.is-visible .pw-toggle__eye-off { display:block; }

.btn--ghost-dark { background:transparent; border:1px solid rgba(255,255,255,.4); color:#fff; }
.btn--ghost-danger { background:transparent; border:1px solid #e7b4b4; color:#c0392b; }
.btn--ghost-danger:hover { background:#fdecec; }

/* ==========================================================================
   WIDGET DOSTĘPNOŚCI (WCAG AA)
   ========================================================================== */
.ns-a11y-toggle { position:fixed; right:0; top:130px; z-index:9000; background:var(--teal-700); color:#fff; border:0; border-radius:14px 0 0 14px; width:52px; height:52px; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:-4px 4px 16px rgba(0,0,0,.18); transition:background .15s, width .15s; }
.ns-a11y-toggle svg { width:28px; height:28px; }
.ns-a11y-toggle:hover { background:var(--green-500); width:58px; }

.ns-a11y-panel { position:fixed; right:20px; top:130px; z-index:9001; width:340px; max-width:calc(100vw - 40px); max-height:78vh; overflow-y:auto; background:#fff; border-radius:var(--radius-lg); box-shadow:0 20px 60px rgba(0,0,0,.25); padding:22px; }
.ns-a11y-panel__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.ns-a11y-panel__title { font-size:18px; margin:0; }
.ns-a11y-panel__close { background:transparent; border:0; font-size:26px; line-height:1; cursor:pointer; color:var(--muted); }
.ns-a11y-group { margin-bottom:18px; }
.ns-a11y-group__label { display:block; font-size:12px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); margin-bottom:10px; }
.ns-a11y-btns { display:flex; gap:8px; }
.ns-a11y-btns button { flex:1; padding:12px; border:1px solid var(--line); border-radius:10px; background:#fff; cursor:pointer; font-family:var(--font-head); font-weight:700; color:var(--teal-700); }
.ns-a11y-btns button:hover { border-color:var(--green-400); background:var(--bg-soft); }
.ns-a11y-toggles { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:18px; }
.ns-a11y-opt { display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center; padding:14px 8px; border:1px solid var(--line); border-radius:12px; background:#fff; cursor:pointer; font-size:12.5px; font-weight:600; color:var(--ink); }
.ns-a11y-opt:hover { border-color:var(--green-400); background:var(--bg-soft); }
.ns-a11y-opt.is-active { border-color:var(--green-500); background:#eaf6e6; color:var(--green-600); }
.ns-a11y-opt__ico svg { width:22px; height:22px; }
.ns-a11y-reset { width:100%; padding:12px; border:1px solid var(--line); border-radius:10px; background:#fff; cursor:pointer; font-family:var(--font-head); font-weight:600; color:var(--muted); }
.ns-a11y-reset:hover { border-color:#e7b4b4; color:#c0392b; }
.ns-a11y-panel__note { text-align:center; margin:14px 0 0; font-size:13px; }

/* Linijka czytania */
.ns-reading-guide { position:fixed; left:0; right:0; height:40px; background:rgba(26,85,104,.12); border-top:2px solid var(--teal-700); border-bottom:2px solid var(--teal-700); pointer-events:none; z-index:8999; transform:translateY(-50%); }

/* --- Tryby dostępności --- */
body.ns-font-1 { font-size:112.5%; }
body.ns-font-2 { font-size:125%; }
body.ns-font-3 { font-size:140%; }

body.ns-contrast-dark { background:#0d1b21 !important; }
body.ns-contrast-dark .site-main, body.ns-contrast-dark .section, body.ns-contrast-dark .panel-card, body.ns-contrast-dark .filter-card, body.ns-contrast-dark .atr-info, body.ns-contrast-dark .atr-amenities, body.ns-contrast-dark .auth-form-wrap, body.ns-contrast-dark .ogl-card, body.ns-contrast-dark .atr-card, body.ns-contrast-dark .news-card { background:#152932 !important; color:#e8f0f2 !important; }
body.ns-contrast-dark h1, body.ns-contrast-dark h2, body.ns-contrast-dark h3, body.ns-contrast-dark p, body.ns-contrast-dark a, body.ns-contrast-dark li, body.ns-contrast-dark span, body.ns-contrast-dark td { color:#e8f0f2 !important; }

body.ns-links a { text-decoration:underline !important; outline:1px dashed currentColor; outline-offset:2px; }
body.ns-readable, body.ns-readable * { font-family:Arial, Verdana, sans-serif !important; letter-spacing:.02em; }
body.ns-spacing { letter-spacing:.05em; word-spacing:.16em; line-height:2 !important; }
body.ns-spacing p, body.ns-spacing li { line-height:2 !important; }
body.ns-motion *, body.ns-motion *::before, body.ns-motion *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
body.ns-cursor, body.ns-cursor * { cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpath d='M6 6l10 26 4-10 10-4z' fill='%231a5568' stroke='white' stroke-width='2'/%3E%3C/svg%3E") 4 4, auto !important; }

/* Fokus klawiatury — wyraźny (WCAG AA) */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible { outline:3px solid var(--river-blue); outline-offset:2px; border-radius:4px; }

/* ==========================================================================
   BANER ZGÓD COOKIES
   ========================================================================== */
.ns-cookie { position:fixed; left:20px; right:20px; bottom:20px; z-index:9500; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:0 20px 60px rgba(0,0,0,.2); }
.ns-cookie__inner { display:flex; align-items:center; gap:24px; padding:22px 26px; flex-wrap:wrap; }
.ns-cookie__text { flex:1; min-width:280px; }
.ns-cookie__title { font-size:18px; margin:0 0 6px; }
.ns-cookie__text p { font-size:14px; color:var(--muted); margin:0; }
.ns-cookie__text a { color:var(--green-600); text-decoration:underline; }
.ns-cookie__actions { display:flex; gap:10px; flex-wrap:wrap; }
.ns-cookie__actions .btn--ghost-dark { border-color:var(--line); color:var(--muted); }
.ns-cookie__actions .btn--ghost-dark:hover { background:var(--bg-soft); }

.ns-cookie-modal { position:fixed; inset:0; z-index:9600; display:flex; align-items:center; justify-content:center; }
/* Atrybut hidden musi mieć pierwszeństwo nad display z klas powyżej */
.ns-cookie[hidden], .ns-cookie-modal[hidden], .ns-a11y-panel[hidden], .ns-cookie-reopen[hidden], #ns-a11y-toggle[hidden], .ns-reading-guide[hidden] { display:none !important; }
.ns-cookie-modal__backdrop { position:absolute; inset:0; background:rgba(13,27,33,.55); }
.ns-cookie-modal__box { position:relative; z-index:1; width:520px; max-width:calc(100vw - 40px); max-height:88vh; overflow-y:auto; background:#fff; border-radius:var(--radius-lg); padding:32px; box-shadow:0 24px 70px rgba(0,0,0,.3); }
.ns-cookie-modal__close { position:absolute; right:18px; top:16px; background:transparent; border:0; font-size:28px; line-height:1; cursor:pointer; color:var(--muted); }
.ns-cookie-modal__title { font-size:22px; margin:0 0 8px; }
.ns-cookie-modal__lead { font-size:14px; color:var(--muted); margin:0 0 22px; }
.ns-consent-row { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:16px 0; border-bottom:1px solid var(--line); }
.ns-consent-row strong { font-family:var(--font-head); font-size:15px; color:var(--teal-700); }
.ns-consent-row p { font-size:13px; color:var(--muted); margin:4px 0 0; }
.ns-cookie-modal__actions { display:flex; gap:12px; margin-top:24px; justify-content:flex-end; flex-wrap:wrap; }

/* Przełącznik w modalu zgód */
.ns-switch { position:relative; width:48px; height:26px; flex:none; display:inline-block; }
.ns-switch input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; z-index:2; }
.ns-switch__slider { position:absolute; inset:0; background:var(--line); border-radius:20px; transition:.2s; }
.ns-switch__slider::before { content:""; position:absolute; left:3px; top:3px; width:20px; height:20px; background:#fff; border-radius:50%; transition:.2s; }
.ns-switch input:checked + .ns-switch__slider { background:var(--green-500); }
.ns-switch input:checked + .ns-switch__slider::before { transform:translateX(22px); }
.ns-switch.is-locked .ns-switch__slider { background:var(--teal-700); opacity:.6; }

.ns-cookie-reopen { position:fixed; left:20px; bottom:20px; z-index:9400; width:46px; height:46px; border-radius:50%; background:var(--teal-700); color:#fff; border:0; cursor:pointer; box-shadow:var(--shadow); display:flex; align-items:center; justify-content:center; }
.ns-cookie-reopen svg { width:22px; height:22px; }
.ns-cookie-reopen:hover { background:var(--teal-800); }

/* Back to top — prawy dolny róg */
.ns-back-to-top { position:fixed; right:24px; bottom:24px; z-index:9400; width:48px; height:48px; border-radius:50%; background:var(--teal-700); color:#fff; border:0; cursor:pointer; box-shadow:0 6px 20px rgba(0,0,0,.2); display:flex; align-items:center; justify-content:center; opacity:0; transform:translateY(10px); transition:opacity .2s, transform .2s, background .15s; }
.ns-back-to-top.is-visible { opacity:1; transform:translateY(0); }
.ns-back-to-top svg { width:22px; height:22px; }
.ns-back-to-top:hover { background:var(--green-500); }

@media (max-width:640px) {
	.ns-a11y-toggle { top:auto; bottom:80px; }
	.ns-a11y-panel { top:auto; bottom:20px; right:12px; }
	.ns-cookie__actions { width:100%; }
	.ns-cookie__actions .btn { flex:1; }
	.ns-a11y-toggles { grid-template-columns:1fr; }
	.ns-back-to-top { right:16px; bottom:76px; }
}

/* ==========================================================================
   DATEPICKER (własny kalendarz wyboru daty)
   ========================================================================== */
.ns-dp { position:relative; }
.ns-dp.is-open::before { content:""; }
.ns-dp:not(.is-open) { display:none; }
.ns-dp.is-open { display:block; position:absolute; z-index:9700; top:4px; left:0; width:300px; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 16px 44px rgba(0,0,0,.18); padding:16px; }
.ns-dp__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.ns-dp__title { font-family:var(--font-head); font-weight:700; font-size:15px; color:var(--teal-700); }
.ns-dp__nav { width:32px; height:32px; border:1px solid var(--line); border-radius:8px; background:#fff; cursor:pointer; font-size:18px; color:var(--teal-700); line-height:1; }
.ns-dp__nav:hover { background:var(--bg-soft); }
.ns-dp__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.ns-dp__dow { text-align:center; font-size:11px; font-weight:700; color:var(--muted); padding:4px 0; }
.ns-dp__cell { aspect-ratio:1; border:0; background:transparent; border-radius:8px; cursor:pointer; font-size:13px; color:var(--ink); font-family:var(--font-body); }
.ns-dp__cell:hover:not(.is-empty) { background:var(--bg-soft); }
.ns-dp__cell.is-empty { cursor:default; }
.ns-dp__cell.is-today { color:var(--green-600); font-weight:700; }
.ns-dp__cell.is-selected { background:var(--green-500); color:#fff; font-weight:700; }
.ns-dp__time { display:flex; align-items:center; gap:6px; margin-top:12px; padding-top:12px; border-top:1px solid var(--line); font-size:13px; }
.ns-dp__time label { color:var(--muted); }
.ns-dp__time select { padding:6px 8px; border:1px solid var(--line); border-radius:8px; font-family:var(--font-body); }
.ns-dp__foot { display:flex; justify-content:space-between; margin-top:12px; }
.ns-dp__clear, .ns-dp__done { border:0; background:transparent; cursor:pointer; font-family:var(--font-head); font-weight:600; font-size:13px; padding:8px 12px; border-radius:8px; }
.ns-dp__clear { color:var(--muted); }
.ns-dp__clear:hover { color:#c0392b; }
.ns-dp__done { color:#fff; background:var(--teal-700); }
.ns-dp__done:hover { background:var(--teal-800); }

/* ==========================================================================
   MODAL FORMULARZA (dodawanie/edycja treści)
   ========================================================================== */
.ns-modal { position:fixed; inset:0; z-index:9800; display:flex; align-items:flex-start; justify-content:center; padding:40px 20px; overflow-y:auto; }
.ns-modal__backdrop { position:fixed; inset:0; background:rgba(13,27,33,.55); }
.ns-modal__box { position:relative; z-index:1; width:620px; max-width:100%; background:#fff; border-radius:var(--radius-lg); box-shadow:0 24px 70px rgba(0,0,0,.3); margin:auto; }
.ns-modal__head { display:flex; align-items:center; justify-content:space-between; padding:22px 26px; border-bottom:1px solid var(--line); position:sticky; top:0; background:#fff; border-radius:var(--radius-lg) var(--radius-lg) 0 0; z-index:2; }
.ns-modal__title { font-size:20px; margin:0; }
.ns-modal__close { background:transparent; border:0; font-size:28px; line-height:1; cursor:pointer; color:var(--muted); }
.ns-modal__close:hover { color:var(--ink); }
.ns-modal__body { padding:26px; }
.ns-modal__loading { text-align:center; color:var(--muted); padding:40px 0; }
.ns-modal__error { color:#c0392b; text-align:center; padding:20px; }

.ns-modal-form .ns-form-field { margin-bottom:16px; }
.ns-modal-form label { display:block; font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--teal-700); margin-bottom:6px; }
.ns-modal-form input[type="text"], .ns-modal-form input[type="email"], .ns-modal-form input[type="file"], .ns-modal-form select, .ns-modal-form textarea { width:100%; padding:11px 14px; border:1px solid var(--line); border-radius:10px; font-family:var(--font-body); font-size:15px; background:#fff; }
.ns-modal-form input:focus, .ns-modal-form select:focus, .ns-modal-form textarea:focus { outline:none; border-color:var(--green-400); }
.ns-modal-form textarea { resize:vertical; }
.ns-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.ns-form-grid .ns-form-field { margin-bottom:0; }
.ns-form-help { display:block; font-size:12px; color:var(--muted); margin-top:5px; }
.ns-form-thumb { margin-top:10px; }
.ns-form-thumb img { border-radius:10px; max-width:80px; height:auto; }
.ns-modal-form__actions { display:flex; justify-content:flex-end; gap:12px; margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }
.ns-modal-form__msg { margin-top:14px; font-size:14px; text-align:center; }
.ns-modal-form__msg.is-success { color:var(--green-600); }
.ns-modal-form__msg.is-error { color:#c0392b; }

@media (max-width:640px) {
	.ns-form-grid { grid-template-columns:1fr; }
	.ns-modal { padding:20px 12px; }
}

/* Własne pinezki na mapie (Leaflet divIcon) */
.ns-pin { background:transparent !important; border:0 !important; }
.ns-pin svg { filter:drop-shadow(0 3px 4px rgba(0,0,0,.3)); }

/* ==========================================================================
   AKTUALNOŚCI (blog) — lista i pojedynczy wpis
   ========================================================================== */
.news-grid--archive { padding-bottom:50px; }
.news-card__meta { display:flex; align-items:center; gap:12px; margin-bottom:10px; flex-wrap:wrap; }
.news-card__cat { font-size:10.5px; font-weight:700; letter-spacing:.5px; color:var(--green-600); background:#eaf6e6; padding:3px 10px; border-radius:20px; }
.news-card__date { font-size:12.5px; color:var(--muted); }

.post-single { max-width:none; margin:0; padding:10px 0 20px; }
.post-single__head { margin-bottom:24px; }
.post-single__meta { display:flex; align-items:center; gap:14px; margin-bottom:16px; flex-wrap:wrap; }
.post-single__cat { font-size:11px; font-weight:700; letter-spacing:.5px; color:var(--green-600); background:#eaf6e6; padding:4px 12px; border-radius:20px; }
.post-single__date { font-size:14px; color:var(--muted); }
.post-single__title { font-size:clamp(28px,3.6vw,42px); line-height:1.15; margin:0; }
.post-single__media { margin:0 0 30px; border-radius:var(--radius-lg); overflow:hidden; }
.post-single__media img { width:100%; height:auto; display:block; }
.post-single__content { font-size:17px; line-height:1.85; color:var(--ink); }
.post-single__content p { margin-bottom:22px; }
.post-single__content h2 { font-size:26px; margin:36px 0 16px; }
.post-single__content h3 { font-size:21px; margin:30px 0 14px; }
.post-single__content ul, .post-single__content ol { margin:0 0 22px 22px; }
.post-single__content li { margin-bottom:8px; }
.post-single__content img { max-width:100%; height:auto; border-radius:var(--radius); margin:20px 0; }
.post-single__content blockquote { border-left:4px solid var(--green-500); padding:8px 0 8px 24px; margin:24px 0; color:var(--muted); font-style:italic; }
.post-single__tags { display:flex; flex-wrap:wrap; gap:10px; margin:30px 0; }
.post-single__tags a { font-size:13px; color:var(--river-blue); background:var(--bg-soft); padding:6px 14px; border-radius:20px; }
.post-single__tags a:hover { background:#e6f0f8; }
.post-single__nav { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:40px 0 10px; padding-top:26px; border-top:1px solid var(--line); flex-wrap:wrap; }
.post-single__nav > div { flex:1; }
.post-single__nav > div:last-child { text-align:right; }
.post-single__nav-link { font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--teal-700); }
.post-single__nav-link:hover { color:var(--green-500); }

/* ==========================================================================
   STYLOWANY UPLOAD PLIKU
   ========================================================================== */
.ns-file { position:relative; display:inline-flex; align-items:center; gap:0; cursor:pointer; }
.ns-file input[type="file"] { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.ns-file__btn { display:inline-flex; align-items:center; gap:8px; padding:11px 18px; background:var(--teal-700); color:#fff; border-radius:10px 0 0 10px; font-family:var(--font-head); font-weight:600; font-size:14px; white-space:nowrap; }
.ns-file__btn::before { content:""; width:16px; height:16px; background-repeat:no-repeat; background-position:center; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2'%3E%3Cpath d='M4 14.9A5 5 0 0 0 8 21h9a4 4 0 0 0 1-7.9A6 6 0 0 0 6.3 9 5 5 0 0 0 4 14.9z'/%3E%3Cpath d='M12 12v6M9 15l3-3 3 3'/%3E%3C/svg%3E"); }
.ns-file:hover .ns-file__btn { background:var(--teal-800); }
.ns-file__name { display:inline-flex; align-items:center; padding:11px 16px; border:1px solid var(--line); border-left:0; border-radius:0 10px 10px 0; font-size:14px; color:var(--muted); background:#fff; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ns-file.has-file .ns-file__name { color:var(--ink); }

/* Upload w modalu i formularzach — użyj tego samego wyglądu przez klasę */
.ns-modal-form input[type="file"], .ns-form input[type="file"]:not(.ns-file input) { padding:10px; border:1px dashed var(--line); border-radius:10px; background:var(--bg-soft); font-size:14px; cursor:pointer; }

.ns-profile-avatar { display:flex; align-items:center; gap:20px; margin-bottom:24px; padding-bottom:24px; border-bottom:1px solid var(--line); }
.ns-profile-avatar__img img { border-radius:50%; width:80px; height:80px; object-fit:cover; }

/* ==========================================================================
   FORMULARZ LOGOWANIA WordPress (wp_login_form) — ostylowany pod motyw
   ========================================================================== */
#loginform { margin:0; }
#loginform p { margin:0 0 18px; }
#loginform label { display:block; font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--teal-700); margin-bottom:7px; }
#loginform input[type="text"],
#loginform input[type="password"],
#loginform input[type="email"] { width:100%; padding:13px 16px; border:1px solid var(--line); border-radius:12px; font-family:var(--font-body); font-size:15px; background:#fff; box-sizing:border-box; }
#loginform input[type="text"]:focus,
#loginform input[type="password"]:focus,
#loginform input[type="email"]:focus { outline:none; border-color:var(--green-400); box-shadow:0 0 0 3px rgba(87,178,63,.12); }
#loginform .login-remember { display:flex; align-items:center; }
#loginform .login-remember label { display:inline-flex; align-items:center; gap:8px; font-weight:500; color:var(--ink); margin:0; cursor:pointer; }
#loginform .login-remember input { width:18px; height:18px; accent-color:var(--green-500); margin:0; }
#loginform .login-submit { margin-top:6px; }
#loginform #wp-submit,
#loginform input[type="submit"] { width:100%; padding:14px 24px; background:var(--green-500); color:#fff; border:0; border-radius:30px; font-family:var(--font-head); font-weight:700; font-size:16px; cursor:pointer; transition:background .15s; }
#loginform #wp-submit:hover,
#loginform input[type="submit"]:hover { background:var(--green-600); }

/* Wstęp w formularzu odzyskiwania hasła */
.auth-form__intro { color:var(--muted); font-size:15px; line-height:1.6; margin:0 0 22px; }

/* ==========================================================================
   MAPA — legenda, dymki (popupy), tooltips
   ========================================================================== */
.ns-map-legend { background:#fff; padding:12px 14px; border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.15); font-size:12.5px; line-height:1.5; }
.ns-map-legend__title { display:block; font-family:var(--font-head); font-weight:700; font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin-bottom:8px; }
.ns-map-legend__row { display:flex; align-items:center; gap:8px; margin-bottom:4px; color:var(--ink); }
.ns-map-legend__dot { width:12px; height:12px; border-radius:50%; flex:none; }

.mappoint-card { min-width:180px; max-width:240px; }
.mappoint-card__type { display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; margin-bottom:5px; }
.mappoint-card__dot { width:8px; height:8px; border-radius:50%; display:inline-block; }
.mappoint-card__title { font-family:var(--font-head); font-size:15px; font-weight:700; margin:0 0 5px; color:var(--ink); }
.mappoint-card__loc { display:flex; align-items:center; gap:5px; font-size:12.5px; color:var(--muted); margin:0 0 6px; }
.mappoint-card__desc { font-size:13px; color:var(--muted); margin:0 0 8px; line-height:1.45; }
.mappoint-card__link { font-family:var(--font-head); font-weight:600; font-size:13px; color:var(--green-600); }

.mapfull__legend-title { font-family:var(--font-head); font-weight:700; font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin-bottom:8px; }
.mapfull__legend-dot { display:inline-block; width:12px; height:12px; border-radius:50%; margin-right:8px; vertical-align:middle; }
.mapfull__legend-sep { height:1px; background:var(--line); margin:8px 0; }

/* Leaflet popup — dopasowanie do stylu motywu */
.leaflet-popup-content-wrapper { border-radius:12px; box-shadow:0 8px 30px rgba(0,0,0,.2); }
.leaflet-popup-content { margin:14px 16px; }
.leaflet-tooltip { font-family:var(--font-head); font-weight:600; font-size:12px; border-radius:6px; }

/* ==========================================================================
   GMINY — archiwum, karty, pojedyncza strona; PROSE; LGD
   ========================================================================== */
.gmina-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:26px; padding-bottom:40px; }
.gmina-card { display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; text-decoration:none; box-shadow:var(--shadow-sm); transition:transform .2s, box-shadow .2s; }
.gmina-card:hover { transform:translateY(-4px); box-shadow:var(--shadow); }
.gmina-card__media { display:block; aspect-ratio:16/10; overflow:hidden; background:var(--bg-soft); }
.gmina-card__media img { width:100%; height:100%; object-fit:cover; display:block; }
.gmina-card__body { display:flex; flex-direction:column; gap:8px; padding:20px; }
.gmina-card__title { font-family:var(--font-head); font-weight:700; font-size:20px; color:var(--teal-700); }
.gmina-card__desc { font-size:14px; color:var(--muted); line-height:1.5; }
.gmina-card__link { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--green-600); margin-top:4px; }
.gmina-card__link svg { width:16px; height:16px; flex:none; }

.gmina-single { width:100%; }
.gmina-single__media img { width:100%; height:auto; display:block; }
.gmina-related { margin:44px auto 0; }
.gmina-related__head { margin-bottom:20px; }

/* Prosta typografia treści (prose) — wspólna dla stron opisowych */
.prose { max-width:none; margin:0; font-size:17px; line-height:1.85; color:var(--ink); }
.prose p { margin:0 0 22px; }
.prose h2 { font-family:var(--font-head); font-size:27px; margin:36px 0 16px; color:var(--teal-700); }
.prose h3 { font-family:var(--font-head); font-size:21px; margin:28px 0 12px; color:var(--teal-700); }
.prose ul, .prose ol { margin:0 0 22px 24px; }
.prose li { margin-bottom:8px; }
.prose a { color:var(--river-blue); text-decoration:underline; }
.prose img { max-width:100%; height:auto; border-radius:var(--radius); margin:20px 0; }
.prose blockquote { border-left:4px solid var(--green-500); padding:8px 0 8px 24px; margin:24px 0; color:var(--muted); font-style:italic; }
.prose table { width:100%; border-collapse:collapse; margin:0 0 24px; font-size:15px; }
.prose th, .prose td { border:1px solid var(--line); padding:10px 12px; text-align:left; vertical-align:top; }
.prose th { background:var(--bg-soft); font-family:var(--font-head); }

.lgd-links { display:flex; gap:14px; flex-wrap:wrap; justify-content:center; margin:40px 0 10px; }

@media (max-width:640px) {
	.gmina-grid { grid-template-columns:1fr; }
	.prose { font-size:16px; }
}

/* ==========================================================================
   KOMUNIKATY (gmin / LGD)
   ========================================================================== */
.komunikaty-list { display:flex; flex-direction:column; gap:16px; max-width:none; margin:0 auto 40px; }
.komunikat-card { display:flex; gap:20px; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:20px 22px; box-shadow:var(--shadow-sm); transition:box-shadow .2s; }
.komunikat-card:hover { box-shadow:var(--shadow); }
.komunikat-card__date { flex:none; width:64px; height:64px; border-radius:12px; background:var(--teal-700); color:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.komunikat-card__day { font-family:var(--font-head); font-weight:700; font-size:24px; line-height:1; }
.komunikat-card__mon { font-size:12px; text-transform:uppercase; letter-spacing:.5px; margin-top:2px; }
.komunikat-card__tag { display:inline-block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--green-600); background:#eaf6e6; padding:3px 10px; border-radius:20px; margin-bottom:8px; }
.komunikat-card__title { font-family:var(--font-head); font-size:19px; margin:0 0 6px; }
.komunikat-card__title a { color:var(--ink); }
.komunikat-card__title a:hover { color:var(--green-500); }
.komunikat-card__excerpt { font-size:14.5px; color:var(--muted); line-height:1.55; margin:0 0 10px; }
.komunikat-card__link { font-family:var(--font-head); font-weight:600; font-size:14px; color:var(--green-600); }

@media (max-width:640px) {
	.komunikat-card { flex-direction:column; gap:12px; }
	.komunikat-card__date { width:56px; height:56px; }
}


/* ==========================================================================
   GMINA — pełna szerokość, bez sidebara (v1.5.4)
   ========================================================================== */
.gmina-hero { position:relative; background-size:cover; background-position:center; padding:32px 0 70px; margin-bottom:0; color:#fff; }
.gmina-hero .breadcrumbs--light { color:#fff; }
.gmina-hero .breadcrumbs--light a { color:#fff; font-weight:600; }
.gmina-hero .breadcrumbs--light a:hover { color:#eaf6e6; text-decoration:underline; }
.gmina-hero .breadcrumbs--light span { color:rgba(255,255,255,.7); }
.gmina-hero__inner { max-width:860px; margin-top:44px; }
.gmina-hero__herb { width:84px; height:84px; object-fit:contain; background:#fff; border-radius:12px; padding:8px; margin-bottom:16px; box-shadow:var(--shadow); }
.gmina-hero__title { font-family:var(--font-head); font-size:clamp(34px,5vw,56px); font-weight:800; margin:0 0 14px; color:#fff; text-shadow:0 2px 14px rgba(0,0,0,.4); }
.gmina-hero__lead { font-size:19px; line-height:1.6; max-width:720px; color:#fff; text-shadow:0 1px 10px rgba(0,0,0,.35); }

/* Pasek kluczowych informacji — pełna szerokość, poziomy */
.gmina-factbar { background:var(--teal-700); color:#fff; }
.gmina-factbar__grid { display:flex; flex-wrap:wrap; gap:0; }
.gmina-factbar__item { flex:1 1 auto; min-width:160px; padding:20px 24px; border-right:1px solid rgba(255,255,255,.15); display:flex; flex-direction:column; gap:3px; }
.gmina-factbar__item:last-child { border-right:0; }
.gmina-factbar__label { font-size:12px; text-transform:uppercase; letter-spacing:.6px; color:rgba(255,255,255,.7); }
.gmina-factbar__value { font-family:var(--font-head); font-size:20px; font-weight:700; }

.gmina-intro { max-width:none; margin:44px auto 10px; font-size:18px; }

/* Sekcje naprzemienne — pełna szerokość */
.gmina-section { padding:36px 0; }
.gmina-section:nth-child(even) { background:var(--bg-soft); }
.gmina-section__inner { display:grid; grid-template-columns:1.05fr 1fr; gap:56px; align-items:center; }
.gmina-section--flip .gmina-section__media { order:2; }
.gmina-section__media { border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); aspect-ratio:16/10; max-height:440px; }
.gmina-section__media img { width:100%; height:100%; object-fit:cover; display:block; }
.gmina-section__title { font-family:var(--font-head); font-size:30px; color:var(--teal-700); margin:0 0 16px; }
.gmina-section__text .prose { font-size:16.5px; max-width:none; }

/* Wspólny tytuł bloków */
.gmina-block-title { font-family:var(--font-head); font-size:26px; color:var(--teal-700); margin:0 0 22px; text-align:center; }

/* Galeria — pełna szerokość */
.gmina-gallery { padding:48px 0; }
.gmina-gallery__grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:16px; }
.gmina-gallery__item { display:block; aspect-ratio:4/3; overflow:hidden; border-radius:var(--radius); box-shadow:var(--shadow-sm); }
.gmina-gallery__item img { width:100%; height:100%; object-fit:cover; transition:transform .3s; }
.gmina-gallery__item:not(.gmina-gallery__item--ph):hover img { transform:scale(1.06); }
.gmina-gallery__item--ph { opacity:.8; }
.gmina-gallery__hint { text-align:center; color:var(--muted); font-size:13px; margin-top:16px; font-style:italic; }

/* Pas kontakt + odnośniki */
.gmina-infobar { background:var(--bg-soft); border-top:1px solid var(--line); padding:48px 0; }
.gmina-infobar__grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:28px; max-width:none; }
.gmina-infobar__col { background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); padding:28px 30px; box-shadow:var(--shadow-sm); }
.gmina-infobar__col .gmina-block-title { text-align:left; margin:0 0 18px; font-size:20px; padding-bottom:12px; border-bottom:2px solid var(--line); }
.gmina-infobar__col p { font-size:15px; line-height:1.7; margin:0 0 10px; color:var(--ink); }
.gmina-infobar__col p:last-child { margin-bottom:0; }
.gmina-infobar__col a { color:var(--river-blue); }
.gmina-infobar__col .btn { margin-top:6px; }
.gmina-infobar__links { list-style:none; margin:0; padding:0; }
.gmina-infobar__links li { padding:0; border-bottom:1px solid var(--line); }
.gmina-infobar__links li:last-child { border-bottom:0; }
.gmina-infobar__links a { display:block; padding:11px 0 11px 24px; position:relative; font-size:15px; transition:padding .15s; }
.gmina-infobar__links a::before { content:"→"; position:absolute; left:0; color:var(--green-500); font-weight:700; }
.gmina-infobar__links a:hover { padding-left:30px; color:var(--teal-700); }
.btn--sm { padding:8px 16px; font-size:14px; }

.gmina-related { margin:48px auto 0; }
.gmina-related__head { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }

@media (max-width:820px) {
	.gmina-section__inner { grid-template-columns:1fr; gap:20px; }
	.gmina-section--flip .gmina-section__media { order:0; }
	.gmina-factbar__item { min-width:50%; border-right:0; border-bottom:1px solid rgba(255,255,255,.15); }
}

/* ==========================================================================
   UNIWERSALNE SEKCJE CPT — czytelny układ artykułu (v1.6.2)
   ========================================================================== */
.entry-hero__type { display:inline-block; background:var(--green-500); color:#fff; font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.7px; padding:5px 14px; border-radius:100px; margin-bottom:14px; }

/* Wspólny kontener treści — pełna szerokość portalu */
.entry-wrap { width:100%; margin:0 auto; padding:44px 0 8px; }
.entry-lead { font-size:20px; line-height:1.6; color:var(--muted); margin:0 0 28px; padding:0 0 24px; border-bottom:1px solid var(--line); }
.entry-body { margin:0 0 8px; }

.entry-section { margin:40px 0; }
.entry-section__title { font-family:var(--font-head); font-size:28px; color:var(--teal-700); margin:0 0 16px; }
.entry-section .prose { font-size:17px; max-width:none; }

/* Sekcja ZE zdjęciem — obraz obok tekstu, na całą szerokość, naprzemiennie */
.entry-section--has-img { display:grid; grid-template-columns:1fr 1fr; gap:44px; align-items:center; }
.entry-section--has-img:nth-of-type(even) .entry-section__media { order:2; }
.entry-section--has-img .entry-section__media { margin:0; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); aspect-ratio:16/10; }
.entry-section--has-img .entry-section__media img { width:100%; height:100%; object-fit:cover; display:block; }

/* Galeria w artykule */
.entry-gallery { margin:40px 0 8px; }
.entry-gallery__grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(180px, 1fr)); gap:12px; }
.entry-gallery__item { display:block; aspect-ratio:4/3; overflow:hidden; border-radius:var(--radius); box-shadow:var(--shadow-sm); }
.entry-gallery__item img { width:100%; height:100%; object-fit:cover; transition:transform .3s; }
.entry-gallery__item:hover img { transform:scale(1.05); }

/* Sekcje ACF wewnątrz strony atrakcji */
.atr-section { margin:28px 0; }
.atr-section__title { font-family:var(--font-head); font-size:22px; color:var(--teal-700); margin:0 0 12px; }
.atr-section__img { width:100%; height:auto; border-radius:var(--radius); margin:0 0 14px; }

/* ==========================================================================
   MAPA GMINY z filtrami (v1.6.3)
   ========================================================================== */
.gmina-map-section { padding:48px 0; }
.gmina-map-section__sub { text-align:center; color:var(--muted); font-size:15px; margin:0 auto 24px; max-width:640px; }
.gmina-map-filters { display:flex; flex-wrap:wrap; gap:10px 20px; justify-content:center; margin-bottom:20px; }
.gmina-map-filter { display:inline-flex; align-items:center; gap:8px; font-size:14.5px; font-weight:600; color:var(--ink); cursor:pointer; padding:6px 14px; border:1px solid var(--line); border-radius:100px; background:var(--white); transition:background .15s; }
.gmina-map-filter:hover { background:var(--bg-soft); }
.gmina-map-filter input { accent-color:var(--teal-700); width:16px; height:16px; cursor:pointer; }
.gmina-map-filter__dot { width:12px; height:12px; border-radius:50%; flex:none; }
.gmina-map { height:520px; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); }
.gmina-map-empty { display:none; text-align:center; color:var(--muted); font-size:14px; margin-top:16px; font-style:italic; }
@media (max-width:820px) { .gmina-map { height:400px; } }
