/* ===========================================================================
   Wandering Swede — main stylesheet
   =========================================================================== */

/* Cross-document view transitions. Browsers without support ignore the rule. */
@view-transition {
	navigation: auto;
}

@font-face {
	font-family: 'Montserrat';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/montserrat-variable.woff2') format('woff2-variations');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Raleway';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/raleway-variable.woff2') format('woff2-variations');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
	--ws-container-max: 1230px;
	--ws-container-gutter: 1.25rem;
	--ws-color-text: #111;
	--ws-color-bg: #fff;
	--ws-color-hero-text: #fff;
	--ws-color-cta-bg: #fff;
	--ws-color-cta-text: #111;
	--ws-color-cta-bg-hover: #ECF3F9;
	--ws-color-cta-text-hover: #1B3A5C;
	--ws-header-height: 80px;
	--ws-header-bg: #fff;
	--ws-drawer-width: min(360px, 85vw);
	--ws-drawer-bg: #fff;
	--ws-backdrop-color: rgba(0, 0, 0, 0.5);
	--ws-z-header: 50;
	--ws-z-backdrop: 90;
	--ws-z-drawer: 100;

	--ws-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ws-transition-base: 0.2s var(--ws-ease-standard);
	--ws-card-radius: 25px;
	--ws-card-title-inset: 1rem;
	--ws-card-image-zoom: 1.05;
	--ws-card-zoom-duration: 0.6s;
	--ws-card-overlay-strong: 0.75;
	--ws-card-overlay-mid: 0.55;
	--ws-arrow-size: 40px;
	--ws-arrow-inset: 12px;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
	color: var(--ws-color-text);
	background: var(--ws-color-bg);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body.single,
body.category {
	background: #FAFBFC;
}

body.error404 {
	background: #FAFBFC;
}

img {
	max-width: 100%;
	height: auto;
}

.container {
	max-width: var(--ws-container-max);
	margin-inline: auto;
	padding-inline: var(--ws-container-gutter);
	width: 100%;
}

.site-main > section:first-child {
	margin-top: 0;
}

a {
	color: inherit;
}

/* Visually hidden / screen-reader-only text */
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link {
	position: absolute;
	top: -100px;
	left: 1rem;
	z-index: 1000;
	background: #111;
	color: #fff;
	padding: 0.75rem 1rem;
	text-decoration: none;
	border-radius: 4px;
}

.skip-link:focus {
	top: 1rem;
	clip: auto;
	clip-path: none;
	height: auto;
	width: auto;
	margin: 0;
	position: absolute;
}

/* ---------------------------------------------------------------------------
   Site footer
   --------------------------------------------------------------------------- */

.site-footer {
	background: #F2F5F7;
	color: #111;
}

.site-footer-inner {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	gap: 60px;
	padding-top: 60px;
	padding-bottom: 40px;
}

.site-footer-brand .custom-logo,
.site-footer-brand .custom-logo-link img {
	max-height: 48px;
	width: auto;
	height: auto;
	display: block;
}

.site-footer-brand .site-header-title {
	font-family: 'Montserrat', sans-serif;
	font-size: 18px;
	font-weight: 600;
	color: #111;
	text-decoration: none;
}

.site-footer-socials {
	display: flex;
	gap: 12px;
	list-style: none;
	margin: 24px 0 0;
	padding: 0;
}

.site-footer-social-link {
	color: #111;
	text-decoration: none;
}

.site-footer-social-link svg {
	display: block;
}

.site-footer-col-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 14px;
	font-weight: 600;
	color: #111;
}

.site-footer-menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-footer-menu li {
	margin: 0;
}

.site-footer-menu a {
	display: block;
	padding: 4px 0;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	color: #111;
	text-decoration: none;
}

.site-footer-bottom {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	padding-top: 20px;
	padding-bottom: 20px;
	border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.site-footer-copyright {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 14px;
	color: #555;
}

@media (max-width: 767px) {
	.site-footer-inner {
		grid-template-columns: 1fr;
		gap: 40px;
		padding-top: 40px;
		padding-bottom: 30px;
	}

	.site-footer-bottom {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}
}

/* ---------------------------------------------------------------------------
   Site header
   --------------------------------------------------------------------------- */

.site-header {
	position: relative;
	z-index: var(--ws-z-header);
	background: var(--ws-header-bg);
	color: var(--ws-color-text);
}

.site-header:not(.site-header--transparent) {
	border-bottom: 1px solid #ececec;
}

/* Transparent variant — used on pages whose first Flexible Content block is a
   hero. Header floats over the hero at the top of the page and scrolls away
   with the content. */
.site-header--transparent {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	background: transparent;
	color: #fff;
	isolation: isolate;
}

.site-header--transparent::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 160px;
	background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
	z-index: -1;
	pointer-events: none;
}

.admin-bar .site-header--transparent {
	top: 32px;
}

@media (max-width: 782px) {
	.admin-bar .site-header--transparent {
		top: 46px;
	}
}

.site-header--transparent .site-header-title {
	color: #fff;
}

/* Desktop only — at mobile the nav becomes a drawer with light background,
   where white text would be invisible. Scoped here so the rule can't leak. */
@media (min-width: 1025px) {
	.site-header--transparent .site-nav-list a {
		color: #fff;
	}

	.site-header--transparent .site-nav-list a:hover,
	.site-header--transparent .site-nav-list a:focus-visible,
	.site-header--transparent .site-nav-list .current-menu-item > a,
	.site-header--transparent .site-nav-list .current_page_item > a {
		color: rgba(255, 255, 255, 0.7);
	}

	/* Dropdown sits on a white panel — keep its links dark. */
	.site-header--transparent .site-nav-list .sub-menu a,
	.site-header--transparent .site-nav-list .sub-menu a:hover,
	.site-header--transparent .site-nav-list .sub-menu a:focus-visible {
		color: var(--ws-color-text);
	}
}

.site-header--transparent .site-header-toggle-bar {
	background: #fff;
}

.site-header--transparent .site-header-toggle[aria-expanded="true"] .site-header-toggle-bar {
	background: #111;
}

.site-header-container {
	max-width: var(--ws-container-max);
	margin-inline: auto;
	padding-inline: var(--ws-container-gutter);
	min-height: var(--ws-header-height);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
}

