/*
 * Page sections built in Elementor. Each Elementor container or widget gets
 * one of these classes in Advanced > CSS Classes. Text, images and links stay
 * editable in Elementor; layout and styling live here.
 *
 * Elementor containers: a "boxed" container wraps its content in .e-con-inner,
 * a "full width" container (.e-con-full) holds its children directly.
 */

/* ---------- Page frame ---------- */
.page-template-elementor_header_footer .site-content > .ast-container,
.page-template-elementor_header_footer .ast-container {
	max-width: none;
	padding: 0;
	display: block;
}
.elementor .e-con.e-parent { padding-inline: var(--hh-gutter); }
.elementor .e-con.e-child,
.elementor .e-con .e-con { padding-inline: 0; }
.elementor .e-con-boxed > .e-con-inner { max-width: var(--hh-container); }

/* ---------- Shared ---------- */
.elementor .hh-section.e-con > .e-con-inner { padding-block: var(--hh-space-7); }
.elementor .hh-section--cream.e-con { background-color: var(--hh-cream); }
.hh-lede,
.hh-lede p { font-size: var(--hh-text-lg); color: var(--hh-muted); }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Photos fill a frame whose shape is set per section (aspect-ratio or grid area). */
.elementor .hh-photo {
	position: relative;
	overflow: hidden;
	border-radius: var(--hh-radius-lg);
	min-height: 120px;
}
.elementor .hh-photo img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	border-radius: 0;
}

/* ---------- Hero ---------- */
.elementor .hh-hero.e-con {
	position: relative;
	isolation: isolate;
	z-index: 2; /* keeps the booking bar's pop-ups above the next section */
	display: flex;
	flex-direction: column;
	min-height: min(94vh, 920px);
	background-color: var(--hh-forest-deep);
	background-size: cover;
	background-position: center 70%;
}
.elementor .hh-hero.e-con::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(180deg, rgba(21, 40, 31, 0.6) 0%, rgba(21, 40, 31, 0) 26%),
		linear-gradient(0deg, rgba(21, 40, 31, 0.92) 0%, rgba(21, 40, 31, 0.55) 45%, rgba(21, 40, 31, 0.2) 100%);
}
.elementor .hh-hero.e-con > .e-con-inner {
	flex: 1 1 auto;
	width: 100%;
	justify-content: flex-end;
	gap: 0;
	padding-top: calc(var(--hh-header-h) + var(--hh-space-6));
	padding-bottom: var(--hh-space-6);
}
.elementor .hh-hero__title .elementor-heading-title {
	color: var(--hh-paper);
	max-width: 16ch;
	font-size: clamp(2.6rem, 1.5rem + 4vw, 5.2rem);
	line-height: 1.04;
}
.hh-hero__lede,
.hh-hero__lede p {
	color: rgba(250, 247, 240, 0.88);
	font-size: var(--hh-text-lg);
	max-width: 46ch;
}
.hh-hero__lede { margin-top: var(--hh-space-4); }
.hh-hero__booking { margin-top: var(--hh-space-5); }
.hh-hero__link { margin-top: var(--hh-space-4); }
.elementor .hh-hero__link.hh-btn-text .elementor-button,
.elementor .hh-hero__link.hh-btn-text .elementor-button:hover { color: var(--hh-paper); }

/* ---------- Intro ---------- */
.elementor .hh-intro.e-con > .e-con-inner {
	flex-direction: row;
	align-items: center;
	gap: clamp(2rem, 6vw, 6rem);
}
.elementor .hh-intro__text.e-con { width: 42%; flex: 0 0 auto; gap: var(--hh-space-4); }
.elementor .hh-intro__media.e-con {
	position: relative;
	flex: 1 1 0;
	width: auto;
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	grid-template-rows: repeat(10, 52px);
	gap: 0;
}
.hh-intro__media > .elementor-element { width: auto; height: 100%; }
.hh-intro__media > .elementor-element:nth-child(1) { grid-column: 1 / 11; grid-row: 1 / 9; }
.hh-intro__media > .elementor-element:nth-child(2) { grid-column: 7 / 13; grid-row: 6 / 11; z-index: 1; }
.elementor .hh-intro__media > .elementor-element:nth-child(2) { border: 8px solid var(--hh-paper); border-radius: calc(var(--hh-radius-lg) + 8px); }
.hh-intro__media .elementor-widget-container,
.hh-intro__media .elementor-image { height: 100%; }

