@charset "utf-8";
/* CSS Document */

/* Generic link / button styles — shared across components.
   ACF radio values first|second|third|fourth → .linkStyle-{value}.
   Colours map to the six global tokens; re-map per client in overrides.css. */
.linkStyle
{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	padding:14px 28px;
	border-radius:999px;
	font-family:var(--font-body);
	font-size:16px;
	line-height:1.4;
	text-align:center;
	text-decoration:none;
	transition:opacity .2s ease;
}
.linkStyle:hover,
.linkStyle:focus-visible
{
	opacity:.85;
}
.linkStyle-first  { background-color:var(--color-dark);            color:var(--color-white); }
.linkStyle-second { background-color:var(--color-brand-secondary); color:var(--color-white); }
.linkStyle-third  { background-color:var(--color-brand);           color:var(--color-white); }
.linkStyle-fourth { background-color:var(--color-light);           color:var(--color-dark);  }

/* <picture class="respPicture"> (component-rules.md, responsive images): the wrapper makes no box,
   so the <img> stays the grid/flex item and existing img rules keep working. */
picture.respPicture { display:contents; }
/* display:contents promotes the <source>s too: in a grid/flex parent each becomes an empty item (an extra cell + gap). */
picture.respPicture > source { display:none; }

.header_global_component_01
{
position:fixed;
	z-index:999;
	left:0;
	right:0;
	top:0;
}
.header_global_component_01::before
{
	position:absolute;
	top:0;
	right:0;
	left:0;
	height:120px;
	background: linear-gradient(0deg,rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%);
	display:block;
	content:" ";
	opacity:0.9;
	pointer-events: none;
}
.header_global_component_01 .header_global_component_inner_01
{
	padding:20px;
	position:relative;
	z-index:2;
}
	.header_global_component_inner_01 .navController
	
	{
		position:absolute;
		top:30px;
		right:30px;
	}
.header_global_component_inner_01 .brand
{
	position:absolute;
	left:20px;
	top:30px;
	z-index:4;
}
.header_global_component_inner_01 .brand img
{
        max-width: 100px;
		transition:all ease-out 0.4s;
		width:100%;
	height:auto;
}
.header_global_component_inner_01 .flx
{
	
	
	transition:all ease-out 0.4s;
}

.header_global_component_inner_01 .menuBurger,
.header_global_component_inner_01 .bookButton,
.header_global_component_inner_01 .langSwitch
{
	display:inline-block;
	vertical-align:middle;
}

.header_global_component_inner_01 .bookButton
{
	margin-right:15px;
}
.header_global_component_inner_01 .bookButton a
{
	display:block;
	padding: 8px 18px;
	border-radius:24px;
	
}
.header_global_component_01 .bookButtonInMenu a
{
	
    display: inline-block;
    padding: 10px 18px;
    border-radius: 24px;
}
.header_global_component_inner_01 .menuBurger a
{
	
	position:relative;
	display:block;
	min-height:30px;
	min-width:30px;
	
}
.header_global_component_inner_01 .menuBurger a .label
{
padding:12px 0 12px 0;
	height:24px;
	display:none
}

.header_global_component_inner_01 .menuBurger a span.top
{
		position:absolute;
	width:40px;
	
	
	top:0;
	right:0;
}
.header_global_component_inner_01 .menuBurger a span.middle
{
		position:absolute;
	width:40px;
	
	
	top:50%;
	right:0;
	transform:translateY(-50%);
}
.header_global_component_inner_01 .menuBurger a span.bottom
{
		position:absolute;
	width:40px;
	
	
	bottom:0;
	right:0;
}
/* Burger strokes — the three spans are positioned above; this draws them. */
.header_global_component_inner_01 .menuBurger a span.top,
.header_global_component_inner_01 .menuBurger a span.middle,
.header_global_component_inner_01 .menuBurger a span.bottom
{
	display:block;
	height:0;
	border-top:2px solid var(--color-light);
}
.header_global_component_01 .navOverlay 
	{
		position:fixed;
		top:0;
		left:0;
		right:0;
		bottom:0;
		z-index:999;
		display:none;
		padding:80px 30px 40px 30px;
	}

.header_global_component_01  .navOverlayInner
{
flex:1 0 100%;
}
 .navOverlayInner .menuLeft
{
	padding-bottom:50px;
}
 .navOverlayInner .menuLeft,
.navOverlayInner .menuRight
{
	flex:1 0 100%;
}
		.header_global_component_01 .navOverlay .navCloser
	{
		position:absolute;
		top:20px;
		right:20px;
		z-index:2;
	}
	.header_global_component_01 .navOverlay .navCloser a
	{
		display:block;
		width:40px;
		height:40px;
	}
	.header_global_component_01 .navOverlay.setInitial
	
	{
	display:block;
	opacity:0;
	}

.header_global_component_01 .socialChan
{
width:25px;
	height:25px;
}
.header_global_component_01 .navigationDesktop
{
	flex:1 0 100%;
	display:none;
	text-align:Center;
}
.header_global_component_01 .navigationDesktop ul
{
	list-style-type:none;
	list-style-position:inside;
	margin:0;
	padding:0;
	text-indent:0;
	
}
.header_global_component_01 .navigationDesktop ul li
{
	display:inline-block;
}
.header_global_component_01 .navigationDesktop ul li a
{
	display:block;
}

/* ---------- Nav Overlay ---------- */
.navOverlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 300;
    opacity: 0;
    visibility: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.navOverlay.setInitial { visibility: visible; opacity: 0; display:flex;}
.navOverlay.fadeIn     { visibility: visible; opacity: 1; transition: opacity 0.8s ease;display:flex; }
.navOverlay.setEnd     { visibility: visible; opacity: 1; display:flex;}
.navOverlay.fadeOut    { visibility: visible; opacity: 0; transition: opacity 0.8s ease; display:flex;}

.navCloser {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
 
}
.navCloser a {
    display: block;
    width: 32px;
    height: 32px;
    position: relative;
}
.navCloser a:before,
.navCloser a:after {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    height: 1px;
}
.navCloser a:before { transform: rotate(45deg); }
.navCloser a:after  { transform: rotate(-45deg); }

.navOverlayInner {
    display: flex;
	flex-wrap:wrap;
max-width:1200px;
	margin:0 auto;
	
}

.navOverlay .nav {
    list-style: none;
    margin: 0;
    padding: 0;
	text-indent:0;
}
.navOverlay .nav li a { display: block; }

.menuRight > div { margin-bottom: 32px; }
.menuRight > div:last-child { margin-bottom: 0; }

.social .inner { display: flex; gap: 16px; }
.socialChan .icon { display: block; width: 22px; }
.bookButtonInMenu a { display: inline-block; }
.header_global_component_01 .menuBrand img { display:block; width:150px; max-width:100%; height:auto; }

@media(min-width:768px){
	.header_global_component_01 .header_global_component_inner_01
	{
		padding-right:40px;
		padding-left:40px;
	}
	.header_global_component_inner_01 .brand
	{
		top:10px;
		left:30px;
		
	}
		.header_global_component_inner_01 .navController
	
	{

		top:20px;
		
	}
	.header_global_component_inner_01 .langSwitch
	{
		display:none;
	}

	.header_global_component_inner_01 .flx
	{
		
	}
	.scrolling .header_global_component_inner_01 .flx
	{
	
	}
	.header_global_component_inner_01 .navController
	{
		text-align:right;
	}
	.header_global_component_inner_01 .brand img
	{
		max-width:170px;
	}
	.navOverlay
	{
		display:flex;
		align-items:center;
	}
	 .navOverlayInner .menuLeft
	{
		padding-bottom:0;
	}
	.navOverlayInner .menuLeft,
	.navOverlayInner .menuRight
	{
		flex:1 0 50%;
	}

	
}

@media(min-width:992px){
		.header_global_component_inner_01 .brand img
	{
		max-width:200px;
	}
}

@media(min-width:1200px){
	
			.header_global_component_inner_01 .menuBurger
	{
		display:none;
	}

	.header_global_component_01 .navigationDesktop
	{
		display:block;
	}
	.header_global_component_01 .navOverlay { display: none!important; }
	
	
}

/* The component always outputs BOTH logo files (img.light / img.dark) and
   nothing hid one, so they stacked. Light is the default.

   Whether the dark logo takes over on scroll is a CLIENT decision, not a base
   one: it depends on whether that build's scrolled header goes light or dark.
   A build whose scrolled header is light adds this to overrides.css:
       body.scrolling .brand img.light { display:none; }
       body.scrolling .brand img.dark  { display:block; } */
.header_global_component_inner_01 .brand img.dark
{
	display:none;
}

/* Header text sits on the dark gradient / hero — light by default. Menu overlay gets a
   dark ground, a drawn close X, and a readable nav scale. Re-skin via tokens. */
.header_global_component_01
{
	color:var(--color-light);
}
.header_global_component_01 .navigationDesktop ul li a
{
	padding:0 14px;
	font-size:var(--size-small);
	letter-spacing:.06em;
}
.header_global_component_01 .navOverlay
{
	background-color:var(--color-dark);
	color:var(--color-light);
	padding:24px var(--gutter) 60px;
}
.header_global_component_01 .navCloser a::before,
.header_global_component_01 .navCloser a::after
{
	background-color:currentColor;
	height:2px;
}
.header_global_component_01 .navOverlay .nav li a
{
	font-family:var(--font-heading);
	font-size:var(--size-h2);
	line-height:1.3;
	padding:6px 0;
}
.header_global_component_01 .navOverlay .mHeader
{
	font-size:var(--size-mini);
	letter-spacing:.18em;
	text-transform:uppercase;
	opacity:.7;
	margin-bottom:10px;
}

/* Header 02 = header 01 with: no horizontal menu (burger at every width),
   a telephone link from 768 up, and an inverted solid ground once <body> gains
   the class "scrolling" (added by the theme's JS past the hero). */
.header_global_component_02
{
position:fixed;
	z-index:999;
	left:0;
	right:0;
	top:0;
}
.header_global_component_02::before
{
	position:absolute;
	top:0;
	right:0;
	left:0;
	height:120px;
	background: linear-gradient(0deg,rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%);
	display:block;
	content:" ";
	opacity:0.9;
	pointer-events: none;
}
.header_global_component_02 .header_global_component_inner_02
{
	padding:20px;
	position:relative;
	z-index:2;
}
	.header_global_component_inner_02 .navController
	
	{
		position:absolute;
		top:30px;
		right:30px;
	}
.header_global_component_inner_02 .brand
{
	position:absolute;
	left:20px;
	top:30px;
	z-index:4;
}
.header_global_component_inner_02 .brand img
{
        max-width: 100px;
		transition:all ease-out 0.4s;
		width:100%;
	height:auto;
}
.header_global_component_inner_02 .flx
{
	
	
	transition:all ease-out 0.4s;
}

.header_global_component_inner_02 .menuBurger,
.header_global_component_inner_02 .bookButton,
.header_global_component_inner_02 .langSwitch
{
	display:inline-block;
	vertical-align:middle;
}

