/* ==========================================================================
   Hammam & Sauna Pretoria — theme.css
   Design system (tokens), reset, typography, buttons, header, hero,
   reservation bar, footer, and interior page templates.
   ========================================================================== */

/* ---------------------------------------------------------------------------
   1. DESIGN TOKENS (:root) — from design-spec §10 (verbatim), with free
      Google Font mapping (Figtree / Cormorant Garamond) replacing Typekit.
   --------------------------------------------------------------------------- */
:root {
	/* ---- Color: deep teal-green (neutral) ---- */
	--color-neutral-50:  #f5f6f6;
	--color-neutral-100: #e4e9e9;
	--color-neutral-200: #ccd5d5;
	--color-neutral-300: #a9b7b6;
	--color-neutral-400: #7e9291;
	--color-neutral-500: #637777;
	--color-neutral-600: #546566;
	--color-neutral-700: #485556;
	--color-neutral-800: #40494a;
	--color-neutral-900: #002d33;   /* deep teal — header, newsletter band */
	--color-neutral-950: #001215;   /* near-black teal — body text */

	/* ---- Color: warm cream / gold ---- */
	--color-gold-50:  #fbfaf7;      /* PAGE BACKGROUND */
	--color-gold-100: #e9e2cc;      /* footer / soft bands */
	--color-gold-200: #dacea9;
	--color-gold-500: #b79f56;      /* accent gold, italic labels, ring */
	--color-gold-600: #a69049;

	/* ---- Color: taupe primary (CTA) ---- */
	--color-primary-100: #d0ccc8;
	--color-primary-500: #7c736a;   /* button fill */
	--color-primary-600: #605952;   /* button hover */

	/* ---- Color: utility ---- */
	--color-white: #ffffff;
	--color-black: #000000;
	--color-error: #f26d68;

	/* ---- Semantic aliases ---- */
	--bg-page:        var(--color-gold-50);
	--bg-dark:        var(--color-neutral-900);
	--bg-footer:      var(--color-gold-100);
	--text-body:      var(--color-neutral-950);
	--text-muted:     var(--color-neutral-600);
	--text-on-dark:   var(--color-white);
	--accent:         var(--color-gold-500);
	--cta:            var(--color-primary-500);
	--cta-hover:      var(--color-primary-600);
	--border-subtle:  var(--color-neutral-200);

	/* ---- Typography (Typekit → free Google Fonts) ---- */
	--font-sans:  "Figtree", ui-sans-serif, system-ui, -apple-system, sans-serif;
	--font-serif: "Cormorant Garamond", Georgia, serif;   /* italic display accent */
	--fw-normal: 400;
	--fw-medium: 500;
	--fw-semibold: 600;
	--fw-bold: 700;

	--text-xs:   0.75rem;   --lh-xs:   1.25rem;
	--text-sm:   0.875rem;  --lh-sm:   1.25rem;
	--text-base: 1rem;      --lh-base: 1.5rem;
	--text-lg:   1.125rem;  --lh-lg:   2rem;
	--text-xl:   1.25rem;   --lh-xl:   2rem;
	--text-2xl:  1.5rem;    --lh-2xl:  2rem;
	--text-3xl:  1.75rem;   --lh-3xl:  2.25rem;
	--text-4xl:  2rem;      --lh-4xl:  2.5rem;
	--text-5xl:  2.5rem;    --lh-5xl:  3.125rem;
	--text-6xl:  3rem;      --lh-6xl:  3.75rem;
	--text-7xl:  4rem;      --lh-7xl:  4.5rem;
	--text-8xl:  5rem;      --lh-8xl:  4.5rem;

	--tracking-wide:   0.025em;
	--tracking-wider:  0.1em;
	--tracking-widest: 0.1em;

	/* ---- Spacing / layout ---- */
	--spacing: 0.25rem;
	--container-max: 90rem;
	--container-pad-sm: 1.25rem;
	--container-pad-lg: 5rem;
	--content-max: 52.5rem;
	--section-gap-sm: 2.5rem;
	--section-gap-lg: 6rem;
	--grid-gutter: 2.5rem;

	/* ---- Radii ---- */
	--radius-xs: 0.125rem;
	--radius-sm: 0.25rem;
	--radius-md: 0.375rem;
	--radius-lg: 0.5rem;
	--radius-xl: 0.75rem;
	--radius-2xl: 1rem;
	--radius-pill: 9999px;

	/* ---- Buttons ---- */
	--btn-height: 3.5rem;
	--btn-pad-x: 1.5rem;

	/* ---- Shadows ---- */
	--shadow-sm:   0 1px 2px 0 rgb(0 18 21 / 0.06);
	--shadow-card: 0 8px 24px -8px rgb(0 18 21 / 0.18);
	--shadow-ring-focus: 0 0 0 2px rgb(124 115 106 / 0.40);

	/* ---- Motion ---- */
	--transition-fast: 0.15s;
	--transition: 0.2s;
	--transition-slow: 0.3s;

	/* ---- Header sizing ---- */
	--topbar-h: 2.5rem;
	--mainbar-h: 5.25rem;
}

