/* ==========================================================================
   Shun'Diin theme styles. theme.json carries colour, type and spacing.
   This file covers what theme.json cannot: header behaviour, cards,
   photo bands, and the theme's own blocks.
   ========================================================================== */

:root {
	--sd-ease: cubic-bezier(.2, .7, .2, 1);
	--sd-topbar: var(--wp--custom--topbar-height, 38px);
	--sd-header: var(--wp--custom--header-height, 76px);
}

html { scroll-padding-top: calc(var(--sd-header) + 16px); }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { height: auto; }

/* Dark surfaces flip headings and links to light. */
.has-espresso-background-color,
.has-espresso-soft-background-color,
.has-teal-background-color,
.wp-block-cover,
.sd-dark {
	--sd-heading: var(--wp--preset--color--bone);
	--sd-link: var(--wp--preset--color--bone);
	--sd-link-hover: var(--wp--preset--color--bronze);
}

/* No gap between header, main and footer. */
.wp-site-blocks > * + * { margin-block-start: 0; }
main.wp-block-group { margin-block-start: 0; }

/* Focus that is visible on both light and dark. */
:where(a, button, summary, input, select, textarea):focus-visible {
	outline: 2px solid var(--wp--preset--color--bronze);
	outline-offset: 3px;
}

.screen-reader-text:not(:focus) {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px; width: 1px;
	margin: -1px; overflow: hidden; padding: 0;
	position: absolute !important;
	word-wrap: normal !important;
}

/* --------------------------------------------------------------------------
   Eyebrows and small type
   ----------------------------------------------------------------------- */
.is-style-eyebrow,
.sd-card__meta,
.sd-price__note,
.sd-contact__label,
.sd-facts dt {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .2em;
	text-transform: uppercase;
	line-height: 1.5;
}
.is-style-eyebrow { color: var(--wp--preset--color--bronze-deep); margin-bottom: 0; }
.sd-dark .is-style-eyebrow,
.has-espresso-background-color .is-style-eyebrow,
.has-espresso-soft-background-color .is-style-eyebrow,
.wp-block-cover .is-style-eyebrow { color: var(--wp--preset--color--bronze); }

.is-style-eyebrow-rule::before {
	content: "";
	display: block;
	width: 56px;
	height: 14px;
	background: var(--wp--preset--color--bronze);
	-webkit-mask: url(../images/ornament.svg) left center / contain no-repeat;
	mask: url(../images/ornament.svg) left center / contain no-repeat;
	margin-bottom: 1rem;
}
.has-text-align-center.is-style-eyebrow-rule::before { margin-inline: auto; }

.sd-lead { font-size: var(--wp--preset--font-size--large); line-height: 1.6; }


.sd-placeholder {
	background: repeating-linear-gradient(-45deg, rgba(155, 71, 34, .06) 0 10px, transparent 10px 20px);
	border-left: 3px solid var(--wp--preset--color--rust);
	padding: .75rem 1rem;
	font-size: var(--wp--preset--font-size--small);
}

/* --------------------------------------------------------------------------
   Header: clock bar scrolls away, nav row sticks.
   ----------------------------------------------------------------------- */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	top: calc(-1 * var(--sd-topbar));
	z-index: 100;
}
body.admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(32px - var(--sd-topbar)); }
@media (max-width: 782px) {
	body.admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(-1 * var(--sd-topbar)); }
}

.sd-header { transition: box-shadow .3s var(--sd-ease); padding: 0 !important; }
.sd-header.is-scrolled { box-shadow: 0 10px 30px -18px rgba(0, 0, 0, .7); }

.sd-header__bar {
	min-height: var(--sd-header);
	gap: 1.5rem;
}
/* Display height only. The file requested is far larger (site-logo width 420 in
   parts/header.html) so it stays sharp on 2x and 3x screens; at width 170 the
   browser was told it would never need more than 170px and the logo rendered
   soft. Raise both together or it goes blurry again. */
.sd-header .wp-block-site-logo img { max-height: 76px; width: auto; }
.sd-header .wp-block-site-logo a { display: block; }

.sd-header .wp-block-navigation { --sd-link: var(--wp--preset--color--bone); }
.sd-header .wp-block-navigation-item__content { padding: .5rem 0; position: relative; text-decoration: none; }
.sd-header .wp-block-navigation-item__content::after {
	content: "";
	position: absolute; left: 0; right: 0; bottom: 2px;
	height: 1px;
	background: var(--wp--preset--color--bronze);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .35s var(--sd-ease);
}
.sd-header .wp-block-navigation-item__content:hover::after,
.sd-header .current-menu-item > .wp-block-navigation-item__content::after { transform: scaleX(1); }

.sd-header .wp-block-navigation__responsive-container.is-menu-open {
	padding: 2rem clamp(1rem, 6vw, 3rem);
}
.sd-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 2rem;
	letter-spacing: 0;
	text-transform: none;
	font-weight: 500;
}
.sd-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 1rem; }

/* Tablets and small laptops: keep the header on one line. */
@media (min-width: 782px) and (max-width: 1140px) {
	.sd-header__bar .wp-block-group { gap: 1.1rem !important; }
	.sd-header .wp-block-navigation { font-size: .6875rem; letter-spacing: .1em; }
	.sd-header .wp-block-navigation__container { gap: 1.1rem !important; }
	.sd-header .wp-block-site-logo img { max-height: 60px; }
	.sd-header .sd-header__cta .wp-block-button__link { padding: .75rem 1rem; font-size: .6875rem; letter-spacing: .1em; }
	.sd-topbar__phone { display: none; }
}
.sd-header .wp-block-navigation__container { flex-wrap: nowrap; }
.sd-header .sd-header__cta .wp-block-button__link { white-space: nowrap; }

@media (max-width: 781px) {
	.sd-header .wp-block-navigation { order: 2; }
	.sd-header .wp-block-site-logo img { max-height: 44px; }
	.sd-header__bar { min-height: 64px; gap: .75rem; }
	.sd-header .sd-header__cta .wp-block-button__link { padding: .7rem 1rem; font-size: .6875rem; letter-spacing: .1em; }
}
@media (max-width: 380px) {
	.sd-header .sd-header__cta { display: none; }
}