.header_global_component_inner_02 .bookButton
{
	margin-right:15px;
}
.header_global_component_inner_02 .bookButton a
{
	display:block;
	padding: 8px 18px;
	border-radius:24px;
	
}
.header_global_component_02 .bookButtonInMenu a
{
	
    display: inline-block;
    padding: 10px 18px;
    border-radius: 24px;
}
.header_global_component_inner_02 .menuBurger a
{
	
	position:relative;
	display:block;
	min-height:30px;
	min-width:30px;
	
}
.header_global_component_inner_02 .menuBurger a .label
{
padding:12px 0 12px 0;
	height:24px;
	display:none
}

.header_global_component_inner_02 .menuBurger a span.top
{
		position:absolute;
	width:40px;
	
	
	top:0;
	right:0;
}
.header_global_component_inner_02 .menuBurger a span.middle
{
		position:absolute;
	width:40px;
	
	
	top:50%;
	right:0;
	transform:translateY(-50%);
}
.header_global_component_inner_02 .menuBurger a span.bottom
{
		position:absolute;
	width:40px;
	
	
	bottom:0;
	right:0;
}
/* Burger strokes — the three spans are positioned above; this draws them. */
.header_global_component_inner_02 .menuBurger a span.top,
.header_global_component_inner_02 .menuBurger a span.middle,
.header_global_component_inner_02 .menuBurger a span.bottom
{
	display:block;
	height:0;
	border-top:2px solid var(--color-light);
}
.header_global_component_02 .navOverlay 
	{
		position:fixed;
		top:0;
		left:0;
		right:0;
		bottom:0;
		z-index:999;
		display:none;
		padding:80px 30px 40px 30px;
	}

.header_global_component_02  .navOverlayInner
{
flex:1 0 100%;
}
 .navOverlayInner .menuLeft
{
	padding-bottom:50px;
}
 .navOverlayInner .menuLeft,
.navOverlayInner .menuRight
{
	flex:1 0 100%;
}
		.header_global_component_02 .navOverlay .navCloser
	{
		position:absolute;
		top:20px;
		right:20px;
		z-index:2;
	}
	.header_global_component_02 .navOverlay .navCloser a
	{
		display:block;
		width:40px;
		height:40px;
	}
	.header_global_component_02 .navOverlay.setInitial
	
	{
	display:block;
	opacity:0;
	}

.header_global_component_02 .socialChan
{
width:25px;
	height:25px;
}
.header_global_component_02 .navigationDesktop
{
	flex:1 0 100%;
	display:none;
	text-align:Center;
}
.header_global_component_02 .navigationDesktop ul
{
	list-style-type:none;
	list-style-position:inside;
	margin:0;
	padding:0;
	text-indent:0;
	
}
.header_global_component_02 .navigationDesktop ul li
{
	display:inline-block;
}
.header_global_component_02 .navigationDesktop ul li a
{
	display:block;
}

/* ---------- Nav Overlay ---------- */
.navOverlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 300;
    opacity: 0;
    visibility: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.navOverlay.setInitial { visibility: visible; opacity: 0; display:flex;}
.navOverlay.fadeIn     { visibility: visible; opacity: 1; transition: opacity 0.8s ease;display:flex; }
.navOverlay.setEnd     { visibility: visible; opacity: 1; display:flex;}
.navOverlay.fadeOut    { visibility: visible; opacity: 0; transition: opacity 0.8s ease; display:flex;}

.navCloser {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
 
}
.navCloser a {
    display: block;
    width: 32px;
    height: 32px;
    position: relative;
}
.navCloser a:before,
.navCloser a:after {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    height: 1px;
}
.navCloser a:before { transform: rotate(45deg); }
.navCloser a:after  { transform: rotate(-45deg); }

.navOverlayInner {
    display: flex;
	flex-wrap:wrap;
max-width:1200px;
	margin:0 auto;
	
}

.navOverlay .nav {
    list-style: none;
    margin: 0;
    padding: 0;
	text-indent:0;
}
.navOverlay .nav li a { display: block; }

.menuRight > div { margin-bottom: 32px; }
.menuRight > div:last-child { margin-bottom: 0; }

.social .inner { display: flex; gap: 16px; }
.socialChan .icon { display: block; width: 22px; }
.bookButtonInMenu a { display: inline-block; }
.header_global_component_02 .menuBrand img { display:block; width:150px; max-width:100%; height:auto; }

@media(min-width:768px){
	.header_global_component_02 .header_global_component_inner_02
	{
		padding-right:40px;
		padding-left:40px;
	}
	.header_global_component_inner_02 .brand
	{
		top:10px;
		left:30px;
		
	}
		.header_global_component_inner_02 .navController
	
	{

		top:20px;
		
	}
	.header_global_component_inner_02 .langSwitch
	{
		display:none;
	}

	.header_global_component_inner_02 .flx
	{
		
	}
	.scrolling .header_global_component_inner_02 .flx
	{
	
	}
	.header_global_component_inner_02 .navController
	{
		text-align:right;
	}
	.header_global_component_inner_02 .brand img
	{
		max-width:170px;
	}
	.navOverlay
	{
		display:flex;
		align-items:center;
	}
	 .navOverlayInner .menuLeft
	{
		padding-bottom:0;
	}
	.navOverlayInner .menuLeft,
	.navOverlayInner .menuRight
	{
		flex:1 0 50%;
	}

	
}

@media(min-width:992px){
		.header_global_component_inner_02 .brand img
	{
		max-width:200px;
	}
}

/* Burger shows at every width: no desktop menu in this variant, so the overlay is never hidden at 1200+. */
.header_global_component_02 .menuBurger
{
	display:inline-block;
}
/* Telephone: hidden on mobile, shown from tablet up. */
.header_global_component_02 .headerTel
{
	display:none;
}
.header_global_component_02 .headerTel a
{
	text-decoration:none;
	color:var(--color-light);
	letter-spacing:.14em;
	white-space:nowrap;
}
/* Scrolled state: solid ground, smaller logo, inverted booking button. */
body.scrolling .header_global_component_02
{
	position:fixed;
	background-color:var(--color-dark);
}
body.scrolling .header_global_component_02::before
{
	opacity:0;
}
body.scrolling .header_global_component_02 .brand img
{
	max-width:140px;
}
body.scrolling .header_global_component_02 .bookButton a
{
	background-color:var(--color-light);
	color:var(--color-dark);
}

@media(min-width:768px){
	.header_global_component_02 .headerTel
	{
		display:inline-block;
	}
}

@media(min-width:1200px){
	/* _01 hides the burger at 1200; this variant keeps it. */
	.header_global_component_02 .menuBurger
	{
		display:inline-block;
	}
}

/* The component always outputs BOTH logo files (img.light / img.dark) and
   nothing hid one, so they stacked. Light is the default.

   Whether the dark logo takes over on scroll is a CLIENT decision, not a base
   one: it depends on whether that build's scrolled header goes light or dark.
   A build whose scrolled header is light adds this to overrides.css:
       body.scrolling .brand img.light { display:none; }
       body.scrolling .brand img.dark  { display:block; } */
.header_global_component_inner_02 .brand img.dark
{
	display:none;
}

/* Header text sits on the dark gradient / hero — light by default. Menu overlay gets a
   dark ground, a drawn close X, and a readable nav scale. Re-skin via tokens. */
.header_global_component_02
{
	color:var(--color-light);
}
.header_global_component_02 .navigationDesktop ul li a
{
	padding:0 14px;
	font-size:var(--size-small);
	letter-spacing:.06em;
}
.header_global_component_02 .navOverlay
{
	background-color:var(--color-dark);
	color:var(--color-light);
	padding:24px var(--gutter) 60px;
}
.header_global_component_02 .navCloser a::before,
.header_global_component_02 .navCloser a::after
{
	background-color:currentColor;
	height:2px;
}
.header_global_component_02 .navOverlay .nav li a
{
	font-family:var(--font-heading);
	font-size:var(--size-h2);
	line-height:1.3;
	padding:6px 0;
}
.header_global_component_02 .navOverlay .mHeader
{
	font-size:var(--size-mini);
	letter-spacing:.18em;
	text-transform:uppercase;
	opacity:.7;
	margin-bottom:10px;
}

.global_footer_component_01 .topRow
{
padding:50px 30px;
}
.global_footer_component_01 .topRow .footerNewsletter
{
	max-width:768px;
	margin:0 auto;
	color:#fff;
}
.global_footer_component_01 .topRow .footerNewsletter .newsletterForm
{
	text-align:center;
}
.global_footer_component_01  .newsletterForm .gform_wrapper
{
	display:inline-block;
}
.global_footer_component_01 .bottomRow
{
	position:relative;
	
	
}
.global_footer_component_01 .bottomRowInner
{
	position:relative;
	z-index:2;
	max-width:1200px;
	margin:0 auto;
	padding:90px 30px;
}
.global_footer_component_01 .terminalRow
{
		position:relative;
	z-index:2;
	max-width:1200px;
	margin:0 auto;
	padding:20px 30px 120px 30px;
	
	color:var(--color-light);
}
.global_footer_component_01 .terminalRow::before
{
	left:30px;
	right:30px;
	top:0;
	content:" ";
	display:block;
	position:absolute;
border-top:1px solid var(--color-light);	
}
.global_footer_component_01 .terminalRow a
{
	color:var(--color-light);
}
.global_footer_component_01 .terminalRow .left,
.global_footer_component_01 .terminalRow .center,
.global_footer_component_01 .terminalRow .right
{
	flex:1 0 100%;
	text-align:center;
	padding-bottom:20px;
}
.global_footer_component_01 .rp
{
	padding-top:20px;
}

.global_footer_component_01 .footerBrand,
	.global_footer_component_01 .footerMenuCols 
{
	flex:1 0 100%;
	text-align:Center;
}
.global_footer_component_01 .footerBrand
{
	padding-bottom:40px;
}
.global_footer_component_01 .footerBrand img
{
	display:inline-block;
}
.global_footer_component_01 .footerMenuCols .col
{
	text-align:Center;
	padding-bottom:40px;
	flex:1 0 100%;
}

@media(min-width:768px){
	.global_footer_component_01 .bottomRowInner
{

	padding:100px 30px;
}
	

	.global_footer_component_01 .footerMenuCols .col
	{
		flex:1 0 33.333%;
		
	}
	.global_footer_component_01 .terminalRow .left,
.global_footer_component_01 .terminalRow .center,
.global_footer_component_01 .terminalRow .right
	{
		flex:1 0 50%;
	}
	.global_footer_component_01 .terminalRow .left
	{
		text-align:left;
	}
	.global_footer_component_01 .terminalRow .center
	{
		text-align:right;
	}
	.global_footer_component_01 .terminalRow .right
	{
		text-align:center;
	}
}

@media(min-width:992px){
	.global_footer_component_01 .bottomRowInner
{

	padding:170px 30px;
}
		.global_footer_component_01 .footerBrand
	{
		flex:1 0 25%;
		text-align:left;
		padding-bottom:0;
	}
	.global_footer_component_01 .footerMenuCols 
	{
		flex:1 0 75%;
		text-align:left;
	}
	.global_footer_component_01 .footerMenuCols .col
	{
	text-align:left;	
	}
	
		.global_footer_component_01 .terminalRow .left,
.global_footer_component_01 .terminalRow .center,
.global_footer_component_01 .terminalRow .right
	{
		flex:1 0 33.333%;
	}
	.global_footer_component_01 .terminalRow .left
	{
		text-align:left;
	}
	.global_footer_component_01 .terminalRow .center
	{
		text-align:center;
	}
	.global_footer_component_01 .terminalRow .right
	{
		text-align:right;
	}
}