/* ---------------------------------------------------------------------------
   2. RESET / BASE
   --------------------------------------------------------------------------- */
*,
*::before,
*::after { box-sizing: border-box; }

* { margin: 0; }

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	font-family: var(--font-sans);
	font-weight: var(--fw-normal);
	font-size: var(--text-base);
	line-height: var(--lh-base);
	color: var(--text-body);
	background-color: var(--bg-page);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

img,
picture,
video,
svg { display: block; max-width: 100%; height: auto; }

a { color: inherit; text-decoration: none; transition: color var(--transition-fast); }

button { font: inherit; color: inherit; cursor: pointer; background: none; border: none; }

input,
select,
textarea { font: inherit; color: inherit; }

ul { list-style: none; padding: 0; }

h1, h2, h3, h4, h5, h6 { font-weight: var(--fw-normal); line-height: 1.15; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0);
	white-space: nowrap; border: 0;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	padding: 0.75rem 1.25rem;
	background: var(--color-neutral-900);
	color: #fff;
	border-radius: 0 0 var(--radius-md) 0;
}
.skip-link:focus { left: 0; }

body.mobile-menu-open { overflow: hidden; }

/* ---------------------------------------------------------------------------
   3. LAYOUT — container
   --------------------------------------------------------------------------- */
.container {
	width: 100%;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--container-pad-sm);
	transition: padding var(--transition-slow);
}
@media (min-width: 1024px) {
	.container { padding-inline: 3rem; }
}
@media (min-width: 1280px) {
	.container { padding-inline: var(--container-pad-lg); }
}

.site-main { min-height: 40vh; }

/* ---------------------------------------------------------------------------
   4. BUTTONS
   --------------------------------------------------------------------------- */
.btn,
.btn-primary,
.btn-secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	height: var(--btn-height);
	padding-inline: var(--btn-pad-x);
	width: fit-content;
	border-radius: var(--radius-pill);
	font-size: var(--text-base);
	line-height: 1;
	text-transform: uppercase;
	font-variant: all-small-caps;
	letter-spacing: var(--tracking-wider);
	transition: background-color var(--transition), box-shadow var(--transition), transform var(--transition), color var(--transition);
}

.btn-primary {
	background-color: var(--cta);
	color: #fff;
}
.btn-primary:hover { background-color: var(--cta-hover); color: #fff; }
.btn-primary:not(:disabled):active { transform: scale(0.98); }

.btn-secondary {
	background: transparent;
	color: var(--color-neutral-950);
	box-shadow: inset 0 0 0 1px var(--color-gold-500);
}
.btn-secondary:hover { background: rgb(183 159 86 / 0.10); }

.btn-label { display: inline-block; transform: translateY(-0.13em); }

/* Rounded/circular icon button (slider arrows) */
.btn-rounded {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: var(--radius-pill);
	background: rgb(255 255 255 / 0.14);
	color: #fff;
	backdrop-filter: blur(4px);
	transition: background-color var(--transition), transform var(--transition);
}
.btn-rounded:hover { background: rgb(255 255 255 / 0.28); }
.btn-rounded:active { transform: scale(0.96); }

/* Generic icon button (header search/account/hamburger) */
.icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: var(--radius-pill);
	color: inherit;
	transition: background-color var(--transition), color var(--transition);
}
.icon-btn:hover { color: var(--color-gold-500); }