/* Clock and weather bar. Fixed height: no layout shift when data arrives. */
.sd-topbar {
	height: var(--sd-topbar);
	overflow: hidden;
	background: #17130f;
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.sd-topbar__inner {
	box-sizing: border-box;
	height: var(--sd-topbar);
	max-width: calc(var(--wp--style--global--wide-size) + 2 * clamp(1rem, 4vw, 2.5rem));
	margin: 0 auto;
	padding: 0 clamp(1rem, 4vw, 2.5rem);
	display: flex;
	align-items: center;
	gap: 1.25rem;
	white-space: nowrap;
}
.sd-topbar__place { color: var(--wp--preset--color--bronze); font-weight: 700; }
.sd-topbar__item { display: inline-flex; gap: .45em; align-items: baseline; }
.sd-topbar__item + .sd-topbar__item::before,
.sd-topbar__place + .sd-topbar__item::before { content: "·"; margin-right: .8rem; color: #6d6150; }
.sd-topbar__label { opacity: .75; }
.sd-topbar time { color: var(--wp--preset--color--bone); font-variant-numeric: tabular-nums; }
.sd-topbar__weather { color: var(--wp--preset--color--bone); min-width: 9ch; }
.sd-topbar__inner:not(.has-weather) .sd-topbar__weather { visibility: hidden; }
.sd-topbar__phone { margin-left: auto; color: var(--wp--preset--color--bone); text-decoration: none; letter-spacing: .08em; }
.sd-topbar__phone:hover { color: var(--wp--preset--color--bronze); }
.sd-topbar__time { cursor: help; }
/* Shown only when the visitor's phone disagrees with Arizona time. */
.sd-topbar__flag { display: none; color: #f1c38e; text-decoration: none; font-weight: 600; }
.sd-topbar__flag::after { content: " →"; }
a.sd-topbar__flag:hover { color: var(--wp--preset--color--bone); }
.sd-topbar__inner.is-phone-off .sd-topbar__flag { display: inline-flex; }
@media (max-width: 781px) {
	.sd-topbar__inner { gap: .75rem; justify-content: center; font-size: .625rem; letter-spacing: .08em; }
	.sd-topbar__phone { display: none; }
	.sd-topbar__item + .sd-topbar__item::before,
	.sd-topbar__place + .sd-topbar__item::before { margin-right: .5rem; }
}
@media (max-width: 600px) {
	.sd-topbar__label { font-size: 0; }
	.sd-topbar__label::after { content: attr(data-short); font-size: .625rem; }
	.sd-topbar__high { display: none; }
	.sd-topbar__inner { gap: .6rem; }
	.sd-topbar__inner.is-phone-off .sd-topbar__weather { display: none; }
	.sd-topbar__weather { min-width: 0; }
}
@media (max-width: 420px) {
	.sd-topbar__cond { display: none; }
	.sd-topbar__place { display: none; }
	.sd-topbar__place + .sd-topbar__item::before { content: none; }
}

/* --------------------------------------------------------------------------
   Buttons
   ----------------------------------------------------------------------- */
.sd-btn {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5em;
	background: var(--wp--preset--color--teal);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .8125rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
	line-height: 1.2;
	padding: 1rem 1.9rem;
	border-radius: var(--wp--custom--radius);
	border: 1px solid transparent;
	transition: background-color .2s, color .2s, border-color .2s, transform .2s var(--sd-ease);
}
.sd-btn:hover { background: var(--wp--preset--color--teal-dark); color: var(--wp--preset--color--white); }
.sd-btn:active { transform: translateY(1px); }
.sd-btn--small { padding: .7rem 1.15rem; font-size: .75rem; }
.sd-btn--block { display: flex; width: 100%; text-align: center; }
.sd-btn--outline { background: transparent; color: var(--wp--preset--color--teal); border-color: currentColor; }
.sd-btn--outline:hover { background: var(--wp--preset--color--teal); color: var(--wp--preset--color--white); border-color: var(--wp--preset--color--teal); }

.wp-block-button.is-style-ghost-light .wp-block-button__link,
.wp-block-button.is-style-outline .wp-block-button__link { background: transparent; border: 1px solid currentColor; }
.wp-block-button.is-style-ghost-light .wp-block-button__link { color: var(--wp--preset--color--bone); }
.wp-block-button.is-style-ghost-light .wp-block-button__link:hover { background: var(--wp--preset--color--bone); color: var(--wp--preset--color--espresso); }
.wp-block-button.is-style-outline .wp-block-button__link { color: var(--wp--preset--color--teal); }
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--wp--preset--color--teal); color: #fff; }

.sd-link-arrow {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--wp--preset--color--espresso);
	border-bottom: 1px solid var(--wp--preset--color--bronze);
	padding-bottom: 2px;
}
.sd-link-arrow::after { content: " →"; transition: margin .2s; }
.sd-link-arrow:hover { color: var(--wp--preset--color--rust); }

/* --------------------------------------------------------------------------
   Hero and photo bands
   ----------------------------------------------------------------------- */
/* Full-bleed covers: content sits on the wide grid with the site gutter. */
.wp-block-cover.alignfull {
	padding-left: clamp(1rem, 4vw, 2.5rem);
	padding-right: clamp(1rem, 4vw, 2.5rem);
}
/* ---------------------------------------------------- Edge alignment
   Deliberate, not an accident: the chrome runs to the page edge. The top bar,
   the logo, the nav, the Book Your Tour button and the hero copy all sit on ONE
   shared gutter, while every content section below stays on the 1240 grid. On a
   wide monitor that contrast is the point.

   --sd-gutter is the single source of that edge. Change it here or the four
   things that share it will drift apart, which is the one way this look fails.

   The cover is display:flex (contentPosition "bottom left"), so its inner
   container is a flex item and needs a flex basis or it collapses to the width
   of its own text. flex + max-width:none makes it fill to the gutter. */
:root { --sd-gutter: clamp(1rem, 4vw, 2.5rem); }

.sd-hero > .wp-block-cover__inner-container,
.sd-band > .wp-block-cover__inner-container {
	flex: 1 1 100%;
	width: 100%;
	max-width: none;
	margin-inline: 0 !important;
}

.sd-topbar__inner {
	max-width: none;
	padding-inline: var(--sd-gutter);
}

/* The bar is a constrained group; zero its own padding so the row inside owns
   the gutter, otherwise the two stack and the logo sits at double the edge. */
.sd-header__bar { padding-inline: 0 !important; }
.sd-header__bar > .wp-block-group {
	max-width: none;
	width: 100%;
	margin-inline: 0;
	padding-inline: var(--sd-gutter);
}
.sd-hero > .wp-block-cover__inner-container > * { margin-left: 0 !important; margin-right: 0 !important; }

.sd-hero { min-height: min(92vh, 860px); }
.wp-block-cover > picture { position: absolute; inset: 0; }
.wp-block-cover > picture img { width: 100%; height: 100%; object-fit: cover; }
.sd-hero .wp-block-cover__inner-container { max-width: var(--wp--style--global--wide-size); }
.sd-hero h1 { max-width: 13ch; text-wrap: balance; text-shadow: 0 2px 30px rgba(0, 0, 0, .25); }
.sd-hero .sd-lead { max-width: 34rem; }
@media (max-width: 781px) {
	.sd-hero { min-height: 82vh; }
}

.sd-trust {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--logo-bone);
	display: flex;
	align-items: center;
	gap: .75rem;
	flex-wrap: wrap;
}
.sd-trust::before { content: ""; width: 32px; height: 1px; background: var(--wp--preset--color--bronze); }

