/* ============================================================
   Layout — container, header, footer
   ============================================================ */

.container {
	width: min(100% - 2 * var(--pad), var(--container));
	margin-inline: auto;
}
.container--wide { --container: 1680px; }

main { display: block; }

/* Generic section padding */
.section { padding-block: var(--section-y); }

/* ============================== TOP BAR ============================== */
.topbar {
	background: var(--rose);
	color: var(--white);
	font-size: var(--fs-sm);
	line-height: 1.5;
}
.topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: 8px;
}
.topbar__contacts { display: flex; align-items: center; gap: 24px; min-width: 0; }
.topbar__phone { text-decoration: underline; text-underline-position: from-font; white-space: nowrap; }
.topbar__phone:hover { opacity: 0.85; }
.topbar .socials { gap: 8px; }
.topbar .socials a:hover { opacity: 0.8; }

/* ============================== HEADER ============================== */
.site-header { position: relative; z-index: 50; }
.header-main {
	background: var(--white);
	border-bottom: 1px solid var(--line);
}
.header-main__inner {
	display: flex;
	align-items: center;
	gap: 16px;
	min-height: var(--header-h);
	padding-block: 16px;
}

.site-logo { display: inline-flex; }
.site-logo__img { height: 64px; width: auto; }
.header-main .site-logo-wrap { flex: 1 1 0; min-width: 0; display: flex; }

.primary-nav { flex: 0 0 auto; }
.primary-nav ul {
	display: flex;
	align-items: center;
	gap: 32px;
}
.primary-nav a {
	font-family: var(--font-body);
	font-size: var(--fs-nav);
	color: var(--ink);
	white-space: nowrap;
	padding-block: 6px;
	position: relative;
}
.primary-nav a::after {
	content: "";
	position: absolute; left: 0; bottom: 0;
	width: 0; height: 1.5px; background: var(--rose);
	transition: width 0.25s var(--ease);
}
.primary-nav a:hover::after,
.primary-nav .current-menu-item > a::after,
.primary-nav .current_page_item > a::after { width: 100%; }

.header-cta { flex: 1 1 0; display: flex; justify-content: flex-end; }

/* Booking CTA inside the nav panel is a mobile-only element */
.primary-nav .mobile-cta { display: none; }

/* Mobile nav toggle */
.nav-toggle {
	display: none;
	width: 48px; height: 48px;
	align-items: center; justify-content: center;
	color: var(--rose);
}
.nav-toggle .icon { width: 28px; height: 28px; }

/* ============================== FOOTER ============================== */
.site-footer { background: var(--rose); color: var(--white); }

/* Newsletter strip (white) */
.newsletter { background: var(--white); color: var(--ink); border-top: 1px solid var(--line); }
.newsletter__inner {
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: 32px;
	padding-block: 40px;
	padding-inline: 16px;
}
.newsletter__text { flex: 1 1 0; display: flex; flex-direction: column; gap: 8px; }
.newsletter__title {
	font-family: var(--font-display);
	font-weight: 700;
	font-size: var(--fs-news);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--rose);
}
.newsletter__text p { max-width: none; }
.newsletter__form { flex: 1 1 0; display: flex; flex-direction: column; gap: 16px; }

/* Footer main (rose) */
.footer-main { padding-top: 80px; padding-bottom: 40px; }
.footer-grid {
	display: flex;
	gap: 32px;
	align-items: flex-start;
}
.footer-col { flex: 1 1 0; min-width: 0; }
.footer-brand { display: flex; flex-direction: column; gap: 32px; }
.footer-brand .site-logo__img { height: 72px; }
.footer-info { display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-sm); }
.footer-info a { text-decoration: underline; text-underline-position: from-font; }
.footer-info a:hover { opacity: 0.85; }
.footer-hours { line-height: 1.7; margin-top: 4px; }

.footer-menu ul { display: flex; flex-direction: column; gap: 8px; }
.footer-menu a { font-size: var(--fs-nav); }
.footer-menu a:hover { opacity: 0.8; }

.footer-cta { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
.footer-socials { display: flex; align-items: center; gap: 8px; }
.footer-socials__label { font-weight: 600; font-size: var(--fs-nav); }

.footer-bottom {
	display: flex;
	align-items: center;
	gap: 24px;
	margin-top: 80px;
}
.footer-bottom .copyright { font-size: var(--fs-xs); white-space: nowrap; }
.footer-partners { flex: 1 1 0; display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 24px 32px; }
.footer-partners img { height: 24px; width: auto; opacity: 0.95; }
.footer-partners .partner--weyergans img { height: 44px; }
.footer-partners .partner--long-time-liner img { height: 17px; }
.footer-partners .partner--schrammek img { height: 44px; }

/* ============================== RESPONSIVE ============================== */
@media (max-width: 1100px) {
	.primary-nav { gap: 20px; }
	.primary-nav ul { gap: 22px; }
}
@media (max-width: 1024px) {
	.nav-toggle { display: inline-flex; }
	.header-main .site-logo-wrap { flex: 1 1 auto; }
	.header-cta { display: none; }
	.primary-nav {
		position: absolute; left: 0; right: 0; top: 100%;
		background: var(--white);
		border-bottom: 1px solid var(--line);
		box-shadow: 0 12px 24px rgba(0,0,0,0.08);
		display: none;
		padding: 8px var(--pad) 24px;
	}
	.primary-nav.is-open { display: block; }
	.primary-nav ul { flex-direction: column; align-items: flex-start; gap: 4px; }
	.primary-nav a { display: block; width: 100%; font-size: 1.25rem; padding-block: 12px; }
	.primary-nav .mobile-cta { display: block; margin-top: 12px; }

	.newsletter__inner { flex-direction: column; gap: 24px; }
	.footer-grid { flex-wrap: wrap; }
	.footer-col { flex: 1 1 45%; }
	.footer-brand { flex: 1 1 100%; }
}
@media (max-width: 640px) {
	.topbar__contacts { gap: 12px; flex-wrap: wrap; }
	.topbar .socials { display: none; }
	.footer-col { flex: 1 1 100%; }
	.footer-bottom { flex-direction: column; align-items: flex-start; gap: 24px; margin-top: 48px; }
	.footer-partners { justify-content: flex-start; flex-wrap: wrap; gap: 24px; }
}