*:focus-visible {
	outline: 2px solid var(--color-gold-500);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   5. HEADER
   --------------------------------------------------------------------------- */
.site-header {
	position: fixed;
	inset-inline: 0;
	top: 0;
	z-index: 40;
	color: #fff;
	transition: background-color var(--transition), box-shadow var(--transition);
}

/* Top utility bar */
.header-topbar {
	background-color: rgb(255 255 255 / 0.06);
	transition: background-color var(--transition);
}
.header-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--topbar-h);
}
.header-topbar__left {
	display: flex;
	align-items: center;
	gap: 1.5rem;
}
.lang-chip,
.rating-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: var(--text-sm);
	line-height: 1;
	color: #fff;
}
.lang-chip__flag { font-size: 0.95rem; }
.rating-chip__stars { color: var(--color-gold-500); letter-spacing: 0.05em; }
.rating-chip:hover { color: var(--color-gold-500); }
.header-topbar__right {
	display: flex;
	align-items: center;
	gap: 1.75rem;
}
.header-topbar__right a {
	font-size: var(--text-sm);
	text-transform: uppercase;
	font-variant: all-small-caps;
	letter-spacing: var(--tracking-widest);
}
.header-topbar__right a:hover { color: var(--color-gold-500); }

@media (max-width: 1279.98px) {
	.header-topbar { display: none; }
}

/* Main nav bar */
.header-main__inner {
	display: flex;
	align-items: center;
	gap: 2rem;
	height: var(--mainbar-h);
}
.header-main__logo { flex: 0 0 auto; }
.site-logo {
	height: 3rem;
	width: auto;
	transition: filter var(--transition), opacity var(--transition);
}
.header-main__nav {
	flex: 1 1 auto;
	display: flex;
	justify-content: flex-start;
}

/* Primary menu */
.primary-menu {
	display: flex;
	align-items: center;
	gap: 2rem;
	margin: 0;
}
.primary-menu li { position: relative; }
.primary-menu a {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-size: var(--text-sm);
	text-transform: uppercase;
	letter-spacing: var(--tracking-wider);
	padding-block: 0.5rem;
	white-space: nowrap;
}
.primary-menu a:hover { color: var(--color-gold-500); }
.primary-menu .menu-item-has-children > a::after {
	content: "";
	width: 0.5rem; height: 0.5rem;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: rotate(45deg) translateY(-2px);
	transition: transform var(--transition);
}

/* Dropdown submenu */
.primary-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 14rem;
	background: var(--color-gold-50);
	border-radius: 0 0 var(--radius-lg) var(--radius-lg);
	box-shadow: var(--shadow-card);
	padding: 0.5rem 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
	z-index: 5;
}
.primary-menu li:hover > .sub-menu,
.primary-menu li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.primary-menu .sub-menu a {
	display: block;
	padding: 0.6rem 1.25rem;
	color: var(--color-neutral-950);
	text-transform: none;
	letter-spacing: normal;
	font-size: var(--text-sm);
}
.primary-menu .sub-menu a:hover { color: var(--color-gold-600); background: rgb(183 159 86 / 0.08); }

/* Right action cluster */
.header-main__actions {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 0.5rem;
}
.header-cta { height: 3rem; }
.menu-toggle { display: none; }

/* Search panel */
.header-search-panel {
	background: var(--color-neutral-900);
	padding-block: 1rem;
	border-top: 1px solid rgb(255 255 255 / 0.08);
}
.header-search-panel .search-form {
	display: flex;
	gap: 0.75rem;
	align-items: center;
}
.header-search-panel .search-field {
	flex: 1 1 auto;
	height: 3rem;
	border-radius: var(--radius-pill);
	border: none;
	padding-inline: 1.25rem;
	background: #fff;
	color: var(--color-neutral-950);
}

/* --- Header states: transparent over hero vs solid --- */
.site-header.is-transparent {
	background-color: transparent;
}
.site-header.is-solid {
	background-color: var(--color-neutral-900);
	box-shadow: 0 2px 12px rgb(0 18 21 / 0.18);
}
.site-header.is-solid .header-topbar {
	background-color: var(--color-neutral-900);
}