.site-header-brand {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.site-header-brand .custom-logo-link {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
}

.site-header-brand .custom-logo {
	display: block;
	height: auto;
	max-height: 48px;
	width: auto;
}

.site-header-title {
	font-size: 1.25rem;
	font-weight: 700;
	text-decoration: none;
	color: var(--ws-color-text);
}

/* Desktop navigation */
.site-nav {
	display: flex;
	align-items: center;
}

.site-nav-list,
.site-nav .menu {
	display: flex;
	align-items: center;
	gap: 25px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-nav-list a {
	color: var(--ws-color-text);
	text-decoration: none;
	font-family: 'Raleway', sans-serif;
	font-weight: 700;
	font-size: 14px;
	text-transform: uppercase;
	letter-spacing: -0.01em;
	padding: 0.5rem 0;
	display: inline-block;
	transition: color 0.15s ease;
}

.site-nav-list a:hover,
.site-nav-list a:focus-visible {
	color: #000;
}

.site-nav-list .current-menu-item > a,
.site-nav-list .current_page_item > a {
	color: #000;
}

.site-nav-list .menu-item-has-children {
	position: relative;
}

/* Caret on parent items (desktop affordance). */
.site-nav-list .menu-item-has-children > a::after {
	content: '';
	display: inline-block;
	width: 6px;
	height: 6px;
	margin-left: 6px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
}

.site-nav-list .sub-menu {
	list-style: none;
	margin: 0;
	padding: 8px 0;
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 200px;
	background: #fff;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
	z-index: 1;
}

.site-nav-list .menu-item-has-children:hover > .sub-menu,
.site-nav-list .menu-item-has-children:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.site-nav-list .sub-menu a {
	display: block;
	padding: 8px 16px;
	font-weight: 600;
	font-size: 13px;
	text-transform: none;
	letter-spacing: 0;
}

.site-nav-list .sub-menu a:hover,
.site-nav-list .sub-menu a:focus-visible {
	background: #ECF3F9;
}

/* Submenu toggle button — mobile-only, hidden on desktop. */
.site-nav-subtoggle {
	display: none;
}

/* Hamburger toggle (mobile only) */
.site-header-toggle {
	display: none;
	width: 44px;
	height: 44px;
	padding: 10px;
	background: transparent;
	border: 0;
	cursor: pointer;
	color: inherit;
	position: relative;
	flex-shrink: 0;
}

.site-header-toggle-bar {
	display: block;
	position: absolute;
	left: 10px;
	width: 24px;
	height: 2px;
	background: currentColor;
	border-radius: 2px;
	transition: transform 0.25s ease, opacity 0.2s ease, top 0.25s ease;
}

.site-header-toggle-bar:nth-child(1) { top: 14px; }
.site-header-toggle-bar:nth-child(2) { top: 21px; }
.site-header-toggle-bar:nth-child(3) { top: 28px; }

.site-header-toggle[aria-expanded="true"] .site-header-toggle-bar:nth-child(1) {
	top: 21px;
	transform: rotate(45deg);
}

.site-header-toggle[aria-expanded="true"] .site-header-toggle-bar:nth-child(2) {
	opacity: 0;
}

.site-header-toggle[aria-expanded="true"] .site-header-toggle-bar:nth-child(3) {
	top: 21px;
	transform: rotate(-45deg);
}

/* Close button (mobile drawer only) */
.site-nav-close {
	display: none;
	position: absolute;
	top: 1rem;
	right: 1rem;
	width: 44px;
	height: 44px;
	padding: 0;
	background: transparent;
	border: 0;
	cursor: pointer;
	font-size: 2rem;
	line-height: 1;
	color: var(--ws-color-text);
}

.site-nav-backdrop {
	display: none;
}

/* Tablet + mobile: hamburger + slide-in drawer from the right */
@media (max-width: 1024px) {
	.site-header-toggle {
		display: inline-flex;
	}

	.site-nav {
		position: fixed;
		top: 0;
		right: 0;
		bottom: 0;
		width: var(--ws-drawer-width);
		max-width: 100vw;
		background: var(--ws-drawer-bg);
		padding: 4rem 1.5rem 1.5rem;
		transform: translateX(100%);
		transition: transform 0.3s ease;
		z-index: var(--ws-z-drawer);
		overflow-y: auto;
		box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
		display: block;
	}

	.site-nav.is-open {
		transform: translateX(0);
	}

	.site-nav-list,
	.site-nav .menu {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.site-nav-list li {
		border-bottom: 1px solid rgba(0, 0, 0, 0.08);
	}

	.site-nav-list a {
		display: block;
		padding: 14px 0;
		font-size: 16px;
	}

	/* Parent row: link + caret toggle on one line, submenu wraps below. */
	.site-nav-list .menu-item-has-children {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
	}

	.site-nav-list .menu-item-has-children > a {
		flex: 1 1 auto;
	}

	/* Hide the desktop CSS caret — the button below replaces it in the drawer. */
	.site-nav-list .menu-item-has-children > a::after {
		display: none;
	}

	.site-nav-subtoggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		align-self: stretch;
		flex: 0 0 auto;
		width: 44px;
		padding: 0;
		background: transparent;
		border: 0;
		color: inherit;
		cursor: pointer;
	}

	.site-nav-subtoggle-caret {
		width: 7px;
		height: 7px;
		border-right: 2px solid currentColor;
		border-bottom: 2px solid currentColor;
		transform: translateY(-2px) rotate(45deg);
		transition: transform 0.2s ease;
	}

	.site-nav-list .menu-item-has-children.is-open > .site-nav-subtoggle .site-nav-subtoggle-caret {
		transform: translateY(1px) rotate(-135deg);
	}

	/* Submenu becomes a collapsed accordion panel (reset desktop dropdown). */
	.site-nav-list .sub-menu {
		flex-basis: 100%;
		position: static;
		min-width: 0;
		background: transparent;
		box-shadow: none;
		opacity: 1;
		visibility: visible;
		transform: none;
		transition: none;
		padding: 0 0 0.5rem 0.75rem;
		display: none;
	}

	.site-nav-list .menu-item-has-children.is-open > .sub-menu {
		display: block;
	}

	.site-nav-list .sub-menu a {
		padding: 10px 0;
		font-size: 15px;
	}

	.site-nav-list .sub-menu a:hover,
	.site-nav-list .sub-menu a:focus-visible {
		background: transparent;
	}

	.site-nav-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}

	.site-nav-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: var(--ws-backdrop-color);
		z-index: var(--ws-z-backdrop);
		opacity: 0;
		visibility: hidden;
		transition: opacity 0.3s ease, visibility 0.3s ease;
	}

	.site-nav-backdrop.is-visible {
		opacity: 1;
		visibility: visible;
	}
}

@media (prefers-reduced-motion: reduce) {
	.site-nav,
	.site-nav-backdrop,
	.site-header-toggle-bar {
		transition: none;
	}
}

