/* Global overrides loaded after app.css */

.v2-field-invalid input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.v2-field-invalid textarea,
.v2-field-invalid select,
.v2-field-invalid .custom-select__trigger{
	border-color:#FF3B30 !important;
	box-shadow:inset 0 0 0 1px #FF3B30;
}

.v2-field-invalid.checkbox-wrap label::after,
.v2-field-invalid.newsletter-form__consent label::after{
	border-color:#FF3B30;
	box-shadow:inset 0 0 0 1px #FF3B30;
}

.v2-field-invalid.star-rating-wrap #star-rating{
	box-shadow:0 2px 0 #FF3B30;
}

.v2-field-invalid.star-rating-wrap > label{
	top:auto !important;
	font-size:16px;
	color:inherit;
}

.v2-field-invalid.form-wrap > label{
	top:0 !important;
	font-size:12px;
	color:#575757;
}

.v2-field-invalid.form-wrap input:not([type=date]):not([type=checkbox]):not([type=radio]):not([type=hidden]),
.v2-field-invalid.form-wrap textarea{
	padding-top:20px;
}

.v2-validation-error{
	display:block;
	margin-top:5px;
	color:#FF3B30;
	font-size:10px;
	line-height:1.35;
}

.newsletter-form__consent .v2-validation-error,
.checkbox-wrap .v2-validation-error{
	margin-top:12px;
}

/* Przycisk "Wróć na górę" — pojawia się po przewinięciu strony (>500px).
   Pozycja "bottom" jest ustawiana w custom.js tak, aby nie nachodził na
   pasek .fixed-bottom (na mobile pasek jest wyższy). */