/* Footer 02 — minimal legal bar.
   Structural only: no applied colour, no type scale (overrides own those).
   Mobile: stacked and centred. From 768: one row, space-between. */

.global_footer_component_02
{
	position:relative;
}
.global_footer_component_02 .global_footer_component_02_inner
{
	width:100%;
	max-width:1200px;
	margin:0 auto;
	padding:30px 20px;
	display:flex;
	flex-direction:column;
	align-items:center;
	text-align:center;
	gap:16px;
}
.global_footer_component_02 .footerBrand a
{
	display:block;
}
.global_footer_component_02 .footerBrand img
{
	display:block;
	width:auto;
}
.global_footer_component_02 .footerLegal ul
{
	list-style:none;
	margin:0;
	padding:0;
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
	gap:18px;
}
.global_footer_component_02 .footerLegal a
{
	text-decoration:none;
}

@media(min-width:768px){
	.global_footer_component_02 .global_footer_component_02_inner
	{
		flex-direction:row;
		justify-content:space-between;
		text-align:left;
		gap:24px;
	}
	.global_footer_component_02 .footerLegal ul
	{
		justify-content:flex-start;
		flex-wrap:nowrap;
	}
}

.hero_global_component_01
{
height:100vh;
min-height:650px;
	position:relative;
}

.hero_global_component_inner_01
{
	position:relative;
	display:flex;
	align-items:center;
	width:100%;
	height:100%;
}
.hero_global_component_inner_01 .heroMessage h1
{

	margin:15px 0;
	padding:15px 0;
	line-height:1.1;
}
.hero_global_component_inner_01 .heroMessage
{
	text-align:center;
	padding:0 20px;

	flex:1 0 100%;
	position:relative;
	z-index:2;
}

.hero_global_component_01 .heroVisual
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:1;
	display:block;
	overflow:hidden;
}
/* Hero image: <picture class="heroVisual"> (image hero) or img.heroStill (video hero), filling the box like background-size:cover. */
.hero_global_component_01 .heroVisual img
{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	object-fit:cover;
	object-position:center center;
	display:block;
	z-index:0;
}
.hero_global_component_01 .heroVisual::before{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	display:block;
	content:" ";
	background-color:#000;
	opacity:0.3;
	z-index:1; /* scrim above the image */
}
.hero_global_component_01 .heroVisual video
{
position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
	display:block;
	z-index:2; /* video above the scrim, as before */
}
.hero_global_component_01 .heroLinks .discoverLink a
{
	display:block;
}

.hero_global_component_01 .availabilitySelector
{
	max-width:600px;
	width:100%;
	margin:0 15px;
display:none;
}

.hero_global_component_01 .heroScrollDown
{
	display:none;
}

@media(min-width:768px){
	.hero_global_component_01.minimized
{
height:600px;
	min-height:600px;
}
	.hero_global_component_01 .guestsSelection { position: relative; cursor: pointer; }
.hero_global_component_01 .guestsDropdown { display: none; position: absolute; bottom: calc(100% + 10px); left: 50%; transform:translateX(-50%); padding: 16px; min-width: 200px; z-index: 9999; }
.hero_global_component_01 .guestsSelection.open .guestsDropdown { display: block; }
.hero_global_component_01 .guestsRow { display: flex; align-items: center; justify-content: space-between; }
.hero_global_component_01 .guestsCounter { display: flex; align-items: center; gap: 12px; }
.hero_global_component_01 .guestsMinus, .guestsPlus { width: 28px; height: 28px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.hero_global_component_01 .guestsCount { min-width: 20px; text-align: center; }
	
	
		.hero_global_component_01 .promoCode { position: relative; cursor: pointer; }
.hero_global_component_01 .promoDropdown { display: none; position: absolute; bottom: calc(100% + 12px); left: 50%; transform:translateX(-50%); padding: 16px; min-width: 200px; z-index: 9999; }
.hero_global_component_01 .promoCode.open .promoDropdown { display: block; }
.hero_global_component_01 .promoRow { display: flex; }
.hero_global_component_01 .promoInput { width: 100%; border: none; outline: none; font-size: 14px; }
	.hero_global_component_01 .heroVisual video
	{
		display:block;
	}
	.hero_global_component_01 .availabilitySelector
	{
		display:block;
	z-index:199;
		position:fixed;
		left:50%;
		bottom:40px;
		transform:translateX(-50%);
	}
	.hero_global_component_01 .availabilitySelector.following
	{
	position:fixed;	
	}
	.hero_global_component_01 .heroScrollDown
	{
		display:block;
		position:absolute;
		left:40px;
		bottom:40px;
		z-index:3;
	}
	.hero_global_component_01 .heroScrollDown a
	{
		display:block;
	}
}

/* Hero 02 = hero 01 + a facts row across the bottom (repeater hero_facts).
   Selectors mirror _01; only the .heroFacts block below is new. */
.hero_global_component_02
{
height:100vh;
min-height:650px;
	position:relative;
}

.hero_global_component_inner_02
{
	position:relative;
	display:flex;
	align-items:center;
	width:100%;
	height:100%;
}
.hero_global_component_inner_02 .heroMessage h1
{

	margin:15px 0;
	padding:15px 0;
	line-height:1.1;
}
.hero_global_component_inner_02 .heroMessage
{
	text-align:center;
	padding:0 20px;

	flex:1 0 100%;
	position:relative;
	z-index:2;
}

.hero_global_component_02 .heroVisual
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:1;
	display:block;
	overflow:hidden;
}
/* Hero image: <picture class="heroVisual"> (image hero) or img.heroStill (video hero), filling the box like background-size:cover. */
.hero_global_component_02 .heroVisual img
{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	object-fit:cover;
	object-position:center center;
	display:block;
	z-index:0;
}
.hero_global_component_02 .heroVisual::before{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	display:block;
	content:" ";
	background-color:#000;
	opacity:0.3;
	z-index:1; /* scrim above the image */
}
.hero_global_component_02 .heroVisual video
{
position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
	display:block;
	z-index:2; /* video above the scrim, as before */
}
.hero_global_component_02 .heroLinks .discoverLink a
{
	display:block;
}

.hero_global_component_02 .availabilitySelector
{
	max-width:600px;
	width:100%;
	margin:0 15px;
display:none;
}

.hero_global_component_02 .heroScrollDown
{
	display:none;
}

@media(min-width:768px){
	.hero_global_component_02.minimized
{
height:600px;
	min-height:600px;
}
	.hero_global_component_02 .guestsSelection { position: relative; cursor: pointer; }
.hero_global_component_02 .guestsDropdown { display: none; position: absolute; bottom: calc(100% + 10px); left: 50%; transform:translateX(-50%); padding: 16px; min-width: 200px; z-index: 9999; }
.hero_global_component_02 .guestsSelection.open .guestsDropdown { display: block; }
.hero_global_component_02 .guestsRow { display: flex; align-items: center; justify-content: space-between; }
.hero_global_component_02 .guestsCounter { display: flex; align-items: center; gap: 12px; }
.hero_global_component_02 .guestsMinus, .guestsPlus { width: 28px; height: 28px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.hero_global_component_02 .guestsCount { min-width: 20px; text-align: center; }
	
	
		.hero_global_component_02 .promoCode { position: relative; cursor: pointer; }
.hero_global_component_02 .promoDropdown { display: none; position: absolute; bottom: calc(100% + 12px); left: 50%; transform:translateX(-50%); padding: 16px; min-width: 200px; z-index: 9999; }
.hero_global_component_02 .promoCode.open .promoDropdown { display: block; }
.hero_global_component_02 .promoRow { display: flex; }
.hero_global_component_02 .promoInput { width: 100%; border: none; outline: none; font-size: 14px; }
	.hero_global_component_02 .heroVisual video
	{
		display:block;
	}
	.hero_global_component_02 .availabilitySelector
	{
		display:block;
	z-index:199;
		position:fixed;
		left:50%;
		bottom:40px;
		transform:translateX(-50%);
	}
	.hero_global_component_02 .availabilitySelector.following
	{
	position:fixed;	
	}
	.hero_global_component_02 .heroScrollDown
	{
		display:block;
		position:absolute;
		left:40px;
		bottom:40px;
		z-index:3;
	}
	.hero_global_component_02 .heroScrollDown a
	{
		display:block;
	}
}

/* Facts row: pinned to the bottom of the hero, above the visual and scrim. */
.hero_global_component_02 .heroFacts
{
	position:absolute;
	left:0;
	right:0;
	bottom:0;
	z-index:2;
}
.hero_global_component_02 .heroFacts ul
{
	list-style:none;
	margin:0 auto;
	padding:20px;
	max-width:1360px;
	display:flex;
	justify-content:center;
	flex-wrap:wrap;
	gap:0;
}
.hero_global_component_02 .heroFacts li
{
	font-size:13px;
	letter-spacing:.24em;
	text-transform:uppercase;
	color:var(--color-light);
	opacity:.8;
	padding:5px 14px;
}

@media(min-width:768px){
	.hero_global_component_02 .heroFacts ul
	{
		padding:26px 20px;
	}
	.hero_global_component_02 .heroFacts li
	{
		padding:0 28px;
	}
}

.flexible_introduction_component_01
{
	padding:0 20px;
}
.flexible_introduction_component_01 .flexible_introduction_component_inner_01
{
	padding:50px 0;
	text-align:Center;
}

.global_split_feature_component_01
{
    padding:50px 20px;
}
.global_split_feature_component_01_inner .left,
.global_split_feature_component_01_inner .right
{
    flex:1 0 100%;
}
.global_split_feature_component_01_inner .splitImage
{
    position:relative;
    overflow:hidden;
}
.global_split_feature_component_01_inner .splitSymbol
{
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%, -50%);
    width:50%;
}
.global_split_feature_component_01_inner .right
{
    padding-top:30px;
}
.global_split_feature_component_01_inner .miniTitle
{
    position:relative;
    padding-left:16px;
}
.global_split_feature_component_01_inner .miniTitle::before
{
    content:"•";
    position:absolute;
    left:0;
    top:0;
}

@media(min-width:768px){
	 .global_split_feature_component_01_inner .left,
    .global_split_feature_component_01_inner .right
    {
        flex:1 0 50%;
    }

    .global_split_feature_component_01_inner
    {
        gap:40px;
        align-items:center;
    }
    .global_split_feature_component_01_inner.rev
    {
        flex-direction:row-reverse;
    }
    .global_split_feature_component_01_inner .right
    {
        padding-top:0;
    }
}

@media(min-width:992px){
	.global_split_feature_component_01_inner
    {
        gap:60px;
    }
}

@media(min-width:1200px){
	.global_split_feature_component_01_inner
    {
        gap:80px;
    }
}