/* ---------------------------------------------------------------------------
   Hero
   --------------------------------------------------------------------------- */

.ws-hero {
	position: relative;
	width: 100%;
	margin: 0;
	overflow: hidden;
	isolation: isolate;
	color: var(--ws-color-hero-text);
}

.ws-hero-media {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.ws-hero-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: var(--ws-hero-object-position, center center);
	display: block;
}

.ws-hero--has-overlay::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: #000;
	opacity: var(--ws-hero-overlay-opacity, 0.4);
	z-index: 1;
	pointer-events: none;
}

.ws-hero .container {
	padding-top: 260px;
	padding-bottom: 200px;
}

.ws-hero-inner {
	position: relative;
	z-index: 2;
	max-width: 700px;
}

.ws-hero-content {
	text-align: left;
}

.ws-hero-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 3.5rem;
	font-weight: 600;
	line-height: 1.1;
	/* Render Montserrat at its fuller macOS weight instead of the body's
	   grayscale-thinned smoothing — matches the look on non-macOS platforms. */
	-webkit-font-smoothing: auto;
	-moz-osx-font-smoothing: auto;
}

.ws-hero-body {
	margin: 0 0 1.75rem;
	font-size: 17px;
	font-weight: 600;
	line-height: 1.5;
}

@media (max-width: 767px) {
	.ws-hero .container {
		padding-top: 160px;
		padding-bottom: 120px;
	}

	.ws-hero-heading {
		font-size: 2rem;
	}

	.ws-hero-body {
		font-size: 1rem;
	}
}

.ws-hero-cta {
	display: inline-block;
	padding: 0.9rem 1.85rem;
	background-color: var(--ws-color-cta-bg);
	color: var(--ws-color-cta-text);
	text-decoration: none;
	border-radius: 999px;
	font-weight: 600;
	font-size: 1rem;
	line-height: 1;
	transition: background-color 0.18s ease, color 0.18s ease;
}

.ws-hero-cta:hover,
.ws-hero-cta:focus-visible {
	background-color: var(--ws-color-cta-bg-hover);
	color: var(--ws-color-cta-text-hover);
}

.ws-hero-cta:focus-visible {
	outline: 2px solid var(--ws-color-cta-bg);
	outline-offset: 3px;
}

/* ---------------------------------------------------------------------------
   Hero (compact) — discreet text-only page header
   --------------------------------------------------------------------------- */

.ws-hero-compact {
	background: #ECF3F9;
	padding: 60px 0;
}

.ws-hero-compact--narrow .ws-hero-compact-inner {
	max-width: 850px;
	margin-inline: auto;
}

.ws-hero-compact-heading {
	margin: 0;
	font-family: 'Montserrat', sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.ws-hero-compact-body {
	max-width: 800px;
	margin: 16px 0 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.6;
	color: #3A4F66;
}

/* ---------------------------------------------------------------------------
   Text — WYSIWYG in a centered reading column
   --------------------------------------------------------------------------- */

.ws-text {
	padding-block: 80px;
}

/* Tighter gap when a Text block follows the compact hero. */
.ws-hero-compact + .ws-text {
	padding-top: 60px;
}

.ws-text--bg-pale {
	background: #ECF3F9;
}

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

.ws-text-inner {
	max-width: 850px;
	margin-inline: auto;
}

.ws-text-content {
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.65;
	color: var(--ws-color-text);
}

.ws-text-content > :first-child {
	margin-top: 0;
}

.ws-text-content > :last-child {
	margin-bottom: 0;
}

.ws-text-content p {
	margin: 0 0 1em;
}

.ws-text-content h2,
.ws-text-content h3,
.ws-text-content h4 {
	font-family: 'Montserrat', sans-serif;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.ws-text-content h2 {
	margin: 40px 0 16px;
	font-size: 28px;
}

.ws-text-content h3 {
	margin: 32px 0 12px;
	font-size: 22px;
}

.ws-text-content h4 {
	margin: 24px 0 10px;
	font-size: 18px;
}

.ws-text-content ul,
.ws-text-content ol {
	margin: 0 0 1em;
	padding-left: 24px;
}

.ws-text-content li {
	margin-bottom: 8px;
}

.ws-text-content a {
	color: #1B3A5C;
	text-decoration: underline;
}

@media (max-width: 767px) {
	.ws-text {
		padding-block: 48px;
	}
}

/* ---------------------------------------------------------------------------
   Post Grid
   --------------------------------------------------------------------------- */

.ws-post-grid {
	padding-block: 5rem;
}

.ws-post-grid-heading {
	margin: 0 0 2rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 28px;
	font-weight: 500;
	line-height: 1.2;
}

.ws-post-grid-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
}

@media (max-width: 767px) {
	.ws-post-grid-list {
		grid-template-columns: 1fr;
		gap: 1.5rem;
	}
}

.ws-post-grid-link {
	margin: 24px 0 0;
	font-size: 14px;
}

.post-card {
	margin: 0;
}

.post-card-media-link {
	display: block;
	border-radius: 25px;
}

.post-card-title a {
	color: var(--ws-color-text);
	text-decoration: none;
}

.post-card-media {
	position: relative;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	border-radius: 25px;
	background: #ececec;
}

.post-card-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.post-card-image--placeholder {
	background: #ececec;
}

.post-card-title {
	margin: 1rem 0 0;
	font-family: 'Montserrat', sans-serif;
	font-size: 20px;
	font-weight: 500;
	line-height: 1.3;
}

/* ---------------------------------------------------------------------------
   Categories
   --------------------------------------------------------------------------- */

.ws-categories {
	padding-block: 100px;
}

.ws-categories-header {
	max-width: 700px;
	margin-bottom: 48px;
}

.ws-categories-eyebrow {
	margin: 0 0 8px;
	font-family: 'Raleway', sans-serif;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: #888;
}

.ws-categories-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 36px;
	font-weight: 500;
	line-height: 1.2;
}

.ws-categories-body {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #3A4F66;
}

.ws-categories-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}

.ws-categories-list li {
	margin: 0;
}

.ws-category-card {
	display: block;
	text-decoration: none;
	color: inherit;
}

.ws-category-card-media {
	position: relative;
	aspect-ratio: 5 / 6;
	border-radius: var(--ws-card-radius);
	overflow: hidden;
	background: #ececec;
}

.ws-category-card-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (prefers-reduced-motion: no-preference) {
	.ws-category-card-image {
		transition: transform var(--ws-card-zoom-duration) var(--ws-ease-standard);
	}

	.ws-category-card:hover .ws-category-card-image {
		transform: scale(var(--ws-card-image-zoom));
	}
}