.sd-band { min-height: min(78vh, 720px); }
.sd-band .wp-block-cover__inner-container { max-width: var(--wp--style--global--wide-size); }
.sd-band blockquote { margin: 0; }
.wp-block-quote cite {
	display: block;
	margin-top: .75rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	font-style: normal;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--bronze);
}
.wp-block-quote { padding-left: 1.25rem; border-left: 1px solid var(--wp--preset--color--bronze) !important; }

/* Directional scrims so text stays readable over busy photos. */
.sd-hero.is-position-bottom-left > .wp-block-cover__background {
	background:
		linear-gradient(0deg, rgba(23, 19, 15, .7) 0%, rgba(23, 19, 15, 0) 55%),
		linear-gradient(90deg, rgba(23, 19, 15, .82) 0%, rgba(23, 19, 15, .55) 45%, rgba(23, 19, 15, .08) 85%) !important;
	opacity: 1 !important;
}
.wp-block-cover .is-style-eyebrow { text-shadow: 0 1px 12px rgba(0, 0, 0, .55); }
.sd-band.is-position-center-left > .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(23, 19, 15, .92) 0%, rgba(23, 19, 15, .7) 45%, rgba(23, 19, 15, .15) 85%) !important;
	opacity: 1 !important;
}
@media (max-width: 781px) {
	.sd-band.is-position-center-left > .wp-block-cover__background { background: rgba(23, 19, 15, .78) !important; }
	.sd-hero.is-position-bottom-left > .wp-block-cover__background {
		background: linear-gradient(0deg, rgba(23, 19, 15, .92) 0%, rgba(23, 19, 15, .7) 55%, rgba(23, 19, 15, .35) 100%) !important;
	}
}

.is-style-frame { position: relative; }
.is-style-frame img { position: relative; z-index: 1; border-radius: 0; }
.is-style-frame::before {
	content: "";
	position: absolute;
	inset: 1.25rem -1.25rem -1.25rem 1.25rem;
	border: 1px solid var(--wp--preset--color--bronze);
	z-index: 0;
}
@media (max-width: 781px) {
	.is-style-frame::before { inset: .75rem -.75rem -.75rem .75rem; }
}

/* Photo mosaic */
.sd-mosaic {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 1.3fr;
	gap: 6px;
}
.sd-mosaic .wp-block-image { margin: 0; overflow: hidden; }
.sd-mosaic .wp-block-image img { width: 100%; height: 100%; aspect-ratio: 3 / 4; object-fit: cover; transition: transform 1.2s var(--sd-ease); }
.sd-mosaic .wp-block-image:hover img { transform: scale(1.04); }
@media (max-width: 781px) {
	.sd-mosaic { grid-template-columns: 1fr 1fr; }
}

/* Numbered "difference" list */
.sd-steps { counter-reset: sd-step; }
.sd-steps > .wp-block-group { counter-increment: sd-step; position: relative; padding-top: 1.25rem; border-top: 1px solid rgba(176, 141, 87, .45); }
.sd-steps > .wp-block-group::before {
	content: "0" counter(sd-step);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	letter-spacing: .2em;
	color: var(--wp--preset--color--bronze);
	display: block;
	margin-bottom: .5rem;
}
.sd-steps h3 { margin: 0 0 .35rem; }
.sd-steps p { margin: 0; }

/* Awards */
.sd-award img { width: 116px; height: auto; }

/* --------------------------------------------------------------------------
   Tour cards
   ----------------------------------------------------------------------- */