/* ---------- Capacity scale (signature) ---------- */
.elementor .hh-scale.e-con > .e-con-inner { gap: var(--hh-space-3); }
.hh-scale .hh-lede { margin-bottom: var(--hh-space-5); }
.elementor .hh-scale__steps.e-con {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: end;
	gap: var(--hh-space-4);
}
.elementor .hh-scale__step.e-con { width: auto; gap: var(--hh-space-2); }
/* The bar sits above each number and grows with each step. */
.hh-scale__num::before {
	content: "";
	display: block;
	height: var(--hh-bar, 60px);
	margin-bottom: var(--hh-space-3);
	border-radius: var(--hh-radius) var(--hh-radius) 0 0;
	background: var(--hh-leaf);
	transform-origin: bottom;
}
.hh-scale__step--1 { --hh-bar: 56px; }
.hh-scale__step--2 { --hh-bar: 104px; }
.hh-scale__step--2 .hh-scale__num::before { background: var(--hh-forest); }
.hh-scale__step--3 { --hh-bar: 148px; }
.hh-scale__step--3 .hh-scale__num::before { background: var(--hh-forest-deep); }
.hh-scale__step--4 { --hh-bar: 220px; }
.hh-scale__step--4 .hh-scale__num::before { background: repeating-linear-gradient(135deg, var(--hh-gold) 0 10px, #C9A563 10px 20px); }
.elementor .hh-scale__num .elementor-heading-title {
	font-family: var(--hh-font-display);
	font-size: clamp(2.6rem, 2rem + 2.4vw, 4rem);
	line-height: 1;
	color: var(--hh-forest);
	margin: 0;
}
.elementor .hh-scale__label .elementor-heading-title {
	font-family: var(--hh-font-body);
	font-size: var(--hh-text-base);
	font-weight: 600;
	color: var(--hh-ink);
}
.hh-scale__step .elementor-widget-text-editor { color: var(--hh-muted); font-size: var(--hh-text-sm); }

@media (prefers-reduced-motion: no-preference) {
	.hh-scale.is-visible .hh-scale__num::before { animation: hh-grow 0.9s var(--hh-ease) both; }
	.hh-scale.is-visible .hh-scale__step--2 .hh-scale__num::before { animation-delay: 0.1s; }
	.hh-scale.is-visible .hh-scale__step--3 .hh-scale__num::before { animation-delay: 0.2s; }
	.hh-scale.is-visible .hh-scale__step--4 .hh-scale__num::before { animation-delay: 0.3s; }
}
@keyframes hh-grow { from { transform: scaleY(0.08); } to { transform: none; } }

/* ---------- Ways to stay ---------- */
.elementor .hh-ways.e-con > .e-con-inner { gap: var(--hh-space-5); }
.elementor .hh-ways__grid.e-con {
	display: grid;
	grid-template-columns: 7fr 5fr;
	grid-template-rows: auto auto;
	gap: var(--hh-space-5);
}
.elementor .hh-way.e-con { width: auto; gap: var(--hh-space-3); }
.elementor .hh-way .hh-photo { aspect-ratio: 4 / 3; overflow: hidden; }
.elementor .hh-way--feature.e-con { grid-row: 1 / 3; }
.elementor .hh-way--feature .hh-photo { aspect-ratio: 3 / 2; }
.hh-way--feature .hh-photo img { object-position: center 35%; }
.elementor .hh-ways__grid > .hh-way.e-con:not(.hh-way--feature) {
	display: grid;
	grid-template-columns: 0.85fr 1.15fr;
	column-gap: var(--hh-space-4);
	row-gap: var(--hh-space-2);
	align-content: start;
}
.hh-ways__grid > .hh-way:not(.hh-way--feature) > .hh-photo { grid-row: 1 / 5; }
.elementor .hh-ways__grid > .hh-way:not(.hh-way--feature) .hh-photo { aspect-ratio: 1 / 1; }
.elementor .hh-way:not(.hh-way--feature) h3.elementor-heading-title { font-size: var(--hh-h4); }
.hh-way .elementor-widget-text-editor { color: var(--hh-muted); }
.hh-way .elementor-widget-button { align-self: start; }

/* ---------- Amenities ---------- */
.elementor .hh-amenities.e-con > .e-con-inner { gap: var(--hh-space-5); }
.elementor .hh-amenities__grid.e-con {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--hh-space-5) var(--hh-space-4);
}
.elementor .hh-amenity.e-con { width: auto; gap: var(--hh-space-2); }
.elementor .hh-amenity .hh-photo { aspect-ratio: 4 / 5; overflow: hidden; margin-bottom: var(--hh-space-2); }
.elementor .hh-amenity h3.elementor-heading-title { font-size: var(--hh-text-lg); font-family: var(--hh-font-body); font-weight: 600; color: var(--hh-ink); }
.hh-amenity .elementor-widget-text-editor { color: var(--hh-muted); font-size: var(--hh-text-sm); }

.hh-amenities__extras .elementor-icon-list-items {
	display: flex !important;
	flex-wrap: wrap;
	gap: var(--hh-space-2) var(--hh-space-3);
	margin: 0 !important;
}
.hh-amenities__extras .elementor-icon-list-item {
	margin: 0 !important;
	padding: 0.55em 1em !important;
	border: 1px solid var(--hh-line);
	border-radius: 999px;
	background: var(--hh-paper);
}
.hh-amenities__extras .elementor-icon-list-item::after { display: none !important; }
.hh-amenities__extras .elementor-icon-list-icon i { color: var(--hh-leaf); font-size: 0.8em; }
.hh-amenities__extras .elementor-icon-list-icon svg { fill: var(--hh-leaf); width: 0.8em; }
.hh-amenities__extras .elementor-icon-list-text { font-size: var(--hh-text-sm); color: var(--hh-ink); padding-left: 0.45em; }

/* ---------- Whakataukī band ---------- */
.elementor .hh-proverb.e-con { background-color: var(--hh-forest); text-align: center; }
.elementor .hh-proverb.e-con > .e-con-inner {
	align-items: center;
	gap: var(--hh-space-3);
	padding-block: var(--hh-space-7);
}
.elementor .hh-proverb .elementor-heading-title { color: var(--hh-paper); font-size: clamp(2rem, 1.4rem + 2.6vw, 3.6rem); }
.hh-proverb__translation,
.hh-proverb__translation p { color: var(--hh-gold-light); font-size: var(--hh-text-lg); margin-inline: auto; }
.hh-proverb__body,
.hh-proverb__body p { color: rgba(250, 247, 240, 0.78); max-width: 52ch; margin-inline: auto; }

/* ---------- Inner pages ---------- */
.elementor .hh-page-head.e-con > .e-con-inner {
	gap: var(--hh-space-3);
	padding-top: var(--hh-space-5);
	padding-bottom: var(--hh-space-4);
}
.hh-page-head .hh-lede { max-width: 60ch; }
.elementor .hh-page-head h1.elementor-heading-title { font-size: var(--hh-h2); }
.elementor .hh-booking-wrap.e-con > .e-con-inner { padding-bottom: var(--hh-space-7); }
.elementor .hh-included.e-con > .e-con-inner { gap: var(--hh-space-4); }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.elementor .hh-intro.e-con > .e-con-inner { flex-direction: column; align-items: stretch; }
	.elementor .hh-intro__text.e-con { width: 100%; }
	.elementor .hh-intro__media.e-con { grid-template-rows: repeat(10, 40px); }
	.elementor .hh-amenities__grid.e-con { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.elementor .hh-ways__grid.e-con { grid-template-columns: 1fr; }
	.elementor .hh-way--feature.e-con { grid-row: auto; }
}
@media (max-width: 767px) {
	.elementor .hh-scale__steps.e-con { grid-template-columns: 1fr 1fr; row-gap: var(--hh-space-5); }
	.hh-scale__step--1 { --hh-bar: 40px; }
	.hh-scale__step--2 { --hh-bar: 72px; }
	.hh-scale__step--3 { --hh-bar: 104px; }
	.hh-scale__step--4 { --hh-bar: 136px; }
	.elementor .hh-ways__grid > .hh-way.e-con:not(.hh-way--feature) { display: flex; }
	.elementor .hh-ways__grid > .hh-way:not(.hh-way--feature) .hh-photo { aspect-ratio: 4 / 3; }
	.elementor .hh-intro__media.e-con { grid-template-rows: repeat(10, 30px); }
}
@media (max-width: 480px) {
	.elementor .hh-amenities__grid.e-con { grid-template-columns: 1fr 1fr; gap: var(--hh-space-4) var(--hh-space-3); }
}

/* =========================================================================
   Inner pages
   ========================================================================= */

/* Photo beside text. Add hh-split--flip to put the photo on the right. */
.elementor .hh-split.e-con > .e-con-inner {
	flex-direction: row;
	align-items: center;
	gap: clamp(2rem, 6vw, 5.5rem);
}
.elementor .hh-split--flip.e-con > .e-con-inner { flex-direction: row-reverse; }
.elementor .hh-split__media.e-con { width: 48%; flex: 0 0 auto; }
.elementor .hh-split__media .hh-photo { aspect-ratio: 4 / 5; }
.elementor .hh-split__text.e-con { flex: 1 1 0; width: auto; gap: var(--hh-space-3); }
.hh-split__text .elementor-widget-text-editor { color: var(--hh-muted); }
.hh-split__text .elementor-widget-text-editor p { margin-bottom: 1em; }

/* Lists with a leaf marker, one item per line. */
.hh-list .elementor-icon-list-item { padding: 0.35em 0 !important; align-items: flex-start !important; }
.hh-list .elementor-icon-list-item::after { display: none !important; }
.hh-list .elementor-icon-list-icon { padding-top: 0.35em; }
.hh-list .elementor-icon-list-icon i { color: var(--hh-leaf); font-size: 0.8em; }
.hh-list .elementor-icon-list-icon svg { fill: var(--hh-leaf); width: 0.8em; }
.hh-list .elementor-icon-list-text { color: var(--hh-ink); padding-left: 0.55em; }
.hh-list--two .elementor-icon-list-items { columns: 2; column-gap: var(--hh-space-5); }
.hh-list--two .elementor-icon-list-item { break-inside: avoid; }

/* Packages: a quick comparison row, then one block per package. */
.elementor .hh-tiers.e-con {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--hh-space-3);
	margin-top: var(--hh-space-4);
}
.elementor .hh-tier.e-con {
	width: auto;
	gap: var(--hh-space-1);
	padding: var(--hh-space-4);
	border-top: 4px solid var(--hh-leaf);
	background: var(--hh-white);
	border-radius: 0 0 var(--hh-radius) var(--hh-radius);
}
.elementor .hh-tier--2.e-con { border-top-color: var(--hh-forest); }
.elementor .hh-tier--3.e-con { border-top-color: var(--hh-gold); }
.elementor .hh-tier h3.elementor-heading-title { font-size: var(--hh-h4); }
.hh-tier__size .elementor-heading-title {
	font-family: var(--hh-font-body);
	font-size: var(--hh-text-sm);
	font-weight: 600;
	color: var(--hh-gold-ink);
}
.hh-tier .elementor-widget-text-editor { color: var(--hh-muted); font-size: var(--hh-text-sm); }
.hh-tier .elementor-widget-button { margin-top: var(--hh-space-2); }

