/* ═══════════════════════════════════════════
   HOME — All homepage section styles
   ═══════════════════════════════════════════ */

/* ── Hero ── */
.hero {
	position: relative;
	min-height: 85vh;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	color: var(--paper);
	background: var(--ink);
}

.hero-bg {
	position: absolute;
	inset: 0;
}

.hero-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Hero slider */
.hero-slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 1.6s ease;
	will-change: opacity, transform;
	animation: heroKenBurns 18s ease infinite alternate;
}

.hero-slide.is-active {
	opacity: 1;
}

@keyframes heroKenBurns {
	0%   { transform: scale(1); }
	100% { transform: scale(1.06); }
}

.hero-bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg,
			rgba(0,0,0,.35) 0%,
			rgba(0,0,0,0) 30%,
			rgba(0,0,0,0) 45%,
			rgba(15,20,30,.65) 100%),
		linear-gradient(180deg,
			transparent 50%,
			rgba(226,114,91,.12) 100%);
}

.hero-bg-placeholder {
	width: 100%;
	height: 100%;
	background: var(--ink);
}

.hero-inner {
	position: relative;
	z-index: 2;
	padding: 0 64px 90px;
	max-width: 1480px;
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 32px;
}

.hero-tags {
	margin-bottom: 12px;
}

.hero-title {
	font-size: clamp(48px, 8vw, 128px);
	line-height: .95;
	color: var(--paper);
	text-shadow: 0 2px 24px rgba(15,25,35,.35), 0 1px 4px rgba(15,25,35,.2);
}