.global_image_slider_component_01
{
    padding:50px 0;
}
.global_image_slider_component_01_inner .sliderHead
{
    padding:0 20px;
    text-align:center;
    margin-bottom:30px;
}
.global_image_slider_component_01_inner .sld .inner
{
    width:260px;
    padding:0 8px;
}

.global_image_slider_component_01_inner .sld .slideImage
{
    position:relative;
    overflow:hidden;
    border-radius:12px;
}
.global_image_slider_component_01_inner .sld .slideLink
{
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
}

@media(min-width:768px){
	.global_image_slider_component_01_inner .sld .inner
    {
        width:340px;
    }
}

@media(min-width:992px){
	
	 .global_image_slider_component_01_inner .sld .inner
    {
        width:400px;
    }
	
}

@media(min-width:1200px){
	
	    .global_image_slider_component_01_inner .sld .inner
    {
        width:440px;
    }
}

.flexible_feature_cards_slider_component_01
{
	overflow:hidden;
	padding:50px 0;
}
.flexible_feature_cards_slider_component_01 .featureCardHeader
{
	padding:0 20px 40px 20px;
	text-align:Center;
}
.flexible_feature_cards_slider_component_01 .swiper-slide {
    width: auto;
}
.flexible_feature_cards_slider_component_01 .sld .inner
{
	width:86vw;

}
.flexible_feature_cards_slider_component_01 .sld .inner a
{
	position:relative;
}
.flexible_feature_cards_slider_component_01 .sld .cardData{
	position: absolute;
    bottom: 15px;
    left: 15px;
	right:15px;
    z-index: 5;

}
.flexible_feature_cards_slider_component_01 .sld .cardDataInner
{
max-width:380px;	
}

@media(min-width:768px){

.flexible_feature_cards_slider_component_01 .sld .inner
{
	 width:340px;
}
	.flexible_feature_cards_slider_component_01.squared .sld .inner
	{
	width:400px;	
	}
}

@media(min-width:992px){

.flexible_feature_cards_slider_component_01 .sld .inner
{
	 width:380px;
}
		.flexible_feature_cards_slider_component_01.squared .sld .inner
	{
	width:480px;	
	}
	.flexible_feature_cards_slider_component_01 .sld .cardData{

    bottom: 20px;
    left: 20px;
	right:20px;
 

}
}

@media(min-width:1200px){
		.flexible_feature_cards_slider_component_01.squared .sld .inner
	{
	width:510px; 
	}
}