.ws-category-card-image--placeholder {
	background: #ececec;
}

.ws-category-card-overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(
		to top,
		rgba(0, 0, 0, 0.75) 0,
		rgba(0, 0, 0, 0.55) 3em,
		rgba(0, 0, 0, 0) 6em
	);
}

@media (prefers-reduced-motion: no-preference) {
	.ws-category-card-overlay {
		transition: background var(--ws-card-zoom-duration) var(--ws-ease-standard);
	}
}

.ws-category-card:hover .ws-category-card-overlay {
	background: linear-gradient(
		to top,
		rgba(0, 0, 0, 0.9) 0,
		rgba(0, 0, 0, 0.7) 3em,
		rgba(0, 0, 0, 0.2) 6em
	);
}

.ws-category-card-title {
	position: absolute;
	bottom: 16px;
	left: 16px;
	right: 16px;
	margin: 0;
	font-family: 'Montserrat', sans-serif;
	font-size: 18px;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}

@media (max-width: 767px) {
	.ws-categories {
		padding-block: 60px;
	}

	.ws-categories-list {
		grid-template-columns: repeat(2, 1fr);
	}

	.ws-categories-heading {
		font-size: 24px;
	}
}

/* ---------------------------------------------------------------------------
   Destinations
   --------------------------------------------------------------------------- */

/* Splide layout primitives (inlined to prevent CLS — Splide JS only adds
   state classes; layout is fully described by this CSS). */
.splide {
	position: relative;
}

.splide__track {
	overflow: hidden;
	position: relative;
}

.splide__list {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
	backface-visibility: hidden;
}

.splide__slide {
	flex-shrink: 0;
	position: relative;
	box-sizing: border-box;
	list-style: none;
	margin: 0;
	flex: 0 0 calc(100% / var(--ws-per-page));
}

.ws-destinations-splide { --ws-per-page: 3; }

@media (max-width: 767px) {
	.ws-destinations-splide { --ws-per-page: 2; }
}

.splide.is-initialized:not(.is-active) .splide__list {
	display: block;
}

.splide__sr {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
	padding: 0;
	margin: -1px;
}

.splide__pagination,
.splide__arrows {
	display: none;
}

/* Section */
.ws-destinations {
	padding-block: 100px;
	background: #F2F5F7;
}

.ws-destinations-grid {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 80px;
	align-items: start;
}

.ws-destinations-text {
	padding-top: 30px;
}

.ws-destinations-eyebrow {
	margin: 0 0 8px;
	font-family: 'Raleway', sans-serif;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: #888;
}

.ws-destinations-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-destinations-body {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
}

.ws-destinations-slider-wrap {
	position: relative;
}

.ws-destinations-splide {
	touch-action: pan-y pinch-zoom;
	cursor: grab;
}

.ws-destinations-splide:active {
	cursor: grabbing;
}

.ws-destinations-splide a {
	cursor: inherit;
}

/* Card */
.destination-card {
	position: relative;
	margin: 0;
}

.destination-card-link {
	display: block;
	text-decoration: none;
	color: inherit;
}

.destination-card-media {
	position: relative;
	aspect-ratio: 2 / 3;
	border-radius: var(--ws-card-radius);
	overflow: hidden;
	background: #ececec;
}

.destination-card-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (prefers-reduced-motion: no-preference) {
	.destination-card-image {
		transition: transform var(--ws-card-zoom-duration) var(--ws-ease-standard);
	}

	.destination-card:hover .destination-card-image {
		transform: scale(var(--ws-card-image-zoom));
	}
}

.destination-card-image--placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: #ececec;
}

.destination-card-overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(
		to top,
		rgba(0, 0, 0, var(--ws-card-overlay-strong)) 0,
		rgba(0, 0, 0, var(--ws-card-overlay-mid)) 3em,
		rgba(0, 0, 0, 0) 6em
	);
}

.destination-card-title {
	position: absolute;
	bottom: var(--ws-card-title-inset);
	left: var(--ws-card-title-inset);
	right: var(--ws-card-title-inset);
	margin: 0;
	font-family: 'Montserrat', sans-serif;
	font-size: 1.25rem;
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
	pointer-events: none;
	user-select: none;
	-webkit-user-select: none;
	-webkit-touch-callout: none;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Arrows — frosted glass with solid fallback. Asymmetric visibility driven by
   .show-prev / .show-next on the wrap (set by JS based on cursor position). */
.ws-destinations-prev,
.ws-destinations-next {
	position: absolute;
	top: 50%;
	margin-top: calc(var(--ws-arrow-size) / -2);
	width: var(--ws-arrow-size);
	height: var(--ws-arrow-size);
	padding: 0;
	border: 0;
	background: rgba(255, 255, 255, 0.92);
	border-radius: 50%;
	color: #111;
	cursor: pointer;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	pointer-events: none;
}

@supports (backdrop-filter: blur(8px)) or (-webkit-backdrop-filter: blur(8px)) {
	.ws-destinations-prev,
	.ws-destinations-next {
		background: rgba(255, 255, 255, 0.75);
		-webkit-backdrop-filter: blur(8px);
		backdrop-filter: blur(8px);
	}
}

.ws-destinations-slider-wrap.show-prev .ws-destinations-prev,
.ws-destinations-slider-wrap.show-next .ws-destinations-next {
	opacity: 1;
	pointer-events: auto;
}

.ws-destinations-prev:disabled,
.ws-destinations-next:disabled {
	opacity: 0.2;
	pointer-events: none;
}

.ws-destinations-prev svg,
.ws-destinations-next svg {
	display: block;
}

.ws-destinations-prev {
	left: calc(var(--ws-arrow-size) / -2);
}

.ws-destinations-next {
	right: calc(var(--ws-arrow-size) / -2);
}

@media (prefers-reduced-motion: no-preference) {
	.ws-destinations-prev,
	.ws-destinations-next {
		transition: opacity var(--ws-transition-base), transform var(--ws-transition-base);
	}

	.ws-destinations-prev:hover,
	.ws-destinations-next:hover {
		transform: scale(1.1);
	}
}

@media (max-width: 767px) {
	.ws-destinations-grid {
		grid-template-columns: 1fr;
		gap: 2rem;
	}

	.ws-destinations-text {
		padding-top: 0;
	}

	.ws-destinations-prev,
	.ws-destinations-next {
		display: none;
	}
}

/* ---------------------------------------------------------------------------
   Split (text + image)
   --------------------------------------------------------------------------- */

.ws-split {
	padding-block: 80px;
}

.ws-split-inner {
	display: flex;
	flex-direction: row-reverse;
	gap: 80px;
	align-items: flex-start;
}

.ws-split--reverse .ws-split-inner {
	flex-direction: row;
}

.ws-split-media,
.ws-split-text {
	flex: 1 1 50%;
	min-width: 0;
}

.ws-split-text {
	padding-top: 30px;
}

.ws-split-image {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--ws-card-radius);
}