/* Non-front pages start solid, with header offset so content isn't hidden */
body.no-hero { padding-top: var(--mainbar-h); }
@media (min-width: 1280px) {
	body.no-hero { padding-top: calc(var(--mainbar-h) + var(--topbar-h)); }
}

/* Mobile header adjustments */
@media (max-width: 1023.98px) {
	.header-main__nav { display: none; }
	.header-search-toggle,
	.header-main__actions > a.icon-btn[href*="mijn-account"] { display: none; }
	.header-cta { display: none; }
	.menu-toggle { display: inline-flex; }
	.header-main__nav { flex: 0; }
	.header-main__inner { justify-content: space-between; }
}

/* ---------------------------------------------------------------------------
   6. MOBILE OVERLAY MENU
   --------------------------------------------------------------------------- */
.mobile-menu {
	position: fixed;
	inset: 0;
	z-index: 60;
	background: var(--color-neutral-900);
	color: #fff;
	display: flex;
	flex-direction: column;
	opacity: 0;
	transform: translateY(-8px);
	transition: opacity var(--transition), transform var(--transition);
}
.mobile-menu.is-open {
	opacity: 1;
	transform: translateY(0);
}
.mobile-menu[hidden] { display: none; }
.mobile-menu__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--mainbar-h);
}
.mobile-menu__logo { height: 2.75rem; width: auto; }
.mobile-menu__close { color: #fff; }
.mobile-menu__nav {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	padding-top: 1.5rem;
	overflow-y: auto;
}
.mobile-primary-menu,
.mobile-primary-menu .sub-menu {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	margin: 0;
}
.mobile-primary-menu a {
	display: block;
	padding: 0.85rem 0;
	font-size: var(--text-xl);
	text-transform: uppercase;
	letter-spacing: var(--tracking-wider);
	border-bottom: 1px solid rgb(255 255 255 / 0.08);
}
.mobile-primary-menu a:hover { color: var(--color-gold-500); }
.mobile-primary-menu .sub-menu { padding-left: 1rem; }
.mobile-primary-menu .sub-menu a { font-size: var(--text-base); text-transform: none; letter-spacing: normal; opacity: 0.85; }
.mobile-menu__cta { margin-top: 1.75rem; width: 100%; }

/* ---------------------------------------------------------------------------
   7. HERO SLIDER + RESERVATION BAR
   --------------------------------------------------------------------------- */
.hero {
	position: relative;
	min-height: 100vh;
	min-height: 100svh;
	display: flex;
	align-items: center;
	overflow: hidden;
	color: #fff;
}
.hero__slides { position: absolute; inset: 0; z-index: 0; }
.hero__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.2s ease-in-out;
}
.hero__slide.is-active { opacity: 1; }
.hero__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.hero__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgb(0 18 21 / 0.45) 0%, rgb(0 18 21 / 0.25) 40%, rgb(0 18 21 / 0.55) 100%);
}

.hero__content {
	position: relative;
	z-index: 1;
	width: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2.5rem;
	padding-top: calc(var(--mainbar-h) + var(--topbar-h));
	padding-bottom: 4rem;
}

.hero__title {
	max-width: 72rem;
	margin-inline: auto;
	text-align: center;
	text-wrap: balance;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	color: #fff;
}
.hero__title-serif {
	font-family: var(--font-serif);
	font-style: italic;
	font-weight: var(--fw-semibold);
	font-size: var(--text-4xl);
	line-height: 1.05;
}
.hero__title-sans {
	font-family: var(--font-sans);
	font-weight: var(--fw-bold);
	font-size: var(--text-2xl);
	line-height: 1.15;
}
@media (min-width: 1024px) {
	.hero__title-serif { font-size: var(--text-8xl); line-height: var(--lh-8xl); }
	.hero__title-sans  { font-size: var(--text-6xl); line-height: 1.1; }
}

/* Slider prev/next */
.hero__slider-nav {
	position: absolute;
	inset-inline: var(--container-pad-sm);
	top: 50%;
	z-index: 2;
	display: flex;
	justify-content: space-between;
	transform: translateY(-50%);
	pointer-events: none;
}
.hero__arrow { pointer-events: auto; }
@media (max-width: 767.98px) {
	.hero__slider-nav { display: none; }
}