.hero-title .sea-l  { color: #5EC4D6; font-style: italic; }
.hero-title .coral-l { color: #FFC9B5; font-style: italic; }
.hero-title .sand-l { color: #F5D1A6; font-style: italic; }

.hero-location {
	font-family: var(--f-display);
	font-style: italic;
	font-size: clamp(20px, 2.5vw, 32px);
	color: rgba(251,248,240,.7);
	margin-top: 8px;
	letter-spacing: .02em;
}

.hero-actions {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	margin-top: 8px;
}

/* ── Marquee ── */
.marquee {
	background: linear-gradient(90deg, var(--coral), #D4844A, var(--sea), var(--coral));
	background-size: 200% 100%;
	animation: vf-marquee-bg 12s ease infinite;
	color: var(--paper);
	padding: 18px 0;
	overflow: hidden;
	white-space: nowrap;
	font-family: var(--f-display);
	font-style: italic;
	font-weight: 400;
	font-size: 22px;
}

@keyframes vf-marquee-bg {
	0%, 100% { background-position: 0% 50%; }
	50% { background-position: 100% 50%; }
}

.marquee-track {
	display: inline-flex;
	gap: 48px;
	padding-left: 48px;
	animation: vf-scroll 42s linear infinite;
}

.marquee .sep {
	color: rgba(255,255,255,.6);
	font-style: normal;
}

/* ── Intro ── */
.intro {
	position: relative;
	overflow: hidden;
	background: linear-gradient(175deg, #F0E6D2 0%, #E5D5BE 60%, #DCCAAF 100%);
}

.intro-grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 80px;
	margin-bottom: 80px;
}

.intro-title {
	font-size: clamp(44px, 5.5vw, 84px);
	margin-top: 16px;
}

.intro-body {
	font-size: 18px;
	line-height: 1.65;
	padding-top: 32px;
}

.intro-body p + p { margin-top: 24px; }

.intro-stats {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
	padding-top: 48px;
}

.stat {
	text-align: center;
	background: rgba(255,255,255,.6);
	border-radius: 16px;
	padding: 32px 16px;
	border: 1px solid rgba(226,114,91,.15);
	transition: transform .3s ease, box-shadow .3s ease;
}

.stat:hover {
	transform: translateY(-4px);
	box-shadow: 0 8px 32px rgba(26,31,46,.08);
}

.stat-num {
	font-size: 64px;
	line-height: 1;
	display: block;
	margin-bottom: 8px;
}

.stat-label { display: block; }

.stat:nth-child(1) .stat-label { color: var(--sea); }
.stat:nth-child(2) .stat-label { color: var(--coral); }
.stat:nth-child(3) .stat-label { color: var(--sand); }
.stat:nth-child(4) .stat-label { color: var(--gold); }

.intro-palm {
	position: absolute;
	top: 60px;
	right: 40px;
	opacity: .22;
	pointer-events: none;
}

/* ── Lodgings / Chapters ── */
.lodgings-head {
	text-align: left;
	padding: 100px 0 60px;
	border-bottom: 4px solid transparent;
	border-image: linear-gradient(90deg, var(--coral) 0% 22%, var(--sand) 22% 36%, var(--sea) 36% 60%, var(--leaf) 60% 78%, var(--gold) 78% 100%) 1;
}

.lodgings-head h2 {
	font-size: clamp(40px, 5vw, 72px);
	margin-top: 12px;
}

.chapter {
	padding: 100px 0;
}

.chapter-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 80px;
	align-items: center;
}

.chapter.flip .chapter-grid {
	direction: rtl;
}

.chapter.flip .chapter-grid > * {
	direction: ltr;
}

.chapter-fig {
	position: relative;
	overflow: hidden;
	border-radius: 16px;
	box-shadow: 0 8px 36px rgba(26,31,46,.1);
}

.chapter-fig img {
	width: 100%;
	height: auto;
	transition: transform 1.5s ease;
}

.chapter-fig:hover img {
	transform: scale(1.04);
}

.chapter-fig .num {
	position: absolute;
	top: 20px;
	left: 20px;
	font-family: var(--f-display);
	font-size: 180px;
	font-weight: 300;
	line-height: .8;
	opacity: .15;
	pointer-events: none;
	z-index: 2;
}

.chapter-img-placeholder {
	width: 100%;
	aspect-ratio: 4/5;
	background: var(--bg-deep);
}

.chapter-title {
	font-size: clamp(48px, 5.5vw, 84px);
	line-height: .98;
	letter-spacing: -.01em;
	margin: 16px 0 24px;
}

.chapter-lead {
	font-size: 19px;
	line-height: 1.6;
	margin-bottom: 32px;
}

.chapter-specs {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px 32px;
	margin-bottom: 32px;
}

.spec-val {
	font-size: 22px;
	font-style: italic;
}

.chapter-price {
	display: flex;
	align-items: baseline;
	gap: 6px;
	margin-bottom: 32px;
}

.price-val {
	font-size: 36px;
	font-style: italic;
}

.price-unit {
	font-size: 14px;
	color: var(--ink-mute);
}

/* ── Calendar ── */
.cal-head {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 32px;
	margin-bottom: 48px;
	flex-wrap: wrap;
}

.cal-head h2 {
	font-size: clamp(40px, 5vw, 72px);
	margin-top: 12px;
}

.cal-filters {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.cal-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

.cal-lodging-name {
	font-size: clamp(20px, 2.5vw, 28px);
	margin-bottom: 12px;
}

.cal-placeholder {
	grid-column: 1 / -1;
}

/* ── Village ── */
.village {
	background: var(--ink);
	color: var(--paper);
	position: relative;
	overflow: hidden;
}

.village-grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 80px;
	margin-bottom: 64px;
}

.village-fig {
	aspect-ratio: 4/5;
	overflow: hidden;
	border-radius: 16px;
	box-shadow: 0 12px 48px rgba(0,0,0,.25);
}

.village-fig img {
	transition: transform 1.5s ease;
}

.village-fig:hover img {
	transform: scale(1.04);
}

.village-img-placeholder {
	width: 100%;
	height: 100%;
	background: #0E1620;
}

.village h2 {
	font-size: clamp(44px, 6vw, 92px);
	line-height: .98;
	margin: 16px 0 24px;
	color: var(--paper);
}

.village h2 .a { color: #FFC9B5; font-style: italic; }
.village h2 .b { color: #A8D5DD; font-style: italic; }

.village p {
	font-size: 16px;
	line-height: 1.65;
	color: rgba(251,248,240,.75);
	margin-bottom: 24px;
}

.village-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.village-pills span {
	padding: 8px 14px;
	border-radius: 999px;
	border: 1px solid rgba(255,255,255,.2);
	font-family: var(--f-mono);
	font-size: 11px;
	letter-spacing: .08em;
}

.village-pills span.coral {
	background: var(--coral);
	border-color: var(--coral);
}

.village-activities {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1px;
	background: rgba(255,255,255,.12);
}

.act {
	background: var(--ink);
	padding: 32px 24px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	transition: background .3s ease;
}

.act:hover { background: var(--sea-deep); }

.act .num {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--coral);
	letter-spacing: .1em;
}

.act .name {
	font-family: var(--f-display);
	font-size: 28px;
	line-height: 1.05;
	color: var(--paper);
}

.act .name .it {
	font-style: italic;
	color: #FFC9B5;
}

.act .desc {
	font-size: 13px;
	color: rgba(251,248,240,.65);
	margin-top: auto;
	padding-top: 12px;
}

.village-palm {
	position: absolute;
	top: 40px;
	right: 40px;
	opacity: .25;
}

/* ── Hosts ── */
.hosts {
	background: linear-gradient(175deg, #E2D4BE 0%, #D9C7AB 100%);
}

.hosts-grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 80px;
	align-items: center;
}

.hosts-figure {
	aspect-ratio: 3/4;
	background: var(--bg-deep);
	max-width: 480px;
	overflow: hidden;
	border-radius: 16px;
	box-shadow: 0 12px 48px rgba(26,31,46,.12);
}

.hosts-figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.5s ease;
}

.hosts-figure:hover img {
	transform: scale(1.04);
}

.hosts h2 {
	font-size: clamp(48px, 6.5vw, 108px);
	line-height: .95;
	margin: 16px 0 32px;
}

.hosts h2 .a { color: var(--coral); font-style: italic; }
.hosts h2 .b { color: var(--sea); font-style: italic; }

.hosts-quote {
	font-family: var(--f-display);
	font-style: italic;
	font-size: 24px;
	line-height: 1.4;
	color: var(--ink-soft);
	max-width: 32ch;
	padding-left: 24px;
	border-left: 4px solid transparent;
	border-image: linear-gradient(180deg, var(--coral), var(--sand)) 1;
	margin-bottom: 32px;
}

.sig-name {
	font-size: 42px;
	font-style: italic;
	color: var(--sea);
	display: block;
	margin-bottom: 8px;
}

.sig-role {
	display: block;
}

/* ── Press ── */
.press {
	text-align: center;
	background: linear-gradient(170deg, #F2D9C5 0%, #EACDBA 100%);
}

.press-inner {
	max-width: 900px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 32px;
}

.press-hibiscus { opacity: .85; }

.press-quote {
	font-size: clamp(36px, 4.5vw, 68px);
	line-height: 1.2;
	font-style: italic;
	color: var(--ink);
}

.press-name {
	font-size: 26px;
	font-style: italic;
	color: var(--sea);
	display: block;
	margin-bottom: 4px;
}

.press-label { display: block; }

/* ── Partners ── */
.partners {
	background: linear-gradient(175deg, #EDE6D8 0%, #E5DCCC 100%);
}

.partners-head {
	text-align: center;
	margin-bottom: 56px;
}

.partners-head h2 {
	font-size: clamp(36px, 4.5vw, 64px);
	margin-top: 12px;
}

.partners-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
	max-width: 960px;
	margin: 0 auto;
}

.partner-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	background: rgba(255,255,255,.85);
	border: 1px solid rgba(26,31,46,.08);
	border-radius: 16px;
	padding: 40px;
	text-decoration: none;
	color: var(--ink);
	transition: transform .3s ease, box-shadow .3s ease;
}

.partner-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 40px rgba(26,31,46,.1);
}

.partner-logo {
	margin-bottom: 20px;
}

.partner-logo img {
	max-height: 48px;
	width: auto;
}

.partner-card h3 {
	font-family: var(--f-display);
	font-size: 28px;
	font-weight: 400;
	margin-bottom: 4px;
}

.partner-tagline {
	font-family: var(--f-mono);
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--sea);
	margin-bottom: 16px;
}

.partner-desc {
	font-size: 15px;
	line-height: 1.6;
	color: var(--ink-soft);
	margin-bottom: 24px;
}

.partner-card .btn.ghost {
	margin-top: auto;
}

/* ── Contact ── */
/* ── Responsive ── */
@media (max-width: 960px) {
	.intro-grid,
	.village-grid,
	.hosts-grid {
		grid-template-columns: 1fr;
		gap: 48px;
	}

	.chapter-grid {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	.chapter.flip .chapter-grid {
		direction: ltr;
	}
}

@media (max-width: 880px) {
	.intro-stats {
		grid-template-columns: repeat(2, 1fr);
	}

	.village-activities {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 760px) {
	.hero {
		min-height: 75vh;
	}

	.hero-inner {
		padding: 0 22px 48px;
		align-items: center;
		text-align: center;
	}

	.hero-title {
		font-size: clamp(32px, 8vw, 52px);
	}

	.hero-tags {
		justify-content: center;
	}

	.hero-actions {
		justify-content: center;
	}

	.chapter { padding: 60px 0; }

	/* Partners */
	.partners-grid {
		grid-template-columns: 1fr;
	}

	.partner-card {
		align-items: center;
		text-align: center;
	}

	.chapter-content {
		text-align: center;
	}

	.chapter-specs {
		justify-items: center;
	}

	.chapter-price {
		justify-content: center;
	}

	.chapter .btn {
		align-self: center;
	}

	.lodgings-head {
		text-align: center;
		padding: 60px 0 40px;
	}

	.lodgings-head p {
		margin-left: auto;
		margin-right: auto;
	}

	/* Intro */
	.intro-eyebrow,
	.intro-title {
		text-align: center;
	}

	.intro-body {
		text-align: center;
	}

	/* Village */
	.village-head {
		text-align: center;
	}

	.village-grid {
		text-align: center;
	}

	.village-pills {
		justify-content: center;
	}

	/* Hosts */
	.hosts-grid {
		text-align: center;
	}

	.hosts-quote {
		text-align: center;
		margin-left: auto;
		margin-right: auto;
		padding-left: 0;
		border-left: none;
		border-image: none;
	}

	.hosts-sign {
		text-align: center;
	}

	/* Calendar */
	.cal-head {
		text-align: center;
		justify-content: center;
	}

	.cal-filters {
		justify-content: center;
	}

	/* Contact */
	.contact-head {
		text-align: center;
	}
}

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

@media (max-width: 680px) {
	.cal-grid {
		grid-template-columns: 1fr;
	}

	.cal-lodging-name {
		text-align: center;
	}
}

@media (max-width: 600px) {
	.intro-stats {
		grid-template-columns: 1fr;
	}

	.village-activities {
		grid-template-columns: 1fr;
	}

	.act {
		text-align: center;
		align-items: center;
	}

	.stat-num {
		font-size: 48px;
	}

	.hosts-quote {
		font-size: 20px;
		padding-left: 0;
		border-left: none;
	}

	.sig-name {
		font-size: 32px;
	}

	.foot-brand h3 {
		font-size: 32px;
	}

	.chapter-title {
		font-size: clamp(36px, 9vw, 52px);
	}

	.chapter-lead {
		font-size: 16px;
	}

	.chapter-specs {
		grid-template-columns: 1fr 1fr;
		gap: 12px 24px;
	}

	.price-val {
		font-size: 28px;
	}

	.hero-tags span {
		font-size: 10px;
		padding: 5px 10px;
	}
}