.flexible_feature_cards_grid_component_01
{
	padding:50px 0;
}
.flexible_feature_cards_grid_component_01 .flexible_feature_cards_grid_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridHead
{
	text-align:center;
	max-width:800px;
	margin:0 auto 40px;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridHead h2
{
	margin:0 0 15px;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridIntro
{
	margin:0 auto;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGrid
{
	display:grid;
	grid-template-columns:1fr;
	gap:30px;
}
.flexible_feature_cards_grid_component_inner_01 .cardEntry
{
	min-width:0;
}
.flexible_feature_cards_grid_component_inner_01 .cardEntryInner
{
	display:block;
	text-decoration:none;
	color:inherit;
}
.flexible_feature_cards_grid_component_inner_01 .cardVisual
{
	overflow:hidden;
}
.flexible_feature_cards_grid_component_inner_01 .cardVisual img
{
	width:100%;
	aspect-ratio:19/21;
	object-fit:cover;
	display:block;
	transition:transform .6s ease-out;
}
.flexible_feature_cards_grid_component_inner_01 a.cardEntryInner:hover .cardVisual img
{
	transform:scale(1.03);
}
.flexible_feature_cards_grid_component_inner_01 .cardData h3
{
	margin:20px 0 8px;
}
.flexible_feature_cards_grid_component_inner_01 .cardText
{
	opacity:.75;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridDiscovery
{
	list-style:none;
	margin:40px 0 0;
	padding:0;
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
	gap:12px 32px;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridDiscovery a
{
	color:inherit;
	text-decoration:underline;
	text-underline-offset:4px;
	transition:color .3s ease-out;
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridDiscovery a:hover,
.flexible_feature_cards_grid_component_inner_01 .cardsGridDiscovery a:focus-visible
{
	color:var(--color-brand);
}
.flexible_feature_cards_grid_component_inner_01 .cardsGridLink
{
	text-align:center;
	margin-top:40px;
}

@media(min-width:768px){
	.flexible_feature_cards_grid_component_inner_01 .cardsGrid.cols-2,
	.flexible_feature_cards_grid_component_inner_01 .cardsGrid.cols-3,
	.flexible_feature_cards_grid_component_inner_01 .cardsGrid.cols-4
	{
		grid-template-columns:repeat(2,1fr);
	}
}

@media(min-width:992px){
	.flexible_feature_cards_grid_component_01
	{
		padding:100px 0;
	}
	.flexible_feature_cards_grid_component_inner_01 .cardsGridHead
	{
		margin-bottom:56px;
	}
	.flexible_feature_cards_grid_component_inner_01 .cardsGrid.cols-3
	{
		grid-template-columns:repeat(3,1fr);
	}
	.flexible_feature_cards_grid_component_inner_01 .cardsGrid.cols-4
	{
		grid-template-columns:repeat(4,1fr);
	}
}

.flexible_full_image_feature_component_01
{
padding:50px 0;	
}
.flexible_full_image_feature_component_01 .flexible_full_image_feature_component_inner_01
{
	position:relative;
	padding:50px 30px;
}
.flexible_full_image_feature_component_inner_01 .fullImageVisual
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:1;
	display:block;
	overflow:hidden;
}
/* <picture class="fullImageVisual">: the <img> fills the box like background-size:cover */
.flexible_full_image_feature_component_inner_01 .fullImageVisual img
{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	object-fit:cover;
	object-position:center center;
	display:block;
	z-index:0;
}
.flexible_full_image_feature_component_inner_01 .fullImageVisual::after
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	content:" ";
	display:block;
	background-color:var(--color-dark);
	opacity:var(--overlay-tone, 1); /* overlay_tone field, set inline on the element */
	z-index:1;
}
.flexible_full_image_feature_component_inner_01 .flx
{
	align-items:center;
	justify-content:center;
		min-height:500px;
		height:100vh;
}
/* No text colour here by design: this sits over the photo, and colour is an
   overrides decision per client (same rule as the hero). */
.flexible_full_image_feature_component_inner_01  .fullImageContent
{
	position:relative;
	z-index:2;
	text-align:center;
}

.flexible_full_image_feature_component_inner_01 .fullImageTextualDesc
{
	max-width:600px;
	margin:0 auto;
	padding-top:15px;
}

@media(min-width:768px){
	
.flexible_full_image_feature_component_inner_01 .flx
	{
	min-height:600px;
	height:70vh;	
	}
	
}

.flexible_full_image_feature_component_02
{
padding:50px 0;
}
.flexible_full_image_feature_component_02 .flexible_full_image_feature_component_inner_02
{
	position:relative;
	padding:50px 30px;
}
.flexible_full_image_feature_component_inner_02 .fullImageVisual
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:1;
	display:block;
	overflow:hidden;
}
/* <picture class="fullImageVisual">: the <img> fills the box like background-size:cover */
.flexible_full_image_feature_component_inner_02 .fullImageVisual img
{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	object-fit:cover;
	object-position:center center;
	display:block;
	z-index:0;
}
.flexible_full_image_feature_component_inner_02 .fullImageVisual::after
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	content:" ";
	display:block;
	background-color:var(--color-dark);
	opacity:var(--overlay-tone, 1); /* overlay_tone field, set inline on the element */
	z-index:1;
}
.flexible_full_image_feature_component_inner_02 .flx
{
	align-items:center;
	justify-content:center;
	min-height:500px;
}
/* No text colour here by design: this sits over the photo, and colour is an
   overrides decision per client (same rule as the hero). */
.flexible_full_image_feature_component_inner_02 .fullImageContent
{
	position:relative;
	z-index:2;
	flex:1 0 100%;
}
.flexible_full_image_feature_component_inner_02 .fullImageTextual h2
{
	margin:0 0 15px;
}
.flexible_full_image_feature_component_inner_02 .fullImageTextualDesc
{
	max-width:600px;
	padding-top:15px;
}
.flexible_full_image_feature_component_inner_02 .fullImageLink
{
	margin-top:25px;
}
/* Facts card: label / value rows on a hairline rule. */
.flexible_full_image_feature_component_inner_02 .fullImageFacts
{
	position:relative;
	z-index:2;
	flex:1 0 100%;
	margin-top:35px;
	padding:30px 28px;
	border:1px solid rgba(255,255,255,0.26);
	background-color:rgba(0,0,0,0.25);
	/* NB for overrides: this card is a SIBLING of .fullImageContent, so a colour set
	   there won't reach it — style both. */
}
.flexible_full_image_feature_component_inner_02 .factsTitle
{
	margin-bottom:20px;
}
.flexible_full_image_feature_component_inner_02 .factRow
{
	display:flex;
	justify-content:space-between;
	gap:16px;
	padding:13px 0;
	border-bottom:1px solid rgba(255,255,255,0.18);
}
.flexible_full_image_feature_component_inner_02 .factRow:last-child
{
	border-bottom:0;
	padding-bottom:0;
}
.flexible_full_image_feature_component_inner_02 .factValue
{
	white-space:nowrap;
	opacity:.7;
}

@media(min-width:768px){
	/* Only from 768, where the content and the facts card sit side by side.
	   min-height, never a fixed height: the band must be able to GROW past 70vh,
	   because .fullImageVisual is absolutely positioned to this box — with a fixed
	   height the two columns push past the photo and spill outside it. */
	.flexible_full_image_feature_component_inner_02 .flx
	{
		min-height:max(600px, 70vh);
		gap:50px;
		align-items:center;
	}
	/* basis 0, not auto: an auto basis resolves to the content's max-content
	   width, which overflows the row and wraps the facts card underneath as soon
	   as the heading is large. Same trap as the amenities list. */
	.flexible_full_image_feature_component_inner_02 .fullImageContent
	{
		flex:1 1 0;
		min-width:0;
	}
	.flexible_full_image_feature_component_inner_02 .fullImageFacts
	{
		flex:0 0 340px;
		margin-top:0;
		padding:34px 32px;
	}
	.flexible_full_image_feature_component_inner_02 .fullImageTextual h2
	{
		font-size:40px;
	}
}

.flexible_amenities_list_component_01
{
	padding:50px 0;
}
.flexible_amenities_list_component_01 .flexible_amenities_list_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_amenities_list_component_inner_01 .flx .amenitiesLeft,
.flexible_amenities_list_component_inner_01 .flx .amenitiesRight
{
	flex:1 0 100%;
}
.flexible_amenities_list_component_inner_01 .amenitiesVisual img
{
	width:100%;
	aspect-ratio:47/70;
	object-fit:cover;
	display:block;
}
.flexible_amenities_list_component_inner_01 .amenitiesContentBlock h2
{
	margin:0 0 25px;
}
.flexible_amenities_list_component_inner_01 .amenityList
{
	list-style:none;
	margin:0;
	padding:0;
	display:grid;
	grid-template-columns:1fr;
	column-gap:26px;
}
.flexible_amenities_list_component_inner_01 .amenityList li
{
	padding:15px 0;
	border-bottom:1px solid rgba(0,0,0,0.12);
	line-height:1.5;
}
/* Row = label left, optional meta right. Renders as <a> when amenity_url is set. */
.flexible_amenities_list_component_inner_01 .amenityList .amenityRow
{
	display:flex;
	align-items:baseline;
	justify-content:space-between;
	gap:16px;
	width:100%;
	text-decoration:none;
	color:inherit;
}
.flexible_amenities_list_component_inner_01 .amenityList .amenityMeta
{
	flex:0 0 auto;
	opacity:.7;
}

/* Collage: lead image with a pair beneath. Only rendered when all three images are set. */
.flexible_amenities_list_component_inner_01 .amenitiesCollage
{
	display:grid;
	grid-template-columns:1fr;
	gap:14px;
}
.flexible_amenities_list_component_inner_01 .amenitiesCollage img
{
	width:100%;
	display:block;
	object-fit:cover;
}
.flexible_amenities_list_component_inner_01 .amenitiesCollage .collageLead
{
	aspect-ratio:3/2;
}
.flexible_amenities_list_component_inner_01 .amenitiesCollage .collagePair
{
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:14px;
}
.flexible_amenities_list_component_inner_01 .amenitiesCollage .collagePair img
{
	aspect-ratio:3/2;
}
.flexible_amenities_list_component_inner_01 .amenitiesNote
{
	margin:25px 0 0;
	opacity:.75;
}
.flexible_amenities_list_component_inner_01 .amenitiesLink
{
	margin-top:30px;
}

@media(min-width:768px){
	.flexible_amenities_list_component_inner_01 .flx
	{
		align-items:center;
		gap:50px;
	}
	.flexible_amenities_list_component_inner_01 .flx.rev
	{
		flex-direction:row-reverse;
	}
	.flexible_amenities_list_component_inner_01 .flx .amenitiesLeft
	{
		flex:0 0 40%;
	}
	/* basis 0, not auto: with flex-wrap:wrap an auto basis resolves to the list's
	   max-content width, which overflows the row and drops the text below the image. */
	.flexible_amenities_list_component_inner_01 .flx .amenitiesRight
	{
		flex:1 1 0;
		min-width:0;
	}
	.flexible_amenities_list_component_inner_01 .flx.noVisual .amenitiesRight
	{
		flex:1 0 100%;
	}
	.flexible_amenities_list_component_inner_01 .amenityList.cols-2
	{
		grid-template-columns:1fr 1fr;
	}
}

@media(min-width:992px){
	.flexible_amenities_list_component_01
	{
		padding:100px 0;
	}
	.flexible_amenities_list_component_inner_01 .flx
	{
		gap:70px;
	}
	.flexible_amenities_list_component_inner_01 .flx .amenitiesLeft
	{
		flex:0 0 470px;
	}
}

/* ------------------------------------------------------------------
   Layout modes (amenities_full_bleed / amenities_header_above).
   Default stays the 1200 well with the title inside the content column;
   these two flags give the "room list" treatment: centred header above a
   full-width 60/40 split. Same mechanism as gallery_full_bleed.
   ------------------------------------------------------------------ */
.flexible_amenities_list_component_01.headerAbove .amenitiesHeader
{
	text-align:center;
	max-width:820px;
	margin:0 auto 40px;
}

@media(min-width:992px){
	.flexible_amenities_list_component_01.headerAbove .amenitiesHeader
	{
		margin-bottom:54px;
	}
	/* Drop the well on the inner instead of escaping it with 100vw — vw includes
	   the scrollbar and overhangs the document by exactly that width. */
	.flexible_amenities_list_component_01.fullBleed .flexible_amenities_list_component_inner_01
	{
		max-width:none;
		padding:0;
	}
	.flexible_amenities_list_component_01.fullBleed .flexible_amenities_list_component_inner_01 .flx
	{
		width:100%;
		margin:0;
		gap:0;
		align-items:flex-start;
	}
	.flexible_amenities_list_component_01.fullBleed .flexible_amenities_list_component_inner_01 .flx .amenitiesLeft
	{
		flex:0 0 60%;
		max-width:60%;
		min-width:0;
	}
	.flexible_amenities_list_component_01.fullBleed .flexible_amenities_list_component_inner_01 .flx .amenitiesRight
	{
		flex:0 0 40%;
		max-width:40%;
		min-width:0;
		padding:0 56px;
	}
}

.flexible_gallery_grid_component_01
{
	padding:50px 0;
}
.flexible_gallery_grid_component_01 .flexible_gallery_grid_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_gallery_grid_component_inner_01 .galleryHead
{
	margin-bottom:30px;
}
.flexible_gallery_grid_component_inner_01 .galleryHeading h2
{
	margin:0 0 15px;
}
.flexible_gallery_grid_component_inner_01 .galleryIntro p:last-child
{
	margin-bottom:0;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid
{
	display:grid;
	grid-template-columns:repeat(2,1fr);
	gap:10px;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem
{
	display:block;
	padding:0;
	margin:0;
	border:0;
	background:none;
	cursor:pointer;
	width:100%;
	height:180px;
	overflow:hidden;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem img
{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
	transition:transform .6s ease-out;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem:hover img
{
	transform:scale(1.03);
}
/* "+N" on the last visible tile when the gallery holds more than gallery_visible.
   Structure + a neutral scrim only — scrim tone and label colour/type are overrides. */
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem.hasMore
{
	position:relative;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem.hasMore::after
{
	content:"";
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:1;
	background-color:rgba(0,0,0,.3);
	pointer-events:none;
}
.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryMore
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:2;
	display:flex;
	align-items:center;
	justify-content:center;
	pointer-events:none;
}
.flexible_gallery_grid_component_inner_01 .galleryLink
{
	text-align:center;
	margin-top:30px;
}

@media(min-width:768px){
	.flexible_gallery_grid_component_inner_01 .galleryHead
	{
		display:flex;
		gap:50px;
		align-items:flex-end;
		margin-bottom:40px;
	}
	.flexible_gallery_grid_component_inner_01 .galleryHeading
	{
		flex:0 0 45%;
	}
	.flexible_gallery_grid_component_inner_01 .galleryIntro
	{
		flex:1 1 auto;
		min-width:0;
	}
	/* Twelve-column rhythm: three per row, mixed widths, two row heights. */
	.flexible_gallery_grid_component_inner_01 .galleryGrid
	{
		grid-template-columns:repeat(12,1fr);
		gap:14px;
	}
	.flexible_gallery_grid_component_inner_01 .galleryGrid .galleryItem
	{
		grid-column:span 4;
		height:300px;
	}
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-1 { grid-column:span 5; height:380px; }
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-2 { grid-column:span 4; height:380px; }
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-3 { grid-column:span 3; height:380px; }
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-4 { grid-column:span 3; height:300px; }
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-5 { grid-column:span 5; height:300px; }
	.flexible_gallery_grid_component_inner_01 .galleryGrid .item-6 { grid-column:span 4; height:300px; }
}

@media(min-width:992px){
	.flexible_gallery_grid_component_01
	{
		padding:100px 0;
	}
	.flexible_gallery_grid_component_inner_01 .galleryHead
	{
		gap:70px;
		margin-bottom:52px;
	}
	/* Full bleed: rather than escaping the well with 100vw — which counts the
	   scrollbar and overhangs the document by exactly that width — the well is
	   dropped from the inner and kept on the header, so the grid is simply 100%. */
	.flexible_gallery_grid_component_01.fullBleed .flexible_gallery_grid_component_inner_01
	{
		max-width:none;
		padding:0;
	}
	.flexible_gallery_grid_component_01.fullBleed .galleryHead
	{
		max-width:1200px;
		margin-left:auto;
		margin-right:auto;
		padding:0 20px;
	}
	.flexible_gallery_grid_component_inner_01 .galleryBleed.fullBleed
	{
		width:100%;
	}
	.flexible_gallery_grid_component_inner_01 .galleryBleed.fullBleed .galleryGrid
	{
		padding:0 14px;
	}
}

.flexible_feature_highlight_component_01
{
	padding:50px 0;
}
.flexible_feature_highlight_component_01 .flexible_feature_highlight_component_inner_01
{
	padding:0 20px;
}
.flexible_feature_highlight_component_inner_01 .flx
{
	max-width:1200px;
	margin:0 auto;
}
.flexible_feature_highlight_component_inner_01 .flx .featureLeft,
.flexible_feature_highlight_component_inner_01 .flx .featureRight
{
	flex:1 0 100%;
}
.flexible_feature_highlight_component_inner_01 .flx .featureLeft
{
	display:none;
}

	.flexible_feature_highlight_component_inner_01 .flx .featureLeft .featureVisualGraphic,
.flexible_feature_highlight_component_inner_01 .featureVisualMobile .featureVisualGraphic
	{
position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 4;
        padding: 20px;
        display: flex;
        align-items: center;
        justify-content: center;
	}
	.flexible_feature_highlight_component_inner_01 .flx .featureLeft .featureVisualGraphic img.grph,
.flexible_feature_highlight_component_inner_01 .featureVisualMobile .featureVisualGraphic img.grph
	{
		max-width:360px;
		width:100%;
		
	}
.flexible_feature_highlight_component_inner_01 .featureVisualMobile
{
	padding:30px 0;
	position:relative;
}

.flexible_feature_highlight_component_inner_01 .featureLinks
{
	display:flex;
	flex-direction:column;
	gap:10px;
	margin-top:30px;
}

@media(min-width:768px){
	.flexible_feature_highlight_component_inner_01 .featureLinks
	{
		flex-direction:row;
		flex-wrap:wrap;
	}
	/* no image: content spans the full row */
	.flexible_feature_highlight_component_inner_01 .flx.noVisual .featureContentBlock
	{
		padding:0;
	}
	
.flexible_feature_highlight_component_inner_01 .flx .featureLeft
{
	display:block;
}
	.flexible_feature_highlight_component_inner_01 .flx .featureLeft .featureVisual
	{
		padding-bottom:110%;
		border-radius:12px;
	overflow:hidden;
	position:relative;
	
	}

	.flexible_feature_highlight_component_inner_01 .flx .featureLeft .featureVisual img.vis
	{
		position:absolute;
		width:100%;
		height:100%;
		object-fit:cover;
	}
	
	.flexible_feature_highlight_component_inner_01 .flx .featureLeft,
	.flexible_feature_highlight_component_inner_01 .flx .featureRight
	{
		flex:1 0 50%;
	}
	.flexible_feature_highlight_component_inner_01 .flx .featureRight
	{
		display:flex;
		align-items:center;
	}
	.flexible_feature_highlight_component_inner_01 .flx.rev
	{
		flex-direction:row-reverse;
	}
	.flexible_feature_highlight_component_inner_01 .featureVisualMobile
	{
		display:none;
	}
	.flexible_feature_highlight_component_inner_01 .featureContentBlock
	{
		padding:0 30px 0 50px;
	}
	.flexible_feature_highlight_component_inner_01 .rev .featureContentBlock
	{
	padding:0 50px 0 30px;	
	}
	.flexible_feature_highlight_component_inner_01 .featureVisual
	{
		position:relative;
		
		width:100%;
		
		
	}
}

@media(min-width:992px){
	.flexible_feature_highlight_component_inner_01 .featureContentBlock
	{
		padding:0 30px 0 70px;
	}
	.flexible_feature_highlight_component_inner_01 .rev .featureContentBlock
	{
	padding:0 70px 0 30px;	
	}
}

/* ------------------------------------------------------------------
   Full-bleed mode (feature_full_bleed) — 50/50, image edge to edge.
   Same mechanism as gallery_full_bleed and amenities_full_bleed.
   ------------------------------------------------------------------ */
@media(min-width:992px){
	.flexible_feature_highlight_component_01.fullBleed .flexible_feature_highlight_component_inner_01
	{
		max-width:none;
		padding:0;
	}
	/* No 100vw escape: the component's outer wrapper is already the document
	   width, so the row just fills it. 100vw INCLUDES the scrollbar, which is
	   what produced a horizontal scrollbar exactly one scrollbar wide. */
	.flexible_feature_highlight_component_01.fullBleed .flexible_feature_highlight_component_inner_01 .flx
	{
		max-width:none;
		width:100%;
		margin:0;
		gap:0;
		align-items:stretch;
		min-height:820px;
	}
	.flexible_feature_highlight_component_01.fullBleed .flx .featureLeft,
	.flexible_feature_highlight_component_01.fullBleed .flx .featureRight
	{
		flex:0 0 50%;
		max-width:50%;
		min-width:0;
	}
	/* the visual fills its half rather than sitting at its own aspect ratio */
	.flexible_feature_highlight_component_01.fullBleed .flx .featureLeft,
	.flexible_feature_highlight_component_01.fullBleed .flx .featureLeft .featureVisual
	{
		position:relative;
		height:auto;
	}
	.flexible_feature_highlight_component_01.fullBleed .flx .featureLeft .featureVisual img.vis
	{
		position:absolute;
		inset:0;
		width:100%;
		height:100%;
		object-fit:cover;
	}
	.flexible_feature_highlight_component_01.fullBleed .flx .featureRight
	{
		display:flex;
		align-items:center;
		padding:80px 110px 80px 88px;
	}
	.flexible_feature_highlight_component_01.fullBleed .flx .featureContentBlock
	{
		max-width:550px;
		padding:0;        /* the column carries the inset, not the block */
	}
}

.flexible_reviews_component_01 {
    padding: 60px 0;
    overflow: hidden;
}

.flexible_reviews_component_inner_01 {
}

.flexible_reviews_component_inner_01 .reviewsHeader {
    text-align: center;
    padding: 0 20px 30px 20px;
}

.flexible_reviews_component_inner_01 .reviewsHeader h2 {
    margin: 0;
    font-size: 32px;
    font-weight: 500;
}


	.flexible_reviews_component_inner_01 .reviewsControls {
        display: flex;
        gap: 12px;
        justify-content: center;
        padding-bottom: 30px;
    }

    .flexible_reviews_component_inner_01 .reviewsPrev,
    .flexible_reviews_component_inner_01 .reviewsNext {
        display: block;
        width: 44px;
        height: 44px;
        border-radius: 50%;
        background-repeat: no-repeat;
        background-position: center;
        transition: background-color ease-out 0.3s;
    }
.flexible_reviews_component_inner_01 .reviewsTrack {
    display: flex;
    flex-direction: column;
    gap: 0;
    cursor: default;
}

.flexible_reviews_component_inner_01 .reviewsRowBottom {
    margin-left: 0;
}

.flexible_reviews_component_inner_01 .reviewsRow {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    width: 100%;
    padding: 0 20px 20px 20px;
}

.flexible_reviews_component_inner_01 .reviewsRow::-webkit-scrollbar {
    display: none;
}

.flexible_reviews_component_inner_01 .reviewsCard {
    width: 80vw;
    flex-shrink: 0;
    scroll-snap-align: start;
}

.flexible_reviews_component_inner_01 .reviewsCardInner {
    padding: 28px;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 20px;
}

.flexible_reviews_component_inner_01 .reviewsText {
    font-size: 16px;
    line-height: 1.4;
    flex: 1;
}

.flexible_reviews_component_inner_01 .reviewsMeta {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.flexible_reviews_component_inner_01 .reviewsStars {
    font-size: 16px;
    letter-spacing: 2px;
}

.flexible_reviews_component_inner_01 .reviewsAuthor {
    font-weight: 600;
    font-size: 15px;
}

@media(min-width:768px){
.flexible_reviews_component_inner_01 .reviewsControls {
    display: none;
}

    .flexible_reviews_component_inner_01 .reviewsTrack {
        flex-direction: column;
        gap: 20px;
        cursor: grab;
    }

    .flexible_reviews_component_inner_01 .reviewsTrack:active {
        cursor: grabbing;
    }

    .flexible_reviews_component_inner_01 .reviewsRow {
        gap: 20px;
        overflow-x: visible;
        width: max-content;
        padding: 0;
        scroll-snap-type: unset;
    }

    .flexible_reviews_component_inner_01 .reviewsRowBottom {
        margin-left: 160px;
    }

    .flexible_reviews_component_inner_01 .reviewsCard {
        width: 320px;
        scroll-snap-align: unset;
    }
}

.flexible_faq_component_01 {
    padding: 60px 0;
}

.flexible_faq_component_inner_01 {
    padding: 0 20px;
    max-width: 900px;
    margin: 0 auto;
}
.flexible_faq_component_inner_01 .faqHeader
{
	text-align:Center;
	padding-bottom:30px;
}
.flexible_faq_component_01 .faqFilters {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 40px;
	justify-content: center;
}

.flexible_faq_component_01 .faqFilterBtn {
    padding: 8px 18px;
    border-radius: 24px;
    border: none;
    cursor: pointer;
    transition: background-color ease-out 0.3s, color ease-out 0.3s;
}

.flexible_faq_component_01 .faqGroup {
    display: none;
}

.flexible_faq_component_01 .faqGroup.active {
    display: block;
}

.flexible_faq_component_01 .faqLeaf {
    border-bottom: 1px solid;
}

.flexible_faq_component_01 .faqLeafTitle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 0;
    cursor: pointer;
    gap: 20px;
	line-height:1.2;
}

.flexible_faq_component_01 .faqLeafIcon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    position: relative;
    transition: transform ease-out 0.3s;
}

.flexible_faq_component_01 .faqLeafIcon::before,
.flexible_faq_component_01 .faqLeafIcon::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: currentColor;
}

.flexible_faq_component_01 .faqLeafIcon::before {
    width: 2px;
    height: 100%;
    transition: opacity ease-out 0.3s;
}

.flexible_faq_component_01 .faqLeafIcon::after {
    width: 100%;
    height: 2px;
}

.flexible_faq_component_01 .faqLeaf.open .faqLeafIcon::before {
    opacity: 0;
}

.flexible_faq_component_01 .faqLeafContent {
    max-height: 0;
    overflow: hidden;
    transition: max-height ease-out 0.4s;
}

.flexible_faq_component_01 .faqLeafContentInner {
    padding-bottom: 20px;
}

.flexible_video_boxes_component_01
{
	padding:50px 0;
}
.flexible_video_boxes_component_01 .flexible_video_boxes_component_inner_01
{
	padding:0 20px;
}

.flexible_video_boxes_component_inner_01 .videoBoxHeader
{
	padding-bottom:30px;
	text-align:center;
}
.flexible_video_boxes_component_inner_01 .videoBoxHeader .miniTitle span
{
	display:inline-block;
}
.flexible_video_boxes_component_inner_01 .leftStack,
.flexible_video_boxes_component_inner_01 .rightStack
{
	flex:1 0 100%;
	position:relative;
	z-index:auto;
	
}
.flexible_video_boxes_component_inner_01 .videoBoxes
{
	max-width:1200px;
	margin:0 auto;
	position:relative;
}
.flexible_video_boxes_component_inner_01 .videoBox
{
	padding-bottom:30px;
}
.flexible_video_boxes_component_inner_01  .videoBoxVisual
{
	border-radius:12px;
	overflow:hidden;
	position:relative;
}
.flexible_video_boxes_component_inner_01  .videoBoxVisual a
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:2;
	display:block;
}
.flexible_video_boxes_component_inner_01 .videoBoxTitle
{
	margin-top:12px;
	position:relative;
	padding-left:15px;
}
.flexible_video_boxes_component_inner_01 .videoBoxTitle::before
{
    position: Absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    background-color: var(--color-brand);
    display: block;
    content: " ";
    border-radius: 10px;	
}

.flexible_video_boxes_component_inner_01 .videoBoxText
{
	margin-top:10px;
	padding-left:15px;
	max-width:420px;
}
.flexible_video_boxes_component_inner_01 .videoBoxText p
{
	margin:0;
}

/* video wrap */
.flexible_video_boxes_component_01 .videoBoxVideoWrapper {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity ease-out 0.4s;
}

.flexible_video_boxes_component_01 .videoBoxVideoWrapper.active {
    opacity: 1;
    pointer-events: all;
}

.flexible_video_boxes_component_01 .shade {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.7);
}

.flexible_video_boxes_component_01 .videoObject {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1200px;
    padding: 0 20px;
    pointer-events: none;
}

/* orientation-agnostic: landscape stays width-bound, portrait becomes height-bound
.flexible_video_boxes_component_01 .videoObject video {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 8px;
}
*/

.flexible_video_boxes_component_01 .videoObject video {
    display: block;
    margin: 0 auto;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: calc(100vh - 120px);
    max-height: calc(100dvh - 120px);
    border-radius: 8px;
    pointer-events: auto;
}

.flexible_video_boxes_component_01 .closeVideo {
    position: absolute;
    top: 20px;
    right: 20px;
    z-index: 3;
}

.flexible_video_boxes_component_01 .closeVideo a {
    display: block;
    width: 40px;
    height: 40px;
}

.flexible_video_boxes_component_inner_01 .videoBoxesLink
{
	padding:10px 20px 30px 20px;
	text-align:Center;
}

@media(min-width:768px){
	.flexible_video_boxes_component_inner_01 .rightStack
	{
		padding-top:230px;
		padding-left:30px;
	}
	.flexible_video_boxes_component_inner_01 .leftStack,
.flexible_video_boxes_component_inner_01 .rightStack
{
	flex:1 0 50%;
	
}
	.flexible_video_boxes_component_inner_01 .leftStack
	{
		padding-right:30px;
	}
	.flexible_video_boxes_component_inner_01 .videoBox
	{
		padding-bottom:80px;
		max-width:480px;
	}
	.flexible_video_boxes_component_inner_01 .videoBox.autoMLeft
	{
		margin-left:auto;
	}
}

.flexible_room_element_component_01
{
padding:50px 0;	
}
.flexible_room_element_component_inner_01 .roomData .textual
{
padding:50px 0;
	text-align:Center;
	max-width:890px;
	margin:0 auto;
}
.flexible_room_element_component_inner_01 .roomData .textual .roomTitle,
.flexible_room_element_component_inner_01 .roomData .textual .roomDescription,
.flexible_room_element_component_inner_01 .roomData .textual .amenityGrid
{
	padding:0 20px;
}
.flexible_room_element_component_inner_01 .roomData .textual .roomTitle
{
	padding-bottom:15px;
}
.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide
{
width:auto;	
}
.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide .inner{
	padding: 0 10px;
	width: 86vw;
}

.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide .inner a{
	    display: block;
    border-radius: 12px;
    overflow: hidden;
    position: Relative;
    padding-bottom: 120%;
}

.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide .inner a img {
	    position: absolute;
    max-width: none;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.flexible_room_element_component_inner_01 .mainRoomVisualInner
{
	padding:0 20px;
}
.flexible_room_element_component_inner_01 .mainRoomVisual
{
max-width:1200px;
	margin:0 auto;

	
}
.flexible_room_element_component_inner_01 .mainRoomVisual .inner
{
	position:Relative;
overflow:hidden;
	border-radius:12px;

}

.flexible_room_element_component_inner_01 .mainRoomVisual img.desktop
{
	display:none;
}
.flexible_room_element_component_inner_01 .roomBook
{
	padding:20px 0;
	text-align:Center;
}


.flexible_room_element_component_inner_01 .roomSimpleParams .param
{
	display:inline-block;
}
.flexible_room_element_component_inner_01 .roomSimpleParams .param .ico
{
	display:inline-block;
	width:18px;
	height:18px;
	vertical-align:middle;
}
.flexible_room_element_component_inner_01 .roomSimpleParams .param .label
{
vertical-align:middle;
	display:inline-block;
	margin:0 30px 0 10px;
}

.roomAmenityGridElement {

   
	max-width:1200px;
	margin:0 auto;
	padding:30px 0 50px 0;
}

.roomAmenityGridElement .gridInner
{
	margin:0 20px;
	position:Relative;
	 border-radius: 12px;
    overflow: hidden;
	padding-bottom:20px;
}
.roomAmenityGridElement .gridInner::before
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	background-color:var(--color-brand);
	display:block;
	content:" ";
	opacity:0.05;
}
.roomAmenityGridElement .gridHeader {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding:20px 20px 0 20px;
    cursor: pointer;
    user-select: none;
	position:relative;
	z-index:2;
}

.roomAmenityGridElement .gridHeader h2 {
    margin: 0;
}

.roomAmenityGridElement .gridController a {
    display: block;
    width: 30px;
    height: 30px;
    position: relative;
}

.roomAmenityGridElement .gridCollapse {
		position:relative;
	z-index:2;
    max-height: 0;
    overflow: hidden;
    transition: max-height ease-out 0.4s;
}

.roomAmenityGridElement.open .gridCollapse {
    max-height: 4000px;
}

.roomAmenityGridElement .amenityGrid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
	padding: 0 20px 0 20px;
    transition: padding ease-out 0.4s;
}

.roomAmenityGridElement.open .amenityGrid {
	padding:15px 20px 40px 20px;
}
.roomAmenityGridElement .gridController {
    width: 30px;
    height: 30px;
    position: relative;
    flex-shrink: 0;
}
.roomAmenityGridElement .amenityItem {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 15px 18px 15px 0;
 
    border-bottom: 1px solid #000000;
}



.roomAmenityGridElement .amenityItem .ico {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
}

.roomAmenityGridElement .amenityItem .ico img {
    width: 100%;
    height: auto;
}

.roomAmenityGridElement .secondaryAmenities {
    display: flex;
    flex-wrap: wrap;
    padding: 0 20px 30px 20px;
}

.roomAmenityGridElement .secondaryAmenitiesColumn {
    flex: 1 1 100%;
    max-width: 100%;
    text-align: center;
    margin-bottom: 44px;
}

.roomAmenityGridElement .secondaryAmenitiesColumn:last-child {
    margin-bottom: 0;
}

.roomAmenityGridElement .secondaryTitle {
    margin-bottom: 12px;
}

.roomAmenityGridElement .secondaryTitle h3 {
    font-size: 21px;
}

.roomAmenityGridElement .secondaryText {
    font-size: 16px;
    line-height: 1.7;
}

.roomAmenityGridElement .secondaryText p:last-child {
    margin-bottom: 0;
}

.roomAmenityGridElement .amenityPdfDownload
{
	padding:10px 20px 30px 20px;
	text-align:Center;
}

@media(min-width:768px){
	.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide .inner
	{
	width: 340px;	
	}
	.flexible_room_element_component_inner_01 .mainRoomVisual .inner
{
	
	padding-bottom:50%;

	
}
	.flexible_room_element_component_inner_01 .mainRoomVisual img
{
	position:absolute;
	width:100%;
	height:100%;
	object-fit:cover;
	max-width:none;
}
	.flexible_room_element_component_inner_01 .mainRoomVisual img.mobile
	{
		display:none;
	}
	.flexible_room_element_component_inner_01 .mainRoomVisual img.desktop
{
	display:block;
}
.roomAmenityGridElement .amenityGrid {
        grid-template-columns: repeat(3, 1fr);
    }
.roomAmenityGridElement .amenityItem {

    padding: 30px 18px 30px 0;
 

}
.roomAmenityGridElement .secondaryAmenities {
        flex-wrap: nowrap;
        padding: 0 30px 40px 30px;
    }
.roomAmenityGridElement .secondaryAmenitiesColumn {
        flex: 1 1 0;
        max-width: none;
        margin-bottom: 0;
        padding: 0 20px;
    }
.roomAmenityGridElement .secondaryTitle h3 {
        font-size: 24px;
    }
}

@media(min-width:992px){
	.flexible_room_element_component_inner_01 .roomImageSlider .swiper-slide .inner
	{
	width: 380px;	
	}
.roomAmenityGridElement .amenityGrid {
        grid-template-columns: repeat(4, 1fr);
    }
}

.flexible_room_display_grid_component_01
{
	padding:50px 0;
}
.flexible_room_display_grid_component_01 .flexible_room_display_grid_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_room_display_grid_component_inner_01 .roomGridHead
{
	text-align:center;
	max-width:800px;
	margin:0 auto 40px;
}
.flexible_room_display_grid_component_inner_01 .roomGridHead h2
{
	margin:0 0 15px;
}
.flexible_room_display_grid_component_inner_01 .roomGrid
{
	display:grid;
	grid-template-columns:1fr;
	gap:40px 30px;
}
.flexible_room_display_grid_component_inner_01 .roomCard
{
	min-width:0;
}
.flexible_room_display_grid_component_inner_01 .roomCardInner
{
	position:relative;
	height:100%;
	display:flex;
	flex-direction:column;
}
.flexible_room_display_grid_component_inner_01 .roomCardVisual
{
	overflow:hidden;
}
.flexible_room_display_grid_component_inner_01 .roomCardVisual img
{
	width:100%;
	aspect-ratio:4/3;
	object-fit:cover;
	display:block;
	transition:transform .6s ease-out;
}
.flexible_room_display_grid_component_inner_01 .roomCardInner:hover .roomCardVisual img
{
	transform:scale(1.03);
}
.flexible_room_display_grid_component_inner_01 .roomCardData
{
	flex:1 1 0;
	display:flex;
	flex-direction:column;
}
.flexible_room_display_grid_component_inner_01 .roomCardData h3
{
	margin:20px 0 8px;
}
.flexible_room_display_grid_component_inner_01 .roomCardSpecs
{
	list-style:none;
	margin:0 0 12px;
	padding:0;
}
.flexible_room_display_grid_component_inner_01 .roomCardSpecs li
{
	display:inline-block;
}
.flexible_room_display_grid_component_inner_01 .roomCardSpecs li + li::before
{
	content:"·";
	margin:0 8px;
}
.flexible_room_display_grid_component_inner_01 .roomCardExcerpt
{
	margin-bottom:12px;
}
.flexible_room_display_grid_component_inner_01 .roomCardPrice
{
	margin-bottom:12px;
}
.flexible_room_display_grid_component_inner_01 .roomCardLinks
{
	margin-top:auto;
	padding-top:8px;
}
.flexible_room_display_grid_component_inner_01 .roomCardLinks .roomCardBook
{
	position:relative;
	z-index:3;
	margin-left:20px;
}
/* whole card clickable: the overlay anchor sits over the card, the book link above it */
.flexible_room_display_grid_component_inner_01 .roomCardOverlay
{
	position:absolute;
	top:0;
	right:0;
	bottom:0;
	left:0;
	z-index:2;
}
.flexible_room_display_grid_component_inner_01 .roomGridLink
{
	text-align:center;
	margin-top:40px;
}

@media(min-width:768px){
	.flexible_room_display_grid_component_inner_01 .roomGrid.cols-2,
	.flexible_room_display_grid_component_inner_01 .roomGrid.cols-3
	{
		grid-template-columns:repeat(2,1fr);
	}
}

@media(min-width:992px){
	.flexible_room_display_grid_component_01
	{
		padding:100px 0;
	}
	.flexible_room_display_grid_component_inner_01 .roomGridHead
	{
		margin-bottom:56px;
	}
	.flexible_room_display_grid_component_inner_01 .roomGrid.cols-3
	{
		grid-template-columns:repeat(3,1fr);
	}
}

.flexible_room_intro_component_01
{
	padding:50px 0;
}
.flexible_room_intro_component_01 .flexible_room_intro_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_room_intro_component_inner_01 .roomIntroVisual
{
	position:relative;
	overflow:hidden;
	padding-bottom:75%;
}
.flexible_room_intro_component_inner_01 .roomIntroVisual img
{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	max-width:none;
	object-fit:cover;
	display:block;
}
.flexible_room_intro_component_inner_01 .roomIntroContent
{
	max-width:890px;
	margin:0 auto;
	padding-top:40px;
	text-align:center;
}
.flexible_room_intro_component_01.noVisual .roomIntroContent
{
	padding-top:0;
}
.flexible_room_intro_component_inner_01 .roomIntroContent h2
{
	margin:0 0 15px;
}
.flexible_room_intro_component_inner_01 .roomIntroText p:last-child
{
	margin-bottom:0;
}
.flexible_room_intro_component_inner_01 .roomIntroStats
{
	list-style:none;
	margin:30px 0 0;
	padding:15px 0;
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
}
.flexible_room_intro_component_inner_01 .roomIntroStats li
{
	padding:4px 14px;
}
.flexible_room_intro_component_inner_01 .roomIntroBook
{
	padding-top:30px;
}

@media(min-width:768px){
	.flexible_room_intro_component_inner_01 .roomIntroVisual
	{
		padding-bottom:50%;
	}
}

@media(min-width:992px){
	.flexible_room_intro_component_01
	{
		padding:100px 0;
	}
	.flexible_room_intro_component_inner_01 .roomIntroContent
	{
		padding-top:56px;
	}
}

.flexible_amenities_grid_component_01
{
	padding:50px 0;
}
.flexible_amenities_grid_component_01 .flexible_amenities_grid_component_inner_01
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_amenities_grid_component_inner_01 .amenitiesGridHead
{
	text-align:center;
	max-width:800px;
	margin:0 auto 40px;
}
.flexible_amenities_grid_component_inner_01 .amenitiesGridHead h2
{
	margin:0 0 15px;
}
/* Columns: 2 → 3 (768) → 4 (992). Flexbox with nth-child gutters rather than gap,
   so stacked columns keep their spacing on older Safari (see content-dense-components.md). */
.flexible_amenities_grid_component_inner_01 .amenitiesGrid
{
	list-style:none;
	margin:0;
	padding:0;
	display:flex;
	flex-wrap:wrap;
}
.flexible_amenities_grid_component_inner_01 .amenityEntry
{
	display:flex;
	align-items:center;
	width:calc((100% - 20px) / 2);
	margin-right:20px;
	padding:14px 0;
	border-bottom:1px solid rgba(0,0,0,.12);
	min-width:0;
}
.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(2n)
{
	margin-right:0;
}
.flexible_amenities_grid_component_inner_01 .amenityIcon
{
	flex:0 0 22px;
	width:22px;
	height:22px;
	margin-right:12px;
	display:flex;
	align-items:center;
	justify-content:center;
}
.flexible_amenities_grid_component_inner_01 .amenityIcon img
{
	max-width:100%;
	max-height:100%;
	width:auto;
	height:auto;
	display:block;
}
.flexible_amenities_grid_component_inner_01 .amenityLabel
{
	flex:1 1 0;
	min-width:0;
}
.flexible_amenities_grid_component_inner_01 .amenityMeta
{
	flex:0 0 auto;
	margin-left:10px;
	white-space:nowrap;
}

@media(min-width:768px){
	.flexible_amenities_grid_component_inner_01 .amenityEntry,
	.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(2n)
	{
		width:calc((100% - 60px) / 3);
		margin-right:30px;
		padding:18px 0;
	}
	.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(3n)
	{
		margin-right:0;
	}
}

@media(min-width:992px){
	.flexible_amenities_grid_component_01
	{
		padding:100px 0;
	}
	.flexible_amenities_grid_component_inner_01 .amenitiesGridHead
	{
		margin-bottom:56px;
	}
	.flexible_amenities_grid_component_inner_01 .amenityEntry,
	.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(2n),
	.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(3n)
	{
		width:calc((100% - 90px) / 4);
		margin-right:30px;
	}
	.flexible_amenities_grid_component_inner_01 .amenityEntry:nth-child(4n)
	{
		margin-right:0;
	}
}

.flexible_events_listing_component_01
{
	padding:0 20px;
}
.flexible_events_listing_component_inner_01{
	max-width: 1200px;
    margin: 0 auto;
	padding:50px 0;
}
.flexible_events_listing_component_inner_01 .eventListingHeader
{
	padding-bottom:40px;
}
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry
{
	overflow:hidden;
	border-radius:12px;
	
	position:relative;
}
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntryInner
{
	padding:20px;
}
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .dateElem,
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .contentElem
{
flex:1 0 100%;	
	position:relative;
	z-index:2;
}
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .dateElem span
{
	display:inline-block;
	padding-bottom:4px;

}
.flexible_events_listing_component_inner_01 .contentElem .bookEvent
{
	padding-top:10px;
}
.flexible_events_listing_component_inner_01 .contentElem .eventTime
{
	position:relative;

	
}
.flexible_events_listing_component_inner_01 .contentElem .eventType .icon,
	.flexible_events_listing_component_inner_01 .contentElem .eventType .lbl
	{
		display:inline-block;
		vertical-align:middle;
	}
	.flexible_events_listing_component_inner_01 .contentElem .eventType .icon img
	{
		width:20px;
		height:20px;
	}
	.flexible_events_listing_component_inner_01 .contentElem .eventType .lbl
	{
		padding-left:8px;
	}

@media(min-width:768px){
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .dateElem span
	{
		display:block;
	}
	.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .dateElem
	{
	flex:0 0 80px;
		
	}
.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .contentElem
	{
	flex:1;	
		padding-left:15px;
		padding-right:200px;
		position:relative;
		
	}
	.flexible_events_listing_component_inner_01 .eventsEntries .eventEntry .contentElem .bookEvent
	{
		position:absolute;
		top:50%;
		right:0;
		transform:translateY(-50%);
	}
	
	.flexible_events_listing_component_inner_01 .contentElem .eventTime
	{
		display:inline-block;
		margin-right:20px;
		vertical-align:middle;
	}
	.flexible_events_listing_component_inner_01 .contentElem .eventType
	{
		display:inline-block;
		vertical-align:middle;
	}
	
}

.flexible_form_component_01
{
padding: 50px 0;	
}
.flexible_form_component_01 .flexible_form_component_inner_01
{
padding: 0 20px;	
}
.flexible_form_component_inner_01 .flx
{
	flex-direction:column-reverse;
	    max-width: 1200px;
    margin: 0 auto;
}
.flexible_form_component_inner_01 .contactLeft,
.flexible_form_component_inner_01 .contactRight
{
	flex:1 0 100%;
}
    .flexible_form_component_inner_01 .contactVisual {
        position: relative;
        width: 100%;
    }
.flexible_form_component_inner_01 .contactVisual img.desktop
{
	display:none;
}

	.flexible_form_component_inner_01 .gform-theme--foundation .gfield textarea.large
	{
		min-block-size: 8rem!important;
	}
.flexible_form_component_inner_01 .contactForm
{
	padding-top:30px;
	padding-bottom:30px;
}
    .flexible_form_component_inner_01 .flx .contactVisual {
    
        border-radius: 12px;
        overflow: hidden;
   
    }

@media(min-width:768px){

.flexible_form_component_inner_01 .flx
{
	flex-direction:row;

}
.flexible_form_component_inner_01 .contactLeft,
.flexible_form_component_inner_01 .contactRight
{
	flex:1 0 50%;
}
	.flexible_form_component_inner_01 .contactRight
	{
		display:flex;
		align-items:center;
	}
	.flexible_form_component_inner_01 .contactRight .contactContentBlock
	{
		padding: 0 30px 0 50px;
	}
	/* no map visual: content spans the full row */
	.flexible_form_component_inner_01 .flx.noVisual .contactRight .contactContentBlock
	{
		padding:0;
	}
	.flexible_form_component_inner_01 .contactVisual img.desktop
{
	display:block;
}
		.flexible_form_component_inner_01 .contactVisual img.mobile
{
	display:none;
}
    .flexible_form_component_inner_01 .flx .contactVisual {
        padding-bottom: 110%;

        position: relative;
    }
	.flexible_form_component_inner_01 .contactVisual img {
        position: absolute;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }
	.flexible_form_component_inner_01 .contactForm
{

	padding-bottom:0;
}
}

/* Contact + form 02 — content column beside the form card.
   Structural only: no applied colour, no type scale (overrides own those).
   Stacked on mobile; two columns from 992. */

.flexible_form_component_02
{
	padding:50px 0;
}
.flexible_form_component_02 .flexible_form_component_inner_02
{
	max-width:1200px;
	margin:0 auto;
	padding:0 20px;
}
.flexible_form_component_inner_02 .flx .contactLeft,
.flexible_form_component_inner_02 .flx .contactRight
{
	flex:1 0 100%;
}
.flexible_form_component_inner_02 .contactIntro
{
	margin:20px 0 0;
}

/* Details table: label left, value right, on hairlines. */
.flexible_form_component_inner_02 .contactDetails
{
	margin-top:34px;
	border-top:1px solid rgba(255,255,255,0.14);
}
.flexible_form_component_inner_02 .detailRow
{
	display:flex;
	align-items:baseline;
	gap:20px;
	padding:14px 0;
	border-bottom:1px solid rgba(255,255,255,0.14);
}
.flexible_form_component_inner_02 .detailLabel
{
	flex:0 0 110px;
}
.flexible_form_component_inner_02 .detailValue
{
	flex:1 1 auto;
	min-width:0;
}
.flexible_form_component_inner_02 .detailValue a
{
	text-decoration:none;
	color:inherit;
}

/* Social icon row. */
.flexible_form_component_inner_02 .contactSocials
{
	display:flex;
	flex-wrap:wrap;
	gap:18px;
	margin-top:28px;
}
.flexible_form_component_inner_02 .contactSocials .socialEnt
{
	display:block;
	line-height:0;
}
.flexible_form_component_inner_02 .contactSocials .socialEnt img
{
	width:24px;
	height:24px;
	display:block;
}

/* Form card. */
.flexible_form_component_inner_02 .contactFormCard
{
	margin-top:34px;
	padding:30px 24px;
}

@media(min-width:768px){
	.flexible_form_component_inner_02 .contactFormCard
	{
		padding:40px 36px;
	}
}

@media(min-width:992px){
	.flexible_form_component_02
	{
		padding:100px 0;
	}
	.flexible_form_component_inner_02 .flx
	{
		gap:70px;
		align-items:flex-start;
	}
	/* basis 0, not auto — an auto basis resolves to max-content and wraps the
	   form under the text as soon as the heading is large. */
	.flexible_form_component_inner_02 .flx .contactLeft
	{
		flex:1 1 0;
		min-width:0;
	}
	.flexible_form_component_inner_02 .flx .contactRight
	{
		flex:0 0 46%;
		max-width:46%;
		min-width:0;
	}
	.flexible_form_component_inner_02 .contactFormCard
	{
		margin-top:0;
	}
}

/* Map link under the address (Global Options google_map_location_url): its own line, underlined so it reads as a link. */
.flexible_form_component_inner_02 .detailValue a.mapLink
{
	display:table;
	margin-top:6px;
	text-decoration:underline;
	text-underline-offset:3px;
}

.flexible_general_content_component_01
{
	padding:50px 0;
}
.flexible_general_content_component_inner_01
{
	padding:0 20px;
}

@media(min-width:768px){
	.flexible_full_image_feature_component_inner_01 .fullImageTextual h2
{
	font-size:40px;
}
}

.pageBg-light           { background-color: var(--color-light); }
.pageBg-light-2         { background-color: var(--color-light-2); }
.pageBg-dark            { background-color: var(--color-dark); }
.pageBg-brand           { background-color: var(--color-brand); }
.pageBg-brand-secondary { background-color: var(--color-brand-secondary); }

.flexible_image_slider_component_01 .imageSlider .swiper-slide.sld { width: auto; }
.flexible_image_slider_component_01 .imageSlider .slideImage img { display:block; height:400px; width:auto; object-fit:cover; }

.flexible_feature_slider_component_01 .contentFeatureSlider .sld .inner.flx { display:flex; flex-wrap:wrap; }
.flexible_feature_slider_component_01 .slideVisual { flex:1 0 100%; }
.flexible_feature_slider_component_01 .slideContent { flex:1 0 100%; }
.flexible_feature_slider_component_01 .slideVisual img { display:block; width:100%; height:auto; }

@media(min-width:768px){
  .flexible_feature_slider_component_01 .slideVisual { flex:1 0 50%; max-width:50%; }
  .flexible_feature_slider_component_01 .slideContent { flex:1 0 50%; max-width:50%; }
}