.elementor .hh-package.e-con > .e-con-inner { padding-block: var(--hh-space-6); }
.elementor .hh-package + .hh-package.e-con > .e-con-inner { border-top: 1px solid var(--hh-line); }
.hh-package__en .elementor-heading-title {
	font-family: var(--hh-font-body);
	font-size: var(--hh-text-lg);
	font-weight: 500;
	color: var(--hh-muted);
}
.hh-package__best,
.hh-package__best p {
	color: var(--hh-ink);
	padding-left: var(--hh-space-3);
	border-left: 3px solid var(--hh-gold);
}

/* Enquiry block: text beside the form. */
.elementor .hh-enquire.e-con > .e-con-inner {
	flex-direction: row;
	align-items: flex-start;
	gap: clamp(2rem, 5vw, 4.5rem);
}
.elementor .hh-enquire__text.e-con { width: 34%; flex: 0 0 auto; gap: var(--hh-space-3); }
.elementor .hh-enquire__form.e-con { flex: 1 1 0; width: auto; }
.hh-enquire__text .elementor-widget-text-editor { color: var(--hh-muted); }
.hh-enquire__text a { color: var(--hh-forest); font-weight: 600; }

/* Contact */
.hh-contact-details .elementor-widget-text-editor p { margin-bottom: 0.4em; }
.hh-contact-details a { color: var(--hh-forest); font-weight: 600; text-decoration: none; }
.hh-contact-details a:hover { text-decoration: underline; }
.hh-map iframe { display: block; width: 100%; min-height: 280px; border: 0; border-radius: var(--hh-radius-lg); filter: saturate(0.85); }

/* Long-form text such as terms and policies. */
.elementor .hh-prose-wrap.e-con > .e-con-inner { padding-bottom: var(--hh-space-7); }
.hh-prose { max-width: 72ch; }
.hh-prose h2 {
	margin: 2.2em 0 0.6em;
	font-size: var(--hh-h4);
}
.hh-prose h2:first-child { margin-top: 0; }
.hh-prose p,
.hh-prose li { color: var(--hh-ink); }
.hh-prose ul { margin: 0 0 1em 1.2em; }
.hh-prose li { margin-bottom: 0.3em; }

@media (max-width: 1024px) {
	.elementor .hh-split.e-con > .e-con-inner,
	.elementor .hh-split--flip.e-con > .e-con-inner,
	.elementor .hh-enquire.e-con > .e-con-inner { flex-direction: column; align-items: stretch; }
	.elementor .hh-split__media.e-con,
	.elementor .hh-enquire__text.e-con { width: 100%; }
	.elementor .hh-split__media .hh-photo { aspect-ratio: 4 / 3; }
	.elementor .hh-tiers.e-con { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
	.hh-list--two .elementor-icon-list-items { columns: 1; }
}