/* Scroll cue */
.hero__scroll-cue {
	position: absolute;
	bottom: 1.5rem;
	left: 50%;
	z-index: 2;
	transform: translateX(-50%);
	color: #fff;
	animation: hammam-bounce 1.8s infinite;
}
@keyframes hammam-bounce {
	0%, 100% { transform: translateX(-50%) translateY(0); }
	50% { transform: translateX(-50%) translateY(8px); }
}
@media (prefers-reduced-motion: reduce) {
	.hero__scroll-cue { animation: none; }
	.hero__slide { transition: none; }
	html { scroll-behavior: auto; }
}

/* Reservation bar (frosted glass) */
.reservation-bar {
	width: 100%;
	max-width: 62rem;
	margin-inline: auto;
	background: rgb(251 250 247 / 0.20);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border-radius: var(--radius-lg);
	padding: 2.5rem;
	box-shadow: var(--shadow-card);
}
.reservation-bar__grid {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr auto;
	gap: 1rem;
	align-items: end;
}
.res-field { display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; }
.res-field__label {
	font-size: var(--text-sm);
	color: #fff;
	letter-spacing: var(--tracking-wide);
}
.res-pill {
	position: relative;
	display: flex;
	align-items: center;
	height: var(--btn-height);
	background: #fff;
	border-radius: var(--radius-pill);
	padding-left: 1.75rem;
	padding-right: 0.4rem;
	color: var(--color-neutral-950);
	transition: box-shadow var(--transition);
}
.res-pill:focus-within {
	box-shadow: inset 0 0 0 2px var(--cta), var(--shadow-ring-focus);
}
.res-input {
	flex: 1 1 auto;
	min-width: 0;
	border: none;
	background: transparent;
	height: 100%;
	outline: none;
	font-size: var(--text-base);
}
.res-select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: 0.5rem;
	cursor: pointer;
}
.res-chip {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: var(--radius-pill);
	background: var(--color-neutral-100);
	color: var(--color-neutral-900);
	transition: background-color var(--transition);
}
.res-chip--caret { background: transparent; pointer-events: none; }
button.res-chip:hover { background: var(--color-neutral-200); }

/* Guests stepper */
.res-stepper {
	justify-content: space-between;
	padding-left: 0.4rem;
	gap: 0.5rem;
}
.res-stepper__value {
	flex: 1 1 auto;
	text-align: center;
	font-size: var(--text-base);
	white-space: nowrap;
}

.reservation-bar__submit { width: 100%; white-space: nowrap; }
.res-field--submit { justify-content: flex-end; }

@media (max-width: 1023.98px) {
	.reservation-bar { display: none; }
}

/* ---------------------------------------------------------------------------
   8. INTERIOR PAGE TEMPLATE
   --------------------------------------------------------------------------- */
.page-hero {
	position: relative;
	min-height: 52vh;
	display: flex;
	align-items: flex-end;
	color: #fff;
	background-image: var(--page-hero-img);
	background-size: cover;
	background-position: center;
}
.page-hero--slim { min-height: 38vh; }
.page-hero__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgb(0 18 21 / 0.35), rgb(0 18 21 / 0.65));
}
.page-hero__content {
	position: relative;
	z-index: 1;
	width: 100%;
	padding-bottom: 3rem;
	padding-top: 6rem;
}
.breadcrumb {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--text-sm);
	margin-bottom: 0.75rem;
	opacity: 0.9;
}
.breadcrumb a:hover { color: var(--color-gold-500); }
.page-hero__title {
	font-size: var(--text-4xl);
	line-height: 1.1;
}
@media (min-width: 1024px) {
	.page-hero__title { font-size: var(--text-6xl); }
}

.page-article { padding-block: var(--section-gap-sm); }
@media (min-width: 1024px) {
	.page-article { padding-block: var(--section-gap-lg); }
}
.entry-content {
	max-width: var(--content-max);
	margin-inline: auto;
	font-size: var(--text-lg);
	line-height: 1.8;
	color: var(--text-muted);
}
.entry-content h2 { font-size: var(--text-4xl); color: var(--text-body); margin: 2rem 0 1rem; }
.entry-content h3 { font-size: var(--text-2xl); color: var(--text-body); margin: 1.75rem 0 0.75rem; }
.entry-content p { margin-bottom: 1.25rem; }
.entry-content a { color: var(--color-gold-600); text-decoration: underline; }
.entry-content img { border-radius: var(--radius-lg); margin-block: 1.5rem; }
.entry-content ul { list-style: disc; padding-left: 1.5rem; margin-bottom: 1.25rem; }