.sd-tours {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1.25rem, 3vw, 2.5rem) clamp(1rem, 2.5vw, 2rem);
}
.sd-card {
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	min-width: 0;
}
.sd-card__media { position: relative; display: block; overflow: hidden; aspect-ratio: 4 / 5; background: var(--wp--preset--color--espresso); }
.sd-card__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s var(--sd-ease); }
.sd-card:hover .sd-card__img { transform: scale(1.045); }
.sd-card__img--empty {
	display: grid;
	place-items: center;
	background:
		radial-gradient(120% 80% at 20% 10%, rgba(176, 141, 87, .35), transparent 60%),
		linear-gradient(160deg, #3a2a1c, var(--wp--preset--color--espresso));
	color: var(--wp--preset--color--muted);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	letter-spacing: .2em;
	text-transform: uppercase;
}
.sd-card__badge {
	position: absolute;
	top: 1rem; left: 1rem;
	background: var(--wp--preset--color--bone);
	color: var(--wp--preset--color--espresso);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .625rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	padding: .45rem .7rem;
}
.sd-card__body { display: flex; flex-direction: column; gap: .6rem; padding: 1.5rem 1.5rem 1.6rem; flex: 1; }
.sd-card__meta { color: var(--wp--preset--color--bronze-deep); margin: 0; }
.sd-card__title { font-size: 1.5rem; line-height: 1.2; margin: 0; }
.sd-card__title a { color: var(--wp--preset--color--espresso); text-decoration: none; }
.sd-card__title a:hover { color: var(--wp--preset--color--rust); }
.sd-card__summary { margin: 0; font-size: var(--wp--preset--font-size--small); line-height: 1.65; color: #4a4036; }
.sd-card__foot {
	margin-top: auto;
	padding-top: 1rem;
	border-top: 1px solid var(--wp--preset--color--bone-deep);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	flex-wrap: wrap;
}
.sd-card__actions { display: flex; align-items: center; gap: 1rem; }

.sd-price { margin: 0; display: flex; align-items: baseline; gap: .45rem; flex-wrap: wrap; }
.sd-price__amount { font-family: var(--wp--preset--font-family--playfair); font-size: 1.75rem; line-height: 1; color: var(--wp--preset--color--rust); }
.sd-price__note { color: #6b5f52; letter-spacing: .14em; }

/* Lead card: full row, image left, used when the count leaves one spare. */
.sd-tours--n4 .sd-card--lead,
.sd-tours--n7 .sd-card--lead,
.sd-tours--n10 .sd-card--lead {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: 1.35fr 1fr;
}
.sd-tours--n4 .sd-card--lead .sd-card__media,
.sd-tours--n7 .sd-card--lead .sd-card__media,
.sd-tours--n10 .sd-card--lead .sd-card__media { aspect-ratio: auto; min-height: 460px; }
.sd-tours--n4 .sd-card--lead .sd-card__body,
.sd-tours--n7 .sd-card--lead .sd-card__body,
.sd-tours--n10 .sd-card--lead .sd-card__body { padding: clamp(1.5rem, 4vw, 3.25rem); justify-content: center; }
.sd-tours--n4 .sd-card--lead .sd-card__title,
.sd-tours--n7 .sd-card--lead .sd-card__title,
.sd-tours--n10 .sd-card--lead .sd-card__title { font-size: clamp(1.75rem, 3vw, 2.5rem); }
.sd-tours--n4 .sd-card--lead .sd-card__summary,
.sd-tours--n7 .sd-card--lead .sd-card__summary,
.sd-tours--n10 .sd-card--lead .sd-card__summary { font-size: var(--wp--preset--font-size--medium); }
.sd-tours--n4 .sd-card--lead .sd-card__foot,
.sd-tours--n7 .sd-card--lead .sd-card__foot,
.sd-tours--n10 .sd-card--lead .sd-card__foot { margin-top: 1rem; }

.sd-tours--n2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sd-tours--n1 { grid-template-columns: minmax(0, 1fr); max-width: 520px; }

.sd-tours--compact .sd-card__media { aspect-ratio: 3 / 2; }
.sd-tours--compact .sd-card__title { font-size: 1.25rem; }

@media (max-width: 1000px) {
	.sd-tours { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	/* Tablet: the lead card takes the full row, laid out sideways so it isn't a giant portrait. */
	.sd-tours .sd-card--lead { grid-column: 1 / -1; display: grid; grid-template-columns: 1.1fr 1fr; }
	.sd-tours .sd-card--lead .sd-card__media { aspect-ratio: auto; min-height: 380px; }
	.sd-tours .sd-card--lead .sd-card__body { padding: 2rem; justify-content: center; }
	.sd-tours .sd-card--lead .sd-card__foot { margin-top: 1rem; }
}
@media (max-width: 640px) {
	.sd-tours, .sd-tours--n2 { grid-template-columns: minmax(0, 1fr); }
	.sd-tours .sd-card.sd-card--lead { display: flex; }
	.sd-tours .sd-card--lead .sd-card__media { aspect-ratio: 4 / 5; min-height: 0; }
	.sd-tours .sd-card--lead .sd-card__body { padding: 1.5rem; }
	.sd-card__media { aspect-ratio: 5 / 4; }
}

/* --------------------------------------------------------------------------
   Single tour
   ----------------------------------------------------------------------- */
.sd-tour-hero__cols { margin: 0 !important; min-height: min(78vh, 760px); }
.sd-tour-hero__text {
	padding: clamp(2.5rem, 7vw, 6rem) clamp(1rem, 5vw, 5rem) clamp(2.5rem, 6vw, 5rem) max(clamp(1rem, 4vw, 2.5rem), calc((100vw - var(--wp--style--global--wide-size)) / 2));
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 1.1rem;
}
.sd-tour-hero h1 { font-size: clamp(2.25rem, 4.6vw, 4rem); text-wrap: balance; margin: 0; }
.sd-tour-hero .is-style-eyebrow a { color: inherit; }
.sd-tour-hero .sd-price__amount { color: var(--wp--preset--color--bone); font-size: 2.25rem; }
.sd-tour-hero .sd-price__note { color: var(--wp--preset--color--muted); }
.sd-tour-hero .sd-tour-price__meta {
	margin: .5rem 0 0;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .75rem; letter-spacing: .18em; text-transform: uppercase;
	color: var(--wp--preset--color--bronze);
}
.sd-tour-hero__excerpt { max-width: 34rem; }
.sd-tour-hero__excerpt:has(.wp-block-post-excerpt__excerpt:empty) { display: none; }
.sd-tour-hero__media { position: relative; min-height: 420px; background: #2e271f; }
.sd-tour-hero__media:not(:has(img)) {
	background:
		radial-gradient(120% 80% at 30% 20%, rgba(176, 141, 87, .28), transparent 60%),
		linear-gradient(160deg, #3a2a1c, #1b1612);
}
.sd-tour-hero__media .wp-block-post-featured-image { position: absolute; inset: 0; margin: 0; height: 100%; }
.sd-tour-hero__media .wp-block-post-featured-image img { width: 100%; height: 100% !important; object-fit: cover; aspect-ratio: auto !important; }
@media (max-width: 781px) {
	.sd-tour-hero__cols { flex-direction: column; flex-wrap: nowrap !important; min-height: 0; }
	.sd-tour-hero__cols > .wp-block-column { flex-basis: auto !important; width: auto; align-self: stretch; box-sizing: border-box; }
	.sd-tour-hero__media { order: -1; min-height: 0; aspect-ratio: 4 / 3; }
	.sd-tour-hero__text { padding: 2rem 1rem 2.25rem; }
}

/* Must stay `stretch`. The "Reserve your day" card is position:sticky and can only
   travel inside its containing block; flex-start collapses the right column to the
   card's own height (519px) and the card stops sticking. Shipped in 1.1.19. */
.sd-tour-layout { align-items: stretch !important; }
.sd-tour-aside {
	position: sticky;
	top: calc(var(--sd-header) + 1.5rem);
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	border-top: 3px solid var(--wp--preset--color--rust);
}
body.admin-bar .sd-tour-aside { top: calc(var(--sd-header) + 32px + 1.5rem); }
.sd-tour-aside .sd-price__amount { font-size: 2.5rem; }
.sd-tour-aside .sd-tour-price__meta { margin: .35rem 0 0; font-size: var(--wp--preset--font-size--small); color: #6b5f52; }

.sd-facts h2.sd-facts__heading { font-size: var(--wp--preset--font-size--x-large); margin-bottom: 1rem; }
.sd-facts dl { margin: 0; }
.sd-facts__row {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: 1rem;
	padding: 1rem 0;
	border-top: 1px solid var(--wp--preset--color--bone-deep);
}
.sd-facts dt { color: var(--wp--preset--color--bronze-deep); padding-top: .2rem; }
.sd-facts dd { margin: 0; }
.sd-facts ul { margin: 0; padding-left: 1.1rem; }
.sd-facts li + li { margin-top: .25rem; }
@media (max-width: 640px) {
	.sd-facts__row { grid-template-columns: 1fr; gap: .25rem; }
}

.sd-partner--inline .sd-partner__line {
	font-family: var(--wp--preset--font-family--playfair);
	font-style: italic;
	font-size: 1.125rem;
	line-height: 1.45;
	margin: 0;
	padding-left: 1rem;
	border-left: 2px solid var(--wp--preset--color--bronze);
}
.sd-partner--inline .sd-partner__body { margin: .6rem 0 0; font-size: var(--wp--preset--font-size--small); }
.sd-partner--band { text-align: center; max-width: 46rem; margin-inline: auto; }
.sd-partner--band .sd-partner__line {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: clamp(1.75rem, 3.6vw, 2.75rem);
	line-height: 1.2;
	margin: 0 0 1rem;
	color: var(--sd-heading, var(--wp--preset--color--rust));
	text-wrap: balance;
}
.sd-partner--band .sd-partner__body { margin: 0 auto; max-width: 36rem; opacity: .85; }

/* Mobile book bar on tour pages */
.sd-mobile-book { display: none; }
@media (max-width: 781px) {
	.sd-tour-aside { position: static; }
	.sd-mobile-book {
		display: flex;
		position: fixed;
		left: 0; right: 0; bottom: 0;
		z-index: 90;
		padding: .7rem 1rem calc(.7rem + env(safe-area-inset-bottom));
		background: var(--wp--preset--color--espresso);
		box-shadow: 0 -10px 30px -12px rgba(0, 0, 0, .5);
		align-items: center;
		justify-content: space-between;
		gap: 1rem;
	}
	.sd-mobile-book .sd-price__amount { color: var(--wp--preset--color--bone); font-size: 1.5rem; }
	.sd-mobile-book .sd-price__note { color: var(--wp--preset--color--muted); }
	.sd-mobile-book .sd-tour-price__meta { display: none; }
	.single-sd_tour .wp-site-blocks { padding-bottom: 76px; }
}

/* --------------------------------------------------------------------------
   Contact list, social, footer
   ----------------------------------------------------------------------- */
.sd-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.sd-contact li { display: grid; gap: .1rem; }
.sd-contact__label { color: var(--wp--preset--color--bronze); }
.sd-contact a { text-decoration: none; overflow-wrap: anywhere; }
.sd-contact a:hover { text-decoration: underline; }
.sd-social { display: inline-flex; gap: .9rem; }
.sd-social a { color: inherit; display: inline-flex; opacity: .85; transition: opacity .2s, color .2s; }
.sd-social a:hover { opacity: 1; color: var(--wp--preset--color--bronze); }

.sd-footer a { text-decoration: none; }
.sd-footer a:hover { text-decoration: underline; }
.sd-footer .wp-block-site-logo img { max-height: 84px; width: auto; }
.sd-footer .sd-footer__links { list-style: none; padding: 0; margin: 0; display: grid; gap: .55rem; }
.sd-footer h2 {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--bronze);
	margin: 0 0 1.25rem;
}
.sd-footer .sd-copyright { margin: 0; }
.sd-footer .wp-block-button__link, .sd-footer .sd-btn { white-space: nowrap; }
.sd-footer .sd-partner__line { color: var(--wp--preset--color--logo-bone); }

/* --------------------------------------------------------------------------
   FAQ (details)
   ----------------------------------------------------------------------- */
.wp-block-details summary {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.25rem;
	cursor: pointer;
	list-style: none;
	display: flex;
	justify-content: space-between;
	gap: 1rem;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; color: var(--wp--preset--color--rust); font-family: var(--wp--preset--font-family--montserrat); transition: transform .25s; }
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details > :not(summary) { margin-top: .75rem; }

/* Gallery */
.sd-gallery.wp-block-gallery { gap: 8px; }
.sd-gallery.wp-block-gallery .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; }

/* Editor-only helpers */
.sd-editor-note {
	padding: 1rem;
	border: 1px dashed var(--wp--preset--color--bronze);
	font-size: 13px;
	background: rgba(176, 141, 87, .08);
}

/* Motion: fade sections in, only if the visitor has not asked for less motion. */
@media (prefers-reduced-motion: no-preference) {
	@supports (animation-timeline: view()) {
		.sd-reveal {
			animation: sd-rise linear both;
			animation-timeline: view();
			animation-range: entry 0% entry 35%;
		}
		@keyframes sd-rise {
			from { opacity: 0; transform: translateY(28px); }
			to { opacity: 1; transform: none; }
		}
	}
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; }
}

/* Print: tour pages print as a clean fact sheet. */
@media print {
	.wp-site-blocks > header, .wp-site-blocks > footer, .sd-mobile-book, .sd-book, .sd-topbar { display: none !important; }
	.wp-block-cover { min-height: 0 !important; }
	.wp-block-cover__image-background, .wp-block-cover__background { display: none !important; }
	.wp-block-cover, .wp-block-cover * { color: #000 !important; }
	.sd-tour-aside { box-shadow: none; position: static; }
}

/* Outline buttons on dark surfaces */
.sd-footer .sd-btn--outline,
.sd-dark .sd-btn--outline,
.has-espresso-background-color .sd-btn--outline,
.wp-block-cover .sd-btn--outline { color: var(--wp--preset--color--bone); }
.sd-footer .sd-book { margin-top: .75rem; }
.sd-mobile-book:not(:has(.sd-book)) { display: none !important; }


/* --------------------------------------------------------------------------
   Sandstone strata lines (from the hair in the logo). Low contrast, static,
   only on dark bands, the footer, the tour hero panel and a few light bands.
   ----------------------------------------------------------------------- */
.sd-strata,
.sd-strata-light { position: relative; isolation: isolate; }
.sd-strata::after,
.sd-strata-light::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background: url(../images/strata-bronze.svg) center bottom / 1600px 420px repeat-x;
	-webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 55%);
	mask-image: linear-gradient(180deg, transparent 0%, #000 55%);
}
.sd-strata-light::after {
	background-image: url(../images/strata-rust.svg);
	-webkit-mask-image: linear-gradient(180deg, transparent 30%, #000 100%);
	mask-image: linear-gradient(180deg, transparent 30%, #000 100%);
}
.sd-tour-hero__text.sd-strata::after {
	background-position: left bottom;
	background-size: 1300px 340px;
}
@media (max-width: 781px) {
	.sd-strata::after, .sd-strata-light::after { background-size: 1000px 262px; }
}

/* Gentle curved top edge, same colour as the section. */
.sd-edge { position: relative; }
.sd-edge::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: calc(100% - 1px);
	height: clamp(18px, 3vw, 40px);
	background-color: inherit;
	-webkit-mask: url(../images/edge-wave.svg) center bottom / 100% 100% no-repeat;
	mask: url(../images/edge-wave.svg) center bottom / 100% 100% no-repeat;
	pointer-events: none;
	z-index: 2;
}
.wp-site-blocks > footer .sd-edge::before { bottom: calc(100% - 1px); }

/* --------------------------------------------------------------------------
   Time and weather line in the hero
   ----------------------------------------------------------------------- */
.sd-now {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: .35rem 1.1rem;
	height: 1.6rem;
	margin: .9rem 0 0;
	white-space: nowrap;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--logo-bone);
}
.sd-now__item { display: inline-flex; align-items: baseline; gap: .5em; }
.sd-now__label { color: var(--wp--preset--color--bronze); }
.sd-now time, .sd-now__temp { color: var(--wp--preset--color--bone); font-variant-numeric: tabular-nums; }
/* Reserved width: the temperature arrives later without moving anything. */
.sd-now__temp { display: inline-block; min-width: 4.4em; }
.sd-now__temp.is-ready::before { content: "·"; margin-right: .5em; color: #8a7d69; }
.sd-now__rule { color: var(--wp--preset--color--muted); }
.sd-now__warn { display: none; color: #f1c38e; font-weight: 600; }
.sd-now__warn time { color: #f1c38e; }
.sd-now.is-phone-off .sd-now__rule { display: none; }
.sd-now.is-phone-off .sd-now__warn { display: inline-flex; }
.sd-now.is-phone-off .sd-now__warn::after { content: "· use Arizona time"; margin-left: .1em; font-weight: 500; color: var(--wp--preset--color--logo-bone); }
.sd-now__link { color: var(--wp--preset--color--bone); text-decoration: underline; text-decoration-color: rgba(176, 141, 87, .8); text-underline-offset: 4px; }
.sd-now__link::after { content: " →"; }
.sd-now__link:hover { color: var(--wp--preset--color--bronze); }
@media (max-width: 781px) {
	/* Two fixed lines on phones: times on the first, the link on the second. */
	.sd-now { flex-wrap: wrap; align-content: flex-start; height: 3.1rem; row-gap: .5rem; font-size: .625rem; letter-spacing: .1em; }
	.sd-now:not(.has-link) { height: 1.6rem; }
	.sd-now__link { flex-basis: 100%; }
	/* Keep two lines: the warning replaces the link on phones. */
	.sd-now.is-phone-off .sd-now__link { display: none; }
	.sd-now.has-link .sd-now__rule { display: none; }
}

/* --------------------------------------------------------------------------
   Before Your Tour: clocks and forecast
   ----------------------------------------------------------------------- */
.sd-clocks__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.sd-clock {
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	padding: clamp(1.25rem, 3vw, 2rem);
	border-top: 3px solid var(--wp--preset--color--bronze);
}
.sd-clock--phone { background: var(--wp--preset--color--espresso); color: var(--wp--preset--color--logo-bone); border-top-color: var(--wp--preset--color--teal); }
.is-phone-off .sd-clock--phone { border-top-color: #d9822b; }
.is-phone-off .sd-clock--phone .sd-clock__note { color: #f1c38e; font-weight: 600; opacity: 1; }
.sd-clock p { margin: 0; }
.sd-clock__label {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-clock--phone .sd-clock__label { color: var(--wp--preset--color--bronze); }
.sd-clock__time {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: clamp(2.5rem, 6vw, 4rem);
	line-height: 1.1;
	margin: .5rem 0 !important;
	min-height: 1.1em;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--rust);
}
.sd-clock--phone .sd-clock__time { color: var(--wp--preset--color--bone); }
.sd-clock__note { font-size: var(--wp--preset--font-size--small); opacity: .85; }
@media (max-width: 560px) {
	.sd-clocks__row { grid-template-columns: 1fr; }
}

.sd-forecast__days {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(.75rem, 2vw, 1.5rem);
}
.sd-forecast__day {
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	padding: 1.5rem;
	min-height: 212px;
	box-sizing: border-box;
	border-top: 3px solid var(--wp--preset--color--bronze);
}
.sd-forecast__day.is-wet { border-top-color: var(--wp--preset--color--teal); }
.sd-forecast__day.is-loading { background: linear-gradient(100deg, #fff 30%, #f6f0e5 50%, #fff 70%) 0 0 / 300% 100%; }
.sd-forecast__day p { margin: 0; }
.sd-forecast__name {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .6875rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-forecast__temps { font-family: var(--wp--preset--font-family--playfair); margin: .4rem 0 .1rem !important; line-height: 1.1; }
.sd-forecast__hi { font-size: clamp(2.25rem, 4.5vw, 3rem); color: var(--wp--preset--color--rust); }
.sd-forecast__lo { font-size: 1.25rem; color: #7a6d5d; font-family: var(--wp--preset--font-family--open-sans); }
.sd-deg { font-family: var(--wp--preset--font-family--open-sans); font-size: .9rem; font-weight: 600; vertical-align: .9em; margin-left: .15em; }
.sd-forecast__cond { font-weight: 600; }
.sd-forecast__meta { list-style: none; margin: .9rem 0 0; padding: .9rem 0 0; border-top: 1px solid var(--wp--preset--color--bone-deep); font-size: var(--wp--preset--font-size--small); display: grid; gap: .2rem; color: #4a4036; }
.sd-forecast__note {
	margin: 1.25rem 0 0;
	padding: 1rem 1.25rem;
	background: var(--wp--preset--color--white);
	border-left: 3px solid var(--wp--preset--color--teal);
}
.sd-forecast__note--heat { border-left-color: var(--wp--preset--color--rust); }
.sd-forecast__note[hidden] { display: none; }
.sd-forecast__source { margin: 1rem 0 0; font-size: .75rem; color: #6b5f52; }
@media (max-width: 700px) {
	.sd-forecast__days { grid-template-columns: 1fr; }
	.sd-forecast__day { min-height: 0; }
}

/* Footer on tablets: two columns per row so buttons never overflow. */
@media (min-width: 782px) and (max-width: 1100px) {
	.sd-footer .wp-block-columns { flex-wrap: wrap !important; }
	.sd-footer .wp-block-columns > .wp-block-column { flex-basis: calc(50% - 2rem) !important; flex-grow: 0; }
}

/* ---- Price table, policy lists and itinerary steps (v1.1.6) ---- */
.sd-prices { margin: 1rem 0 0; }
.sd-prices__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	padding: .55rem 0;
	border-bottom: 1px solid rgba(33, 28, 22, .12);
}
.sd-prices__row:last-of-type { border-bottom: 0; }
.sd-prices__who {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .72rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	opacity: .8;
}
.sd-prices__amount { font-weight: 700; font-variant-numeric: tabular-nums; }
.sd-prices__note { margin: .6rem 0 0; font-size: .8125rem; opacity: .75; }

.sd-policy__list { margin: .75rem 0 0; padding-left: 1.1rem; }
.sd-policy__list li { margin: .4rem 0; }
.sd-policy__note { margin: .8rem 0 0; font-size: .8125rem; opacity: .75; }
.sd-policy--cancellation .sd-policy__list { font-size: .9375rem; }

.sd-step { margin: 0 0 1rem; }
.sd-step strong {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .72rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--bronze-deep);
}

/* ---- Tour questions (v1.1.7) ---- */
.sd-faq__item {
	border-bottom: 1px solid rgba(33, 28, 22, .14);
	padding: .35rem 0;
}
.sd-faq__item summary {
	cursor: pointer;
	padding: .6rem 0;
	font-weight: 700;
	list-style: none;
	position: relative;
	padding-right: 1.6rem;
}
.sd-faq__item summary::-webkit-details-marker { display: none; }
.sd-faq__item summary::after {
	content: "+";
	position: absolute;
	right: 0;
	top: .55rem;
	font-weight: 400;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-faq__item[open] summary::after { content: "–"; }
.sd-faq__item p { margin: 0 0 .9rem; }

/* ---- Upper vs Lower comparison table (v1.1.7) ---- */
.sd-compare table { border-collapse: collapse; width: 100%; }
.sd-compare th, .sd-compare td {
	border: 1px solid rgba(33, 28, 22, .14);
	padding: .7rem .85rem;
	vertical-align: top;
	text-align: left;
}
.sd-compare thead th {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .72rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	background: var(--wp--preset--color--bone-deep);
}
.sd-compare tbody td:first-child {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .72rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	width: 9rem;
	opacity: .85;
}
@media (max-width: 640px) {
	.sd-compare table, .sd-compare tbody, .sd-compare tr, .sd-compare td { display: block; width: 100%; }
	.sd-compare thead { display: none; }
	.sd-compare tr { margin-bottom: 1.1rem; border: 1px solid rgba(33, 28, 22, .14); }
	.sd-compare td { border: 0; border-bottom: 1px solid rgba(33, 28, 22, .1); }
	.sd-compare tr td:first-child { background: var(--wp--preset--color--bone-deep); width: auto; }
	.sd-compare tr td:nth-child(2)::before { content: "Upper: "; font-weight: 700; }
	.sd-compare tr td:nth-child(3)::before { content: "Lower: "; font-weight: 700; }
}

/* ---- Reviews widget (v1.1.10) ---- */
.sd-reviews {
	margin-top: var(--wp--preset--spacing--40);
	/* Reserve height so the deferred widget does not shove the page down. */
	min-height: 320px;
}
.sd-reviews .ti-widget { margin: 0 !important; }
@media (max-width: 781px) {
	.sd-reviews { min-height: 420px; }
}


/* ---- Tripadvisor award badges (v1.1.12) ---- */
.sd-awards {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
}
.sd-awards .TA_certificateOfExcellence { margin: 0; }
.sd-awards .TA_links { margin: 0; padding: 0; list-style: none; }
.sd-awards .TA_links li { margin: 0; }
.sd-awards .widCOEImg {
	display: block;
	width: 140px;
	height: auto;
}
/* Tripadvisor ships the badge as an opaque white PNG and their script wraps it
   in a div with a hard white background. Both are theirs, hotlinked, so we
   cannot edit either. Drop their plate and multiply the artwork into whatever
   sits behind it: white pixels take the band colour, the black wordmark and the
   green owl come through unchanged. Only valid on a LIGHT band, which is why
   this is scoped to .sd-awards rather than applied globally. */
.sd-awards .widCOE2020,
.sd-awards .TA_certificateOfExcellence,
.sd-awards .TA_links,
.sd-awards .TA_links li,
.sd-awards .TA_links a {
	/* !important because Tripadvisor's own stylesheet is cross-origin, so we
	   cannot read its specificity, and it paints the plate white. */
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
.sd-awards .widCOEImg { mix-blend-mode: multiply; }
/* Two or three badges: shrink so a row still fits a phone. */
.sd-awards:has(.TA_certificateOfExcellence + .TA_certificateOfExcellence) .widCOEImg { width: 104px; }
@media (max-width: 480px) {
	.sd-awards { gap: .75rem; }
	.sd-awards:has(.TA_certificateOfExcellence + .TA_certificateOfExcellence) .widCOEImg { width: 84px; }
}

/* ---- The website assistant (v1.1.15) ----
   A field on the page, not a bubble over it. Nothing here is fixed or
   floating: on a phone the bottom-right corner belongs to the Book button,
   and a chat launcher sitting on it costs bookings. */
.sd-ask { margin-block-start: clamp(2rem, 5vw, 3rem); }
.sd-ask__lead {
	color: var(--wp--preset--color--bronze-deep);
	max-width: 52ch;
	margin: 0 0 1rem;
}
.sd-ask__form {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	align-items: stretch;
	max-width: 44rem;
}
.sd-ask__input {
	flex: 1 1 18rem;
	min-width: 0;
	padding: .8rem 1rem;
	font: inherit;
	color: var(--wp--preset--color--espresso);
	background: var(--wp--preset--color--white);
	border: 1px solid rgba(33, 28, 22, .22);
	border-radius: 2px;
}
.sd-ask__input:focus-visible {
	outline: 2px solid var(--wp--preset--color--bronze);
	outline-offset: 1px;
	border-color: transparent;
}
.sd-ask__send { flex: 0 0 auto; }
.sd-ask__send[disabled] { opacity: .6; cursor: progress; }
.sd-ask__out:empty { display: none; }
.sd-ask__out { margin-top: 1.25rem; max-width: 60ch; }
.sd-ask__q {
	font-weight: 700;
	color: var(--wp--preset--color--espresso);
	margin: 0 0 .5rem;
}
.sd-ask__q::before {
	content: "";
	display: inline-block;
	width: 1.5rem;
	height: 1px;
	background: var(--wp--preset--color--bronze);
	vertical-align: middle;
	margin-right: .6rem;
}
.sd-ask__wait { color: var(--wp--preset--color--bronze-deep); margin: 0; }
.sd-ask__a { border-left: 3px solid var(--wp--preset--color--teal); padding-left: 1rem; }
.sd-ask__a p { margin: 0 0 .8rem; }
.sd-ask__a p:last-child { margin-bottom: 0; }
/* An answer the guard stopped, or any failure. Reads as a handoff to a
   person, not as an error. */
.sd-ask__a--handoff { border-left-color: var(--wp--preset--color--bronze); }
/* A booking card, sent by the Worker when the assistant recommends a tour.
   Quieter than the tour cards on the page itself: this one follows an answer,
   it is not competing for the eye. */
.sd-ask__card {
	margin-top: 1rem;
	max-width: 26rem;
	padding: 1rem 1.15rem;
	border: 1px solid var(--rule, rgba(33, 28, 22, .14));
	border-left: 3px solid var(--wp--preset--color--bronze);
	background: rgba(255, 255, 255, .5);
}
.sd-ask__badge {
	margin: 0 0 .3rem;
	font-size: .7rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-ask__card-name {
	margin: 0 0 .2rem;
	font-weight: 700;
	line-height: 1.25;
}
.sd-ask__card-meta {
	margin: 0 0 .9rem;
	color: var(--wp--preset--color--bronze-deep);
	font-size: .92em;
}
.sd-ask__card-book { display: inline-block; }
.has-espresso-background-color .sd-ask__card,
.has-espresso-soft-background-color .sd-ask__card {
	background: rgba(244, 237, 224, .06);
}
.has-espresso-background-color .sd-ask__badge,
.has-espresso-soft-background-color .sd-ask__badge,
.has-espresso-background-color .sd-ask__card-meta,
.has-espresso-soft-background-color .sd-ask__card-meta { color: var(--wp--preset--color--bronze); }

.sd-ask__foot,
.sd-ask__fallback {
	margin-top: 1rem;
	color: var(--wp--preset--color--bronze-deep);
	font-size: .95em;
}
.sd-ask--offline .sd-ask__fallback { margin-top: .25rem; }
@media (prefers-reduced-motion: no-preference) {
	.sd-ask__a { animation: sd-ask-in .35s var(--sd-ease) both; }
}
@keyframes sd-ask-in {
	from { opacity: 0; transform: translateY(.35rem); }
	to { opacity: 1; transform: none; }
}
/* Dark bands: the field has to keep its contrast. */
.has-espresso-background-color .sd-ask__lead,
.has-espresso-soft-background-color .sd-ask__lead,
.has-espresso-background-color .sd-ask__foot,
.has-espresso-soft-background-color .sd-ask__foot { color: var(--wp--preset--color--muted); }
.has-espresso-background-color .sd-ask__q,
.has-espresso-soft-background-color .sd-ask__q { color: var(--wp--preset--color--bone); }
.has-espresso-background-color .sd-ask__a,
.has-espresso-soft-background-color .sd-ask__a { border-left-color: var(--wp--preset--color--bronze); }


/* --------------------------------------------------------------- Partners
   Things to do page. Text-only cards on purpose: these are other companies'
   tours and we do not hold their photography.

   EVERY rule here is scoped under .sd-partners. The theme already had a
   .sd-partner class on the partner-line block (the "We lead the journey"
   band), and an unscoped .sd-partner rule gave that band a white card behind
   its bone-coloured text, which was unreadable. Do not unscope these. */
.sd-partners { margin-top: var(--wp--preset--spacing--40); }
.sd-partners .sd-partner {
	background: var(--wp--preset--color--white);
	box-shadow: var(--wp--custom--shadow);
	border-left: 3px solid var(--wp--preset--color--bronze);
	padding: 1.6rem 1.5rem 1.5rem;
	display: flex;
	flex-direction: column;
	gap: .55rem;
	min-width: 0;
	text-align: left;
	max-width: none;
	margin-inline: 0;
}
.sd-partners .sd-partner__kicker {
	margin: 0;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: .625rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-partners .sd-partner__title { margin: 0; font-size: 1.375rem; line-height: 1.25; color: var(--wp--preset--color--espresso); }
.sd-partners .sd-partner__body { margin: 0; font-size: var(--wp--preset--font-size--small); line-height: 1.65; color: #4a4036; opacity: 1; }
.sd-partners .sd-partner__by {
	margin: 0;
	font-size: .8125rem;
	color: var(--wp--preset--color--bronze-deep);
}
.sd-partners .sd-partner__cta { margin-top: auto; padding-top: .9rem; }
.sd-partners__note { margin-top: var(--wp--preset--spacing--30); color: #5c5145; }
.sd-planner .wp-block-buttons { gap: .75rem; }
@media (max-width: 781px) {
	.sd-planner .wp-block-column + .wp-block-column { margin-top: var(--wp--preset--spacing--30); }
}

/* Hero headline on laptop-height screens (1.1.27).
 * The display size followed viewport WIDTH only, and .sd-hero h1 is capped at
 * 13ch, so on a 1470x830 laptop the headline ran 84px over 4 lines and pushed
 * Book Your Tour about 50px below the fold. Here it also follows HEIGHT and
 * may run 18ch, which reads in 3 lines. Scoped so phones (under 782px wide)
 * and tall monitors (over 1000px high) render exactly as before. */
@media (min-width: 782px) and (max-height: 1000px) {
	.sd-hero h1 {
		font-size: clamp(2.5rem, min(6vw, 8vh), 5.25rem);
		max-width: 18ch;
	}
}