.ws-split-image--placeholder {
	aspect-ratio: 4 / 3;
	background: #ececec;
}

.ws-split-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-split-body {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
}

@media (max-width: 767px) {
	.ws-split-inner,
	.ws-split--reverse .ws-split-inner {
		flex-direction: column;
		gap: 1.5rem;
	}

	.ws-split-text {
		padding-top: 0;
	}
}

/* ---------------------------------------------------------------------------
   Zig-zag (omlott) — two offset columns, each free-flowing top to bottom
   --------------------------------------------------------------------------- */

.ws-zigzag {
	padding-block: 80px;
}

.ws-zigzag-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 80px;
	align-items: start;
}

.ws-zigzag-col {
	display: flex;
	flex-direction: column;
	gap: 40px;
	min-width: 0;
}

.ws-zigzag-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
	color: #192a3d;
}

.ws-zigzag-body {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.65;
	color: var(--ws-color-text);
}

.ws-zigzag-image {
	width: 100%;
	height: auto;
	display: block;
}

.ws-zigzag-image--placeholder {
	aspect-ratio: 4 / 3;
	background: #ececec;
}

@media (max-width: 767px) {
	.ws-zigzag {
		padding-block: 48px;
	}

	.ws-zigzag-grid {
		grid-template-columns: 1fr;
		row-gap: 40px;
	}
}

/* ---------------------------------------------------------------------------
   About Me
   --------------------------------------------------------------------------- */

.ws-about-me {
	background: #ECF3F9;
	padding-block: 80px;
}

.ws-about-me-inner {
	display: flex;
	flex-direction: row-reverse;
	gap: 80px;
	align-items: center;
}

.ws-about-me-media,
.ws-about-me-text {
	flex: 1 1 50%;
	min-width: 0;
}

.ws-about-me-image {
	width: 100%;
	height: auto;
	display: block;
}

.ws-about-me-image--placeholder {
	aspect-ratio: 4 / 3;
	background: #ececec;
}

.ws-about-me-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-about-me-body {
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
}

.ws-about-me-body p {
	margin: 0 0 1rem;
}

.ws-about-me-body p:last-child {
	margin-bottom: 0;
}

.ws-about-me-cta {
	display: inline-block;
	margin-top: 28px;
	padding: 10px 30px;
	background: #1B3A5C;
	color: #fff;
	font-family: 'Raleway', sans-serif;
	font-weight: 600;
	font-size: 15px;
	text-decoration: none;
	border-radius: 999px;
	transition: background-color 0.18s ease;
}

.ws-about-me-cta:hover,
.ws-about-me-cta:focus-visible {
	background: #15314d;
}

@media (max-width: 767px) {
	.ws-about-me-inner {
		flex-direction: column;
		align-items: stretch;
		gap: 1.5rem;
	}
}

/* ---------------------------------------------------------------------------
   Newsletter
   --------------------------------------------------------------------------- */

.ws-newsletter {
	background: #1B3A5C;
	color: #fff;
	padding-block: 80px;
}

.ws-newsletter-inner {
	display: flex;
	flex-direction: row-reverse;
	gap: 80px;
	align-items: center;
}

.ws-newsletter-media,
.ws-newsletter-text {
	flex: 1 1 50%;
	min-width: 0;
}

.ws-newsletter-image {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--ws-card-radius);
}

.ws-newsletter-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 32px;
	font-weight: 500;
	line-height: 1.2;
	color: #fff;
}

.ws-newsletter-body {
	margin: 0 0 24px;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #fff;
}

.ws-newsletter-form {
	display: flex;
	gap: 8px;
	max-width: 480px;
	margin: 0 0 12px;
}

.ws-newsletter-input {
	flex: 1;
	min-width: 0;
	padding: 14px 16px;
	border: 0;
	border-radius: 4px;
	background: #fff;
	color: #111;
	font-family: 'Raleway', sans-serif;
	font-size: 16px;
}

.ws-newsletter-submit {
	padding: 14px 24px;
	border: 0;
	border-radius: 4px;
	background: #fff;
	color: #1B3A5C;
	font-family: 'Montserrat', sans-serif;
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
}

.ws-newsletter-disclaimer {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 13px;
	color: rgba(255, 255, 255, 0.7);
}

@media (max-width: 767px) {
	.ws-newsletter-inner {
		flex-direction: column;
		gap: 1.5rem;
	}
}

@media (max-width: 480px) {
	.ws-newsletter-form {
		flex-direction: column;
	}

	.ws-newsletter-submit {
		width: 100%;
		min-height: 44px;
	}
}

/* ---------------------------------------------------------------------------
   Article (single post + single hotel)
   --------------------------------------------------------------------------- */

.ws-article-header,
.ws-article-featured {
	max-width: 900px;
	margin-inline: auto;
	padding-inline: var(--ws-container-gutter);
}

.ws-article-header {
	padding-top: 60px;
}

.ws-article-content {
	max-width: 820px;
	margin-inline: auto;
	padding-inline: var(--ws-container-gutter);
	padding-bottom: 60px;
	color: #3A4F66;
}

.ws-article-disclosure {
	max-width: 820px;
	margin: 40px auto 0;
	padding-inline: var(--ws-container-gutter);
}

.ws-article-disclosure-inner {
	margin: 0;
	padding: 16px 20px;
	background: #F2F5F7;
	border-left: 3px solid #1B3A5C;
	font-family: 'Raleway', sans-serif;
	font-size: 14px;
	line-height: 1.5;
	color: #3A4F66;
}

.ws-article-disclosure + .ws-article-content {
	padding-top: 24px;
}