.v2-back-to-top{
	position:fixed;
	right:19px;
	bottom:24px;
	z-index:95;
	display:flex;
	align-items:center;
	justify-content:center;
	width:46px;
	height:46px;
	margin:0;
	padding:0;
	border:1px solid rgba(150,118,62,.25);
	border-radius:999px;
	background:rgba(255,255,255,.92);
	-webkit-backdrop-filter:blur(4px);
	backdrop-filter:blur(4px);
	box-shadow:0 6px 20px rgba(0,0,0,.12);
	color:#96763E;
	cursor:pointer;
	opacity:0;
	visibility:hidden;
	transform:translateY(16px);
	transition:opacity .35s ease, transform .35s ease, background-color .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.v2-back-to-top.is-visible{
	opacity:1;
	visibility:visible;
	transform:translateY(0);
}
.v2-back-to-top:hover{
	background:#96763E;
	border-color:#96763E;
	color:#fff;
	box-shadow:0 10px 26px rgba(150,118,62,.35);
}
.v2-back-to-top:active{
	transform:translateY(0) scale(.94);
}
.v2-back-to-top svg{
	width:18px;
	height:18px;
	display:block;
	transition:transform .25s ease;
}
.v2-back-to-top:hover svg{
	transform:translateY(-3px);
}
@media (max-width:1200px){
	.v2-back-to-top{
		right:11px;
	}
}
@media (max-width:768px){
	.v2-back-to-top{
		right:13px;
		width:42px;
		height:42px;
	}
	.v2-back-to-top svg{
		width:16px;
		height:16px;
	}
}
/* --- Sortowanie listingu obiektow (nav-list) --- */
/* .nav-list__actions{
	display:flex;
	align-items:stretch;
	gap:16px;
	margin-left:auto;
}
.nav-list__actions > .btn{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	white-space:nowrap;
} */
/* .list-sorter{
	display:flex;
	align-items:center;
	gap:10px;
	min-width:290px;
}
.list-sorter__label{
	font-size:14px;
	color:#575757;
	white-space:nowrap;
}
.list-sorter .custom-select__trigger{
	width:auto;
	flex:1 1 auto;
	height:auto;
	min-height:100%;
	padding:12px 44px 12px 16px;
	background:#FFF;
	font-size:14px;
	line-height:1.4;
}
.list-sorter .custom-select__trigger::after{
	top:50%;
	margin-top:-10px;
	transform:none;
}
.list-sorter.custom-select.open .custom-select__trigger::after{
	transform:rotate(180deg);
}
.list-sorter.custom-select .inner{
	left:auto;
	right:0;
	padding:12px 12px;
	min-width:290px;
}
.list-sorter .list-sorter__options{
	max-height:none;
	overflow:visible;
	padding:0;
}
.list-sorter .list-sorter__options li{
	margin:0 0 2px 0;
	padding:0;
	cursor:default;
}
.list-sorter .list-sorter__options li:last-child{
	margin-bottom:0;
}
.list-sorter .list-sorter__options li a{
	display:block;
	padding:9px 12px;
	border-radius:5px;
	color:#000;
	font-size:14px;
	line-height:1.35;
	text-decoration:none;
	white-space:nowrap;
	transition:background-color .2s ease, color .2s ease;
}
.list-sorter .list-sorter__options li a:hover{
	background:#F1ECE4;
	color:#96763E;
}
.list-sorter .list-sorter__options li.selected a{
	background:#96763E;
	color:#FFF;
}
@media (max-width:1200px){
	.nav-list__actions{
		width:100%;
		margin-left:0;
		justify-content:center;
		flex-wrap:wrap;
	}
	.list-sorter{
		min-width:0;
		flex:1 1 260px;
		max-width:380px;
	}
	.list-sorter.custom-select .inner{
		left:0;
		right:auto;
		min-width:100%;
	}
}
@media (max-width:640px){
	.nav-list__actions{
		flex-direction:column;
		align-items:stretch;
		gap:12px;
	}
	.list-sorter{
		flex:0 0 auto;
		max-width:none;
	}
	.list-sorter .custom-select__trigger{
		flex:1 1 auto;
		min-height:48px;
	}
	.list-sorter .list-sorter__options li a{
		white-space:normal;
	}
} */
.nav-list{
	position:relative;
	z-index:20;
}
/* Rozwinięte listy wyszukiwarki (miasto, typ obiektu, udogodnienia) wychodzą
   poza sekcję hero i muszą być nad paskiem z licznikiem/paginacją (.nav-list,
   z-index:20). Formularz miał tylko z-index:10, więc lista chowała się pod
   paginacją. Zostajemy pod headerem (100) i dolnym paskiem (90). */
.hero-search__form{
	z-index:30;
}
.list-sorter.custom-select .inner{
	z-index:60;
}
.nav-list:has(.list-sorter.custom-select.open){
	z-index:120;
}
@media (max-width:1200px){
	.list-sorter.custom-select .inner{
		max-height:60vh;
		overflow-y:auto;
	}
}

/* Nota "* Pola oznaczone gwiazdką są wymagane." pod polami formularzy V2.
   Ma być czytelna, ale drugoplanowa wobec etykiet i przycisku. */
.form-required-note{
	font-size:13px;
	line-height:1.4;
	color:#575757;
	margin-bottom:10px;
}
.form-styled .form-required-note{
	margin-bottom:15px;
}

/* Skrót do formularza zapytania na pozycji panelu ulubionych. Panel jest wąski,
   więc zamiast przycisku jest drobny link ze strzałką, pod nazwą miasta. */
.group-question .object .object-inquiry-link{
	display:inline-flex;
	align-items:center;
	gap:4px;
	margin-top:6px;
	font-size:13px;
	line-height:1.3;
	color:#96763E;
	text-decoration:none;
}
.group-question .object .object-inquiry-link svg{
	flex:0 0 auto;
	transition:transform 0.2s;
}
.group-question .object .object-inquiry-link:hover{
	text-decoration:underline;
}
.group-question .object .object-inquiry-link:hover svg{
	transform:translateX(3px);
}

/* Opis partnera. Nagłówek z nazwą ma wyzerowany margines dolny, a treść z panelu
   często nie ma akapitów — bez tego odstępu opis stykał się z nazwą. Akapity
   wewnątrz opisu prowadzimy sami, bo globalne `.partners p` daje 49px od góry. */
.partners .item .right .partner-description{
	margin-top:15px;
}
.partners .item .right .partner-description p{
	margin:0 0 15px 0;
}
.partners .item .right .partner-description p:last-child{
	margin-bottom:0;
}

/* Placeholdery linków (podgląd V2) */
/* a[data-placeholder-link="1"]{
	pointer-events:none;
	cursor:default;
	opacity:.55;
	text-decoration:none;
}
a[data-placeholder-link="1"] *{
	pointer-events:none;
} */

/* Pusty stan listingów */
.v2-empty-state{
	grid-column:1/-1;
	padding:24px;
	border:1px solid rgba(150,118,62,.2);
	background:#fbf7ef;
	color:#5a513f;
	text-align:center;
	margin-top: 25px;
}
.recommended-objects__grid .v2-empty-state,
.featured-objects__grid .v2-empty-state,
.partners__list .v2-empty-state,
.object-list .v2-empty-state,
.map-markers-scroll .v2-empty-state{
	width:100%;
}

/* Komunikaty formularzy */
.v2-form-message,
.newsletter-form__message{
	display:flex;
	flex-direction:column;
	gap:6px;
	margin:0 0 20px;
	padding:14px 16px;
	border:1px solid rgba(150,118,62,.24);
	font-size:14px;
	line-height:1.5;
}
.v2-form-message strong,
.newsletter-form__message strong{
	font-size:15px;
}
.v2-form-message--success,
.newsletter-form__message--success{
	background:#eef6ea;
	border-color:#7ea36d;
	color:#355227;
}
.v2-form-message--warning,
.newsletter-form__message--warning{
	background:#fff6e5;
	border-color:#c9a24a;
	color:#6d5316;
}
.v2-form-message--error,
.newsletter-form__message--error{
	background:#fdecec;
	border-color:#FF3B30;
	color:#7b2525;
}
.v2-form-message--info,
.newsletter-form__message--info{
	background:#f5f1e8;
	border-color:#b9a27a;
	color:#5f4f33;
}

/* ==========================================================================
   Style stron, wcześniej wstawiane inline przez @section('headStyles')
   ========================================================================== */

/* --- 404 -------------------------------------------------------------- */
.error-404-page{
	padding:40px 88px;
}
.error-404-page__wrap{
	display:grid;
	grid-template-columns:minmax(260px, 420px) minmax(320px, 1fr);
	align-items:center;
	gap:0;
	overflow:hidden;
	background:#fff;
}
.error-404-page__media{
	display:flex;
	align-items:center;
	justify-content:center;
	padding:42px 24px;
}
.error-404-page__media img{
	display:block;
	width:100%;
	max-width:320px;
	max-height:440px;
	height:auto;
	object-fit:contain;
}
.error-404-page__content{
	display:flex;
	flex-direction:column;
	justify-content:center;
	gap:24px;
	padding:56px 52px;
}
.error-404-page__code{
	display:inline-flex;
	align-self:flex-start;
	padding:7px 14px;
	border:1px solid rgba(161, 124, 64, 0.28);
	background:#f7f1e6;
	color:#8a6731;
	font-size:12px;
	font-weight:700;
	letter-spacing:0.18em;
	text-transform:uppercase;
	border-radius:5px;
}
.error-404-page__title{
	margin:0;
	color:#1b1b1b;
	font-family:'Playfair Display', serif;
	font-size:clamp(38px, 5vw, 58px);
	line-height:0.98;
}
.error-404-page__text{
	margin:0;
	color:#544a3b;
	font-size:17px;
	line-height:1.8;
}
.error-404-page__actions{
	display:flex;
	flex-wrap:wrap;
	gap:16px;
}
.error-404-page__actions .btn{
	min-width:240px;
	justify-content:center;
}
@media (max-width:991px){
	.error-404-page{
		padding-bottom:72px;
	}
	.error-404-page__wrap{
		grid-template-columns:1fr;
	}
	.error-404-page__media{
		padding:34px 24px 16px;
		border-right:0;
		border-bottom:1px solid rgba(161, 124, 64, 0.14);
	}
	.error-404-page__media img{
		max-width:260px;
		max-height:320px;
	}
	.error-404-page__content{
		padding:42px 32px;
	}
}
@media (max-width:575px){
	.error-404-page__content{
		padding:34px 22px;
	}
	.error-404-page__text{
		font-size:15px;
		line-height:1.7;
	}
	.error-404-page__actions .btn{
		width:100%;
		min-width:0;
	}
}

/* --- Blog i aktualności ------------------------------------------------ */
/* Zawężone do .compare-heading (nagłówek listingu bloga). Oryginał na /blog
   brzmiał `.category-list a.active` — globalnie trafiłby też w listę kategorii
   na /blog/post/*, w usługach obiektu i w katalogu firm. */
.compare-heading .category-list a.active{
	background-color:#96763E;
	color:#fff;
}
.compare-heading .v2-blog-intro{
	width:100%;
	max-width:880px;
	margin:0;
	color:#575757;
	line-height:1.7;
}
.compare-heading .category-list{
	margin-top:20px;
}
.article-grid .v2-empty-state{
	margin-bottom:40px;
}
.article-recommended .v2-empty-state{
	margin-bottom:20px;
}
.blog-heading .category-list{
	margin-top:0;
	margin-bottom:18px;
}
.blog-heading h1{
	overflow-wrap:anywhere;
}
.blog-heading .container .right img{
	width:100%;
	height:auto;
}
.blog-content .left img{
	max-width:100%;
	height:auto;
}
.blog-content .left iframe{
	max-width:100%;
}
.blog-content .left .category-list{
	margin-left:0;
}
.blog-content .v2-empty-state{
	margin:20px 0;
}
.blog-v2-sidebar-tags.category-list{
	margin-top:0;
}
.blog-v2-sidebar-tags.category-list a.active{
	background-color:#96763E;
	color:#fff;
}

/* --- Paginacja -------------------------------------------------------- */
.pagination .disabled{
	opacity:.35;
	pointer-events:none;
}

/* --- Kalendarium ------------------------------------------------------ */
.calendar-list__info a.calendar-list__title{
	color:inherit;
	text-decoration:none;
}
.calendar-list__info a.calendar-list__title:hover{
	color: #96763E
}

/* --- Porównywarka: modal wysyłki e-mail -------------------------------- */
.compare-email-modal{
	position:fixed;
	inset:0;
	display:none;
	align-items:center;
	justify-content:center;
	padding:24px;
	background:rgba(27, 27, 27, 0.56);
	z-index:1200;
}
.compare-email-modal.is-visible{
	display:flex;
}
.compare-email-modal__dialog{
	width:min(100%, 560px);
	background:#fff;
	border-radius:24px;
	padding:32px;
	position:relative;
	box-shadow:0 32px 60px rgba(17, 17, 17, 0.18);
}
.compare-email-modal__eyebrow{
	margin-bottom:10px;
	color:#96763e;
	font-size:13px;
	font-weight:700;
	letter-spacing:0.08em;
	text-transform:uppercase;
}
.compare-email-modal__title{
	margin:0 0 10px;
	font-family:"Playfair Display", serif;
	font-size:34px;
	line-height:1.1;
}
.compare-email-modal__lead{
	margin:0 0 24px;
	color:#575757;
	font-size:16px;
	line-height:1.6;
}
.compare-email-modal__close{
	position:absolute;
	top:18px;
	right:18px;
	width:42px;
	height:42px;
	border:0;
	border-radius:50%;
	background:#fcf9f3;
	color:#1b1b1b;
	font-size:28px;
	line-height:1;
	cursor:pointer;
	transition:background 0.2s ease, color 0.2s ease;
}
.compare-email-modal__close:hover,
.compare-email-modal__close:focus{
	background:#96763e;
	color:#fff;
}
.compare-email-modal__form .form-wrap{
	margin-bottom:18px;
}
.compare-email-modal__form{
	width:100%;
	max-width:430px;
	margin:0 auto;
}
.compare-email-modal__form input[type="email"]{
	width:100%;
	min-height:64px;
	padding:0 20px;
	border:1px solid #d7d3ca;
	border-radius:14px;
	font-size:17px;
	transition:border-color 0.2s ease, box-shadow 0.2s ease;
}
.compare-email-modal__form input[type="email"]:focus{
	outline:none;
	border-color:#96763e;
	box-shadow:0 0 0 4px rgba(150, 118, 62, 0.12);
}
.compare-email-modal__actions{
	display:flex;
	gap:12px;
	align-items:center;
	justify-content:flex-end;
}
.compare-email-modal__actions .btn{
	min-width:190px;
	text-align:center;
}
@media (max-width:767px){
	.compare-email-modal{
		padding:16px;
	}
	.compare-email-modal__dialog{
		padding:24px 20px;
		border-radius:18px;
	}
	.compare-email-modal__title{
		font-size:28px;
		padding-right:44px;
	}
	.compare-email-modal__actions{
		flex-direction:column-reverse;
	}
	.compare-email-modal__actions .btn{
		width:100%;
		min-width:0;
	}
}

/* --- O nas ------------------------------------------------------------ */
.about-us-page{
	padding:0 0 96px;
}
.about-us-page__section + .about-us-page__section{
	margin-top:56px;
}
.about-us-page__section-header{
	display:flex;
	align-items:end;
	justify-content:space-between;
	gap:20px;
	margin-bottom:24px;
}
.about-us-page__section-header h2{
	margin:0;
	color:#1b1b1b;
}
.about-us-page__grid{
	display:grid;
	grid-template-columns:repeat(2, minmax(0, 1fr));
	gap:24px;
}
@media (max-width:991px){
	.about-us-page{
		padding-bottom:72px;
	}
	.about-us-page__section + .about-us-page__section{
		margin-top:40px;
	}
	.about-us-page__section-header{
		align-items:start;
		flex-direction:column;
	}
	.about-us-page__grid{
		grid-template-columns:1fr;
	}
}

/* --- Zapytaj doradcę --------------------------------------------------- */
.ask-adviser-consent,
.ask-adviser-submit{
	width:100%;
}
.ask-adviser-consent .toggle-btn{
	display:inline-flex;
	align-items:center;
	gap:4px;
	margin-left:6px;
	white-space:nowrap;
}
.ask-adviser-consent .toggle-btn span:nth-child(2){
	display:none;
}
.ask-adviser-consent .toggle-btn.open span:nth-child(1){
	display:none;
}
.ask-adviser-consent .toggle-btn.open span:nth-child(2){
	display:inline;
}
.is-hidden{
	display:none !important;
}

/* --- Lista miast ------------------------------------------------------- */
.city-province-list{
	padding:40px 0 72px;
}
.city-province-list .province-heading{
	margin-bottom:38px;
}
.city-province-list .province-heading a{
	color:inherit;
	text-decoration:none;
}
.city-province-list .province-heading a:hover{
	color:#96763e;
}
.city-province-list .city-links{
	margin:0 0 36px;
	padding:0;
	list-style:none;
	columns:3;
	column-gap:36px;
}
.city-province-list .city-links li{
	margin:0 0 14px;
	break-inside:avoid;
}
.city-province-list .city-links a{
	display:inline-block;
}
@media (max-width:991px){
	.city-province-list .city-links{
		columns:2;
		column-gap:24px;
	}
}
@media (max-width:575px){
	.city-province-list .city-links{
		columns:1;
	}
}

/* --- Strony prawne (cookies) ------------------------------------------- */
.legal-page{
	padding:24px 0 96px;
}
.legal-page__content{
	max-width:960px;
	margin:0 auto;
	color:#2d2a26;
	font-size:18px;
	line-height:1.8;
}
.legal-page__content > :first-child{
	margin-top:0;
}
.legal-page__content > :last-child{
	margin-bottom:0;
}
.legal-page__content h2,
.legal-page__content h3,
.legal-page__content h4{
	margin:36px 0 16px;
	color:#1b1b1b;
	line-height:1.3;
}
.legal-page__content p,
.legal-page__content ul,
.legal-page__content ol{
	margin:0 0 18px;
}
.legal-page__content a{
	color:#9a7427;
	text-decoration:underline;
	text-underline-offset:3px;
}
.legal-page__content strong,
.legal-page__content b{
	color:#1b1b1b;
}
@media (max-width:991px){
	.legal-page{
		padding:20px 0 72px;
	}
	.legal-page__content{
		font-size:16px;
		line-height:1.7;
	}
}

/* --- Mapa strony / mapa obiektów --------------------------------------- */
/* Obie strony używały gołego `.mapa-serwisu ul` z RÓŻNYM margin-bottom
   (34px vs 0), więc w jednym pliku CSS jedna wersja zjadłaby drugą.
   Stąd modyfikatory --strony / --obiekty w blade. */
.mapa-serwisu--strony ul{
	margin-bottom:34px;
}
.mapa-serwisu--strony li span{
	color:#6f675c;
}
.mapa-serwisu--obiekty ul{
	margin-bottom:0;
}

/* --- Menu mobilne: "Szukaj na mapie" ----------------------------------- */
/* app.css chowa poniżej 1200px drugą z kolei pozycję menu regułą
   `.header__nav > ul > li:nth-child(2){display:none}` (źródło:
   scss/components/_header.scss, `&:nth-child(2)` w breakpoincie tablet).
   Selektor jest pozycyjny, więc trafia w to, co akurat stoi na drugim
   miejscu — a jest to "Szukaj na mapie", które ma być w menu widoczne. */
@media (max-width:1200px){
	.header__nav > ul > li:nth-child(2){
		display:list-item;
	}
}

/* Panele boczne (ulubione, grupowe zapytanie): nazwa obiektu i miasto stoją
   w osobnych wierszach. Domyślnie oba są linkami, a link jest elementem
   liniowym, więc bez tego miasto doklejało się do nazwy. */
.group-question .object .text .title,
.group-question .object .text .location{
	display:block;
}

/* Miasto zostaje podpisem pod nazwą — tak jak na kafelku obiektu wygląda
   jak zwykły tekst, a podkreśla się dopiero pod kursorem. */
.group-question .object .text a.location{
	color:#000;
	text-decoration:none;
}

.group-question .object .text a.location:hover{
	text-decoration:underline;
}

/* Miasto na kafelku obiektu jest linkiem — ma wyglądać jak podpis pod nazwą,
   a nie jak domyślny link przeglądarki. Podkreślenie i kolor akcentu dopiero
   pod kursorem. */
.object-card .object-card__info span a,
.object-card .object-card__info span a:link,
.object-card .object-card__info span a:visited,
.object-card .object-card__info > a,
.object-card .object-card__info > a:link,
.object-card .object-card__info > a:visited{
	color:#575757;
	text-decoration:none;
}

.object-card .object-card__info span a:hover,
.object-card .object-card__info > a:hover{
	color:#96763E;
	text-decoration:underline;
}

/* Partnerzy: w app.css nie ma żadnego ograniczenia rozmiaru logotypu, a w panelu
   wgrywane są oryginały nawet po 1400px — takie logo wychodziło poza swoją kolumnę
   i nachodziło na opis (stara wersja miała na to .logotype-c img{max-width:100%}).
   min-width:0 jest konieczne, bo flexowe min-width:auto pozwalało kolumnie rozepchać
   się do szerokości zdjęcia mimo width:360px. */
.partners .item .left{
	min-width:0;
}

.partners .item .left img{
	max-width:100%;
	max-height:240px;
	height:auto;
	object-fit:contain;
}

/* Opis partnera to treść z panelu — zdjęcie wklejone w edytorze też nie może
   rozpychać kolumny. */
.partners .item .right img{
	max-width:100%;
	height:auto;
}

/* Treść boksu "zadaj pytanie" jest z panelu, a summernote wstawia tam &nbsp;
   (np. między mailem a kolejnym słowem) — taki nierozrywalny ciąg bywa szerszy
   niż kolumna tekstu i wychodził poza kartę na telefonach. */
.box-information-right .text{
	overflow-wrap:anywhere;
	word-break:break-word;
}

/* Zgoda przy newsletterze ma teraz ten sam markup co zgody pod formularzami
   (klasa .checkbox-wrap, po której JS znajduje rozwijaną treść) — reguły obu
   klas są identyczne poza wielkością liter, więc pilnujemy rozmiaru stopki. */
.newsletter-form__consent.checkbox-wrap label{
	font-size:12px;
}

/* Boksy obiektów na wpisie bloga i w artykule (znacznik [obiekty] w treści oraz
   "Polecane obiekty" na dole): miasto od zawsze jest linkiem do listingu, ale w
   szarym kolorze podpisu nikt tego nie widzi obok podkreślonych linków w tekście.
   Tutaj dostaje wygląd linku; na listingach i home kafelek zostaje wg makiety. */
/* .recommended-objects--article .object-card .object-card__info span a,
.recommended-objects--article .object-card .object-card__info span a:link,
.recommended-objects--article .object-card .object-card__info span a:visited{
	color:#96763E;
	text-decoration:underline;
} */

/* Baner z panelu (.ads) ma własny margines 40px, a sekcja pod nim dokłada
   jeszcze swój górny padding (35–100px, zależnie od szablonu) — razem robiła się
   pusta przerwa na ~140px między banerem a nagłówkiem. Baner jest w DOM tylko
   wtedy, gdy jest dodany w panelu, więc zamiast warunku w blade wystarczy
   selektor sąsiedztwa: bez banera reguła się nie łapie i odstępy zostają jak
   były. Ruszamy sam padding — sekcje odsunięte marginesem (np. .heading-list na
   listingu) i tak zbijają swój margines z marginesem banera. */
.ads + section,
.ads + div{
	padding-top:0;
}

/* Kafelki "Zwiększ szanse na odpowiedź" w rozszerzonym formularzu zapytania:
   zdjęcie i nazwa prowadzą teraz na kartę obiektu. Link nie ma zmieniać wyglądu
   kafelka — bez tego globalne `a { color:#96763E }` zrobiłoby nazwę na stałe
   brązową; brązowieje dopiero pod kursorem, tak jak w kafelkach na listingu. */
.object-form-list .object-form-item .img a{
	display:block;
}

.object-form-list .object-form-item .name a{
	color:inherit;
	text-decoration:none;
}

.object-form-list .object-form-item .name a:hover,
.object-form-list .object-form-item .name a:focus-visible{
	color:#96763E;
}

/* Pola wyszukiwarki z pływającą etykietą (.search-label-anim) mają tę samą treść
   dwa razy: w <label><span> i w placeholderze inputa — dlatego app.css chowa
   placeholder. Reguły sekcyjne przywracają jednak `opacity:1`, a
   `.search-map .search-form-map__field input::placeholder` (dwie klasy) bije
   `.search-label-anim input::placeholder` (jedna klasa) niezależnie od
   kolejności, więc w wyszukiwarce na mapie oba napisy nachodziły na siebie.
   Dokładamy klasę, żeby chowanie placeholdera wygrywało w każdym wariancie pola. */
.search-label-anim.search-label-anim input::placeholder{
	opacity:0;
}

/* Panel grupowego zapytania z pustym koszykiem pokazywał klikalne "Sprawdź
   dostępność i cenę", które prowadziło na pełną podstronę /grupowe-zapytanie
   z samym komunikatem "Brak wybranych obiektów". app.css chowa w tym stanie
   wyłącznie blok .empty (.group-question:has(.object) .empty), przycisków nie
   dotyka. Warunek musi być w CSS, a nie w blade, bo panel dopina obiekty
   AJAX-em bez przeładowania strony.

   Celowo :not(:has()) zamiast chowania domyślnie i pokazywania przy .object:
   w przeglądarce bez wsparcia dla :has() cały selektor jest nieprawidłowy i
   reguła odpada, więc przycisk zostaje widoczny (stan sprzed zmiany). Wariant
   odwrotny ukryłby go tam na stałe i uniemożliwił wysłanie zapytania. */
.group-question:not(:has(.object)) .btn--group-availability{
	display:none;
}

/* H1 karty obiektu to "Nazwa | Miasto". Klient chciał wyróżnić (rozjaśnić)
   człon z miastem, stąd osobny <span class="title-city"> w
   frontend/object/v2/heading.blade.php. Kolor bierzemy ten sam, którym
   .object-card-heading opisuje już kategorię i adres, żeby nagłówek nie
   wprowadzał kolejnego odcienia szarości. */
.object-card-heading .title .title-city{
	color:#575757;
}
