/* Events surfaces share the destination V3 palette and typography. */
body.haven-events {
	--elv-earth: #1E1A14;
	--elv-earth-70: rgba(30, 26, 20, .78);
	--elv-sand: #C4A078;
	--elv-sand-light: #E8D9C4;
	--elv-terra-contrast: #9B4B3B;
	--elv-linen: #FAF7F1;
	--elv-display: 'Cormorant Garamond', Georgia, serif;
	--elv-body: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
body.haven-events .haven-events-main {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0 0 4rem;
	background: var(--elv-linen);
	color: var(--elv-earth);
	font: 1rem/1.75 var(--elv-body);
}
body.haven-events .haven-events-main [hidden] { display: none !important; }
body.haven-events .haven-events-main a { color: var(--elv-terra-contrast); text-underline-offset: .2em; }
body.haven-events .haven-events-main :focus-visible { outline: 3px solid var(--elv-terra-contrast); outline-offset: 5px; }
body.haven-events .haven-events-shell { width: min(1120px, calc(100% - 3rem)); margin-inline: auto; }
body.haven-events .haven-events-section { padding-block: clamp(2rem, 5vw, 4rem); }
body.haven-events .haven-events-main h2 { font: 400 clamp(2rem, 4vw, 3.2rem)/1.15 var(--elv-display); margin: 0 0 1.5rem; }
body.haven-events .haven-events-main h3 { font: 400 1.8rem/1.2 var(--elv-display); margin: 0 0 1rem; }
body.haven-events .haven-events-main h4 { font: 700 1.05rem/1.5 var(--elv-body); margin: 0 0 .5rem; }
body.haven-events .haven-events-main p { margin: 0 0 1rem; }
/* Include the paragraph and main selectors to beat the general paragraph margin. */
body.haven-events .haven-events-main p.haven-events-intro { max-width: 48rem; font-size: 1.15rem; margin: 0 0 3rem; }
body.haven-events .haven-events-main p.haven-events-intro + h2 { margin-top: 0; }
body.haven-events .elv-dest-hero {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: min(72vh, 800px);
	padding: 4rem 1.5rem;
	text-align: center;
	color: #fff;
	background: var(--elv-earth);
	overflow: hidden;
}
body.haven-events .elv-dest-hero__bg,
body.haven-events .elv-dest-hero__overlay { position: absolute; inset: 0; z-index: -1; }
body.haven-events .elv-dest-hero__img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Earth gradient: the .627 band spans 8% to 92%, covering the eyebrow, title
 * and subtitle even with four title lines. White on a white photo: 4.9745:1.
 * Lighter top and bottom edges keep the photograph visible. */
body.haven-events .elv-dest-hero__overlay {
	background: linear-gradient(180deg,
		rgba(30, 26, 20, .209) 0%,
		rgba(30, 26, 20, .627) 8%,
		rgba(30, 26, 20, .627) 92%,
		rgba(30, 26, 20, .323) 100%);
}
body.haven-events .elv-dest-hero__inner { width: 100%; max-width: 1080px; margin-inline: auto; padding-block: 2.5rem; }
body.haven-events .elv-dest-hero__eyebrow { font: 700 .75rem/1.6 var(--elv-body); letter-spacing: .3em; text-transform: uppercase; color: #fff; margin-bottom: 1.5rem; }
body.haven-events .elv-dest-hero__title { font: 400 clamp(2.75rem, 7.5vw, 7rem)/1.02 var(--elv-display); letter-spacing: -.01em; color: #fff; margin: 0; overflow-wrap: break-word; }
body.haven-events .elv-dest-hero__rule { display: flex; justify-content: center; align-items: center; gap: 14px; width: 200px; margin: 2rem auto 1.5rem; color: var(--elv-sand); }
body.haven-events .elv-dest-hero__rule-line { height: 1px; flex: 1; background: var(--elv-sand); }
body.haven-events .elv-dest-hero__subtitle { font: 400 clamp(1.3rem, 2.4vw, 1.8rem)/1.4 var(--elv-display); color: #fff; }
body.haven-events .haven-events-photo-caption { max-width: calc(100% - 3rem); padding: .4rem .7rem; background: #1E1A14; color: #fff; font-size: .8rem; }
body.haven-events .haven-events-breadcrumbs { padding-block: 1.25rem; font-size: .8rem; }
/* Inline separators stay with their crumb when the list wraps naturally. */
body.haven-events .haven-events-breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 0; padding: 0; margin: 0; list-style: none; }
/* The theme's global li margin would lift every crumb but the last. */
body.haven-events .haven-events-breadcrumbs li { display: flex; align-items: center; min-width: 0; max-width: 100%; min-height: 44px; margin: 0; overflow-wrap: anywhere; }
body.haven-events .haven-events-breadcrumbs a { display: inline-flex; align-items: center; min-height: 44px; }
body.haven-events .haven-events-breadcrumbs li + li::before { content: '/'; display: inline-block; flex: 0 0 auto; align-self: center; margin-inline: .5rem; color: var(--elv-earth-70); }
body.haven-events .haven-events-breadcrumbs a:focus-visible { outline-offset: -2px; }
body.haven-events .haven-events-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1.5rem; }
body.haven-events .haven-events-stays { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
body.haven-events .haven-events-card { border: 1px solid var(--elv-sand); background: #fff; }
body.haven-events .haven-events-card > a { display: block; height: 100%; color: var(--elv-earth); text-decoration: none; }
body.haven-events .haven-events-card > a:hover h3 { text-decoration: underline; text-underline-offset: .2em; }
body.haven-events .haven-events-card img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
body.haven-events .haven-events-card__body { padding: 1.5rem; }
body.haven-events .haven-events-stay { background: #fff; border: 1px solid var(--elv-sand-light); }
body.haven-events .haven-events-stay > a { display: block; height: 100%; text-decoration: none; color: var(--elv-earth); }
body.haven-events .haven-events-stay > a:hover h3 { text-decoration: underline; text-underline-offset: .2em; }
body.haven-events .haven-events-stay img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
body.haven-events .haven-events-stay__body { padding: 1.5rem; }
body.haven-events .haven-events-stay__body h3 { font-size: 1.6rem; }
body.haven-events .haven-events-stay__body ul { display: flex; flex-wrap: wrap; gap: .25rem 1rem; list-style: none; margin: 0; padding: 0; font-size: .9rem; }
body.haven-events .haven-events-month { margin-top: 2.5rem; }
body.haven-events .haven-events-calendar { list-style: none; padding: 0; margin: 0; }
body.haven-events .haven-events-calendar > li { padding: 1.5rem 0; border-top: 1px solid var(--elv-sand); }
body.haven-events .haven-events-calendar > li p { margin-bottom: .35rem; }
body.haven-events .haven-events-calendar--compact > li { padding-block: .5rem; }
body.haven-events .haven-events-dates { margin-bottom: .35rem; }
body.haven-events .haven-events-dates details { margin-block: .5rem; }
body.haven-events .haven-events-dates summary { cursor: pointer; }
body.haven-events .haven-events-status { font-size: .85rem; color: var(--elv-earth-70); }
body.haven-events .haven-events-notice { border-left: 3px solid var(--elv-terra-contrast); background: var(--elv-sand-light); padding: 1rem 1.25rem; margin-block: 1rem; color: var(--elv-earth); }
body.haven-events .haven-events-notice p:last-child { margin-bottom: 0; }
body.haven-events .haven-events-guide { padding-top: 2rem; }
body.haven-events .haven-events-byline { color: var(--elv-earth-70); font-size: .9rem; }
body.haven-events .haven-events-facts { max-width: 56rem; padding: clamp(1.25rem, 3vw, 2.5rem); background: var(--elv-sand-light); margin-block: 2rem 3rem; }
body.haven-events .haven-events-facts dl { margin: 0; }
body.haven-events .haven-events-facts dl > div { display: grid; grid-template-columns: minmax(7rem, 1fr) 3fr; gap: 1rem; padding-block: .75rem; border-top: 1px solid rgba(30,26,20,.2); }
body.haven-events .haven-events-facts dt { font-weight: 700; }
body.haven-events .haven-events-facts dd { margin: 0; }
/* Fact-box links on sand-light: earth is 12.49:1, terra-contrast only 4.38:1 (PL-05b). */
body.haven-events .haven-events-facts dd a { color: var(--elv-earth); }
body.haven-events .haven-events-guide-section { margin-block: 3rem; scroll-margin-top: 7rem; }
body.haven-events .haven-events-guide-section > p,
body.haven-events .haven-events-guide-section > ul,
body.haven-events .haven-events-guide-section > ol { max-width: 48rem; }
/* Links inside running text are told apart from it by more than colour (WCAG 1.4.1, axe link-in-text-block). */
body.haven-events .haven-events-guide-section p a,
body.haven-events .haven-events-guide-section li a,
body.haven-events .haven-events-section p a,
body.haven-events .haven-events-facts dd a { text-decoration: underline; text-underline-offset: .2em; }
/* The wrapper is the one scroll region: a theme rule that makes tables scroll on narrow screens would add a second, unfocusable one. */
body.haven-events .haven-events-table-scroll table { display: table; overflow: visible; }
body.haven-events .haven-events-table-scroll { max-width: 100%; overflow-x: auto; margin-block: 1.5rem; }
body.haven-events .haven-events-table-scroll table { width: 100%; border-collapse: collapse; background: #fff; }
body.haven-events .haven-events-table-scroll th,
body.haven-events .haven-events-table-scroll td { padding: .75rem 1rem; border: 1px solid var(--elv-sand); text-align: left; vertical-align: top; min-width: 9rem; }
body.haven-events .haven-events-table-scroll thead { background: var(--elv-sand-light); }
body.haven-events .haven-events-handoff { padding: 1.5rem; border: 1px solid var(--elv-sand); }
body.haven-events .haven-events-handoff ul { list-style: none; padding: 0; margin: 0 0 1rem; }
body.haven-events .haven-events-handoff li + li { margin-top: 1.25rem; }
body.haven-events .haven-events-handoff a { display: inline-block; padding: .65rem 1rem; margin: .25rem .5rem .25rem 0; background: var(--elv-earth); color: #fff; text-decoration: underline; }
body.haven-events .haven-events-handoff span { display: inline-block; }
body.haven-events .haven-events-handoff p:last-child { margin-bottom: 0; font-size: .9rem; }
body.haven-events .hvm-form { max-width: 34rem; padding: 1.5rem; background: #fff; border: 1px solid var(--elv-sand); }
body.haven-events .hvm-form label { display: block; color: var(--elv-earth); }
body.haven-events .hvm-form input:not([type='checkbox']) { width: 100%; min-height: 44px; padding: .6rem; color: var(--elv-earth); background: #fff; border: 1px solid #746A5E; }
body.haven-events .hvm-form button { min-height: 44px; padding: .65rem 1.25rem; border: 1px solid var(--elv-earth); background: var(--elv-earth); color: #fff; font: 700 1rem/1.5 var(--elv-body); cursor: pointer; }
body.haven-events .hvm-form__check { display: flex; align-items: flex-start; gap: .65rem; margin-block: 1rem; }
body.haven-events .hvm-form__check input { margin-top: .45rem; width: 1.1rem; height: 1.1rem; flex-shrink: 0; }
body.haven-events .hvm-form [data-hvm-error] { color: #8C291F; }
body.haven-events .haven-events-research { max-width: 54rem; border-top: 1px solid var(--elv-sand); padding-top: 2rem; margin-top: 3rem; font-size: .95rem; }
body.haven-events .haven-events-research h2 { font-size: 2rem; }
@media (max-width: 1024px) {
	body.haven-events .haven-events-stays { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
	body.haven-events .haven-events-stays { grid-template-columns: repeat(1, minmax(0, 1fr)); }
	body.haven-events .haven-events-main p.haven-events-intro { margin-bottom: 2rem; }
	body.haven-events .haven-events-shell { width: calc(100% - 2rem); }
	body.haven-events .elv-dest-hero { min-height: 28rem; padding-inline: 1rem; }
	body.haven-events .elv-dest-hero__eyebrow { letter-spacing: .18em; }
	body.haven-events .haven-events-facts dl > div { grid-template-columns: 1fr; gap: .25rem; }
}