.ws-article-categories {
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.ws-article-category {
	display: inline-block;
	padding: 6px 14px;
	background: #F2F5F7;
	border-radius: 999px;
	font-family: 'Raleway', sans-serif;
	font-size: 13px;
	color: #111;
	text-decoration: none;
}

.ws-article-title {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 40px;
	font-weight: 600;
	line-height: 1.2;
	color: #111;
}

.ws-article-meta {
	margin: 0 0 24px;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	color: #555;
}

.ws-article-lead {
	margin: 0 0 40px;
	font-family: 'Raleway', sans-serif;
	font-size: 20px;
	line-height: 1.5;
	color: #333;
}

.ws-article-featured {
	margin: 0 auto 40px;
}

.ws-article-featured-image {
	width: 100%;
	height: auto;
	display: block;
	border-radius: 25px;
}

/* Resilient typography — applies to ALL direct children of content wrapper,
   regardless of whether WP wraps text in <p>, <div>, or other tags. */
.ws-article-content > * {
	font-family: 'Raleway', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.65;
	margin: 0 0 24px;
}

.ws-article-content > *:last-child {
	margin-bottom: 0;
}

.ws-article-content > h2 {
	font-family: 'Montserrat', sans-serif;
	font-size: 30px;
	font-weight: 600;
	line-height: 1.2;
	margin: 30px 0 0;
	padding-bottom: 15px;
	color: #111;
}

.ws-article-content > h3 {
	font-family: 'Montserrat', sans-serif;
	font-size: 22px;
	font-weight: 600;
	line-height: 1.3;
	margin: 40px 0 14px;
	color: #111;
}

.ws-article-content > .wp-block-heading {
	margin-top: 30px;
}

.ws-article-content > ul,
.ws-article-content > ol {
	padding-left: 24px;
}

.ws-article-content li {
	margin-bottom: 8px;
}

.ws-article-content img {
	max-width: 100%;
	height: auto;
	border-radius: 25px;
}

.ws-article-content > figure {
	margin: 32px 0;
}

.ws-article-content figcaption {
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	line-height: 1.5;
	color: #555;
	margin-top: 8px;
	text-align: center;
}

.ws-article-content a {
	color: #1B3A5C;
	text-decoration: underline;
}

.ws-article-content > blockquote {
	margin: 32px 0;
	padding: 0 0 0 24px;
	border-left: 3px solid #1B3A5C;
	font-family: 'Raleway', sans-serif;
	font-style: italic;
	font-size: 21px;
	line-height: 1.55;
	color: #333;
}

@media (max-width: 767px) {
	.ws-article-title {
		font-size: 30px;
	}

	.ws-article-lead {
		font-size: 18px;
	}

	.ws-article-content > * {
		font-size: 17px;
		margin-bottom: 22px;
	}

	.ws-article-content > h2 {
		font-size: 25px;
		margin: 44px 0 16px;
	}

	.ws-article-content > h3 {
		font-size: 20px;
		margin: 32px 0 12px;
	}

	.ws-article-content img,
	.ws-article-featured-image {
		border-radius: 16px;
	}

}

/* Hotel-specific meta elements — type badge, location link, rating stars.
   Render only on hotel template but use .ws-article-* prefix since they belong
   to the article meta line, not to a hotel-bound CSS scope. */

.ws-article-type {
	display: inline-block;
	margin: 0 0 16px;
	padding: 6px 14px;
	background: #1B3A5C;
	color: #fff;
	border-radius: 999px;
	font-family: 'Raleway', sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ws-article-location {
	color: inherit;
	text-decoration: none;
}

.ws-article-location[href]:hover,
.ws-article-location[href]:focus-visible {
	text-decoration: underline;
}

.ws-article-rating {
	color: #C8553D;
	letter-spacing: 0.04em;
}

/* ---------------------------------------------------------------------------
   Archive (category, date, etc.) + Author
   --------------------------------------------------------------------------- */

.archive-header {
	padding: 60px 0 40px;
	text-align: left;
}

.category-header {
	background: #F2F5F7;
}

.archive-title {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.archive-description {
	max-width: 800px;
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.6;
	color: #3A4F66;
}

/* Author profile — split layout, text left, image right */
.author-profile {
	padding: 80px 0;
}

.author-profile-inner {
	display: flex;
	flex-direction: row-reverse;
	gap: 80px;
	align-items: center;
}

.author-profile-media,
.author-profile-text {
	flex: 1 1 50%;
	min-width: 0;
}

.author-portrait {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--ws-card-radius);
}

.author-name {
	margin: 0 0 20px;
	font-family: 'Montserrat', sans-serif;
	font-size: 40px;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.author-socials {
	display: flex;
	gap: 16px;
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
}

.author-social-link {
	color: #3A4F66;
	text-decoration: none;
}

.author-social-link svg {
	display: block;
}

.author-bio {
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.6;
	color: #3A4F66;
}

.author-bio p {
	margin: 0 0 16px;
}

.author-bio p:last-child {
	margin-bottom: 0;
}

.archive-posts,
.author-posts {
	padding-bottom: 80px;
}

.author-posts-heading {
	margin: 0 0 32px;
	font-family: 'Montserrat', sans-serif;
	font-size: 24px;
	font-weight: 500;
	color: #192a3d;
}

.archive-posts-list,
.author-posts-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
	padding-top: 60px;
	margin-bottom: 48px;
}

.archive-empty {
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #3A4F66;
	text-align: center;
	padding: 40px 0;
}

.archive-posts .pagination,
.author-posts .pagination {
	margin-top: 32px;
	text-align: center;
}

.pagination .nav-links {
	display: inline-flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

.pagination .page-numbers {
	display: inline-block;
	padding: 8px 14px;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	color: #3A4F66;
	text-decoration: none;
	border: 1px solid #e1e8ed;
	border-radius: 4px;
}

.pagination .page-numbers.current {
	background: #192a3d;
	color: #fff;
	border-color: #192a3d;
}

.pagination .page-numbers.dots {
	border: 0;
}

@media (max-width: 767px) {
	.archive-header {
		padding: 40px 0 24px;
	}

	.author-name {
		font-size: 30px;
	}

	.author-profile {
		padding: 40px 0;
	}

	.author-profile-inner {
		flex-direction: column;
		gap: 32px;
	}

	.archive-posts-list,
	.author-posts-list {
		grid-template-columns: 1fr;
	}

	.archive-posts,
	.author-posts {
		padding-bottom: 40px;
	}
}

/* ---------------------------------------------------------------------------
   404
   --------------------------------------------------------------------------- */

.error-404 {
	min-height: 70vh;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 80px 0;
	text-align: center;
}

.error-404-number {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 160px;
	font-weight: 600;
	line-height: 1;
	color: #3A4F66;
}

.error-404-message {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 32px;
	font-weight: 500;
	color: #192a3d;
}

.error-404-description {
	max-width: 500px;
	margin: 0 auto 32px;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.6;
	color: #3A4F66;
}

.error-404-link {
	font-family: 'Raleway', sans-serif;
	font-size: 16px;
	color: #3A4F66;
	text-decoration: underline;
}

@media (max-width: 767px) {
	.error-404-number {
		font-size: 100px;
	}

	.error-404-message {
		font-size: 24px;
	}
}

/* ============================================================
   Best time to visit (Flexible Content)
   ============================================================ */
.ws-btv {
	padding-block: 100px;
}

.ws-btv-grid {
	display: grid;
	grid-template-columns: 2fr 3fr;
	gap: 56px;
	align-items: start;
}

.ws-btv-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-btv-body {
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	line-height: 1.65;
	color: #3A4F66;
}

.ws-btv-body p {
	margin: 0 0 1em;
}

.ws-btv-body p:last-child {
	margin-bottom: 0;
}

.ws-btv-body.is-clamped {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 6;
	overflow: hidden;
}

.ws-btv-readmore {
	display: inline-block;
	margin-top: 12px;
	padding: 0;
	border: 0;
	background: none;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	font-weight: 600;
	color: #1B3A5C;
	text-decoration: underline;
	cursor: pointer;
}

/* Month grid — static 6×2. Rating is carried by the marker, not card colour;
   the lone terracotta star is the only accent on an otherwise quiet field. */
.ws-btv-months {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ws-btv-card {
	position: relative;
	margin: 0;
}

.ws-btv-card-media {
	position: relative;
	aspect-ratio: 3 / 4;
	border-radius: 14px;
	background: #ECF3F9;
	overflow: hidden;
}

.ws-btv-card--best .ws-btv-card-media {
	background: #1B3A5C;
}

.ws-btv-card--best .ws-btv-card-month {
	color: #fff;
}

.ws-btv-card-marker {
	position: absolute;
	top: 12px;
	right: 12px;
	width: 32px;
	height: 32px;
}

.ws-btv-card-marker svg {
	display: block;
	width: 32px;
	height: 32px;
}

.ws-btv-card-content {
	position: absolute;
	bottom: var(--ws-card-title-inset);
	left: var(--ws-card-title-inset);
	right: var(--ws-card-title-inset);
}

.ws-btv-card-month {
	font-family: 'Montserrat', sans-serif;
	font-size: 20px;
	font-weight: 500;
	letter-spacing: 0.02em;
	color: #192a3d;
}

.ws-btv-card--empty .ws-btv-card-month {
	color: #6C7E96;
}

/* Legend — defines the symbols, since meaning is now carried by them. */
.ws-btv-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	margin: 20px 0 0;
	padding: 0;
	list-style: none;
}

.ws-btv-legend-item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: 'Montserrat', sans-serif;
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: #6C7E96;
}

.ws-btv-legend-marker {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
}

.ws-btv-legend-marker svg {
	display: block;
	width: 18px;
	height: 18px;
}

@media (max-width: 979px) {
	.ws-btv-grid {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

@media (max-width: 767px) {
	.ws-btv {
		padding-block: 60px;
	}

	.ws-btv-heading {
		font-size: 24px;
	}

	.ws-btv-body {
		font-size: 16px;
	}
}

@media (max-width: 620px) {
	.ws-btv-months {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 400px) {
	.ws-btv-months {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ============================================================
   Hotel Grid (Flexible Content)
   ============================================================ */
.ws-hotel-grid {
	padding-block: 100px;
}

.ws-hotel-grid-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-hotel-grid-body {
	max-width: 700px;
	margin: 0 0 48px;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #3A4F66;
}

.ws-hotel-grid-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 40px;
}

.ws-hotel-card {
	display: flex;
	flex-direction: column;
}

.ws-hotel-card-media-link {
	display: block;
	text-decoration: none;
}

.ws-hotel-card-media {
	position: relative;
	overflow: hidden;
}

.ws-hotel-card-image {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

.ws-hotel-card-image--placeholder {
	background: #ececec;
}

.ws-hotel-card-label {
	position: absolute;
	top: 20px;
	right: 20px;
	display: inline-block;
	padding: 6px 12px;
	background: #ffffff;
	color: #1B3A5C;
	font-family: 'Raleway', sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ws-hotel-card-body {
	padding-top: 16px;
}

.ws-hotel-card-title {
	margin: 0 0 4px;
	font-family: 'Montserrat', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 1.3;
}

.ws-hotel-card-title a {
	color: #192a3d;
	text-decoration: none;
}

.ws-hotel-card-location {
	margin: 0 0 6px;
	font-family: 'Raleway', sans-serif;
	font-size: 14px;
	color: #3A4F66;
}

.ws-hotel-card-rating {
	margin: 0;
	font-size: 16px;
	color: #C8553D;
	letter-spacing: 0.04em;
}

@media (max-width: 767px) {
	.ws-hotel-grid {
		padding-block: 60px;
	}

	.ws-hotel-grid-heading {
		font-size: 24px;
	}

	.ws-hotel-grid-list {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

/* ============================================================
   Map section (Flexible Content)
   ============================================================ */
.ws-map {
	padding-block: 100px;
}

.ws-map-inner {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 80px;
	align-items: start;
}

.ws-map-text {
	padding-top: 30px;
	min-width: 0;
}

.ws-map-heading {
	margin: 0 0 1rem;
	font-family: 'Montserrat', sans-serif;
	font-size: 2.25rem;
	font-weight: 500;
	line-height: 1.2;
}

.ws-map-body {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
}

.ws-map-frame {
	position: relative;
	width: 100%;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: #ECF3F9;
	min-width: 0;
}

.ws-map-static {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ws-map-activate {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: 0;
	margin: 0;
	background: rgba(25, 42, 61, 0.35);
	border: 0;
	cursor: pointer;
	color: #ffffff;
	font-family: 'Raleway', sans-serif;
}

.ws-map-activate-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	padding: 20px 28px;
	background: rgba(27, 58, 92, 0.92);
	border-radius: 4px;
}

.ws-map-activate-label {
	font-size: 14px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.ws-map-frame--loading .ws-map-activate {
	pointer-events: none;
	opacity: 0.6;
}

.ws-map-frame--active .ws-map-activate,
.ws-map-frame--active .ws-map-static {
	display: none;
}

.ws-map-canvas {
	width: 100%;
	height: 100%;
}

/* InfoWindow popup */
.ws-map-popup {
	display: flex;
	flex-direction: column;
	max-width: 260px;
	font-family: 'Raleway', sans-serif;
}

.ws-map-popup-image {
	display: block;
	width: 100%;
	height: 140px;
	object-fit: cover;
	margin: 0 0 12px;
}

.ws-map-popup-body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 0 4px 4px;
}

.ws-map-popup-title {
	font-family: 'Montserrat', sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: #192a3d;
	text-decoration: none;
	line-height: 1.3;
}

.ws-map-popup-rating {
	font-size: 14px;
	font-weight: 600;
	color: #C8553D;
	letter-spacing: 0.02em;
}

.ws-map-popup-link {
	margin-top: 4px;
	font-size: 13px;
	font-weight: 700;
	color: #1B3A5C;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	text-decoration: underline;
}

@media (max-width: 767px) {
	.ws-map {
		padding-block: 60px;
	}

	.ws-map-inner {
		grid-template-columns: 1fr;
		gap: 2rem;
	}

	.ws-map-text {
		padding-top: 0;
	}

	.ws-map-heading {
		font-size: 24px;
	}

	.ws-map-body {
		font-size: 16px;
	}

	.ws-map-frame {
		aspect-ratio: 4 / 5;
	}
}

/* ---------------------------------------------------------------------------
   Ways to work together (Contact template)
   --------------------------------------------------------------------------- */

.ws-work {
	padding-block: 80px;
}

.ws-work-inner {
	display: flex;
	gap: 60px;
	align-items: center;
}

.ws-work-content {
	flex: 1 1 60%;
	min-width: 0;
}

.ws-work-media {
	display: flex;
	flex: 1 1 40%;
	min-width: 0;
}

.ws-work-image {
	width: 100%;
	height: auto;
	object-fit: cover;
	display: block;
	border-radius: var(--ws-card-radius);
}

.ws-work-image--placeholder {
	aspect-ratio: 3 / 4;
	background: #ececec;
}

.ws-work-heading {
	margin: 0 0 12px;
	font-family: 'Montserrat', sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.ws-work-intro {
	margin: 0 0 40px;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #3A4F66;
}

.ws-work-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 32px 40px;
}

.ws-work-item {
	border-top: 2px solid #DCE6F0;
	padding-top: 20px;
}

.ws-work-item-title {
	margin: 0 0 8px;
	font-family: 'Montserrat', sans-serif;
	font-size: 18px;
	font-weight: 600;
	color: #192a3d;
}

.ws-work-item-desc {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 16px;
	line-height: 1.6;
	color: #3A4F66;
}

@media (max-width: 767px) {
	.ws-work-inner {
		flex-direction: column;
		gap: 32px;
		align-items: stretch;
	}

	.ws-work-image {
		height: auto;
		aspect-ratio: 4 / 3;
	}

	.ws-work-grid {
		grid-template-columns: 1fr;
		gap: 28px;
	}
}

/* ---------------------------------------------------------------------------
   Contact section (info + socials left, WPForms card right)
   --------------------------------------------------------------------------- */

.ws-contact {
	background: #ECF3F9;
	padding-block: 80px;
}

.ws-contact-inner {
	display: flex;
	gap: 80px;
	align-items: flex-start;
}

.ws-contact-info {
	flex: 1 1 42%;
	min-width: 0;
	padding-top: 8px;
}

.ws-contact-heading {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 1.2;
	color: #192a3d;
}

.ws-contact-intro {
	max-width: 420px;
	margin: 0 0 32px;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
	color: #3A4F66;
}

.ws-contact-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ws-contact-list-item {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 0;
	font-family: 'Raleway', sans-serif;
	font-size: 17px;
}

.ws-contact-list-item + .ws-contact-list-item {
	border-top: 1px solid #DCE6F0;
}

.ws-contact-list-item a {
	color: #1B3A5C;
	text-decoration: none;
}

.ws-contact-list-item a:hover {
	text-decoration: underline;
}

.ws-contact-icon {
	display: inline-flex;
	flex: 0 0 auto;
	color: #5A6E84;
}

.ws-contact-icon svg {
	display: block;
}

.ws-contact-follow {
	margin-top: 32px;
	padding-top: 28px;
	border-top: 1px solid #DCE6F0;
}

.ws-contact-follow-label {
	margin: 0 0 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #192a3d;
}

.ws-contact-socials {
	display: flex;
	gap: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.ws-contact-social-link {
	display: inline-flex;
	color: #1B3A5C;
	text-decoration: none;
	transition: color 0.15s ease;
}

.ws-contact-social-link svg {
	display: block;
}

.ws-contact-card {
	flex: 1 1 58%;
	min-width: 0;
	padding: 44px;
	background: #fff;
	border-radius: var(--ws-card-radius);
	box-shadow: 0 18px 40px rgba(25, 42, 61, 0.08);
}

.ws-contact-card-placeholder {
	margin: 0;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	color: #5A6E84;
}

/* WPForms styling, scoped to the contact card so nothing leaks site-wide. */
.ws-contact-card .wpforms-field {
	padding: 0 0 22px;
}

.ws-contact-card .wpforms-field-label,
.ws-contact-card label {
	display: block;
	margin-bottom: 8px;
	font-family: 'Raleway', sans-serif;
	font-size: 15px;
	font-weight: 600;
	color: #192a3d;
}

.ws-contact-card input[type="text"],
.ws-contact-card input[type="email"],
.ws-contact-card input[type="tel"],
.ws-contact-card input[type="url"],
.ws-contact-card textarea,
.ws-contact-card select {
	width: 100%;
	padding: 13px 15px;
	border: 1px solid #D3DEEA;
	border-radius: 12px;
	background: #fff;
	color: #111;
	font-family: 'Raleway', sans-serif;
	font-size: 16px;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.ws-contact-card input::placeholder,
.ws-contact-card textarea::placeholder {
	color: #9AA8B6;
}

.ws-contact-card input[type="text"]:focus,
.ws-contact-card input[type="email"]:focus,
.ws-contact-card input[type="tel"]:focus,
.ws-contact-card input[type="url"]:focus,
.ws-contact-card textarea:focus,
.ws-contact-card select:focus {
	outline: none;
	border-color: #1B3A5C;
	box-shadow: 0 0 0 3px rgba(27, 58, 92, 0.12);
}

.ws-contact-card textarea {
	min-height: 130px;
	resize: vertical;
}

.ws-contact-card button[type="submit"],
.ws-contact-card .wpforms-submit {
	padding: 14px 32px;
	border: none;
	border-radius: 12px;
	background: #1B3A5C;
	color: #fff;
	font-family: 'Montserrat', sans-serif;
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.15s ease;
}

.ws-contact-card button[type="submit"]:hover,
.ws-contact-card .wpforms-submit:hover {
	background: #16314e;
}

@media (max-width: 767px) {
	.ws-contact-inner {
		flex-direction: column;
		gap: 40px;
	}

	.ws-contact-card {
		padding: 28px;
	}
}