/* ---------------------------------------------------------------------------
   9. INDEX / BLOG LIST
   --------------------------------------------------------------------------- */
.index-list { padding-block: var(--section-gap-sm); }
@media (min-width: 1024px) {
	.index-list { padding-block: var(--section-gap-lg); }
}
.post-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
	gap: var(--grid-gutter);
}
.post-card {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.post-card__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: var(--radius-lg);
}
.post-card__title { font-size: var(--text-2xl); }
.post-card__title a:hover { color: var(--color-gold-600); }
.post-card__meta { font-size: var(--text-sm); color: var(--text-muted); }
.post-card__excerpt { color: var(--text-muted); }

.pagination { margin-top: 3rem; display: flex; justify-content: center; }
.pagination .nav-links { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.pagination a,
.pagination .current {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding-inline: 0.75rem;
	border-radius: var(--radius-pill);
	background: #fff;
	box-shadow: var(--shadow-sm);
}
.pagination .current { background: var(--color-neutral-900); color: #fff; }

/* ---------------------------------------------------------------------------
   10. FOOTER
   --------------------------------------------------------------------------- */
.site-footer {
	background: var(--bg-footer);
	color: var(--color-neutral-700);
	overflow-x: hidden;
	margin-top: var(--section-gap-lg);
}
.site-footer__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--grid-gutter);
	padding-block: var(--section-gap-sm);
}
@media (min-width: 640px) {
	.site-footer__inner { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.site-footer__inner {
		grid-template-columns: 1.2fr 1fr 1fr 1fr;
		padding-block: var(--section-gap-lg);
	}
}
.footer-col__title {
	font-family: var(--font-serif);
	font-style: italic;
	font-weight: var(--fw-semibold);
	font-size: var(--text-lg);
	color: var(--color-gold-500);
	margin-bottom: 1.25rem;
}
.footer-logo { height: 3.5rem; width: auto; margin-bottom: 1.25rem; }
.footer-social { display: flex; gap: 0.75rem; }
.footer-social__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--radius-pill);
	background: rgb(0 45 51 / 0.06);
	color: var(--color-neutral-800);
	transition: background-color var(--transition), color var(--transition);
}
.footer-social__link:hover { color: var(--color-gold-600); background: rgb(0 45 51 / 0.12); }
.footer-links li { margin-bottom: 0.65rem; }
.footer-links a { font-size: var(--text-base); }
.footer-links a:hover { color: var(--color-gold-600); }
.footer-address { font-style: normal; line-height: 2; }
.footer-address a:hover { color: var(--color-gold-600); }

.site-footer__bottom {
	border-top: 1px solid rgb(0 45 51 / 0.10);
}
.site-footer__bottom-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.5rem;
	font-size: var(--text-sm);
}
.footer-legal { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.footer-legal a:hover { color: var(--color-gold-600); }

/* ---------------------------------------------------------------------------
   11. WOOCOMMERCE — keep shop/cart/account usable inside our container
   --------------------------------------------------------------------------- */
.woocommerce-page-main { padding-block: var(--section-gap-sm); }
@media (min-width: 1024px) {
	.woocommerce-page-main { padding-block: var(--section-gap-lg); }
}
.woocommerce-page-main a.button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	background-color: var(--cta);
	color: #fff;
	border-radius: var(--radius-pill);
	text-transform: uppercase;
	font-variant: all-small-caps;
	letter-spacing: var(--tracking-wider);
}
.woocommerce a.button:hover,
.woocommerce button.button:hover { background-color: var(--cta-hover); }

/* ==========================================================================
   12. HOMEPAGE SECTIONS (Phase 3) — discover, offers, gallery, news, newsletter
   Reuses the design tokens above. Section rhythm my-10 → lg:my-24 (40/96px);
   headings use the §2 Section-H2 style (weight 400, centered, neutral-950,
   clamped to 52.5rem).
   ========================================================================== */

/* --- Shared section rhythm + heading -------------------------------------- */
.home-intro,
.home-section { margin-block: var(--section-gap-sm); }
@media (min-width: 1024px) {
	.home-intro,
	.home-section { margin-block: var(--section-gap-lg); }
}

.section-h2 {
	max-width: var(--content-max);
	margin-inline: auto;
	font-family: var(--font-sans);
	font-weight: var(--fw-normal);
	font-size: var(--text-3xl);
	line-height: var(--lh-3xl);
	color: var(--color-neutral-950);
	text-align: center;
	text-wrap: balance;
}
@media (min-width: 1024px) {
	.section-h2 { font-size: var(--text-6xl); line-height: var(--lh-6xl); }
}

.home-section__head { margin-bottom: 2.5rem; }
@media (min-width: 1024px) {
	.home-section__head { margin-bottom: 4rem; }
}
.home-section__cta {
	margin-top: 2.5rem;
	display: flex;
	justify-content: center;
}

/* --- Intro lead-in -------------------------------------------------------- */
.home-intro__lead {
	max-width: var(--content-max);
	margin-inline: auto;
	text-align: center;
	color: var(--text-muted);
	font-size: var(--text-lg);
	line-height: 1.8;
}

/* --- Shared 3-column card grid ------------------------------------------- */
.card-grid {
	display: grid;
	gap: var(--grid-gutter);
}
.card-grid--3 { grid-template-columns: 1fr; }
@media (min-width: 768px) {
	.card-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Small uppercase text link ("Ontdek meer →") */
.text-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin-top: 0.25rem;
	font-size: var(--text-sm);
	text-transform: uppercase;
	font-variant: all-small-caps;
	letter-spacing: var(--tracking-wider);
	color: var(--color-neutral-950);
}
.text-link:hover { color: var(--color-gold-600); }
.text-link__arrow { transition: transform var(--transition); }
.text-link:hover .text-link__arrow { transform: translateX(3px); }

/* --- a) Discover: facility cards ----------------------------------------- */
.facility-card { display: flex; flex-direction: column; }
.facility-card__media { display: block; }
.facility-card__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: var(--radius-lg);
}
.facility-card__body {
	padding-top: 1.25rem;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	align-items: flex-start;
}
.facility-card__title { font-size: var(--text-2xl); }
.facility-card__text { color: var(--text-muted); }

/* --- b) Offers: arrangement cards ---------------------------------------- */
.offer-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border-radius: var(--radius-lg);
	overflow: hidden;
	box-shadow: var(--shadow-card);
}
.offer-card__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}
.offer-card__body {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 1.5rem;
	flex: 1 1 auto;
}
.offer-card__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
}
.offer-card__title { font-size: var(--text-2xl); }
.offer-card__price {
	font-size: var(--text-xl);
	color: var(--color-gold-600);
	white-space: nowrap;
}
.offer-card__features {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}
.offer-card__features li {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	color: var(--text-muted);
	font-size: var(--text-base);
	line-height: 1.4;
}
.offer-card__check {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.4rem;
	height: 1.4rem;
	margin-top: 0.05rem;
	border-radius: var(--radius-pill);
	background: rgb(183 159 86 / 0.15);
	color: var(--color-gold-600);
}
.offer-card__cta { margin-top: auto; align-self: flex-start; }

/* --- Decorative divider (before the gallery) ----------------------------- */
.section-divider {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 2.5rem;
	margin-top: var(--section-gap-sm);
	margin-bottom: 0;
}
@media (min-width: 1024px) {
	.section-divider { margin-top: var(--section-gap-lg); }
}
.section-divider + .home-gallery { margin-top: 2.5rem; }
@media (min-width: 1024px) {
	.section-divider + .home-gallery { margin-top: 3.5rem; }
}
.section-divider__rule {
	flex: 1 1 auto;
	height: 1px;
	background: var(--color-gold-200);
}
.section-divider__mark {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	height: 3.5rem;
	border-radius: var(--radius-pill);
	box-shadow: inset 0 0 0 1px var(--color-gold-500);
	color: var(--color-gold-500);
}

/* --- c) Gallery mosaic ---------------------------------------------------- */
.mosaic {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-auto-rows: 10px;
	grid-auto-flow: row dense;
	gap: 1.5rem;
}
.mosaic__tile {
	overflow: hidden;
	border-radius: var(--radius-lg);
	background: var(--color-gold-100);
}
.mosaic__tile img { width: 100%; height: 100%; object-fit: cover; }
.mosaic__tile--tall   { grid-row: span 42; }
.mosaic__tile--center { grid-row: span 42; }
.mosaic__tile--short  { grid-row: span 22; }
@media (min-width: 1024px) {
	.mosaic__tile--center { grid-column: 2; }
}
@media (max-width: 1023.98px) {
	.mosaic { grid-template-columns: repeat(2, 1fr); }
	.mosaic__tile--center { grid-column: auto; }
}
@media (max-width: 599.98px) {
	.mosaic { grid-template-columns: 1fr; grid-auto-rows: auto; gap: 1rem; }
	.mosaic__tile { grid-row: auto !important; }
	.mosaic__tile img { height: auto; aspect-ratio: 4 / 3; }
}

/* --- d) News & blogs ------------------------------------------------------ */
.home-news__head {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1.5rem;
	text-align: center;
}
@media (min-width: 1024px) {
	.home-news__head {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		text-align: left;
	}
	.home-news__head .section-h2 { margin-inline: 0; text-align: left; }
}
.home-news__all { flex: 0 0 auto; }

.home-news__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--grid-gutter);
}
@media (min-width: 1024px) {
	.home-news__grid { grid-template-columns: 1.4fr 1fr; }
	.home-news--solo .home-news__grid { grid-template-columns: 1fr; }
}

.news-feature {
	position: relative;
	display: block;
	border-radius: var(--radius-lg);
	overflow: hidden;
	min-height: 22rem;
}
.news-feature__media { position: absolute; inset: 0; }
.news-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.news-feature::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgb(0 18 21 / 0.78), rgb(0 18 21 / 0) 60%);
}
.news-feature__overlay {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 0.5rem;
	min-height: 22rem;
	padding: 2rem;
	color: #fff;
}
.news-feature__date { font-size: var(--text-sm); opacity: 0.85; }
.news-feature__title { font-size: var(--text-3xl); line-height: 1.2; color: #fff; }
.news-feature:hover .news-feature__title { color: var(--color-gold-500); }

.news-list { display: flex; flex-direction: column; gap: 1.25rem; }
.news-item {
	display: grid;
	grid-template-columns: 7rem 1fr;
	gap: 1rem;
	align-items: center;
}
.news-item__media {
	display: block;
	border-radius: var(--radius-md);
	overflow: hidden;
	aspect-ratio: 4 / 3;
}
.news-item__media img { width: 100%; height: 100%; object-fit: cover; }
.news-item__body { display: flex; flex-direction: column; gap: 0.25rem; }
.news-item__date { font-size: var(--text-xs); color: var(--text-muted); }
.news-item__title { font-size: var(--text-lg); line-height: 1.3; }
.news-item:hover .news-item__title { color: var(--color-gold-600); }

/* --- e) Newsletter band --------------------------------------------------- */
.newsletter {
	background: var(--color-neutral-900);
	color: #fff;
	border-radius: var(--radius-lg);
	padding: 1.5rem;
	display: grid;
	gap: 1.5rem;
}
@media (min-width: 1024px) {
	.newsletter {
		grid-template-columns: 1fr 1fr;
		gap: 2.5rem;
		padding: 4rem;
		align-items: center;
	}
}
.newsletter__title { color: #fff; text-align: left; margin-inline: 0; }
.newsletter__form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	align-items: stretch;
}
.newsletter__fields {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
@media (min-width: 768px) {
	.newsletter__fields { display: grid; grid-template-columns: 1fr 1fr; }
}
.newsletter__input {
	width: 100%;
	height: var(--btn-height);
	border: none;
	border-radius: var(--radius-pill);
	padding-inline: 1.5rem;
	background: #fff;
	color: var(--color-neutral-950);
	transition: box-shadow var(--transition);
}
.newsletter__input::placeholder { color: var(--color-neutral-500); }
.newsletter__input:focus {
	outline: none;
	box-shadow: inset 0 0 0 2px var(--cta), var(--shadow-ring-focus);
}
.newsletter__submit { align-self: flex-start; }
