/*
 * =============================================================================
 * SEKHMET TOURS -- "Limestone & Clay" design layer (EDT).
 * =============================================================================
 * Every class is namespaced `edt-` and every legacy token is `--edt-*`, so
 * nothing collides with WooCommerce (.button), Elementor, or the theme's
 * legacy `sekhem-` classes.
 *
 * Usage: wrap EDT-built markup (Elementor sections, global parts, templates)
 * in `.edt-scope` to get the EDT base (Manrope body, ink on limestone).
 * Fonts are enqueued in inc/enqueue.php: Fraunces (display, variable optical
 * size) and Manrope (body/UI).
 *
 * Structure: imagery -> base -> layout -> typography -> header -> buttons ->
 * hero -> home sections -> detail sections -> about -> footer -> reveal/motion
 * -> responsive -> reduced motion -> layered fixes (15-28) -> DESIGN TOKENS v2
 * (30: the single source of truth for colour, type, space, radius, elevation,
 * motion and z-index; it also aliases every legacy --edt-* name) -> TOUR PAGE
 * v2 (31) -> REVIEWS v2 (32), which together replaced the old section 29 ->
 * LISTING PAGES v2 (33) -> RESPONSIVE + A11Y HARDENING (34: 320px overflow
 * sources, focus-ring contrast, touch targets, reduced motion) -> SITE PAGES
 * v2 (35: band rotation, the extracted inline styles, and every remaining page
 * template brought onto the same components). RTL is handled by logical
 * properties throughout, with rtl.css only for transforms, gradients,
 * background-position and inset shadows.
 * =============================================================================
 */

/* ---------------------------------------------------------------------------
   1. SHARED IMAGERY -- colour, type, spacing, radius, elevation, motion and
   z-index tokens all live in section 30 (DESIGN TOKENS v2), which also keeps
   every legacy --edt-* name alive as an alias. Only the two shared image
   assets stay here (override them per-template when needed).
   ------------------------------------------------------------------------- */
:root {
	--edt-panorama: url("../images/hero-bg.jpg");
	--edt-grain: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------------------
   2. BASE
   ------------------------------------------------------------------------- */
.edt-scope {
	/* overflow:hidden made .edt-scope a scroll container, which silently
       disabled position:sticky on every descendant -- the guide TOC has never
       worked. overflow-x:clip clips the same horizontal overflow WITHOUT
       creating a scroll container: per CSS Overflow 3 (and MDN's computed-value
       note) `visible` only computes to `auto` when the OTHER axis is neither
       visible nor clip, and clip is exempt. Pre-Safari-16 drops the clip line
       and degrades to visible -- never to a broken box. Verified by grep that
       every decoration which relied on the ancestor clipping carries its own
       overflow:hidden (.edt-hero, .edt-detail-hero, .edt-about-hero, .edt-intro,
       .edt-cta, .edt-about-cta, .edt-about-story, .edt-promise-art,
       .edt-card-media, .edt-gallery__item, .edt-premium-card__image-wrap,
       .edt-acc, .edt-coverflow__slide). */
	overflow: visible;
	overflow-x: clip;
	font-family: var(--edt-font-body);
	color: var(--edt-ink);
	background: var(--edt-paper);
	font-synthesis: none;
	text-rendering: optimizeLegibility;
}
.edt-scope ::selection { background: var(--sk-accent); color: #fff; }
.edt-scope a { color: inherit; text-decoration: none; }
.edt-scope button, .edt-scope input, .edt-scope textarea { font: inherit; }
.edt-scope :focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 3px; }

/* ---------------------------------------------------------------------------
   3. LAYOUT PRIMITIVES
   ------------------------------------------------------------------------- */
.edt-container { width: min(var(--sk-container), calc(100% - (var(--sk-gutter) * 2))); margin-inline: auto; }
.edt-section-space { padding-block: var(--sk-section-y); }

/* ---------------------------------------------------------------------------
   4. TYPOGRAPHY
   ------------------------------------------------------------------------- */
.edt-eyebrow { margin: 0 0 var(--sk-sp-4); color: var(--sk-muted-ctx); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; line-height: 1.2; text-transform: uppercase; }
.edt-sunline { display: inline-block; width: 34px; height: 1px; margin-inline-end: 12px; vertical-align: middle; background: var(--edt-gold); }

.edt-scope h1, .edt-scope h2, .edt-scope h3 { margin: 0; font-family: var(--edt-font-display); font-weight: 400; color: inherit; }
.edt-h2, .edt-intro-copy h2, .edt-section-head h2, .edt-promise-copy h2, .edt-contact-copy h2 { max-width: 700px; font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; color: var(--sk-ink); }

/* `em` accents inside display headings -- Fraunces italic; terracotta on the
   dark bands, clay on the light ones. */
.edt-scope h1 em, .edt-scope h2 em { color: var(--sk-accent-ctx); font-family: var(--edt-font-display); font-size: 1em; font-style: italic; font-weight: 400; letter-spacing: -.03em; }
.edt-hero__title em, .edt-detail-hero h1 em, .edt-cta h2 em, .edt-about-hero h1 em, .edt-about-cta h2 em, .edt-promise-art > strong em { font-family: var(--sk-font-display); font-style: italic; }

.edt-body-large { max-width: min(56ch, 100%); margin: 28px 0 16px; color: var(--edt-ink-soft); font-size: var(--sk-fs-lede); line-height: 1.55; }
.edt-body-muted { max-width: 540px; margin: 0 0 26px; color: var(--edt-muted); font-size: var(--sk-fs-body-sm); line-height: 1.8; }
.edt-section-intro { max-width: 265px; margin: 0 0 7px; color: var(--edt-muted); font-size: var(--sk-fs-body-sm); line-height: 1.7; }

.edt-text-link { display: inline-flex; align-items: center; gap: 12px; padding-bottom: 7px; border-bottom: 1px solid var(--edt-gold); color: var(--edt-ink); font-size: var(--sk-fs-button); font-weight: 600; }
.edt-text-link > svg { transition: transform var(--sk-dur-2) var(--sk-ease-spring); }
.edt-text-link:hover > svg { transform: translateX(3px); }
.edt-text-link--dark { color: var(--edt-cream); border-color: var(--edt-gold); }

/* Vertical section kicker (01 / label) and accent-bordered note card. */
.edt-kicker { display: flex; align-items: center; color: var(--edt-muted); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; writing-mode: vertical-rl; transform: rotate(180deg); }
.edt-kicker-number { margin-bottom: 18px; color: var(--edt-gold); font-family: var(--sk-font-body); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .14em; }
.edt-note { margin-top: 18px; padding-block: 19px 0; padding-inline-start: 20px; border-inline-start: 1px solid var(--edt-gold); }
.edt-note svg { color: var(--edt-gold); }
.edt-note span { display: block; margin: 14px 0 8px; color: var(--edt-muted); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-note p { max-width: 190px; margin: 0; color: var(--edt-ink-soft); font-size: var(--sk-fs-body-sm); line-height: 1.65; }

.edt-section-head { display: flex; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: var(--sk-sp-11); }

/* ---------------------------------------------------------------------------
   5. HEADER -- "Fluid Island": a floating glass pill detached from the
   viewport top (never an edge-glued bar). The .edt-header wrapper is a
   transparent fixed strip; the pill itself (.edt-header-inner) carries
   the surface. Dark glass over heroes, cream glass once scrolled / on
   light pages (--scrolled / --solid). Full menu overlay + morphing
   hamburger live in section 23.
   ------------------------------------------------------------------------- */
.edt-header { position: fixed; z-index: var(--sk-z-header); top: 0; width: 100%; pointer-events: none; color: white; }
.edt-header--scrolled, .edt-header--solid { color: var(--edt-ink); }
.edt-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: min(1240px, calc(100% - 32px)); min-height: 64px; margin: 14px auto 0; padding-block: 6px; padding-inline: 22px 8px; pointer-events: auto; border: 1px solid rgba(255, 255, 255, .14); border-radius: var(--sk-r-pill); background: rgba(23, 21, 18, .42); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: var(--sk-e-4), inset 0 1px 1px rgba(255, 255, 255, .1); transition: background .5s var(--edt-spring), border-color .5s var(--edt-spring), box-shadow .5s var(--edt-spring), color .35s var(--edt-spring); }
.edt-header--scrolled .edt-header-inner, .edt-header--solid .edt-header-inner { border-color: rgba(26, 24, 20, .1); background: rgba(244, 241, 236, .88); box-shadow: var(--sk-e-4), inset 0 1px 1px rgba(255, 255, 255, .65); }
.edt-brand { display: inline-flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.edt-brand__mark { width: 38px; height: 38px; object-fit: contain; }
.edt-brand__copy { display: grid; gap: 3px; }
.edt-brand__copy strong { font-family: var(--edt-font-display); font-size: 22px; font-weight: 400; letter-spacing: .16em; line-height: .9; }
.edt-brand--compact .edt-brand__mark { width: 34px; height: 34px; }
.edt-brand--compact .edt-brand__copy strong { font-size: 19px; }
.edt-nav { display: flex; align-items: center; gap: 30px; margin-inline-start: auto; margin-inline-end: 24px; }
.edt-nav-link { position: relative; display: inline-flex; align-items: center; gap: 5px; padding: 23px 0; font-size: var(--sk-fs-meta); font-weight: 700; color: inherit; opacity: .9; transition: opacity .2s var(--edt-spring); }
.edt-nav-link:hover, .edt-nav-link--active { opacity: 1; }
.edt-nav-link--active::after { position: absolute; bottom: 14px; inset-inline-start: 0; width: 100%; height: 2px; background: var(--edt-gold); content: ""; }
.edt-header-actions { display: flex; align-items: center; gap: 16px; }
.edt-phone-link { display: inline-flex; align-items: center; gap: 9px; font-size: var(--sk-fs-meta); font-weight: 600; white-space: nowrap; opacity: .95; }
/* Hidden on desktop; the inline nav is shown instead. Revealed only once the
   nav collapses (<=1120px) so the hamburger and the full menu never coexist. */
.edt-menu-toggle { display: none; align-items: center; justify-content: center; width: 46px; height: 46px; padding: 0; border: 1px solid rgba(255, 255, 255, .18); border-radius: var(--sk-r-pill); color: inherit; background: transparent; cursor: pointer; transition: border-color .3s var(--edt-spring), background .3s var(--edt-spring), transform .2s var(--edt-spring); }
.edt-header--scrolled .edt-menu-toggle, .edt-header--solid .edt-menu-toggle { border-color: rgba(26, 24, 20, .16); }
.edt-menu-toggle:hover { border-color: var(--edt-gold); background: rgba(168, 68, 42, .12); }
.edt-menu-toggle:focus-visible { outline: var(--sk-bw-2) solid currentColor; outline-offset: 2px; }
.edt-menu-toggle:active { transform: scale(.94); }

/* ---------------------------------------------------------------------------
   6. BUTTONS -- clay (primary), ink (secondary). Press-in active state.
   Button-in-Button: every trailing arrow svg renders inside its own
   nested circular wrapper (machined-in, flush with the right padding)
   and receives magnetic kinetic tension on hover -- the circle drifts
   diagonally and swells while the button itself only breathes.
   ------------------------------------------------------------------------- */
.edt-button { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 50px; padding: 0 23px; border: 1px solid transparent; border-radius: var(--sk-r-sm); font-size: var(--sk-fs-button); font-weight: 600; letter-spacing: .01em; cursor: pointer; transition: transform .16s var(--edt-spring), background .22s var(--edt-spring), color .22s var(--edt-spring), box-shadow .22s var(--edt-spring); }
.edt-button:active { transform: scale(.97); }
.edt-button--small { min-height: 42px; padding: 0 24px; }
.edt-button--gold { color: #fff; background: var(--sk-accent); }
.edt-button--gold:hover { background: var(--sk-accent-hover); transform: translateY(-2px); }
.edt-button--navy { color: var(--edt-cream); background: var(--edt-ink); }
.edt-button--navy:hover { background: var(--sk-band-3); transform: translateY(-2px); }

/* Nested trailing-icon circle: the svg itself becomes the wrapper --
   box-sizing + padding center the glyph inside a 36px pill. */
.edt-button > svg { box-sizing: border-box; flex: 0 0 auto; width: 36px; height: 36px; padding-block: 10px; padding-inline: 11px 10px; border-radius: var(--sk-r-pill); background: rgba(26, 24, 20, .12); transition: transform .45s var(--edt-spring), background .45s var(--edt-spring); }
.edt-button--navy > svg, .edt-scope .edt-cta .edt-button--gold > svg { background: rgba(255, 255, 255, .16); }
.edt-button:hover > svg { transform: translate(2px, -1px) scale(1.06); }
.edt-button--gold:hover > svg { background: rgba(26, 24, 20, .16); }
.edt-button--navy:hover > svg { background: rgba(255, 255, 255, .22); }
.edt-button--small > svg { width: 30px; height: 30px; padding: 8px; }
.edt-button:focus-visible > svg { transform: none; }

/* ---------------------------------------------------------------------------
   7. HERO -- panorama, veil, sun-glow, grain layers.
   ------------------------------------------------------------------------- */
/* min-height:780px was 140px taller than a 360x640 phone viewport, so the
   hero alone overflowed vertically. The clamp runs 448px @360 -> 780px @1440.
   `height: 100vh` is the pre-svh fallback; 100svh is the small-viewport
   value, so showing or hiding mobile browser chrome never resizes the box. */
.edt-hero { position: relative; min-height: clamp(28rem, 21.0833rem + 30.7407vw, 48.75rem); height: 100vh; height: 100svh; max-height: 980px; overflow: hidden; color: white; background: var(--edt-ink-deep); }
.edt-hero__image, .edt-hero__veil, .edt-hero__grain, .edt-hero__sun-glow { position: absolute; inset: 0; pointer-events: none; }
.edt-hero__image { background-position: center center; background-size: cover; transform: scale(1.035); animation: edt-hero-drift 18s var(--sk-ease-out) both; }
.edt-hero__veil { background: linear-gradient(90deg, rgba(23, 21, 18, .78) 0%, rgba(23, 21, 18, .33) 44%, rgba(23, 21, 18, .08) 75%), linear-gradient(0deg, rgba(23, 21, 18, .68), transparent 44%, rgba(23, 21, 18, .36)); }
.edt-hero__sun-glow { background: radial-gradient(circle at 83% 38%, rgba(217, 130, 94, .22), transparent 24%); mix-blend-mode: screen; animation: edt-glow-drift 10s var(--edt-ease-in-out) infinite alternate; }
.edt-hero__grain { opacity: .06; background-image: var(--edt-grain); mix-blend-mode: soft-light; }
.edt-hero__content { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; height: 100%; padding-top: 64px; }
.edt-hero__eyebrow { margin-bottom: 24px; font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-hero__title { max-width: min(18ch, 100%); font-size: var(--sk-fs-display); letter-spacing: -.02em; line-height: 1.02; }
.edt-hero__lede { max-width: min(56ch, 100%); margin: 28px 0 34px; color: rgba(255,255,255,.82); font-size: var(--sk-fs-lede); line-height: 1.55; }
.edt-hero__actions { display: flex; align-items: center; gap: 26px; }
.edt-play-link { display: inline-flex; align-items: center; gap: 11px; color: white; font-size: var(--sk-fs-button); font-weight: 600; }
.edt-play-link__icon { display: grid; width: 32px; height: 32px; place-items: center; border: 1px solid rgba(255,255,255,.55); border-radius: var(--sk-r-circle); transition: background .2s var(--edt-spring), color .2s var(--edt-spring), transform .2s var(--edt-spring); }
.edt-play-link:hover .edt-play-link__icon { color: var(--edt-ink); background: white; transform: scale(1.08); }
.edt-hero__rail { position: absolute; z-index: 1; inset-inline-end: 40px; bottom: 78px; display: flex; align-items: center; gap: 14px; color: rgba(255,255,255,.65); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; writing-mode: vertical-rl; transform: rotate(180deg); }
.edt-hero__rail i { width: 1px; height: 64px; background: var(--edt-gold); }
.edt-scroll-cue { position: absolute; z-index: 1; bottom: 42px; left: 50%; display: flex; align-items: center; gap: 14px; color: rgba(255,255,255,.72); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; transform: translateX(-50%); }
.edt-scroll-cue__line { display: block; width: 54px; height: 1px; background: var(--edt-gold); }
.edt-hero__stats { position: absolute; z-index: 1; inset-inline-end: 9%; bottom: 42px; display: flex; flex-wrap: wrap; gap: 28px; }
.edt-hero__stats div { display: grid; gap: 4px; min-width: 105px; }
.edt-hero__stats strong { color: var(--edt-gold-light); font-family: var(--sk-font-body); font-size: var(--sk-fs-price-md); font-weight: 700; font-variant-numeric: tabular-nums; }
.edt-hero__stats span { display: inline-flex; align-items: center; gap: 4px; color: rgba(255,255,255,.66); font-size: var(--sk-fs-caption); line-height: 1.4; }

/* ---------------------------------------------------------------------------
   8. HOME SECTIONS
   ------------------------------------------------------------------------- */

/* Intro / story -- panorama wash behind the limestone page. */
.edt-intro { position: relative; isolation: isolate; overflow: hidden; background: var(--edt-paper); }
.edt-intro::before { position: absolute; inset: 0; z-index: -1; background: linear-gradient(rgba(244,241,236,.92), rgba(244,241,236,.92)), var(--edt-panorama) center / cover; opacity: .68; content: ""; }
.edt-intro > .edt-container { position: relative; }
.edt-intro-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(min(430px, 100%), 1.6fr) minmax(0, .7fr); align-items: start; gap: var(--sk-gap-5); }

/* Journeys -- dark ink band, filter rail, tone cards. */
.edt-journeys { color: var(--edt-cream); background: var(--edt-ink); }
.edt-journeys .edt-section-head h2, .edt-ways .edt-section-head h2, .edt-principles .edt-section-head h2 { color: var(--edt-cream); }
.edt-journeys .edt-section-head h2 em, .edt-ways .edt-section-head h2 em, .edt-principles .edt-section-head h2 em { color: var(--edt-gold-light); }
.edt-journey-layout { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: var(--sk-gap-5); }
.edt-journey-filter { display: flex; flex-direction: column; align-items: flex-start; }
.edt-filter-label { margin: 3px 0 18px; color: rgba(247,245,241,.46); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-filter-pill { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 44px; padding: 12px 0; border: 0; border-bottom: 1px solid rgba(247,245,241,.13); color: rgba(247,245,241,.58); background: transparent; font-size: var(--sk-fs-meta); text-align: start; cursor: pointer; transition: color .2s var(--edt-spring), transform .2s var(--edt-ease-out); }
.edt-filter-pill:hover, .edt-filter-pill--active { color: var(--edt-gold-light); transform: translateX(7px); }
.edt-filter-foot { display: flex; align-items: start; gap: 10px; margin-top: auto; padding-top: 58px; color: var(--edt-gold); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; line-height: 1.6; text-transform: uppercase; }

/* Destinations -- postcard cards, uneven heights. */
.edt-destinations { background: var(--sk-page-alt); }
.edt-section-head--dest { align-items: end; }
.edt-destination-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .84fr) minmax(0, .95fr); align-items: end; gap: 18px; }
.edt-destination-card { position: relative; display: block; min-height: 495px; overflow: hidden; color: white; background: var(--edt-ink); }
.edt-destination-card--2 { min-height: 565px; }
.edt-destination-card--3 { min-height: 445px; }
.edt-destination-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .75s var(--edt-ease-out); }
.edt-destination-card:hover img { transform: scale(1.075); }
.edt-destination-card__veil { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(23,21,18,.85), transparent 58%); }
.edt-destination-card__meta { position: absolute; top: 22px; inset-inline-start: 22px; color: rgba(255,255,255,.72); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-destination-card__copy { position: absolute; inset-inline: 22px; bottom: 20px; display: grid; gap: 8px; }
.edt-destination-card__copy strong { font-family: var(--edt-font-display); font-size: var(--sk-fs-h3); font-weight: 400; letter-spacing: -.010em; line-height: 1.2; }
.edt-destination-card__copy small { max-width: 260px; color: rgba(255,255,255,.74); font-size: var(--sk-fs-body-sm); line-height: 1.6; }
.edt-destination-card__copy i { display: grid; width: 38px; height: 38px; margin-top: 4px; place-items: center; border: 1px solid rgba(255,255,255,.55); border-radius: var(--sk-r-circle); font-style: normal; transition: background .2s var(--edt-spring), color .2s var(--edt-spring), transform .2s var(--edt-spring); }
.edt-destination-card:hover .edt-destination-card__copy i { color: var(--edt-ink); background: white; transform: rotate(45deg); }

/* Ways / philosophy cards. */
.edt-ways { color: var(--edt-cream); background: var(--edt-ink); }
.edt-ways-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.edt-way-card { position: relative; min-height: 285px; padding: 24px; color: var(--edt-ink); background: var(--sk-surface); transition: transform .3s var(--edt-ease-out), box-shadow .3s var(--edt-ease-out); }
.edt-way-card:hover { box-shadow: var(--sk-e-2); transform: translateY(-2px); }
.edt-way-card--dark { color: var(--edt-cream); background: var(--edt-blue); }
.edt-way-card--gold { background: var(--sk-accent-tint); }
.edt-way-card > span { color: var(--edt-gold); font-family: var(--sk-font-body); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .14em; }
.edt-way-card--dark > span { color: var(--edt-gold-light); }
.edt-way-card h3 { margin: 46px 0 9px; font-size: var(--sk-fs-h3); font-weight: 500; letter-spacing: -.010em; line-height: 1.2; }
.edt-way-card p { max-width: 260px; margin: 0; color: rgba(26,24,20,.68); font-size: var(--sk-fs-body-sm); line-height: 1.7; }
.edt-way-card--dark p { color: rgba(247,245,241,.68); }
.edt-way-card > a { position: absolute; inset-inline-end: 21px; bottom: 20px; display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid currentColor; border-radius: var(--sk-r-circle); transition: transform .2s var(--edt-ease-out), background .2s var(--edt-spring); }
.edt-way-card > a:hover { color: var(--edt-ink); background: white; transform: rotate(45deg); }

/* Field notes -- postcard frame + quote. */
.edt-field-notes { background: var(--sk-page-alt); }
.edt-field-notes-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; gap: var(--sk-gap-5); }
.edt-field-notes-image { position: relative; min-height: 480px; border: 11px solid var(--sk-surface); border-bottom-width: 24px; background-position: center; background-size: cover; box-shadow: var(--sk-e-3); }
.edt-field-notes-image::after { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(23,21,18,.72), transparent 52%); content: ""; }
.edt-field-notes-image span { position: absolute; z-index: 1; bottom: 10px; inset-inline-start: 10px; color: rgba(26,24,20,.72); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-field-notes-copy h2 { max-width: 480px; font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; }

/* Planning banner. */
.edt-planning { color: var(--edt-cream); background: var(--edt-ink-deep); }
.edt-planning__inner { display: flex; align-items: center; justify-content: space-between; gap: 30px; min-height: 240px; }
.edt-planning h2 { font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; color: var(--edt-cream); }
.edt-planning h2 em { color: var(--edt-gold-light); }

/* Promise -- sun disc art + checklist. */
.edt-promise { background: var(--edt-paper); }
.edt-promise-grid { display: grid; grid-template-columns: minmax(min(350px, 100%), .9fr) minmax(0, 1fr); align-items: center; gap: var(--sk-gap-5); }
.edt-promise-art { position: relative; min-height: 495px; overflow: hidden; color: var(--edt-cream); background: var(--edt-ink); }
.edt-promise-art::before, .edt-promise-art::after { position: absolute; content: ""; }
.edt-promise-art::before { top: 0; inset-inline-end: -20%; width: 82%; height: 100%; background: linear-gradient(145deg, transparent 0 40%, rgba(168,68,42,.19) 40.2% 40.5%, transparent 40.7%), linear-gradient(28deg, transparent 0 56%, rgba(168,68,42,.12) 56.2% 56.5%, transparent 56.7%); }
.edt-promise-art::after { inset-inline-end: -25%; bottom: -20%; width: 110%; height: 70%; border: 1px solid rgba(168,68,42,.33); border-radius: var(--sk-r-circle); transform: rotate(-22deg); }
.edt-promise-art__sun { position: absolute; top: 23%; inset-inline-end: 19%; width: 112px; height: 112px; border-radius: var(--sk-r-circle); background: var(--sk-accent); }
.edt-promise-art__rings { position: absolute; top: 17%; inset-inline-end: 12%; width: 195px; height: 195px; border: 1px solid rgba(168,68,42,.6); border-radius: var(--sk-r-circle); }
.edt-promise-art > span { position: absolute; top: 25px; inset-inline-start: 25px; color: var(--edt-gold-light); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; }
.edt-promise-art > strong { position: absolute; bottom: 30px; inset-inline-start: 28px; font-family: var(--edt-font-display); font-size: var(--sk-fs-h2); font-weight: 400; letter-spacing: -.014em; line-height: 1.12; }
.edt-promise-art > strong em { color: var(--edt-gold-light); font-style: italic; }
.edt-promise-copy h2 { max-width: 460px; }
.edt-promise-copy .edt-body-large { max-width: 490px; }
.edt-promise-list { display: grid; gap: 13px; margin: 30px 0 33px; }
.edt-promise-list div { display: flex; align-items: center; gap: 12px; color: var(--edt-ink-soft); font-size: var(--sk-fs-body-sm); }
.edt-promise-list svg { flex: 0 0 auto; padding: 3px; border-radius: var(--sk-r-circle); color: #fff; background: var(--sk-success); }

/* Contact -- dark band, underline form fields. */
.edt-contact { color: var(--edt-cream); background: var(--edt-ink-deep); }
.edt-contact-grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: var(--sk-gap-5); }
.edt-contact-copy h2 { color: var(--edt-cream); }
.edt-contact-copy > p:not(.edt-eyebrow) { max-width: 330px; margin: 28px 0; color: rgba(247,245,241,.68); font-size: var(--sk-fs-body); line-height: 1.8; }
.edt-contact-details { display: grid; gap: 13px; margin-top: 33px; }
.edt-contact-details a, .edt-contact-details span { display: inline-flex; align-items: center; gap: 12px; color: rgba(247,245,241,.76); font-size: var(--sk-fs-body-sm); }
.edt-contact-details svg { color: var(--edt-gold); }
.edt-contact-form { align-self: end; padding: 32px; border: 1px solid rgba(247,245,241,.16); background: rgba(247,245,241,.04); }
.edt-contact-form label { display: grid; gap: 9px; color: rgba(247,245,241,.62); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.edt-contact-form input, .edt-contact-form textarea { width: 100%; padding: 12px 0; border: 0; border-bottom: 1px solid var(--sk-ink-on-dark-3); outline: none; color: white; background: transparent; font-size: var(--sk-fs-body); letter-spacing: 0; text-transform: none; transition: border-color .2s var(--edt-spring); }
.edt-contact-form textarea { resize: vertical; }
.edt-contact-form input::placeholder, .edt-contact-form textarea::placeholder { color: rgba(247,245,241,.45); }
.edt-contact-form input:focus, .edt-contact-form textarea:focus { border-color: var(--edt-gold); }
.edt-contact-form > label { margin-top: 30px; }
.edt-form-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 32px; }
.edt-form-footer > span { display: inline-flex; align-items: center; gap: 8px; color: rgba(247,245,241,.44); font-size: var(--sk-fs-caption); line-height: 1.4; }
.edt-field-error { display: block; margin-top: 5px; color: var(--sk-danger-tint); font-size: var(--sk-fs-caption); font-weight: 700; letter-spacing: 0; line-height: 1.45; text-transform: none; }
.edt-contact-form input[aria-invalid="true"], .edt-contact-form textarea[aria-invalid="true"] { border-color: var(--sk-danger-tint); }
.edt-form-success { display: grid; align-content: center; min-height: 320px; animation: edt-success-in .6s var(--edt-ease-out) both; }
.edt-form-success__icon { display: grid; width: 52px; height: 52px; margin-bottom: 24px; place-items: center; border-radius: var(--sk-r-circle); color: #fff; background: var(--sk-success); animation: edt-success-ring .7s .15s var(--edt-ease-out) both; }
.edt-form-success h3 { max-width: 430px; color: var(--edt-cream); font-size: var(--sk-fs-h3); letter-spacing: -.010em; line-height: 1.2; }
.edt-form-success > p:not(.edt-eyebrow) { max-width: 360px; margin: 18px 0 24px; color: rgba(247,245,241,.68); font-size: var(--sk-fs-body); line-height: 1.7; }

/* ---------------------------------------------------------------------------
   9. TOUR DETAIL SECTIONS
   ------------------------------------------------------------------------- */
/* Same treatment as .edt-hero: clamp 416px @360 -> 720px @1440, vh fallback
   under svh. (.single-sekhem_tour overrides this again in 31.3.) */
.edt-detail-hero { position: relative; min-height: clamp(26rem, 19.6667rem + 28.1481vw, 45rem); height: 86vh; height: 86svh; max-height: 890px; overflow: hidden; color: white; background-position: center; background-size: cover; }
.edt-detail-hero__veil { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(23,21,18,.84), rgba(23,21,18,.2) 70%), linear-gradient(0deg, rgba(23,21,18,.72), transparent 52%); }
.edt-detail-hero__grain { position: absolute; inset: 0; opacity: .06; background-image: var(--edt-grain); mix-blend-mode: soft-light; }
.edt-detail-hero__top, .edt-detail-hero__content, .edt-detail-hero__footer { position: relative; z-index: 1; }
.edt-detail-brand { display: inline-flex; align-items: center; gap: 9px; color: white; }
.edt-detail-brand img { width: 34px; height: 34px; object-fit: contain; }
.edt-detail-brand strong { display: block; font-family: var(--edt-font-display); font-size: 19px; font-weight: 500; letter-spacing: .15em; line-height: .9; }
.edt-compass { position: relative; display: inline-grid; width: 31px; height: 31px; margin-inline-start: auto; margin-inline-end: 19px; place-items: center; border: 1px solid rgba(168,68,42,.65); border-radius: var(--sk-r-circle); color: var(--edt-gold-light); transition: transform .35s var(--edt-ease-out); }
.edt-compass:hover { transform: rotate(45deg); }
.edt-detail-hero__top { display: flex; align-items: center; justify-content: space-between; padding-top: 33px; }
.edt-back { display: inline-flex; align-items: center; gap: 10px; color: rgba(255,255,255,.8); font-size: var(--sk-fs-meta); font-weight: 600; transition: color .2s var(--edt-spring); }
.edt-back > svg { transition: transform var(--sk-dur-2) var(--sk-ease-spring); }
.edt-back:hover { color: var(--edt-gold-light); }
.edt-back:hover > svg { transform: translateX(-3px); }
.edt-serial { color: var(--edt-gold-light); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .14em; text-transform: uppercase; }
.edt-detail-hero__content { display: flex; flex-direction: column; justify-content: center; height: calc(100% - 150px); padding-top: 65px; }
.edt-detail-hero__content h1 { max-width: min(18ch, 100%); font-size: var(--sk-fs-display); letter-spacing: -.02em; line-height: 1.02; }
.edt-detail-hero__content h1 em { color: var(--edt-gold-light); font-style: italic; }
.edt-detail-hero__content .edt-button { align-self: flex-start; }
.edt-detail-hero__lede { max-width: min(56ch, 100%); margin: 25px 0 31px; color: rgba(255,255,255,.8); font-size: var(--sk-fs-lede); line-height: 1.55; }
.edt-detail-hero__footer { display: flex; gap: 28px; padding-bottom: 31px; color: rgba(255,255,255,.7); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-detail-hero__footer span { display: inline-flex; align-items: center; gap: 8px; }
.edt-detail-hero__footer svg { color: var(--edt-gold); }

.edt-detail-intro { background: var(--edt-paper); }
.edt-detail-intro__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, .75fr); align-items: start; gap: var(--sk-gap-5); }
.edt-detail-intro__grid h2 { max-width: 610px; font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; color: var(--sk-ink); }
.edt-price { display: grid; gap: 5px; padding-block: 17px 0; padding-inline-start: 22px; border-inline-start: 1px solid var(--edt-gold); }
.edt-price span, .edt-price small { color: var(--edt-muted); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-price strong { color: var(--sk-ink); font-family: var(--sk-font-body); font-size: var(--sk-fs-price-lg); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; line-height: 1; }
.edt-price .edt-button { justify-self: start; margin-top: 19px; }

/* Availability facts row (booking rail + city page). */
.edt-availability-facts { display: grid; gap: 12px; margin-top: 30px; color: var(--edt-ink-soft); font-size: var(--sk-fs-meta); }
.edt-availability-facts span { display: flex; align-items: center; gap: 10px; }
.edt-availability-facts svg { padding: 2px; border-radius: var(--sk-r-circle); color: #fff; background: var(--sk-accent); }

/* Closing CTA -- panorama wash over basalt. */
.edt-cta { position: relative; isolation: isolate; overflow: hidden; color: white; background: var(--edt-ink-deep); }
.edt-cta::before { position: absolute; inset: 0; z-index: -1; background: linear-gradient(rgba(23,21,18,.8), rgba(23,21,18,.85)), var(--edt-panorama) center / cover; opacity: .85; content: ""; }
.edt-cta__inner { text-align: center; }
.edt-cta h2 { font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; }
.edt-cta h2 em { color: var(--edt-gold-light); font-style: italic; }
.edt-cta__inner > p:not(.edt-eyebrow) { max-width: 400px; margin: 25px auto 30px; color: rgba(255,255,255,.7); font-size: var(--sk-fs-body); line-height: 1.7; }

/* ---------------------------------------------------------------------------
   10. ABOUT PAGE
   ------------------------------------------------------------------------- */
/* Clamp 400px @360 -> 700px @1440, vh fallback under svh. */
.edt-about-hero { position: relative; min-height: clamp(25rem, 18.75rem + 27.7778vw, 43.75rem); height: 82vh; height: 82svh; max-height: 880px; overflow: hidden; color: white; background-position: center; background-size: cover; }
.edt-about-hero__veil, .edt-about-hero__grain { position: absolute; inset: 0; }
.edt-about-hero__veil { background: linear-gradient(90deg, rgba(23,21,18,.82), rgba(23,21,18,.19) 76%), linear-gradient(0deg, rgba(23,21,18,.72), transparent 50%); }
.edt-about-hero__grain { opacity: .06; background-image: var(--edt-grain); mix-blend-mode: soft-light; }
.edt-about-header, .edt-about-hero__content, .edt-about-hero__footer { position: relative; z-index: 1; }
.edt-about-header { display: flex; align-items: center; justify-content: space-between; padding-top: 30px; }
.edt-about-header nav { display: flex; align-items: center; gap: 25px; }
.edt-about-header nav > a:not(.edt-button) { color: rgba(255,255,255,.75); font-size: var(--sk-fs-meta); font-weight: 600; }
.edt-about-header nav > a:not(.edt-button):hover, .edt-about-nav-active { color: var(--edt-gold-light) !important; }
.edt-about-hero__content { display: flex; flex-direction: column; justify-content: center; height: calc(100% - 120px); padding-top: 35px; }
.edt-about-hero__content h1 { max-width: min(18ch, 100%); font-size: var(--sk-fs-display); letter-spacing: -.02em; line-height: 1.02; }
.edt-about-hero__content h1 em { color: var(--edt-gold-light); }
.edt-about-hero__lede { max-width: min(56ch, 100%); margin: 26px 0 0; color: rgba(255,255,255,.78); font-size: var(--sk-fs-lede); line-height: 1.55; }
.edt-about-hero__footer { display: flex; align-items: center; justify-content: space-between; padding-bottom: 28px; color: rgba(255,255,255,.68); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-about-hero__footer span { display: inline-flex; align-items: center; gap: 8px; }
.edt-about-hero__footer svg { color: var(--edt-gold); }
.edt-about-story { position: relative; overflow: hidden; background: var(--edt-paper); }
.edt-about-story::before { position: absolute; inset: 0; background: linear-gradient(rgba(244,241,236,.92), rgba(244,241,236,.92)), var(--edt-panorama) center / cover; opacity: .58; content: ""; }
.edt-about-story-grid, .edt-portrait-grid { position: relative; z-index: 1; }
.edt-about-story-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, .75fr); align-items: start; gap: var(--sk-gap-5); }
.edt-about-story-grid h2, .edt-portrait-copy h2 { max-width: 640px; font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; color: var(--sk-ink); }
.edt-about-note { padding-block: 18px 0; padding-inline-start: 20px; border-inline-start: 1px solid var(--edt-gold); }
.edt-about-note svg { color: var(--edt-gold); }
.edt-about-note span { display: block; margin: 14px 0 8px; color: var(--edt-muted); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-about-note p { max-width: 190px; margin: 0; color: var(--edt-ink-soft); font-size: var(--sk-fs-body-sm); line-height: 1.65; }
.edt-principles { color: var(--edt-cream); background: var(--edt-ink); }
.edt-principles-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.edt-principle-card { position: relative; min-height: 250px; padding: 23px; background: var(--sk-surface); color: var(--edt-ink); transition: transform .3s var(--edt-ease-out), box-shadow .3s var(--edt-ease-out); }
.edt-principle-card:hover { box-shadow: var(--sk-e-2); transform: translateY(-2px); }
.edt-principle-card > span { color: var(--edt-gold); font-family: var(--sk-font-body); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .14em; }
.edt-principle-card h3 { margin: 42px 0 8px; font-size: var(--sk-fs-h3); font-weight: 500; letter-spacing: -.010em; line-height: 1.2; }
.edt-principle-card p { max-width: 250px; margin: 0; color: var(--edt-muted); font-size: var(--sk-fs-body-sm); line-height: 1.7; }
.edt-principle-card > svg { position: absolute; inset-inline-end: 21px; bottom: 21px; color: var(--edt-gold); }
.edt-portrait { background: var(--sk-page-alt); }
.edt-portrait-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: center; gap: var(--sk-gap-5); }
.edt-portrait-image { position: relative; min-height: 500px; border: 11px solid var(--sk-surface); border-bottom-width: 24px; background-position: center; background-size: cover; box-shadow: var(--sk-e-3); }
.edt-portrait-image span { position: absolute; bottom: 8px; inset-inline-start: 10px; color: rgba(26,24,20,.68); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-team-list { display: grid; gap: 13px; margin: 30px 0 0; color: var(--edt-ink-soft); font-size: var(--sk-fs-body-sm); }
.edt-team-list span { display: flex; align-items: center; gap: 13px; }
.edt-team-list strong { color: var(--edt-gold); font-family: var(--edt-font-display); font-size: var(--sk-fs-h4); font-weight: 500; }
.edt-about-cta { position: relative; isolation: isolate; overflow: hidden; color: white; background: var(--edt-ink-deep); }
.edt-about-cta::before { position: absolute; inset: 0; z-index: -1; background: linear-gradient(rgba(23,21,18,.82), rgba(23,21,18,.88)), var(--edt-panorama) center / cover; opacity: .86; content: ""; }
.edt-about-cta__inner { text-align: center; }
.edt-about-cta h2 { font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; }
.edt-about-cta h2 em { color: var(--edt-gold-light); }
.edt-about-cta__inner > p:not(.edt-eyebrow) { max-width: 340px; margin: 24px auto 30px; color: rgba(255,255,255,.68); font-size: var(--sk-fs-body); line-height: 1.7; }

/* ---------------------------------------------------------------------------
   11. FOOTER
   ------------------------------------------------------------------------- */
.edt-footer { padding-top: var(--sk-sp-11); }
.edt-footer-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); padding-bottom: var(--sk-sp-9); }
.edt-footer-brand .edt-brand { margin-bottom: 16px; }
.edt-footer-tagline { margin: 0 0 6px; font-family: var(--edt-font-display); font-size: var(--sk-fs-h4); font-style: italic; }
.edt-footer-social { display: flex; gap: 10px; }
.edt-footer-social a { display: grid; width: 44px; height: 44px; place-items: center; border: 1px solid rgba(247,245,241,.22); border-radius: var(--sk-r-circle); transition: color .2s var(--edt-spring), border-color .2s var(--edt-spring), transform .2s var(--edt-spring); }
.edt-footer-social a:hover, .edt-footer-social a:focus-visible { transform: translateY(-3px); }
.edt-footer-grid :is(h2, h3) { margin: 0 0 18px; font-family: var(--edt-font-body); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-footer-nav ul, .edt-footer-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.edt-footer-nav a, .edt-footer-contact a { font-size: var(--sk-fs-body-sm); line-height: 1.5; min-height: 24px; transition: color .2s var(--edt-spring); }
/* Payment marks: real wordmark styling, scaled properly (28px tall zone).
   The brand hexes below are third-party marks and stay verbatim. */
.edt-pay-marks { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.edt-pay { display: inline-flex; align-items: center; justify-content: center; height: 30px; padding: 0 12px; border-radius: var(--sk-r-xs); background: #fff; font-weight: 800; font-style: italic; font-size: 15px; letter-spacing: .02em; line-height: 1; }
.edt-pay--visa { color: #1a1f71; font-stretch: condensed; } /* brand: Visa */
.edt-pay--mc { position: relative; width: 46px; padding: 0; background: transparent; }
.edt-pay--mc i { position: absolute; width: 26px; height: 26px; border-radius: var(--sk-r-circle); }
.edt-pay--mc i:first-child { left: 0; background: #eb001b; } /* brand: Mastercard */
.edt-pay--mc i:last-child { right: 0; background: #f79e1b; mix-blend-mode: screen; } /* brand: Mastercard */
.edt-pay--paypal { color: #003087; } /* brand: PayPal */
.edt-pay--paypal span { color: #003087; } /* brand: PayPal; was #009cde (3.08:1 on white, fails AA) -- PayPal's own dark blue, already the "Pay" colour above, measures 11.85:1 */
.edt-footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 0 24px; }
.edt-footer-bottom a { display: inline-flex; align-items: center; gap: 7px; }

/* ---------------------------------------------------------------------------
   12. REVEAL + KEYFRAMES -- scroll reveals ride opacity + transform only
   (spec section 10.2: --sk-dur-4 on --sk-ease-entrance). The animated blur
   was dropped: filter is expensive and outside the allowed animatable set.
   ------------------------------------------------------------------------- */
.edt-reveal { opacity: 0; transform: translateY(16px); transition: opacity var(--sk-dur-4) var(--sk-ease-entrance) var(--delay, 0ms), transform var(--sk-dur-4) var(--sk-ease-entrance) var(--delay, 0ms); }
.edt-reveal--left { transform: translateX(-24px); }
.edt-reveal--right { transform: translateX(24px); }
.edt-reveal--down { transform: translateY(-18px); }
.edt-reveal.is-visible { opacity: 1; transform: translate(0); }

@media (prefers-reduced-motion: reduce) {
	/* ponytail: bare linear is deliberate here -- reduced motion wants a
       plain cross-fade with no spring character. */
	.edt-reveal { transition: opacity .3s linear var(--delay, 0ms); }
}

@keyframes edt-hero-drift { from { transform: scale(1.08); } to { transform: scale(1.035); } }
@keyframes edt-glow-drift { from { transform: translate3d(-2%, 1%, 0); opacity: .6; } to { transform: translate3d(3%, -2%, 0); opacity: 1; } }
@keyframes edt-success-in { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes edt-success-ring { from { transform: scale(.75); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* ---------------------------------------------------------------------------
   13. RESPONSIVE -- one scale for the whole file: 640 / 900 / 1120.
   ------------------------------------------------------------------------- */
@media (max-width: 1120px) {
	.edt-nav { gap: 18px; margin-inline-end: 26px; }
	.edt-phone-link span { display: none; }
	.edt-hero__stats { inset-inline-end: 5%; }
}
@media (max-width: 900px) {
	.edt-header-inner { width: calc(100% - 40px); min-height: 76px; }
	.edt-header-actions { gap: 11px; }
	.edt-header-divider, .edt-phone-link { display: none; }
	.edt-button--small { min-height: 44px; padding: 0 15px; }
	.edt-menu-toggle { display: inline-flex; }
	.edt-hero__content { padding-top: 22px; }
	/* Bounded box (was left:20px / right:auto, so the row could run off the
       right edge): 2 x 105px min-width + 18px gap = 228px inside 280px. */
	.edt-hero__stats { bottom: 46px; inset-inline: var(--sk-sp-5); }
	.edt-scroll-cue { display: none; }
	.edt-hero__rail { inset-inline-end: 18px; bottom: 44px; }
	.edt-intro-grid { grid-template-columns: 1fr; gap: 30px; }
	.edt-kicker { writing-mode: initial; transform: none; }
	.edt-kicker-number { margin: 0; margin-inline-end: 14px; }
	.edt-note { margin-top: 0; }
	.edt-journey-layout { grid-template-columns: 1fr; gap: 35px; }
	.edt-journey-filter { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 22px; }
	.edt-filter-label { grid-column: 1 / -1; }
	.edt-filter-foot { grid-column: 1 / -1; margin-top: 24px; padding-top: 0; }
	.edt-destination-grid { grid-template-columns: 1fr 1fr; }
	.edt-destination-card, .edt-destination-card--2, .edt-destination-card--3 { min-height: 440px; }
	.edt-destination-card--3 { grid-column: 1 / -1; min-height: 350px; }
	.edt-promise-grid, .edt-contact-grid { grid-template-columns: 1fr; gap: 48px; }
	.edt-promise-art { min-height: 390px; }
	.edt-contact-form { padding: 23px; }
	.edt-detail-hero__footer { flex-wrap: wrap; gap: 12px 19px; }
	.edt-detail-intro__grid { grid-template-columns: 1fr; gap: 30px; }
	.edt-price { padding-block: 18px 0; padding-inline-start: 20px; }
	.edt-ways-grid, .edt-principles-grid { grid-template-columns: 1fr 1fr; }
	.edt-way-card:last-child, .edt-principle-card:last-child { grid-column: 1 / -1; }
	.edt-field-notes-grid, .edt-portrait-grid { grid-template-columns: 1fr; gap: 42px; }
	.edt-field-notes-image, .edt-portrait-image { min-height: 360px; }
	.edt-about-story-grid { grid-template-columns: 1fr; gap: 30px; }
	.edt-about-note { margin-top: 0; }
	.edt-about-header nav a:not(.edt-button) { display: none; }
	.edt-about-header nav { gap: 0; }
}
@media (max-width: 640px) {
	.edt-hero__image { background-position: 58% center; }
	.edt-hero__veil { background: linear-gradient(90deg, rgba(23, 21, 18, .78), rgba(23, 21, 18, .16)), linear-gradient(0deg, rgba(23, 21, 18, .76), transparent 55%); }
	.edt-hero__actions { align-items: flex-start; flex-direction: column; gap: 18px; }
	.edt-hero__stats { gap: 18px; }
	.edt-section-head { align-items: start; flex-direction: column; gap: 22px; margin-bottom: var(--sk-sp-8); }
	.edt-journey-filter { grid-template-columns: 1fr; }
	.edt-filter-label, .edt-filter-foot { grid-column: auto; }
	.edt-destination-grid { grid-template-columns: 1fr; }
	.edt-destination-card, .edt-destination-card--2, .edt-destination-card--3 { grid-column: auto; min-height: 430px; }
	.edt-form-row { grid-template-columns: 1fr; gap: 25px; }
	.edt-form-footer { align-items: flex-start; flex-direction: column; }
	.edt-footer-bottom { align-items: flex-start; flex-direction: column; gap: 12px; }
	.edt-detail-hero__content { height: calc(100% - 175px); padding-top: 35px; }
	.edt-compass { display: none; }
	.edt-detail-brand strong { font-size: 17px; }
	.edt-ways-grid, .edt-principles-grid { grid-template-columns: 1fr; }
	.edt-way-card:last-child, .edt-principle-card:last-child { grid-column: auto; }
	.edt-planning__inner { align-items: flex-start; flex-direction: column; justify-content: center; padding: 50px 0; }
	.edt-about-header { padding-top: 20px; }
	.edt-about-hero__footer { align-items: flex-start; flex-direction: column; gap: 14px; }
}

/* ---------------------------------------------------------------------------
   14. REDUCED MOTION
   ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.edt-scope, :has(.edt-scope) { scroll-behavior: auto; }
	.edt-scope *, .edt-scope *::before, .edt-scope *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	.edt-reveal { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------------------
   15. PHASE 4 ADDITIONS -- solid header variant + WordPress menu output
   (v2.2.0: the --solid / --scrolled surfaces moved onto the island pill
   in section 5; the wrapper itself stays transparent.)
   ------------------------------------------------------------------------- */

/* wp_nav_menu() outputs a ul inside .edt-nav; make it behave like the
   design's flat link row. */
.edt-nav ul {
	list-style: none;
	display: flex;
	align-items: center;
	gap: 34px;
	margin: 0;
	padding: 0;
}
.edt-nav a {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 37px 0 34px;
	font-size: var(--sk-fs-meta);
	font-weight: 700;
	color: inherit;
	opacity: .9;
	transition: opacity .2s var(--edt-spring);
}
.edt-nav a:hover { opacity: 1; }
.edt-nav .current-menu-item > a::after {
	position: absolute;
	bottom: 22px;
	inset-inline-start: 0;
	width: 100%;
	height: 2px;
	background: var(--edt-gold);
	content: "";
}
.edt-nav .sub-menu {
	position: absolute;
	top: 100%;
	inset-inline-start: -14px;
	background: var(--sk-surface);
	border: 1px solid var(--edt-line);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity .2s var(--edt-ease-out), transform .2s var(--edt-ease-out), visibility .2s;
	box-shadow: var(--sk-e-3);
}
.edt-nav li { position: relative; }
.edt-nav li:hover > .sub-menu,
.edt-nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.edt-nav .sub-menu a { color: var(--edt-ink); }
.edt-nav .sub-menu a::after { display: none; }
.edt-nav .sub-menu a:hover { color: var(--edt-gold); opacity: 1; }

@media (max-width: 900px) {
	.edt-nav ul { flex-direction: column; gap: 0; align-items: stretch; }
	.edt-nav li { position: static; }
	.edt-nav a { padding: 17px 4px; border-bottom: 1px solid rgba(247,245,241,.12); }
	.edt-nav .current-menu-item > a::after { bottom: 0; width: 45px; }
	.edt-nav .sub-menu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		background: transparent;
		border: none;
		box-shadow: none;
		padding-block: 2px;
		padding-inline-start: 18px;
		width: auto;
		min-width: 0;
		max-width: none;
		display: none;
	}
	.edt-nav li.menu-item-has-children > .sub-menu { display: flex; }
	.edt-nav .sub-menu a { color: rgba(247,245,241,.75); padding-block: 12px; }
}
@media (max-width: 1120px) {
	.edt-nav ul { gap: 18px; }
}
/* ---------------------------------------------------------------------------
   16. PHASE 4 AUDIT FIXES -- custom logo sizing + header stability
   WordPress's the_custom_logo() outputs img.custom-logo; constrain it at
   every location it renders (header, footer, detail hero). The height is
   the fixed axis and the width follows the logo's own aspect ratio -- so
   ANY uploaded logo dimensions land in the same visual slot. max-width
   + object-fit guard against ultra-wide or square logos overflowing.
   ------------------------------------------------------------------------- */
.edt-brand .custom-logo-link { display: inline-flex; align-items: center; flex: 0 0 auto; }
.edt-brand .custom-logo { display: block; height: 40px; width: auto; max-width: 200px; object-fit: contain; }
.edt-brand--compact .custom-logo { height: 34px; max-width: 170px; }
.edt-footer .edt-brand .custom-logo { height: 34px; max-width: 170px; }
.edt-detail-brand .custom-logo-link { display: inline-flex; align-items: center; flex: 0 0 auto; }
.edt-detail-brand .custom-logo { display: block; width: 34px; height: 34px; max-width: 34px; object-fit: contain; }
@media (max-width: 900px) {
	.edt-brand .custom-logo { height: 34px; max-width: 150px; }
	.edt-header-inner { min-height: 76px; }
}
@media (max-width: 640px) {
	.edt-brand .custom-logo { max-width: 120px; }
	.edt-header-actions { gap: 10px; }
}

/* ---------------------------------------------------------------------------
   17. CITIES MODULE -- header link fix, masonry, coverflow
   ------------------------------------------------------------------------- */
/* Header sits outside .edt-scope -- kill inherited link underlines there. */
.edt-header a, .edt-header a:hover, .edt-header a:focus { text-decoration: none; }

/* 3D perspective coverflow: scroll-snap rail (native touch/swipe) with
   rotateY transforms driven by the inline script. */
.edt-coverflow-wrap { position: relative; }
.edt-coverflow {
	display: flex; gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding: 30px calc(50% - min(520px, 80vw) / 2) 46px; /* center first/last slides */
	perspective: 1400px;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.edt-coverflow::-webkit-scrollbar { display: none; }
.edt-coverflow__slide {
	position: relative; flex: 0 0 min(460px, 78vw);
	height: min(560px, 62vw);
	scroll-snap-align: center;
	overflow: hidden; border-radius: var(--sk-r-xs);
	color: #fff; background: var(--edt-ink);
	box-shadow: var(--sk-e-4);
	transform-style: preserve-3d;
	/* ponytail: linear is correct here -- the transform is scroll-linked by
       the inline coverflow script, so an eased curve would visibly lag. */
	transition: transform .18s linear, opacity .18s linear;
}
.edt-coverflow__slide img { width: 100%; height: 100%; object-fit: cover; }
.edt-coverflow__veil { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(23,21,18,.88), transparent 58%); }
.edt-coverflow__copy { position: absolute; inset-inline: 22px; bottom: 20px; display: grid; gap: 7px; }
.edt-coverflow__meta { color: rgba(255,255,255,.72); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.edt-coverflow__copy strong { font-family: var(--edt-font-display); font-weight: 400; font-size: var(--sk-fs-h2); letter-spacing: -.014em; line-height: 1.12; }
.edt-coverflow__copy small { color: rgba(255,255,255,.74); font-size: var(--sk-fs-body-sm); }
.edt-coverflow__slide.is-center { box-shadow: var(--sk-e-4), 0 0 0 1px rgba(168,68,42,.4); }
.edt-coverflow-nav { display: flex; justify-content: center; gap: 12px; }
.edt-coverflow-arrow {
	display: grid; place-items: center; width: 46px; height: 46px;
	border: 1px solid rgba(247,245,241,.22); border-radius: var(--sk-r-circle);
	color: var(--edt-cream); background: transparent; cursor: pointer;
	transition: background .2s var(--edt-spring), color .2s var(--edt-spring), transform .2s var(--edt-ease-out);
}
.edt-coverflow-arrow:hover { color: #fff; background: var(--sk-accent); transform: translateY(-2px); }
@media (max-width: 900px) {
	.edt-coverflow { gap: 16px; padding-bottom: 34px; }
	.edt-coverflow__slide { flex-basis: min(340px, 82vw); height: min(430px, 96vw); }
	.edt-coverflow-arrow { width: 40px; height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
	.edt-coverflow__slide { transition: none; }
}

/* ---------------------------------------------------------------------------
   18. TOURS SYSTEM -- hero filter (front-page.php)
   ------------------------------------------------------------------------- */
/* Hero journey search: glass bar above the CTAs. */
.edt-hero-filter {
	display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
	max-width: 560px; margin: 0 0 26px; padding: 10px;
	/* ponytail: no backdrop-filter -- this bar scrolls with the hero and the
       project rule limits blur to fixed layers. */
	background: rgba(23, 21, 18, .52);
	border: 1px solid rgba(247, 245, 241, .18); border-radius: var(--sk-r-sm);
}
.edt-hero-filter select,
.edt-hero-filter input {
	flex: 1 1 130px; min-width: 0; height: 38px; padding: 0 10px;
	border: 0; border-radius: var(--sk-r-xs); outline: none;
	color: var(--edt-ink); background: rgba(250, 248, 244, .95); font-size: var(--sk-fs-body);
}
.edt-hero-filter input::placeholder { color: var(--edt-muted); }
.edt-hero-filter .edt-button { flex: 0 0 auto; }
@media (max-width: 900px) {
	.edt-hero-filter { max-width: none; }
	.edt-hero-filter select, .edt-hero-filter input { flex: 1 1 110px; }
	.edt-hero-filter .edt-button { flex: 1 1 100%; }
}


/* ---------------------------------------------------------------------------
   19. HEADER/FOOTER QA -- dropdown chevrons, touch targets, WCAG
   ------------------------------------------------------------------------- */
/* Chevron on every nav item that has children: pure CSS, rotates on
   hover/open -- a clear sub-menu cue without touching any markup. */
.edt-nav li.menu-item-has-children > a::after,
.edt-nav li.page_item_has_children > a::after {
	content: '';
	width: 7px; height: 7px;
	margin-inline-start: 6px;
	border-right: 1.6px solid currentColor;
	border-bottom: 1.6px solid currentColor;
	transform: rotate(45deg) translateY(-2px);
	transition: transform .2s var(--edt-ease-out);
}
.edt-nav li.menu-item-has-children:hover > a::after,
.edt-nav li.menu-item-has-children:focus-within > a::after { transform: rotate(225deg) translateY(-2px); }

/* Dropdown: softer entrance + visible focus for keyboard users.
   CRITICAL: .edt-nav ul { display:flex; gap:34px } also matches
   sub-menus -- without the column override below, dropdown items lay
   out in a horizontal row with 34px gaps (the broken "two-column"
   look). Column + tight gap + compact scale fixes it. */
.edt-nav .sub-menu {
	flex-direction: column;
	gap: 2px;
	/* Bounded width. The panel is anchored 14px OUTSIDE its trigger, so its own
       width is the only lever CSS has against a right-edge overflow; 90vw
       (never 100vw) stays clear of a classic scrollbar. */
	width: max-content;
	min-width: 200px;
	max-width: min(20rem, 90vw);
	padding: 8px 10px;
	z-index: var(--sk-z-jumpnav);
	max-height: min(72vh, 460px);
	overflow-y: auto;
	overscroll-behavior: contain;
}
.edt-nav .sub-menu a { padding: 8px 10px; font-size: var(--sk-fs-body-sm); }
.edt-nav .sub-menu a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: -2px; }
/* Long dropdowns (7+ items -- e.g. the auto-injected Tours list) split
   into two balanced columns instead of one oversized stack that ran off
   the viewport and overlapped content. :has() is supported in all
   current browsers; the fallback is the single column above. */
@media (min-width: 901px) {
	.edt-nav .sub-menu:has( > li:nth-child(7) ) {
		display: grid;
		/* 2 x 160 + 8 gap + 20 padding = 348px (was 210px + 210px = 440px). */
		grid-template-columns: repeat(2, minmax(0, 10rem));
		gap: 2px 8px;
		max-width: min(23rem, 90vw);
	}
}

/* The right-most triggers open leftwards. A two-column panel anchored 14px
   left of a nav item near the pill's right edge ran ~270px past the viewport
   at 1121px -- the narrowest width at which .edt-nav is still visible. */
.edt-nav > ul > li:nth-last-child(-n+3) > .sub-menu {
	inset-inline-start: auto;
	inset-inline-end: -14px;
}

/* Touch targets: 44px minimum on mobile nav + toggle (WCAG 2.5.5). */
@media (max-width: 900px) {
	.edt-nav a { min-height: 44px; align-items: center; }
	.edt-menu-toggle { min-width: 44px; min-height: 44px; }
	.edt-footer-grid { grid-template-columns: 1fr; }
	.edt-footer-brand { grid-column: auto; }
	.edt-pay-marks { gap: 10px; }
}

/* Header/footer premium refinement + switcher mobile behavior. */
@media (max-width: 640px) {
	/* Globe + chevron only in the header on small phones -- the full
       label squeezes the phone link and Book-now button. */
	.edt-header-actions .edt-lang__label { display: none; }
	.edt-header-actions .edt-lang__btn { padding: 9px; }
}

/* ---------------------------------------------------------------------------
   20. LANGUAGE SWITCHER, GUIDE, LEGAL
   ------------------------------------------------------------------------- */
/* Switcher: button + panel -- the pattern the floating agent cards use;
   a plain absolutely-positioned panel below the button, no <details>
   quirks. Panel scrolls if the viewport is short. */
.edt-lang { position: relative; }
.edt-lang__btn {
	display: inline-flex; align-items: center; gap: 6px;
	cursor: pointer;
	padding: 9px 11px; min-height: 44px;
	/* ponytail: neutral grey is the one border that reads on both the dark
       glass header pill and the light footer surface. */
	border: 1px solid rgba(127,127,127,.35); border-radius: var(--sk-r-xs);
	background: transparent;
	font-family: var(--sk-font-body); font-size: var(--sk-fs-meta); font-weight: 600; line-height: 1; letter-spacing: .08em;
	color: inherit;
	transition: border-color .2s var(--edt-spring);
}
.edt-lang__btn:hover { border-color: var(--edt-gold); }
.edt-lang__btn:focus-visible { outline: var(--sk-bw-2) solid currentColor; outline-offset: 2px; }
.edt-lang__globe { width: 15px; height: 15px; }
.edt-lang__chev { width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-1px); transition: transform .2s var(--edt-ease-out); }
.edt-lang__btn[aria-expanded="true"] .edt-lang__chev { transform: rotate(225deg) translateY(-1px); }
.edt-lang__panel {
	position: absolute; z-index: var(--sk-z-toast); inset-inline-end: 0; top: calc(100% + 10px);
	min-width: 240px; max-width: min(20rem, 90vw); max-height: min(60vh, 430px); overflow-y: auto;
	overscroll-behavior: contain;
	padding: 8px;
	border-radius: var(--sk-r-xs);
	background: var(--sk-surface); border: 1px solid var(--edt-line);
	box-shadow: var(--sk-e-3);
}
.edt-lang__panel ul { list-style: none; margin: 0; padding: 0; }
.edt-lang li + li { margin-top: 2px; }
.edt-lang__panel a {
	display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center;
	gap: 10px; padding: 10px 12px; min-height: 44px; border-radius: var(--sk-r-xs);
	color: var(--edt-ink); font-size: var(--sk-fs-body-sm); text-decoration: none;
}
.edt-lang__panel a:hover, .edt-lang__panel a:focus-visible { background: var(--sk-sunken); color: var(--edt-ink); }
.edt-lang__panel a.edt-lang__current-lang { background: var(--sk-sunken); }
.edt-lang__name { font-weight: 700; }
.edt-lang__en { font-size: var(--sk-fs-caption); color: var(--edt-muted); }
.edt-lang__flag svg { display: block; width: 24px; height: 16px; border-radius: var(--sk-r-xs); box-shadow: 0 0 0 1px var(--sk-line); }

/* Guide season badges. */
.edt-season-badge {
	display: inline-block; margin-bottom: 14px; padding: 7px 14px;
	border-radius: var(--sk-r-xs); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase;
}
.edt-season-badge--gold { background: var(--sk-accent); color: #fff; }
.edt-season-badge--blue { background: var(--edt-blue); color: var(--edt-cream); }
.edt-season-badge--sand { background: var(--edt-sand); color: var(--edt-ink); }

/* Legal typography. */
.edt-legal-body { max-width: min(var(--sk-container-prose), 100%); margin-top: 44px; }
.edt-legal-body h2 { font-family: var(--edt-font-display); font-weight: 500; font-size: var(--sk-fs-h3); letter-spacing: -.010em; line-height: 1.2; margin: 40px 0 12px; color: var(--sk-ink); }
.edt-legal-body p, .edt-legal-body li { color: var(--edt-ink-soft); font-size: var(--sk-fs-body); line-height: 1.65; }
.edt-legal-body ul { padding-inline-start: 22px; }
.edt-legal-body a { color: var(--edt-ink); border-bottom: 1px solid var(--edt-gold); }

/* ---------------------------------------------------------------------------
   21. TOURS SYSTEM v2 -- breadcrumbs, predictive search, reviews, guides
   ------------------------------------------------------------------------- */
/* sekhem_breadcrumb() now emits nav > ol > li with aria-current on the last
   crumb (spec 9.7). The flex row moved from the <nav> to the <ol>; the <nav>
   keeps the type scale and, in 31.3 / 33.3, the horizontal scroll container.
   ol gap + li gap = 8px on each side of the separator, per 9.7. */
.edt-scope .sekhem-breadcrumb { margin-bottom: 18px; font-size: var(--sk-fs-meta); font-weight: 500; }
.edt-scope .sekhem-breadcrumb ol { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-sp-2); margin: 0; padding: 0; list-style: none; }
.edt-scope .sekhem-breadcrumb li { display: inline-flex; align-items: center; gap: var(--sk-sp-2); }
.edt-scope .sekhem-breadcrumb a { color: var(--edt-muted); text-decoration: none; }
.edt-scope .sekhem-breadcrumb a:hover { color: var(--sk-ink); }
.edt-scope .sekhem-breadcrumb span[aria-hidden] { color: var(--edt-muted); }
.edt-scope .sekhem-breadcrumb span:not([aria-hidden]) { color: var(--sk-ink); }
.edt-crumb-col .edt-kicker { margin-top: 22px; }

/* Predictive search dropdown. */
.edt-suggest { position: relative; }
.edt-suggest__panel {
	position: absolute; z-index: var(--sk-z-jumpnav); top: calc(100% + 6px); inset-inline: 0;
	/* min-width:260px forced the panel 20px wider than the 240px field it sits
       under at 320px; inset-inline:0 already sizes it to the field. */
	min-width: 0; max-height: 340px; overflow-y: auto;
	background: var(--sk-surface); border: 1px solid var(--edt-line);
	border-radius: var(--sk-r-xs); box-shadow: var(--sk-e-3); padding: 6px;
}
.edt-suggest__panel a {
	display: grid; align-content: center; gap: 2px; min-height: 44px; padding: 10px 12px; border-radius: var(--sk-r-xs);
	color: var(--edt-ink); text-decoration: none; font-size: var(--sk-fs-body-sm);
}
.edt-suggest__panel a strong { font-weight: 700; }
.edt-suggest__panel a small { color: var(--edt-muted); font-size: var(--sk-fs-overline); text-transform: uppercase; letter-spacing: .14em; }
.edt-suggest__panel a:hover, .edt-suggest__panel a.is-active { background: var(--sk-sunken); }

/* Guide cards: image-led variant of the inclusion card. */
.edt-inclusion-card img { border-radius: var(--sk-r-xs); }
.edt-inclusion-card a[aria-label] { position: absolute; inset-inline-end: 21px; bottom: 20px; }

/* ---------------------------------------------------------------------------

   22. v2.1.0 -- GUIDE READING ROOM, FAQ, CONTACT BAND
   (the photo tour cards this section was named for are deleted -- see 34)

   --------------------------------------------------------------------------- */

/* ---- CTA sizing: the large primary button. Colour lives in section 6. ---- */

.edt-button--large { min-height: 58px; padding: 0 32px; font-size: var(--sk-fs-button); letter-spacing: .01em; }

/* ---- Field notes card (tours, cities, guides). ---- */

.edt-fieldnotes { position: relative; }

.edt-fieldnotes h3 {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 12px;
	color: var(--edt-ink);
	font-family: var(--edt-font-body);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.edt-fieldnotes h3 svg { color: var(--edt-gold); flex: 0 0 auto; }
.edt-fieldnotes p { margin: 0; color: var(--edt-ink-soft); font-size: var(--sk-fs-body-sm); line-height: 1.75; }

/* ---- Guide reading room: hero, byline, TOC layout, article typography. ---- */

.edt-guide-hero__head h1 { max-width: 820px; margin: 0 0 22px; font-size: var(--sk-fs-h1); letter-spacing: -.018em; line-height: 1.06; color: var(--sk-ink); }

.edt-guide-hero__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 26px; color: var(--edt-muted); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }

.edt-guide-hero__fact { display: inline-flex; align-items: center; gap: 8px; }
.edt-guide-hero__fact svg { color: var(--edt-gold); }

.edt-byline { display: inline-flex; align-items: center; gap: 12px; color: var(--edt-ink); }
.edt-byline__avatar { border-radius: var(--sk-r-circle); border: 1px solid var(--edt-sand); }
.edt-byline strong { display: block; font-size: var(--sk-fs-body-sm); letter-spacing: .01em; }
.edt-byline small { display: block; color: var(--edt-muted); font-size: var(--sk-fs-caption); }

.edt-guide-hero__cover { margin: 36px 0 0; overflow: hidden; border-radius: var(--sk-r-xs); }
.edt-guide-hero__cover img { display: block; width: 100%; height: auto; }

.edt-guide-body { padding-top: var(--sk-sp-11); }

.edt-guide-layout { display: grid;
	grid-template-columns: 240px minmax(0, 1fr);
	gap: 64px;
	align-items: start;
}

/* TOC: sticky rail with scroll-spy active state (set by main.js). */

.edt-toc h2 { margin: 0 0 16px; color: var(--edt-ink); font-family: var(--edt-font-body); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }

.edt-toc ol { margin: 0; padding: 0; list-style: none; counter-reset: edt-toc; }

.edt-toc li { margin: 0; }

.edt-toc a {
	display: block;
	padding: 7px 0;
	color: var(--edt-muted);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
	line-height: 1.45;
	text-decoration: none;
	transition: color var(--sk-dur-1) var(--sk-ease-out), transform var(--sk-dur-2) var(--sk-ease-out);
}

.edt-toc a::before {
	counter-increment: edt-toc;
	content: counter(edt-toc, decimal-leading-zero) "  ";
	color: var(--edt-muted);
	font-size: var(--sk-fs-overline);
	font-variant-numeric: tabular-nums;
	letter-spacing: .14em;
}

.edt-toc li.edt-toc__sub a { padding-inline-start: 18px; }
.edt-toc li.edt-toc__sub a::before { content: "\0000b7  "; }

.edt-toc a:hover, .edt-toc a:focus-visible, .edt-toc a.is-active { color: var(--edt-ink); transform: translateX(6px); }
.edt-toc a.is-active::before { color: var(--edt-gold); }
.edt-toc a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 2px; }

/* Article column: the reading surface itself. Generous spacing,
   clear hierarchy -- the fix for "overwhelming walls of text". */

.edt-article-col { min-width: 0; }

.edt-article-body { max-width: min(var(--sk-container-prose), 100%); color: var(--edt-ink-soft); font-size: var(--sk-fs-body); line-height: 1.65; }

.edt-article-body > *:first-child { margin-top: 0; }

.edt-article-body h2 {
	max-width: 620px;
	margin: 52px 0 16px;
	color: var(--edt-ink);
	font-family: var(--edt-font-display);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
	letter-spacing: -.010em;
	line-height: 1.2;
}

.edt-article-body h3 {
	margin: 40px 0 12px;
	color: var(--edt-ink);
	font-family: var(--edt-font-body);
	font-size: var(--sk-fs-h4);
	font-weight: 700;
	letter-spacing: -.01em;
}

.edt-article-body p { margin: 0 0 22px; }

.edt-article-body ul, .edt-article-body ol { margin: 0 0 22px; padding-inline-start: 26px; }
.edt-article-body li { margin: 0 0 10px; }
.edt-article-body li::marker { color: var(--edt-gold); font-weight: 700; }

.edt-article-body a { color: var(--edt-ink); border-bottom: 1px solid var(--edt-gold); text-decoration: none; }
.edt-article-body a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 2px; }

.edt-article-body blockquote {
	margin: 34px 0;
	padding-block: 8px;
	padding-inline-start: 26px;
	border-inline-start: 2px solid var(--edt-gold);
	color: var(--edt-ink);
	font-family: var(--edt-font-display);
	font-size: var(--sk-fs-lede);
	font-style: italic;
	letter-spacing: -.01em;
	line-height: 1.5;
}

.edt-article-body img { border-radius: var(--sk-r-xs); }

.edt-article-body figcaption { margin-top: 10px; color: var(--edt-muted); font-size: var(--sk-fs-caption); font-style: italic; }

/* Child-article index: numbered reading list, not a card grid. */

.edt-child-index { max-width: min(var(--sk-container-prose), 100%); margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--edt-sand); }

.edt-child-index h2 { margin: 0 0 24px; color: var(--edt-ink); font-family: var(--edt-font-display); font-size: var(--sk-fs-h3); font-weight: 500; letter-spacing: -.010em; }

.edt-child-index ol { margin: 0; padding: 0; list-style: none; counter-reset: edt-child; }

.edt-child-index li { counter-increment: edt-child; margin: 0 0 8px; }

.edt-child-index a { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 4px 14px; align-items: baseline; padding-block: 14px; padding-inline: 4px 12px; border-bottom: 1px solid rgba(26, 24, 20, .1); text-decoration: none; transition: background var(--sk-dur-2) var(--sk-ease-out), transform var(--sk-dur-2) var(--sk-ease-out); }

.edt-child-index a::before { content: counter(edt-child, decimal-leading-zero); grid-row: 1 / span 2; color: var(--edt-gold); font-family: var(--sk-font-body); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; }

.edt-child-index a:hover, .edt-child-index a:focus-visible { background: var(--sk-surface-2); transform: translateX(8px); }
.edt-child-index a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: -2px; }
.edt-child-index a strong { color: var(--edt-ink); font-size: var(--sk-fs-body); letter-spacing: -.01em; }
.edt-child-index a span { grid-column: 2; color: var(--edt-muted); font-size: var(--sk-fs-body-sm); line-height: 1.55; }

/* Author box. */

.edt-author-box { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: start; }

.edt-author-box__avatar { border-radius: var(--sk-r-circle); border: 2px solid var(--edt-sand); }

.edt-author-box h2 { color: var(--edt-ink); font-family: var(--edt-font-display); font-weight: 500; letter-spacing: -.010em; }

.edt-author-box p { max-width: min(56ch, 560px); color: var(--edt-ink-soft); line-height: 1.75; }

@media (max-width: 900px) {
	.edt-author-box { grid-template-columns: 1fr; justify-items: start; gap: 18px; }
}

/* ---- Responsive: guide layout collapses under 900px; TOC becomes a
   horizontal scroll rail so mobile keeps in-page navigation. ---- */

@media (max-width: 900px) {
	.edt-guide-layout { grid-template-columns: 1fr; gap: 40px; }

	.edt-toc { overflow-x: auto; }

	.edt-toc ol { display: flex; gap: 24px; white-space: nowrap; }

	.edt-toc a { padding: 10px 0; }

	.edt-toc a::before { content: ""; }

	.edt-toc li.edt-toc__sub a { padding-inline-start: 0; }
	.edt-toc li.edt-toc__sub a::before { content: ""; }
}


/* ---------------------------------------------------------------------------

   23. v2.2.0 -- FLUID ISLAND OVERLAY + DOUBLE-BEZEL CARD ARCHITECTURE

   ------------------------------------------------------------------------- */

/* Island inline-nav overrides (wp_nav_menu flat rows were sized for the
   old 92px bar; the pill is 64px). */

.edt-header .edt-nav a { padding: 23px 0; }
.edt-header .edt-nav a::after { bottom: 14px; }

/* Inline links hide below 1020px -- the overlay takes over. Old mobile
   fixed-panel rules for .edt-nav are superseded here (later cascade). */

@media (max-width: 1120px) {
	.edt-header .edt-nav { display: none; }
	.edt-phone-link { display: none; }
	.edt-menu-toggle { display: inline-flex; }
}

@media (max-width: 900px) {
	.edt-header-inner { width: calc(100% - 24px); min-height: 58px; margin-top: 10px; padding-block: 5px; padding-inline: 16px 6px; }
	.edt-brand__mark { width: 32px; height: 32px; }
	.edt-brand__copy strong { font-size: 19px; }
}

/* Full-screen menu overlay: heavy glass, fixed layer (blur is allowed
   here -- it never scrolls), links stagger in on a mask reveal. */

.edt-menu-overlay { position: fixed; inset: 0; z-index: var(--sk-z-overlay); display: flex; flex-direction: column; color: var(--edt-cream); background: rgba(23, 21, 18, .66); backdrop-filter: blur(26px); -webkit-backdrop-filter: blur(26px); opacity: 0; visibility: hidden; transition: opacity .45s var(--edt-spring), visibility 0s linear .45s; }
.edt-menu-overlay.is-open { opacity: 1; visibility: visible; transition: opacity .45s var(--edt-spring), visibility 0s; }

.edt-menu-overlay__nav ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.edt-menu-overlay__nav a { display: inline-flex; align-items: baseline; gap: 16px; color: var(--edt-cream); font-family: var(--edt-font-display); font-weight: 400; letter-spacing: -.014em; line-height: 1.12; text-decoration: none; transition: color var(--sk-dur-2) var(--sk-ease-out), transform var(--sk-dur-3) var(--sk-ease-spring); }
.edt-menu-overlay__nav a::before { content: counter(edt-overlay, decimal-leading-zero); counter-increment: edt-overlay; color: var(--edt-gold); font-family: var(--sk-font-body); font-size: var(--sk-fs-overline); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .14em; }
.edt-menu-overlay__nav ul { counter-reset: edt-overlay; }
.edt-menu-overlay__nav a:hover, .edt-menu-overlay__nav a:focus-visible { color: var(--edt-gold-light); transform: translateX(12px); }
.edt-menu-overlay__nav a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 3px; }

/* Staggered mask reveal: each link rises out of an invisible box with
   a stepped delay; reversed on close by the base transition. */

.edt-menu-overlay__nav li { opacity: 0; transform: translateY(22px); transition: opacity .55s var(--edt-spring), transform .55s var(--edt-spring); }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li { opacity: 1; transform: translateY(0); }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(1) { transition-delay: .08s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(2) { transition-delay: .14s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(3) { transition-delay: .2s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(4) { transition-delay: .26s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(5) { transition-delay: .32s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(6) { transition-delay: .38s; }
.edt-menu-overlay.is-open .edt-menu-overlay__nav li:nth-child(n+7) { transition-delay: .44s; }

.edt-menu-overlay__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; padding-top: 26px; border-top: 1px solid var(--sk-line-on-dark); }
.edt-menu-overlay__foot > a:not(.edt-button) { display: inline-flex; align-items: center; gap: 10px; color: rgba(247, 245, 241, .72); font-size: var(--sk-fs-body-sm); font-weight: 700; text-decoration: none; }
.edt-menu-overlay__foot > a:not(.edt-button):hover, .edt-menu-overlay__foot > a:not(.edt-button):focus-visible { color: var(--edt-gold-light); }

/* Scroll lock while the overlay is open (class is toggled on <html>). */

html.sekhem-scroll-lock { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
	.edt-menu-overlay, .edt-menu-overlay__nav li, .edt-menu-toggle__lines i { transition: opacity .2s linear, visibility 0s; }
	.edt-header-inner { transition: none; }
}

/* ---- Double-Bezel (Doppelrand): machined shell + inner core. The
   element is the tray (tinted, hairline, big radius); ::before is the
   core surface inset by the tray padding; content rides above via
   position: relative. Concentric radii: shell --sk-r-xl / core --sk-r-lg. -- */

.edt-bezel { position: relative; border-radius: var(--sk-r-xl); background: rgba(26, 24, 20, .05); box-shadow: inset 0 0 0 1px rgba(26, 24, 20, .07), var(--sk-e-3); padding: 7px; }
.edt-bezel::before { position: absolute; inset: 7px; border-radius: var(--sk-r-lg); background: var(--edt-bezel-core, var(--sk-surface)); box-shadow: inset 0 1px 1px rgba(255, 255, 255, .7); content: ""; }
.edt-bezel > * { position: relative; z-index: 1; }

/* Field-notes card: sunken tray, white core, accent edge on the core. */

.edt-fieldnotes { margin-top: 34px; padding: 9px; border: 0; border-radius: var(--sk-r-xl); background: rgba(234, 229, 221, .4); box-shadow: inset 0 0 0 1px rgba(26, 24, 20, .07); }
.edt-fieldnotes::before { position: absolute; inset: 9px; border-radius: var(--sk-r-lg); background: var(--sk-surface); box-shadow: inset 0 1px 1px rgba(255, 255, 255, .8), inset 3px 0 0 var(--edt-gold); content: ""; }
.edt-fieldnotes h3 { margin: 0; padding-block: 18px 0; padding-inline: 24px 22px; }
.edt-fieldnotes p { margin: 0; padding-block: 0 18px; padding-inline: 24px 22px; }

/* Availability + review surfaces (dark sections): dark-glass tray,
   paper core. */

.edt-availability-card { position: relative; padding: 37px; border: 0; border-radius: var(--sk-r-xl); background: rgba(247, 245, 241, .07); box-shadow: inset 0 0 0 1px rgba(247, 245, 241, .12), var(--sk-e-3); }
.edt-availability-card::before { position: absolute; inset: 7px; border-radius: var(--sk-r-lg); background: var(--sk-surface); box-shadow: inset 0 1px 1px rgba(255, 255, 255, .75); content: ""; }
.edt-availability-card > * { position: relative; z-index: 1; }

/* Author box + TOC (light surfaces): sunken tray, white core. */

.edt-author-box { position: relative; padding: 41px; border: 0; border-radius: var(--sk-r-xl); background: rgba(234, 229, 221, .38); box-shadow: inset 0 0 0 1px rgba(26, 24, 20, .06); }
.edt-author-box::before { position: absolute; inset: 7px; border-radius: var(--sk-r-lg); background: var(--sk-surface); box-shadow: inset 0 1px 1px rgba(255, 255, 255, .8); content: ""; }
.edt-author-box > * { position: relative; z-index: 1; }

.edt-toc { position: sticky; top: var(--sk-sticky-top); margin: 14px; padding-block: 20px 12px; padding-inline: 24px 16px; border-inline-start: 0; border-radius: var(--sk-r-xl); background: rgba(26, 24, 20, .04); box-shadow: inset 0 0 0 1px rgba(26, 24, 20, .06); }
.edt-toc::before { position: absolute; inset: 7px; border-radius: var(--sk-r-lg); background: var(--sk-surface); box-shadow: inset 0 1px 1px rgba(255, 255, 255, .8); content: ""; }
.edt-toc > * { position: relative; z-index: 1; }

/* Mobile: bezels collapse to a lighter ring (thumb-real estate). */

@media (max-width: 900px) {
	.edt-availability-card { padding: 27px; }
	.edt-author-box { padding: 27px; }
	.edt-fieldnotes { padding: 8px; }
	.edt-fieldnotes h3 { padding-block: 14px 0; padding-inline: 18px 16px; }
	.edt-fieldnotes p { padding-block: 0 14px; padding-inline: 18px 16px; }
}

/* Detail heroes: clear the floating island (its bottom edge sits at
   ~78px; the hero's own top row now begins below it and, for the first
   time, is actually visible instead of hiding behind a header bar). */

.edt-detail-hero__top { padding-top: calc(var(--sk-header-h) + var(--sk-sp-6)); }
@media (max-width: 900px) {
	.edt-detail-hero__top { padding-top: calc(var(--sk-header-h) + var(--sk-sp-3)); }
}

/* TOC bezel collapses with the section 22 mobile rail (re-asserted here so the
   later section 23 base rules don't pin it sticky on phones). */

@media (max-width: 900px) {
	.edt-toc { position: static; margin: 0 0 4px; padding-block: 14px 6px; padding-inline: 20px 12px; }
}


/* ---------------------------------------------------------------------------

   24. v2.2.2 -- LIVE QA FIXES (guide layout, island clearance, overlay,
   lang switcher, toggle, inclusions list, fieldnotes, author, footer)

   ------------------------------------------------------------------------- */

/* Guide layout: when the TOC stays hidden (fewer than 3 headings), the
   article used to auto-place into the 240px TOC column -- the "squeezed
   into the left" bug. The article now always owns column 2, and the
   layout collapses to a single full-width column when the TOC is absent
   (:has() -- falls back to a harmless 240px gutter on old browsers). */

.edt-article-col { grid-column: 2; }

/* Mobile rail layout: single column again (section 22's 900px block now
   precedes this file section, so the reset must live here). */

@media (max-width: 900px) {
	.edt-article-col { grid-column: 1; }
}

@supports selector( :has( * ) ) {
	.edt-guide-layout:has( .edt-toc[hidden] ) { grid-template-columns: minmax(0, 1fr); }
	.edt-guide-layout:has( .edt-toc[hidden] ) .edt-article-col { grid-column: 1; }
}

/* Guide/blog hero clears the floating island (pill bottom edge ~78px). */

.edt-guide-hero { padding: calc(var(--sk-header-h) + var(--sk-sp-10)) 0 0; }

@media (max-width: 900px) {
	.edt-guide-hero { padding: calc(var(--sk-header-h) + var(--sk-sp-8)) 0 0; }
}

/* Detail hero top row: never carry a surface (defensive -- old cached
   rules painted it white and hid the photo). */

.edt-detail-hero__top { background: transparent; }

/* Menu overlay: scrolls when content exceeds the viewport (links and
   bottom CTA always reachable), centers when it fits. Fluid gaps. */

.edt-menu-overlay {
	justify-content: flex-start;
	gap: clamp( 24px, 5vh, 64px );
	padding: 108px 24px 40px;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.edt-menu-overlay__nav { margin: auto 0; }

.edt-menu-overlay__nav a { font-size: var(--sk-fs-h2); padding: 9px 0; }

.edt-menu-overlay__foot { margin-top: auto; padding-top: 22px; }

/* Language switcher panel: viewport-anchored on phones -- never clipped. */

@media (max-width: 900px) {
	.edt-lang__panel {
		position: fixed;
		top: 84px;
		inset-inline: 12px;
		width: auto;
		min-width: 0;
		max-width: none;
	}
}

/* Menu toggle: circular button, two clean flex lines, spring X morph
   (replaces the absolute-positioned lines). currentColor keeps the icon
   legible on both the dark-glass and cream-glass header states. */

.edt-menu-toggle {
	width: 44px;
	height: 44px;
	border: var(--sk-bw-2) solid currentColor;
	border-radius: var(--sk-r-circle);
	background: transparent;
}

.edt-menu-toggle__lines { position: static; display: flex; flex-direction: column; gap: 6px; width: auto; height: auto; }

.edt-menu-toggle__lines i {
	position: static;
	display: block;
	width: 20px;
	height: 2.5px;
	border-radius: var(--sk-r-xs);
	background: currentColor;
	transition: transform .45s var(--edt-spring);
}

.edt-menu-toggle.is-open .edt-menu-toggle__lines i:first-child { transform: translateY( 4.25px ) rotate( 45deg ); }
.edt-menu-toggle.is-open .edt-menu-toggle__lines i:last-child { transform: translateY( -4.25px ) rotate( -45deg ); }

@media (max-width: 900px) {
	.edt-menu-toggle { width: 56px; height: 56px; }
	.edt-menu-toggle__lines { gap: 7px; }
	.edt-menu-toggle__lines i { width: 24px; height: 3px; }
	.edt-menu-toggle.is-open .edt-menu-toggle__lines i:first-child { transform: translateY( 5px ) rotate( 45deg ); }
	.edt-menu-toggle.is-open .edt-menu-toggle__lines i:last-child { transform: translateY( -5px ) rotate( -45deg ); }
}

/* Tour inclusions: list-card (success ticks, dashed separators, compact
   ink rows) replaces the numbered card grid. */

.edt-inclusion-list { max-width: 800px; margin: 0 auto; padding: 30px 40px; border: var(--sk-bw-1) solid var(--sk-line); border-radius: var(--sk-r-lg); background: var(--sk-surface); box-shadow: var(--sk-e-1); }

.edt-inclusion-row { display: flex; align-items: center; gap: 15px; padding: 13px 0; border-bottom: 1px dashed var(--sk-line); }

.edt-inclusion-row:last-child { border-bottom: 0; }

.edt-inclusion-row svg { flex: 0 0 auto; color: var(--sk-success); }

.edt-inclusion-row h3 { margin: 0; font-family: var(--edt-font-body); font-size: var(--sk-fs-body); font-weight: 400; color: var(--sk-ink-2); letter-spacing: 0; }

@media (max-width: 640px) {
	.edt-inclusion-list { padding: 18px 18px 12px; }
	.edt-inclusion-row { padding: 11px 0; }
}

/* Fieldnotes: sidebar proportion + accent rule under the heading. */

.edt-fieldnotes { max-width: 360px; }

.edt-fieldnotes h3 { padding-bottom: 10px; border-bottom: 1px solid var(--edt-gold); }

.edt-fieldnotes p { padding-top: 12px; }

/* Author box: compact -- smaller avatar, tighter type, capped width. */

.edt-author-box { max-width: 680px; gap: 22px; padding: 26px; }

.edt-author-box__avatar { width: 64px; height: 64px; }

.edt-author-box h2 { margin: 4px 0 8px; font-size: var(--sk-fs-h3); }

.edt-author-box p { margin: 0 0 12px; font-size: var(--sk-fs-body-sm); }

/* Footer rhythm: wider grid gaps, contact column as a tidy stack. */

.edt-footer-grid { gap: var(--sk-gap-5); }

.edt-footer-contact { display: flex; flex-direction: column; gap: 14px; }

.edt-footer-contact :is(h2, h3) { margin-bottom: 2px; }

@media (max-width: 900px) {
	.edt-footer-grid { gap: var(--sk-gap-4); }
}


/* ---------------------------------------------------------------------------

   25. v2.2.3 -- MODERN BLOG/GUIDE CARDS + NAVY-BUTTON CONTRAST + PROD QA

   ------------------------------------------------------------------------- */

/* Modern blog/guide cards: fluid grid, image-top flex cards, real
   metadata (category/date/author), bottom-aligned Read More. */

.edt-inclusion-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sk-gap-3); }

.edt-inclusion-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
	transition: transform .3s var(--edt-spring), box-shadow .3s var(--edt-spring), border-color .3s var(--edt-spring);
}

.edt-inclusion-card:hover {
	transform: translateY(-2px);
	border-color: rgba(168, 68, 42, .5);
	box-shadow: var(--sk-e-2);
}

.edt-inclusion-card:focus-within { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 4px; }

.edt-card-media { display: block; overflow: hidden; background: var(--sk-sunken); }

.edt-card-media img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
	transition: transform .6s var(--edt-spring);
}

.edt-inclusion-card:hover .edt-card-media img { transform: scale(1.05); }

.edt-card-body { display: flex; flex-direction: column; flex-grow: 1; padding: var(--sk-sp-6); }

.edt-card-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; color: var(--sk-ink-3); font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }

.edt-card-body :is(h2, h3) { margin: 0 0 10px; font-family: var(--edt-font-body); font-size: var(--sk-fs-h4); font-weight: 700; letter-spacing: -.006em; line-height: 1.28; color: var(--sk-ink); }

.edt-card-body :is(h2, h3) a { color: inherit; text-decoration: none; }

.edt-card-body :is(h2, h3) a:hover { color: var(--sk-accent); }

.edt-card-body p { margin: 0 0 16px; color: var(--sk-ink-2); font-size: var(--sk-fs-body-sm); line-height: 1.6; }

.edt-card-body > small { margin-bottom: 14px; color: var(--edt-muted); font-size: var(--sk-fs-caption); }

.edt-card-footer { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-top: auto; padding-top: 14px; border-top: 1px solid var(--sk-line); }

.edt-card-author { color: var(--sk-ink-3); font-size: var(--sk-fs-caption); font-weight: 600; }

.edt-modern-btn {
	display: inline-block;
	padding: 10px 20px;
	border-radius: var(--sk-r-sm);
	background: var(--sk-accent);
	color: #fff;
	font-size: var(--sk-fs-button);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background .25s var(--edt-spring), transform .2s var(--edt-spring);
}

.edt-modern-btn:hover { background: var(--sk-accent-hover); transform: translateY(-1px); }

.edt-modern-btn:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 2px; }

@media (max-width: 1120px) {
	.edt-inclusion-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sk-gap-3); }
}

@media (max-width: 900px) {
	/* min(280px, 100%) keeps auto-fit working AND lets the track collapse
       below 280px -- a bare 280px floor had zero margin on a 320px phone. */
	.edt-inclusion-grid { grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); }
	.edt-card-media img { height: 190px; }
	.edt-card-body { padding: 18px; }
	.edt-modern-btn { padding: 9px 16px; }
}

@media (max-width: 640px) {
	.edt-inclusion-grid { grid-template-columns: 1fr; }
}


/* ---------------------------------------------------------------------------

   27. v2.2.5 -- STRATEGY section 1.3 CONVERSION SECTIONS (trust strip + 4-up)

   ------------------------------------------------------------------------- */

/* Trust strip: the TourRadar "trust sandwich" -- a hairline row directly
   under the hero, basalt surface, cream text, terracotta rating. */

.edt-trust-strip { padding: 18px 0; border-top: 1px solid var(--sk-line-on-dark); border-bottom: 1px solid var(--sk-line-on-dark); color: var(--edt-cream); background: var(--edt-ink-deep); }

.edt-trust-strip__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 14px 26px; font-size: var(--sk-fs-overline); font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }

.edt-trust-strip__inner span { display: inline-flex; align-items: center; gap: 7px; color: rgba(247, 245, 241, .8); }

.edt-trust-strip__inner strong { color: var(--edt-gold-light); font-family: var(--edt-font-display); font-size: var(--sk-fs-h4); font-weight: 400; font-variant-numeric: tabular-nums; letter-spacing: 0; }

.edt-trust-strip__inner svg { color: var(--edt-gold); }

.edt-trust-strip__inner i { display: none; width: 1px; height: 16px; background: rgba(247, 245, 241, .18); }

@media (min-width: 901px) {
	.edt-trust-strip__inner i { display: block; }
}

/* Book with confidence: the Cairo Top Tours 4-up -- hairline borders,
   no shadows, icon + title + one supporting line. */

.edt-confidence-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sk-gap-2); }

.edt-confidence-card { display: flex; flex-direction: column; gap: 14px; padding: 28px 24px; border: 1px solid var(--sk-line-on-dark); border-radius: var(--sk-r-xs); color: var(--edt-cream); background: transparent; transition: border-color .3s var(--edt-spring), transform .3s var(--edt-spring); }

.edt-confidence-card:hover { border-color: var(--edt-gold); transform: translateY(-4px); }

.edt-confidence-card > svg { color: var(--edt-gold); }

.edt-confidence-card h3 { margin: 0; color: var(--edt-cream); font-family: var(--edt-font-body); font-size: var(--sk-fs-h4); font-weight: 700; letter-spacing: .01em; }

.edt-confidence-card p { margin: 0; color: rgba(247, 245, 241, .6); font-size: var(--sk-fs-body-sm); line-height: 1.7; }

@media (max-width: 1120px) {
	.edt-confidence-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
	.edt-confidence-grid { grid-template-columns: 1fr; }
	.edt-confidence-card { padding: 22px 18px; }
}

/* v2.3.0 -- honeypot field: present in the DOM for bots, invisible and
   unfocusable for humans (no display:none -- some bots check for it). */
.edt-hp-field {
	position: absolute;
	left: -5000px;
	top: -5000px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}


/* ---------------------------------------------------------------------------

   28. v2.3.1 -- FOOTER ACCESSIBILITY & STYLING (light surface, per spec)

   The footer sits on the alternate limestone band with ink text. Bottom bar:
   caption size / weight 500 / secondary ink. All footer links: --sk-ink with
   a 1px underline (2px offset) -- an affordance that never relies on colour
   alone. Every internal element is re-tuned for the light surface.

   ------------------------------------------------------------------------- */

.edt-footer {
	background: var(--sk-page-alt);
	color: var(--sk-ink);
	border-top: var(--sk-bw-1) solid var(--sk-line);
}

.edt-footer-grid { border-bottom: var(--sk-bw-1) solid var(--sk-line); }

.edt-footer-tagline { color: var(--sk-ink); }

.edt-footer-social a {
	border-color: var(--sk-line-2);
	color: var(--sk-ink-2);
}

.edt-footer-social a:hover,
.edt-footer-social a:focus-visible {
	color: var(--sk-accent);
	border-color: var(--sk-accent);
}

/* Column headings: overline level, muted ink (spec 4.3). */
.edt-footer-grid :is(h2, h3) { color: var(--sk-ink-3); }

/* All footer links: ink + underline (non-colour affordance). */
.edt-footer-nav a,
.edt-footer-contact a {
	color: var(--sk-ink);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}

.edt-footer-nav a:hover,
.edt-footer-contact a:hover,
.edt-footer-nav a:focus-visible,
.edt-footer-contact a:focus-visible {
	color: var(--sk-accent);
	text-decoration-color: var(--sk-accent);
}

/* Payment chips: white on near-white needs a hairline. */
.edt-pay { box-shadow: inset 0 0 0 1px var(--sk-line); }

/* Bottom bar: caption / 500 / secondary ink. */
.edt-footer-bottom {
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-caption);
	font-weight: 500;
	letter-spacing: normal;
	text-transform: none;
}

.edt-footer-bottom a,
.edt-footer-credit a {
	color: var(--sk-ink);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}

.edt-footer-bottom a:hover,
.edt-footer-bottom a:focus-visible,
.edt-footer-credit a:hover,
.edt-footer-credit a:focus-visible {
	color: var(--sk-accent);
	text-decoration-color: var(--sk-accent);
}


/* ---------------------------------------------------------------------------

   30. DESIGN TOKENS v2 -- LIMESTONE & CLAY  (REDESIGN-SPEC sections 3-6, 10)

   The single source of truth for colour, type, space, radius, elevation,
   motion and z-index. Appended last on purpose: later sections win, so every
   legacy --edt-* name is redefined here as an alias of a --sk-*
   token and all existing var() call sites re-skin with no selector edits.

   Breakpoints are written out inside the queries because custom properties
   cannot be used in @media conditions. Canonical scale (spec 6.1):
   480 / 640 / 900 / 1120 / 1440 -- this file uses 480 / 640 / 900 / min-901 /
   1120 (480 enters in 34.6, the header pill at 320px).

   ------------------------------------------------------------------------- */

:root {
	/* ---- Surfaces, light (3.1.1) ------------------------------------- */
	--sk-page:            #F4F1EC; /* default page background (limestone)   */
	--sk-page-alt:        #EFEBE4; /* alternating band, one step down       */
	--sk-surface:         #FFFFFF; /* raised card / panel                   */
	--sk-surface-2:       #FAF8F4; /* inset panel, stripe, input fill       */
	--sk-sunken:          #EAE5DD; /* wells, tracks, image skeletons        */

	/* ---- Surfaces, dark bands (3.1.2) -------------------------------- */
	--sk-band:            #171512; /* basalt: CTA band, scrim               */
	--sk-band-2:          #221F1A; /* raised card on a dark band            */
	--sk-band-3:          #2E2A24; /* input / hairline surface on dark      */

	/* ---- Ink (3.1.3) ------------------------------------------------- */
	--sk-ink:             #1A1815;
	--sk-ink-2:           #4A443C;
	--sk-ink-3:           #6E665B;
	--sk-ink-on-dark:     #F7F5F1;
	--sk-ink-on-dark-2:   #C9C1B5;
	--sk-ink-on-dark-3:   #A8A096;

	/* ---- Accent: oxidised clay (3.1.4) ------------------------------- */
	--sk-accent:          #A8442A;
	--sk-accent-hover:    #8F3822;
	--sk-accent-active:   #7A3020;
	--sk-accent-on-dark:  #D9825E; /* accent TEXT on dark bands only        */
	--sk-accent-ink:      #8F3822; /* accent text on accent tints           */
	--sk-accent-tint:     #F7E9E3;
	--sk-accent-tint-2:   #EFD8CF;

	/* ---- Lines (3.1.5) ----------------------------------------------- */
	--sk-line:            #DCD6CC; /* decorative hairline                   */
	--sk-line-2:          #C7BFB2;
	--sk-line-strong:     #7F776B; /* form-control borders, >=3:1           */
	--sk-line-on-dark:    rgba(247, 245, 241, 0.16);
	--sk-line-on-dark-2:  rgba(247, 245, 241, 0.28);

	/* ---- Semantic (3.1.6) ------------------------------------------- */
	--sk-success:         #1F6F4A;
	--sk-success-tint:    #E7F1EB;
	--sk-success-on-dark: #7FC9A3;
	--sk-warning:         #8A5316;
	--sk-warning-tint:    #F6ECDD;
	--sk-danger:          #B21F24;
	--sk-danger-tint:     #FBE9E9;
	--sk-info:            #4A443C; /* info is neutral by design (no blue)   */
	--sk-info-tint:       #EFEBE4;

	/* ---- Utility (3.1.7) -------------------------------------------- */
	--sk-scrim:           rgba(23, 21, 18, 0.55);
	--sk-scrim-strong:    rgba(23, 21, 18, 0.82);
	--sk-shadow-rgb:      26, 24, 20;
	--sk-focus:           #A8442A;
	--sk-focus-on-dark:   #D9825E;
	--sk-whatsapp:        #25D366; /* third-party brand: icon fill only     */

	/* ---- Band-aware aliases. The legacy --edt-gold / --edt-muted names
       point at these, so the dark-band rule below flips every call site
       inside a dark band to a value that clears 3:1. ------------------- */
	--sk-accent-ctx:      var(--sk-accent);
	--sk-muted-ctx:       var(--sk-ink-3);
	--sk-focus-ring:      var(--sk-focus);

	/* ---- Type: families (4.1) --------------------------------------- */
	--sk-font-display: "Fraunces", Georgia, "Times New Roman", serif;
	--sk-font-body: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

	/* ---- Type: scale (4.2), anchored 360 -> 1440px ------------------ */
	--sk-fs-display:  clamp(2.5rem, 1.75rem + 3.3333vw, 4.75rem);       /* 40 -> 76 */
	--sk-fs-h1:       clamp(2.125rem, 1.5833rem + 2.4074vw, 3.75rem);   /* 34 -> 60 */
	--sk-fs-h2:       clamp(1.75rem, 1.4167rem + 1.4815vw, 2.75rem);    /* 28 -> 44 */
	--sk-fs-h3:       clamp(1.4375rem, 1.25rem + 0.8333vw, 2rem);       /* 23 -> 32 */
	--sk-fs-h4:       clamp(1.1875rem, 1.0833rem + 0.463vw, 1.5rem);    /* 19 -> 24 */
	--sk-fs-lede:     clamp(1.125rem, 1.0625rem + 0.2778vw, 1.3125rem); /* 18 -> 21 */
	--sk-fs-body:     clamp(1rem, 0.9792rem + 0.0926vw, 1.0625rem);     /* 16 -> 17 */
	--sk-fs-body-sm:  0.9375rem;                                        /* 15 */
	--sk-fs-meta:     0.875rem;                                         /* 14 */
	--sk-fs-caption:  0.8125rem;                                        /* 13 = floor */
	--sk-fs-overline: clamp(0.75rem, 0.7292rem + 0.0926vw, 0.8125rem);  /* 12 -> 13 */
	--sk-fs-price-lg: clamp(1.875rem, 1.5833rem + 1.2963vw, 2.75rem);   /* 30 -> 44 */
	--sk-fs-price-md: clamp(1.375rem, 1.2917rem + 0.3704vw, 1.625rem);  /* 22 -> 26 */
	--sk-fs-button:   0.9375rem;                                        /* 15, never scales */

	/* ---- Spacing, 4px base (5.1) ------------------------------------ */
	--sk-sp-1:  0.25rem;
	--sk-sp-2:  0.5rem;
	--sk-sp-3:  0.75rem;
	--sk-sp-4:  1rem;
	--sk-sp-5:  1.25rem;
	--sk-sp-6:  1.5rem;
	--sk-sp-7:  2rem;
	--sk-sp-8:  2.5rem;
	--sk-sp-9:  3rem;
	--sk-sp-10: 3.5rem;
	--sk-sp-11: 4rem;
	--sk-sp-12: 5rem;
	--sk-sp-13: 6rem;
	--sk-sp-14: 8rem;

	/* ---- Section rhythm (5.2) -- replaces the 132px literals -------- */
	--sk-section-y:    clamp(3.5rem, 2.6667rem + 3.7037vw, 6rem);  /* 56 -> 96  */
	--sk-section-y-lg: clamp(4.5rem, 3.5rem + 4.4444vw, 7.5rem);   /* 72 -> 120 */
	--sk-section-y-sm: clamp(2.5rem, 2rem + 2.2222vw, 4rem);       /* 40 -> 64  */

	/* ---- Containers (5.3) ------------------------------------------- */
	--sk-gutter:           clamp(1.25rem, 0.6667rem + 2.5926vw, 3rem); /* 20 -> 48 */
	--sk-container:        75rem;  /* 1200px default content width   */
	--sk-container-wide:   90rem;  /* 1440px full-bleed media        */
	--sk-container-narrow: 45rem;  /*  720px forms, legal, 404       */
	--sk-container-prose:  68ch;   /* long-form measure cap          */

	/* ---- Grid gaps (5.4) ------------------------------------------- */
	--sk-gap-1: 0.75rem;
	--sk-gap-2: 1rem;
	--sk-gap-3: 1.5rem;
	--sk-gap-4: 2rem;
	--sk-gap-5: 3rem;

	/* ---- Radius (5.5) ---------------------------------------------- */
	--sk-r-xs:     0.25rem;
	--sk-r-sm:     0.5rem;
	--sk-r-md:     0.75rem;
	--sk-r-lg:     1rem;
	--sk-r-xl:     1.5rem;
	--sk-r-pill:   999px;
	--sk-r-circle: 50%;

	/* ---- Elevation (5.6) -- five levels, nothing else -------------- */
	--sk-e-1: 0 1px 2px rgba(26, 24, 20, 0.04), 0 1px 3px rgba(26, 24, 20, 0.04);
	--sk-e-2: 0 2px 4px rgba(26, 24, 20, 0.04), 0 6px 14px rgba(26, 24, 20, 0.05);
	--sk-e-3: 0 8px 24px rgba(26, 24, 20, 0.08);
	--sk-e-4: 0 18px 48px rgba(26, 24, 20, 0.12);
	--sk-e-up: 0 -2px 16px rgba(26, 24, 20, 0.10);
	--sk-bw-1: 1px;
	--sk-bw-2: 2px;

	/* ---- Layout offsets + z-index (5.7) ---------------------------- */
	--sk-header-h:    4.5rem;  /* 72px Fluid Island pill reserve     */
	--sk-jumpnav-h:   3.25rem; /* 52px tour page in-page nav         */
	--sk-bottombar-h: 4rem;    /* 64px mobile sticky booking bar     */
	--sk-sticky-top:    calc(var(--sk-header-h) + var(--sk-jumpnav-h) + var(--sk-sp-4));
	--sk-anchor-offset: calc(var(--sk-header-h) + var(--sk-jumpnav-h) + var(--sk-sp-6));

	--sk-z-base:        1;
	--sk-z-sticky-rail: 10;
	--sk-z-jumpnav:     30;
	--sk-z-header:      40;
	--sk-z-bottombar:   45;
	--sk-z-floating:    50;
	--sk-z-overlay:     60;
	--sk-z-modal:       80;
	--sk-z-toast:       100;

	/* ---- Motion (10.1) -- custom curves only ----------------------- */
	--sk-ease-out:      cubic-bezier(0.23, 1, 0.32, 1);
	--sk-ease-in-out:   cubic-bezier(0.77, 0, 0.175, 1);
	--sk-ease-spring:   cubic-bezier(0.32, 0.72, 0, 1);
	--sk-ease-entrance: cubic-bezier(0.16, 1, 0.3, 1);
	--sk-ease-exit:     cubic-bezier(0.55, 0, 0.85, 0.35);
	--sk-dur-1: 120ms;
	--sk-dur-2: 200ms;
	--sk-dur-3: 320ms;
	--sk-dur-4: 520ms;
	--sk-dur-5: 720ms;
	--sk-stagger: 70ms;

	/* ---- Legacy colour aliases (3.3.1) ----------------------------- */
	--edt-ink: var(--sk-band-2);
	--edt-ink-deep: var(--sk-band);
	/* --edt-ink-soft is flagged ambiguous in 3.3.1 (secondary TEXT and a
       blue card SURFACE). Aliased to the text value -- the common and the
       riskier case -- and the one background call site
       (.edt-button--navy:hover) was rewritten to --sk-band-3 by hand. */
	--edt-ink-soft: var(--sk-ink-2);
	/* --edt-cream is ambiguous too (page band vs card surface). Aliased to
       the page value per 3.3.1; the card/panel/photo-frame call sites were
       rewritten to --sk-surface by hand. */
	--edt-cream: var(--sk-page);
	--edt-paper: var(--sk-page);
	--edt-sand: var(--sk-sunken);
	--edt-sand-deep: var(--sk-ink-3);
	--edt-gold: var(--sk-accent-ctx);
	--edt-gold-light: var(--sk-accent-on-dark);
	--edt-muted: var(--sk-muted-ctx);
	--edt-blue: var(--sk-band-3);
	--edt-footer: var(--sk-band);
	--edt-line: var(--sk-line);
	--edt-error: var(--sk-danger);

	/* ---- Legacy type + motion aliases (4.1, 10.1) ------------------ */
	--edt-font-display: var(--sk-font-display);
	--edt-font-body: var(--sk-font-body);
	--edt-font-accent: var(--sk-font-display); /* Caveat retired */
	--edt-ease-out: var(--sk-ease-out);
	--edt-ease-in-out: var(--sk-ease-in-out);
	--edt-spring: var(--sk-ease-spring);
}

/* Dark bands flip the band-aware aliases: clay text on basalt is only
   3.06:1 (spec 3.2.2), muted ink is 2.3:1, and the clay focus ring has no
   margin. Inheritance carries this to every descendant. */
.edt-hero,
.edt-detail-hero,
.edt-about-hero,
.edt-contact,
.edt-cta,
.edt-about-cta,
.edt-menu-overlay,
.edt-way-card--dark {
	--sk-accent-ctx: var(--sk-accent-on-dark);
	--sk-muted-ctx: var(--sk-ink-on-dark-3);
	--sk-focus-ring: var(--sk-focus-on-dark);
}

/* In-page anchors clear the fixed header + jump nav (5.7). */
[id] { scroll-margin-top: var(--sk-anchor-offset); }

/* Typographic rules 4.4.5 / 4.4.6 and the per-level optical size from 4.2,
   declared once here instead of on every heading rule. */
.edt-scope h1, .edt-scope h2, .edt-scope h3, .edt-scope h4 { hyphens: none; text-wrap: balance; }
.edt-scope p, .edt-article-body { text-wrap: pretty; }
.edt-scope h1 { font-variation-settings: "opsz" 96; }
.edt-scope h2 { font-variation-settings: "opsz" 72; }
.edt-scope h3 { font-variation-settings: "opsz" 48; }
.edt-scope h4 { font-variation-settings: "opsz" 24; }
.edt-scope .edt-hero__title, .edt-detail-hero__content h1, .edt-about-hero__content h1 { font-variation-settings: "opsz" 144; }

/* ---------------------------------------------------------------------------

   31. TOUR PAGE v2 -- REDESIGN-SPEC section 7 (blueprint), 9 (components),
   10.2 (interaction map).

   This layer REPLACES section 29 (the v2.4.0 marketplace override block),
   which has been deleted rather than stacked on. Everything is scoped to
   .single-sekhem_tour or to a tour-only class, so the shared components it
   leans on (.edt-detail-hero, .edt-price, .edt-fieldnotes, .edt-inclusion-*,
   .edt-availability-facts, .edt-premium-card) keep their current behaviour on
   the archive, city, guide and 404 templates.

   Breakpoints stay on the canonical scale: 640 / 900 / min-901 / 1120.

   ------------------------------------------------------------------------- */

/* ---- 31.1 Page shell. ---- */

.single-sekhem_tour .edt-scope {
	/* The sticky fix moved to .edt-scope itself (§2) so the guide TOC gets it
       too; only the page surface is tour-specific now. */
	background: var(--sk-page);
	color: var(--sk-ink);
}

.single-sekhem_tour .edt-scope .edt-button { min-height: 44px; }
.single-sekhem_tour .edt-scope .edt-button--large { min-height: 52px; }

/* ---- 31.2 Button variants (spec 9.1). Additive: nothing else uses these
   names yet, and .edt-button--gold keeps rendering as the clay primary. ---- */

.edt-button--md { min-height: 44px; padding: 0 var(--sk-sp-6); }
.edt-button--sm { min-height: 36px; padding: 0 var(--sk-sp-4); font-size: var(--sk-fs-caption); }

.edt-button--primary { color: #fff; background: var(--sk-accent); box-shadow: var(--sk-e-1); }
.edt-button--primary:hover { color: #fff; background: var(--sk-accent-hover); transform: translateY(-1px); }
.edt-button--primary:active { background: var(--sk-accent-active); transform: translateY(0); }

.edt-button--secondary { border-color: var(--sk-line-strong); color: var(--sk-ink); background: transparent; }
.edt-button--secondary:hover { border-color: var(--sk-ink-2); background: var(--sk-surface-2); }
.edt-button--secondary:active { background: var(--sk-sunken); }

.edt-button--tertiary {
	min-height: 44px;
	padding: 0;
	border: 0;
	color: var(--sk-accent);
	background: transparent;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color var(--sk-dur-1) var(--sk-ease-out), text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.edt-button--tertiary:hover { color: var(--sk-accent-hover); text-decoration-thickness: 2px; }
.edt-button--tertiary:active { color: var(--sk-accent-active); }

/* Disclosure summaries styled as buttons: drop the native marker, keep the
   native keyboard behaviour and the focus ring from §2. */
summary.edt-button { list-style: none; }
summary.edt-button::-webkit-details-marker { display: none; }

/* ---- 31.3 S1 compact hero. ---- */

.single-sekhem_tour .edt-detail-hero {
	display: flex;
	flex-direction: column;
	/* Spec 7.2 asks for height: clamp(380px, .., 640px). min-height is used
       instead so a long title + lede + chips + facts + price + CTA pair can
       never be clipped on a 360px phone; the cap still bounds the empty case
       and the hero is never full-viewport. */
	min-height: clamp(23.75rem, 18.3333rem + 24.0741vw, 40rem);
	height: auto;
	max-height: none;
	padding-bottom: var(--sk-sp-7);
}

.single-sekhem_tour .edt-detail-hero__veil {
	background: linear-gradient(to top, var(--sk-scrim-strong) 0%, var(--sk-scrim) 46%, rgba(23, 21, 18, .18) 100%);
}

.single-sekhem_tour .edt-detail-hero__content {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	justify-content: flex-end;
	gap: var(--sk-sp-3);
	height: auto;
	padding-top: var(--sk-sp-6);
}

.single-sekhem_tour .edt-detail-hero__content h1 { margin: 0; font-weight: 500; }
.single-sekhem_tour .edt-detail-hero__lede { max-width: min(56ch, 100%); margin: 0; }

/* Breadcrumb on the dark hero (spec 9.7): single line, never wraps. */
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb ol { flex-wrap: nowrap; }
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb {
	margin: 0;
	overflow-x: auto;
	scrollbar-width: none;
	white-space: nowrap;
}
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb::-webkit-scrollbar { display: none; }
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb a { color: var(--sk-ink-on-dark-3); }
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb a:hover { color: var(--sk-ink-on-dark); text-decoration: underline; }
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb span[aria-hidden] { color: var(--sk-ink-on-dark-3); }
.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb span:not([aria-hidden]) { color: var(--sk-ink-on-dark); }

/* Chip / badge (spec 9.4). */
.edt-chip {
	display: inline-flex;
	align-items: center;
	gap: var(--sk-sp-2);
	min-height: 32px;
	margin: 0;
	padding: 0 var(--sk-sp-4);
	border-radius: var(--sk-r-pill);
	font-size: var(--sk-fs-caption);
	font-weight: 600;
}
.edt-chip--on-image { color: var(--sk-ink-on-dark); background: rgba(23, 21, 18, .72); }
.edt-chip--on-image svg { color: var(--sk-accent-on-dark); }
.edt-chip--on-image span { color: var(--sk-ink-on-dark-2); font-weight: 400; }
.single-sekhem_tour .edt-tour-hero__chip { align-self: flex-start; }

/* Fact strip: chips, not an uppercase meta row. */
.single-sekhem_tour .edt-tour-hero__facts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sk-sp-2);
	padding-bottom: 0;
	font-size: var(--sk-fs-meta);
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
}
.single-sekhem_tour .edt-tour-hero__facts span {
	min-height: 32px;
	padding: 0 var(--sk-sp-4);
	border-radius: var(--sk-r-pill);
	color: var(--sk-ink-on-dark);
	background: rgba(23, 21, 18, .72);
}
.single-sekhem_tour .edt-tour-hero__facts svg { color: var(--sk-accent-on-dark); }

.single-sekhem_tour .edt-tour-hero__money {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--sk-sp-4);
	margin-top: var(--sk-sp-3);
}
.single-sekhem_tour .edt-tour-hero__price { display: flex; align-items: baseline; gap: var(--sk-sp-2); margin: 0; }
.single-sekhem_tour .edt-tour-hero__price span,
.single-sekhem_tour .edt-tour-hero__price small { color: var(--sk-ink-on-dark-2); font-size: var(--sk-fs-caption); }
.single-sekhem_tour .edt-tour-hero__price strong {
	color: var(--sk-ink-on-dark);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.015em;
}
.single-sekhem_tour .edt-tour-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-sp-5); }
.single-sekhem_tour .edt-tour-hero__link {
	color: var(--sk-ink-on-dark);
	font-size: var(--sk-fs-button);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.single-sekhem_tour .edt-tour-hero__link:hover { text-decoration-thickness: 2px; }

/* ---- 31.4 S2 sticky in-page nav. No backdrop-filter: it is sticky, not
   fixed (project rule + spec 7.2). ---- */

.edt-jumpnav-sentinel { height: 1px; margin-top: -1px; }

.edt-jumpnav {
	position: sticky;
	z-index: var(--sk-z-jumpnav);
	top: var(--sk-header-h);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
	background: var(--sk-page);
	transition: box-shadow var(--sk-dur-2) var(--sk-ease-out);
}
.edt-jumpnav.is-stuck { box-shadow: var(--sk-e-2); }
.edt-jumpnav__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sk-gap-2);
	min-height: var(--sk-jumpnav-h);
}
.edt-jumpnav__list {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-6);
	margin: 0;
	padding: 0;
	overflow-x: auto;
	list-style: none;
	scrollbar-width: none;
}
.edt-jumpnav__list::-webkit-scrollbar { display: none; }
.edt-jumpnav__list a {
	display: inline-flex;
	align-items: center;
	min-height: var(--sk-jumpnav-h);
	border-bottom: var(--sk-bw-2) solid transparent;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	white-space: nowrap;
	transition: color var(--sk-dur-1) var(--sk-ease-out), border-color var(--sk-dur-2) var(--sk-ease-out);
}
.edt-jumpnav__list a:hover { color: var(--sk-ink); }
.edt-jumpnav__list a.is-current { color: var(--sk-accent); border-bottom-color: var(--sk-accent); }
.edt-jumpnav__list a:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus); outline-offset: -2px; }
.edt-jumpnav__aside { display: flex; align-items: center; gap: var(--sk-sp-4); }
.edt-jumpnav__price {
	color: var(--sk-ink);
	font-size: var(--sk-fs-meta);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* ---- 31.5 S3 content + booking rail. Areas, not source order: the rail
   is column 2 on desktop and slots in directly after L1 Overview once the
   grid collapses (spec 7.3). ---- */

.edt-tour-body {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 24rem;
	grid-template-areas: "overview rail" "notes rail" "main rail";
	align-items: start;
	gap: var(--sk-section-y) var(--sk-gap-5);
	padding-block: var(--sk-section-y);
}
.edt-tour-overview { grid-area: overview; min-width: 0; }
.edt-tour-main { grid-area: main; min-width: 0; }
.edt-tour-main > * + * { margin-top: var(--sk-section-y); }

.edt-tour-rail {
	position: sticky;
	z-index: var(--sk-z-sticky-rail);
	top: var(--sk-sticky-top);
	grid-area: rail;
	display: grid;
	gap: var(--sk-sp-6);
	max-height: calc(100dvh - var(--sk-sticky-top) - var(--sk-sp-6));
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-xl);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-3);
}

/* Section headers inside the content column stack: the column is only
   ~768px wide at 1200, which is tablet-width (spec 9.8 allows the stack). */
.edt-tour-body .edt-section-head { display: block; margin-bottom: var(--sk-sp-7); }
.edt-tour-body .edt-section-head h2 {
	max-width: 30ch;
	color: var(--sk-ink);
	font-size: var(--sk-fs-h2);
	font-weight: 500;
	letter-spacing: -.014em;
	line-height: 1.12;
}
.edt-tour-body .edt-eyebrow { margin-bottom: var(--sk-sp-3); }
.edt-tour-body .edt-section-intro {
	max-width: 44ch;
	margin: var(--sk-sp-4) 0 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-lede);
	line-height: 1.55;
}

/* L1 kicker: horizontal marker, not the vertical rail from §4. */
.edt-tour-kicker {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-3);
	margin: 0 0 var(--sk-sp-3);
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.edt-tour-kicker .edt-kicker-number { margin: 0; color: var(--sk-accent); }

/* L1 prose. The <details> is the mobile "Read the full overview" control;
   main.js opens it above 640px, and the summary stays visible whenever the
   panel is closed so a JS failure can never hide the overview. */
.edt-tour-prose { margin: 0; }
.edt-tour-prose > summary { margin-bottom: var(--sk-sp-5); }
.edt-tour-prose[open] > summary { display: none; }
.edt-tour-prose__body {
	max-width: var(--sk-container-prose);
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body);
	line-height: 1.65;
}
.edt-tour-prose__body > * { margin: 0; }
.edt-tour-prose__body > * + * { margin-top: var(--sk-sp-5); }
/* ---- 31.6 L2 itinerary lead image + the shared accordion (spec 9.6, used
   by both the itinerary days and the FAQ). ---- */

.edt-tour-itin__lead {
	position: relative;
	margin: 0 0 var(--sk-sp-6);
	aspect-ratio: 16 / 9;
	border-radius: var(--sk-r-md);
	background-color: var(--sk-sunken);
	background-position: center;
	background-size: cover;
}
.edt-tour-itin__lead figcaption {
	position: absolute;
	bottom: var(--sk-sp-3);
	inset-inline-start: var(--sk-sp-3);
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 0 var(--sk-sp-3);
	border-radius: var(--sk-r-pill);
	color: var(--sk-ink-on-dark);
	background: rgba(23, 21, 18, .72);
	font-size: var(--sk-fs-caption);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.edt-acc-list { display: grid; gap: var(--sk-sp-2); }

.edt-acc {
	overflow: hidden;
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
}
.edt-acc__sum {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-3);
	min-height: 56px;
	padding: var(--sk-sp-4) var(--sk-sp-5);
	cursor: pointer;
	list-style: none;
	-webkit-user-select: none;
	user-select: none;
	transition: background var(--sk-dur-2) var(--sk-ease-out);
}
.edt-acc__sum::-webkit-details-marker { display: none; }
.edt-acc__sum:hover { background: var(--sk-surface-2); }
.edt-acc__sum:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus); outline-offset: -2px; }
.edt-acc__num {
	display: inline-grid;
	min-width: 28px;
	height: 28px;
	padding: 0 var(--sk-sp-2);
	place-items: center;
	border-radius: var(--sk-r-pill);
	color: var(--sk-accent-ink);
	background: var(--sk-accent-tint);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-caption);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.edt-acc__title {
	flex: 1 1 auto;
	margin: 0;
	color: var(--sk-ink);
	font-size: var(--sk-fs-h4);
	letter-spacing: -.006em;
	line-height: 1.28;
}
.edt-acc--day .edt-acc__title { font-family: var(--sk-font-display); font-weight: 600; }
.edt-acc--faq .edt-acc__title { font-family: var(--sk-font-body); font-weight: 600; }
.edt-acc__chev { flex: 0 0 auto; color: var(--sk-ink-3); transition: transform var(--sk-dur-2) var(--sk-ease-out); }
.edt-acc[open] > .edt-acc__sum { border-bottom: var(--sk-bw-1) solid var(--sk-line); background: var(--sk-surface-2); }
.edt-acc[open] .edt-acc__chev { transform: rotate(180deg); }
.edt-acc__body {
	max-width: var(--sk-container-prose);
	padding: var(--sk-sp-5);
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body);
	line-height: 1.65;
	animation: edt-acc-in var(--sk-dur-3) var(--sk-ease-out) both;
}
.edt-acc__body > * { margin: 0; }
.edt-acc__body > * + * { margin-top: var(--sk-sp-4); }

@keyframes edt-acc-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* ---- 31.7 L3 inclusions: two columns of ticks, exclusions as a note. ---- */

.single-sekhem_tour .edt-scope .edt-inclusion-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 var(--sk-gap-4);
	max-width: none;
	margin: 0;
	padding: var(--sk-sp-5) var(--sk-sp-6);
	border-color: var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.single-sekhem_tour .edt-scope .edt-inclusion-row { padding: var(--sk-sp-3) 0; border-bottom: var(--sk-bw-1) dashed var(--sk-line); }
.single-sekhem_tour .edt-scope .edt-inclusion-row:nth-last-child(-n+2) { border-bottom: 0; }
.single-sekhem_tour .edt-scope .edt-inclusion-row svg { color: var(--sk-success); }
.single-sekhem_tour .edt-scope .edt-inclusion-row h3 { font-size: var(--sk-fs-body-sm); color: var(--sk-ink-2); }

.edt-tour-note {
	max-width: none;
	margin: var(--sk-sp-6) 0 0;
	padding: var(--sk-sp-4) var(--sk-sp-5);
	border-inline-start: var(--sk-bw-2) solid var(--sk-line-2);
	border-start-start-radius: 0;
	border-start-end-radius: var(--sk-r-sm);
	border-end-end-radius: var(--sk-r-sm);
	border-end-start-radius: 0;
	color: var(--sk-ink-2);
	background: var(--sk-surface-2);
	font-size: var(--sk-fs-body-sm);
	line-height: 1.6;
}
.edt-tour-note strong { color: var(--sk-ink); }

/* ---- 31.8 L4 gallery mosaic (spec 9.9): 4-up, first item 2x2. ---- */

.edt-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sk-gap-1); }
.edt-gallery__item {
	position: relative;
	margin: 0;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: var(--sk-r-md);
	background: var(--sk-sunken);
}
.edt-gallery > .edt-gallery__item:first-child { grid-area: span 2 / span 2; aspect-ratio: 1 / 1; }
.edt-gallery__item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform var(--sk-dur-5) var(--sk-ease-out); }
.edt-gallery__item::before {
	position: absolute;
	z-index: 1;
	inset: 0;
	background: rgba(23, 21, 18, .12);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--sk-dur-2) var(--sk-ease-out);
	content: "";
}
.edt-gallery__item:hover img { transform: scale(1.04); }
.edt-gallery__item:hover::before { opacity: 1; }

.edt-tour-more { margin-top: var(--sk-sp-5); }
.edt-tour-more > summary { margin-bottom: var(--sk-sp-5); }
.edt-gallery--rest > .edt-gallery__item:first-child { grid-area: auto; aspect-ratio: 4 / 3; }

@media (hover: none) {
	.edt-gallery__item:hover img { transform: none; }
	.edt-gallery__item:hover::before { opacity: 0; }
}

/* ---- 31.9 Booking rail internals R1-R5. ---- */

.edt-tour-rail__head { display: grid; gap: var(--sk-sp-2); }
.edt-tour-rail__head .edt-eyebrow { margin: 0; }
.edt-tour-rail h2 {
	color: var(--sk-ink);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
	letter-spacing: -.010em;
	line-height: 1.2;
}
.edt-tour-rail h2 br { display: none; }
.edt-tour-rail__lede { margin: 0; color: var(--sk-ink-3); font-size: var(--sk-fs-body-sm); line-height: 1.5; }

.edt-price--rail {
	display: grid;
	gap: var(--sk-sp-1);
	padding: var(--sk-sp-5);
	border: 0;
	border-radius: var(--sk-r-md);
	background: var(--sk-surface-2);
}
.edt-price--rail span,
.edt-price--rail small { color: var(--sk-ink-3); font-size: var(--sk-fs-caption); font-weight: 400; letter-spacing: 0; text-transform: none; }
.edt-price--rail strong { color: var(--sk-ink); font-size: var(--sk-fs-price-lg); }

.edt-tour-rail__widget { display: grid; gap: var(--sk-sp-5); }
.edt-tour-rail__widget-head {
	display: flex;
	align-items: start;
	justify-content: space-between;
	gap: var(--sk-sp-3);
	padding-bottom: var(--sk-sp-4);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
}
.edt-tour-rail__widget-head h3 { color: var(--sk-ink); font-size: var(--sk-fs-h4); font-weight: 500; letter-spacing: -.006em; }
.edt-tour-rail__widget-head h3 em { color: var(--sk-accent); font-family: var(--sk-font-display); font-style: italic; }
.edt-tour-rail__widget-head > svg { flex: 0 0 auto; color: var(--sk-accent); }

.edt-tour-rail .edt-availability-facts { margin: 0; color: var(--sk-ink-2); font-size: var(--sk-fs-meta); }

.edt-fieldnotes--rail,
.edt-fieldnotes--column {
	margin: 0;
	padding: var(--sk-sp-5);
	border-radius: var(--sk-r-md);
}
.edt-fieldnotes--rail { max-width: none; background: var(--sk-surface-2); box-shadow: none; }
/* R4 travel notes, rehomed from the rail (below the booking widget's scroll
   fold) into the content column under L1; keeps the base 360px measure. */
.edt-fieldnotes--column {
	grid-area: notes;
	border: var(--sk-bw-1) solid var(--sk-line);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-fieldnotes--rail::before,
.edt-fieldnotes--column::before { display: none; }
.edt-fieldnotes--rail h3,
.edt-fieldnotes--column h3 {
	margin: 0 0 var(--sk-sp-3);
	padding: 0 0 var(--sk-sp-3);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
	color: var(--sk-ink);
}
.edt-fieldnotes--rail h3 svg,
.edt-fieldnotes--column h3 svg { color: var(--sk-accent); }
.edt-fieldnotes--rail p,
.edt-fieldnotes--column p { margin: 0; padding: 0; color: var(--sk-ink-2); font-size: var(--sk-fs-body-sm); line-height: 1.6; }
.edt-fieldnotes--rail p + p,
.edt-fieldnotes--column p + p { margin-top: var(--sk-sp-3); }

.edt-tour-rail__human {
	display: inline-flex;
	align-self: start;
	align-items: center;
	gap: var(--sk-sp-2);
	color: var(--sk-accent);
	font-size: var(--sk-fs-button);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color var(--sk-dur-1) var(--sk-ease-out), text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.edt-tour-rail__human:hover { color: var(--sk-accent-hover); text-decoration-thickness: 2px; }
.edt-tour-rail__human > svg { transition: transform var(--sk-dur-2) var(--sk-ease-spring); }
.edt-tour-rail__human:hover > svg { transform: translateX(3px); }
/* ---- 31.10 S4 closing CTA band. The trust copy that used to sit beside
   the reviews is rehomed here as a hairline-separated coda (spec 7.5). ---- */

.edt-tour-cta .edt-cta__inner { position: relative; z-index: 1; }
.edt-cta__trust {
	position: relative;
	z-index: 1;
	max-width: 44rem;
	margin-top: var(--sk-sp-9);
	padding-top: var(--sk-sp-8);
	border-top: var(--sk-bw-1) solid var(--sk-line-on-dark);
	text-align: center;
}
.edt-cta__trust .edt-eyebrow { color: var(--sk-ink-on-dark-3); }
.edt-cta__trust h3 {
	margin: 0 0 var(--sk-sp-4);
	color: var(--sk-ink-on-dark);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
	letter-spacing: -.010em;
	line-height: 1.2;
}
.edt-cta__trust h3 em { color: var(--sk-accent-on-dark); font-family: var(--sk-font-display); font-style: italic; }
.edt-cta__trust p {
	max-width: 56ch;
	margin: 0 auto var(--sk-sp-6);
	color: var(--sk-ink-on-dark-2);
	font-size: var(--sk-fs-body);
	line-height: 1.7;
}
.edt-cta__trust .edt-text-link { justify-content: center; }

/* ---- 31.11 S5 related journeys: light band. The card overrides that used to
   live here were deleted -- section 33.7 is now the one card definition. ---- */

.edt-tour-related { background: var(--sk-page-alt); }
.edt-tour-related .edt-section-head { margin-bottom: var(--sk-sp-8); }

/* ---- 31.12 M mobile sticky booking bar (spec 9.10). Rendered in the
   template at every width and switched on by the 900px query below, so the
   z-index handshake with the floating contact stack stays declarative. ---- */

.edt-tour-bar { display: none; }
.edt-tour-bar__price { display: flex; align-items: baseline; gap: var(--sk-sp-2); margin: 0; }
.edt-tour-bar__price span,
.edt-tour-bar__price small { color: var(--sk-ink-3); font-size: var(--sk-fs-caption); }
.edt-tour-bar__price strong {
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.edt-tour-bar__cta { min-width: 120px; }
/* prefers-reduced-motion (spec 10.3): main.js adds .is-instant, which swaps
   the slide for a visibility flip instead of just killing the duration. */
.edt-tour-bar.is-instant { transform: none; visibility: hidden; transition: none; }
.edt-tour-bar.is-instant.is-visible { visibility: visible; }

/* ---- 31.13 Responsive. ---- */

@media (max-width: 1120px) {
	.edt-tour-body { grid-template-columns: minmax(0, 1fr) 20rem; gap: var(--sk-section-y) var(--sk-gap-4); }
}

@media (max-width: 900px) {
	.single-sekhem_tour .edt-detail-hero {
		min-height: 26rem;
		max-height: none;
		padding-bottom: var(--sk-sp-6);
	}
	.edt-jumpnav,
	.edt-jumpnav-sentinel { display: none; }
	.edt-tour-body {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas: "overview" "notes" "rail" "main";
	}
	.edt-tour-rail {
		position: static;
		max-height: none;
		overflow: visible;
	}
	.edt-tour-rail h2 br { display: inline; }
	.edt-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.edt-tour-bar {
		position: fixed;
		z-index: var(--sk-z-bottombar);
		bottom: 0;
		inset-inline: 0;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--sk-sp-4);
		min-height: var(--sk-bottombar-h);
		padding: var(--sk-sp-3) var(--sk-gutter);
		padding-bottom: max(var(--sk-sp-3), env(safe-area-inset-bottom));
		border-top: var(--sk-bw-1) solid var(--sk-line);
		background: var(--sk-surface);
		box-shadow: var(--sk-e-up);
		transform: translateY(100%);
		/* visibility rides along so the off-screen CTA is not a tab stop; it is
		   discrete, so it flips at the right end of each direction. */
		visibility: hidden;
		transition: transform var(--sk-dur-3) var(--sk-ease-spring), visibility var(--sk-dur-3) var(--sk-ease-spring);
	}
	.edt-tour-bar.is-visible { transform: translateY(0); visibility: visible; }
	/* The bar must never cover the last section (spec 7.4.12). */
	.single-sekhem_tour .edt-scope { padding-bottom: calc(var(--sk-bottombar-h) + max(var(--sk-sp-3), env(safe-area-inset-bottom))); }
}

@media (max-width: 640px) {
	.single-sekhem_tour .edt-detail-hero { min-height: 24rem; }
	.single-sekhem_tour .edt-detail-hero__lede {
		display: -webkit-box;
		overflow: hidden;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 3;
		line-clamp: 3;
	}
	.single-sekhem_tour .edt-detail-hero .sekhem-breadcrumb {
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
		mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
	}
	.single-sekhem_tour .edt-tour-hero__facts {
		flex-wrap: nowrap;
		overflow-x: auto;
		scroll-snap-type: x proximity;
		scrollbar-width: none;
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
		mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
	}
	.single-sekhem_tour .edt-tour-hero__facts::-webkit-scrollbar { display: none; }
	.single-sekhem_tour .edt-tour-hero__facts span { flex: 0 0 auto; min-height: 44px; scroll-snap-align: start; }
	.single-sekhem_tour .edt-tour-hero__money { align-items: flex-start; flex-direction: column; }
	.single-sekhem_tour .edt-tour-hero__actions { width: 100%; }
	.single-sekhem_tour .edt-tour-hero__actions .edt-button { flex: 1 1 auto; }
	/* Price + primary CTA above the fold: the chip row moves below them. */
	.single-sekhem_tour .edt-tour-hero__facts { order: 1; }
	.edt-tour-prose[open] > summary { display: inline-flex; }
	.edt-acc__sum { min-height: 48px; padding: var(--sk-sp-3) var(--sk-sp-4); }
	.edt-acc__body { padding: var(--sk-sp-4); }
	.single-sekhem_tour .edt-scope .edt-inclusion-list { grid-template-columns: minmax(0, 1fr); }
	.single-sekhem_tour .edt-scope .edt-inclusion-row:nth-last-child(-n+2) { border-bottom: var(--sk-bw-1) dashed var(--sk-line); }
	.single-sekhem_tour .edt-scope .edt-inclusion-row:last-child { border-bottom: 0; }
	.edt-gallery {
		grid-auto-columns: 86%;
		grid-auto-flow: column;
		grid-template-columns: none;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
	}
	.edt-gallery > .edt-gallery__item:first-child { grid-area: auto; aspect-ratio: 4 / 3; }
	.edt-gallery__item { scroll-snap-align: center; }
	/* n / N counter on the strip; --edt-gal-total is set inline on the lead
       grid (quoted, so it is a valid <string> inside content). */
	.edt-gallery:not(.edt-gallery--rest) { counter-reset: edt-gal; }
	.edt-gallery:not(.edt-gallery--rest) .edt-gallery__item { counter-increment: edt-gal; }
	.edt-gallery:not(.edt-gallery--rest) .edt-gallery__item::after {
		position: absolute;
		z-index: 2;
		inset-inline-end: var(--sk-sp-3);
		bottom: var(--sk-sp-3);
		padding: 2px var(--sk-sp-2);
		border-radius: var(--sk-r-pill);
		color: var(--sk-ink-on-dark);
		background: rgba(23, 21, 18, .72);
		font-size: var(--sk-fs-caption);
		font-variant-numeric: tabular-nums;
		content: counter(edt-gal) " / " var(--edt-gal-total, "");
	}
	.edt-tour-related .edt-tour-list {
		grid-auto-columns: 86%;
		grid-auto-flow: column;
		grid-template-columns: none;
		overflow-x: auto;
		scroll-snap-type: x proximity;
	}
	.edt-tour-related .edt-tour-list > * { scroll-snap-align: center; }
}

@media (prefers-reduced-motion: reduce) {
	.edt-acc__body { animation: none; }
	.edt-tour-bar { transition: none; }
	.edt-gallery__item:hover img { transform: none; }
}
/* ---------------------------------------------------------------------------

   32. REVIEWS v2 -- REDESIGN-SPEC section 8.

   Replaced the .edt-trust-grid / .edt-review-surface treatment on tour pages;
   since v2.5.0 the guide template renders this component too, so those classes
   and §21's dark-surface .edt-review* rules are deleted. Every rule here is
   scoped under .edt-reviews.

   Budget (8.1): empty state ~134px desktop / ~167px at <=640px; populated
   ~316px without the rating distribution, ~428px with it.

   ------------------------------------------------------------------------- */

/* ---- 32.1 Compact section header + summary row. ---- */

.edt-reviews__head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--sk-gap-4);
	margin-bottom: var(--sk-sp-5);
}
.edt-reviews__head .edt-eyebrow { margin-bottom: var(--sk-sp-3); }
.edt-reviews__head h2 {
	max-width: 24ch;
	color: var(--sk-ink);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
	letter-spacing: -.010em;
	line-height: 1.2;
}
.edt-reviews__summary { display: grid; gap: var(--sk-sp-1); justify-items: end; }
.edt-reviews__score {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-2);
	margin: 0;
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	line-height: 1.1;
}
.edt-reviews__score > span { display: inline-flex; gap: 2px; font-size: 16px; }
.edt-reviews__score i { color: var(--sk-line-2); font-style: normal; }
.edt-reviews__score i.is-on { color: var(--sk-accent); }
.edt-reviews__count { margin: 0; color: var(--sk-ink-3); font-size: var(--sk-fs-meta); }

/* ---- 32.2 Rating distribution -- rendered only above 5 reviews (8.2.2). ---- */

.edt-reviews__dist {
	display: grid;
	gap: var(--sk-sp-1);
	max-height: 120px;
	margin: 0 0 var(--sk-sp-4);
	padding: 0;
	list-style: none;
}
.edt-reviews__dist li {
	display: grid;
	grid-template-columns: 1.5rem minmax(0, 1fr) 2rem;
	align-items: center;
	gap: var(--sk-sp-2);
	height: 16px;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-caption);
	font-variant-numeric: tabular-nums;
}
.edt-reviews__dist li > span:last-child { text-align: end; }
.edt-bar { height: 6px; border-radius: var(--sk-r-pill); background: var(--sk-sunken); }
.edt-bar > i { display: block; width: var(--pct, 0%); height: 100%; border-radius: var(--sk-r-pill); background: var(--sk-accent); }

/* ---- 32.3 Review cards. ---- */

.edt-reviews__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--sk-gap-2);
	margin: 0;
	padding: 0;
	list-style: none;
}
.edt-reviews .edt-review {
	display: grid;
	align-content: start;
	gap: var(--sk-sp-3);
	min-height: 168px;
	margin: 0;
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-reviews .edt-review__stars { display: flex; gap: 2px; margin: 0; font-size: 14px; letter-spacing: 0; }
.edt-reviews .edt-review__stars span { color: var(--sk-line-2); }
.edt-reviews .edt-review__stars span.is-on { color: var(--sk-accent); }
.edt-reviews .edt-review__body {
	display: -webkit-box;
	overflow: hidden;
	margin: 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body-sm);
	line-height: 1.55;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	line-clamp: 4;
}
.edt-reviews .edt-review__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sk-sp-2);
	margin: 0;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-caption);
	line-height: 1.4;
}
.edt-reviews .edt-review__meta strong { color: var(--sk-ink); font-family: var(--sk-font-body); font-size: var(--sk-fs-caption); font-weight: 600; }
.edt-reviews .edt-review__meta strong::after {
	display: inline-block;
	width: 4px;
	height: 4px;
	margin-inline-start: var(--sk-sp-2);
	border-radius: var(--sk-r-circle);
	background: var(--sk-line-2);
	vertical-align: middle;
	content: "";
}
.edt-reviews .edt-review time { color: var(--sk-ink-3); font-size: var(--sk-fs-caption); font-weight: 400; letter-spacing: 0; text-transform: none; }

/* ---- 32.4 Overflow + write row (8.2.4). ---- */

.edt-reviews__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-sp-4); min-height: 44px; margin-top: var(--sk-sp-6); }
.edt-reviews__all,
.edt-reviews__form { min-width: 0; }
.edt-reviews__all > summary,
.edt-reviews__form > summary { list-style: none; }
.edt-reviews__all > summary::-webkit-details-marker,
.edt-reviews__form > summary::-webkit-details-marker { display: none; }
.edt-reviews__list--full { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--sk-sp-5); }
/* Expanded, the disclosure takes its own full row so the panel is never
   squeezed into the flex track its summary sits in. */
.edt-reviews__foot > details[open],
.edt-reviews__blank > details[open] { flex: 1 0 100%; }

/* ---- 32.5 Empty state (8.3). No star glyphs, no illustration, no band. ---- */

.edt-reviews__blank {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--sk-gap-4);
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface-2);
}
.edt-reviews__blank > div { min-width: 0; }
.edt-reviews__blank .edt-eyebrow { margin-bottom: var(--sk-sp-2); }
.edt-reviews__blank-title {
	margin: 0;
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-h4);
	font-weight: 700;
	letter-spacing: -.006em;
	line-height: 1.28;
}
.edt-reviews__blank-body {
	max-width: 62ch;
	margin: var(--sk-sp-2) 0 0;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-body-sm);
	line-height: 1.5;
}

/* ---- 32.6 The comment form, on a light surface (spec 8.4 + 9.5). ---- */

.edt-reviews__form-body { max-width: 40rem; margin-top: var(--sk-sp-5); }
.edt-reviews__form-body .comment-reply-title {
	margin: 0 0 var(--sk-sp-5);
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h4);
	font-weight: 500;
	letter-spacing: -.006em;
}
.edt-reviews__form-body p { margin: 0 0 var(--sk-sp-5); }
.edt-reviews__form-body label { display: block; margin-bottom: var(--sk-sp-2); color: var(--sk-ink); font-size: var(--sk-fs-meta); font-weight: 600; }
.edt-reviews__form-body input:not([type="submit"]):not([type="checkbox"]),
.edt-reviews__form-body textarea,
.edt-reviews__form-body select {
	width: 100%;
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-size: var(--sk-fs-body);
}
.edt-reviews__form-body textarea { min-height: 96px; padding: 12px 14px; line-height: 1.6; }
.edt-reviews__form-body select {
	padding-inline-end: 40px;
	-webkit-appearance: none;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236E665B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
}
.edt-reviews__form-body input:not([type="submit"]):not([type="checkbox"]):hover,
.edt-reviews__form-body textarea:hover,
.edt-reviews__form-body select:hover { border-color: var(--sk-ink-3); }
/* outline:none is only permitted because the 3px ring below IS the visible
   focus indicator (spec 9.5). */
.edt-reviews__form-body input:not([type="submit"]):not([type="checkbox"]):focus,
.edt-reviews__form-body textarea:focus,
.edt-reviews__form-body select:focus {
	outline: none;
	border-color: var(--sk-accent);
	box-shadow: 0 0 0 3px rgba(168, 68, 42, .18);
}
.edt-reviews__form-body .edt-review-rate { margin: 0 0 var(--sk-sp-5); color: var(--sk-ink); font-size: var(--sk-fs-meta); }
.edt-reviews__form-body .comment-form-cookies-consent { display: flex; align-items: center; gap: var(--sk-sp-3); }
.edt-reviews__form-body .comment-form-cookies-consent label { margin: 0; font-weight: 400; }
.edt-reviews__form-body .comment-form-cookies-consent input[type="checkbox"] {
	width: 20px;
	min-height: 20px;
	height: 20px;
	margin: 0;
	accent-color: var(--sk-accent);
}
.edt-reviews__form-body .form-submit { margin: 0; }
.edt-reviews__form-body .comment-notes,
.edt-reviews__form-body .comment-form-url { display: none; }

/* ---- 32.7 Responsive. ---- */

@media (max-width: 900px) {
	.edt-reviews__list,
	.edt-reviews__list--full { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
	.edt-reviews__head { grid-template-columns: minmax(0, 1fr); }
	.edt-reviews__summary { justify-items: start; }
	.edt-reviews__list {
		grid-auto-columns: 86%;
		grid-auto-flow: column;
		grid-template-columns: none;
		overflow-x: auto;
		scroll-snap-type: x proximity;
	}
	.edt-reviews__list .edt-review { scroll-snap-align: center; }
	.edt-reviews__list--full { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: minmax(0, 1fr); overflow: visible; }
	.edt-reviews__foot { align-items: stretch; flex-direction: column; }
	.edt-reviews__blank { align-items: flex-start; flex-direction: column; gap: var(--sk-sp-3); padding: var(--sk-sp-4); }
}

/* ---------------------------------------------------------------------------

   33. LISTING PAGES v2 -- archive + city taxonomy + tour card
   (REDESIGN-SPEC 3.5.3 band rotation, 5.2 rhythm, 5.4 grids, 6.1 breakpoints,
   9.2 card, 9.5 form field, 9.7 breadcrumb, 9.8 section header, 9.9 gallery,
   10.2 interaction map.)

   Rolls the tour page system out to /tours/ and /destinations/<city>/. Both
   templates carry `.edt-scope.edt-listing`, which is the only hook these rules
   need, so nothing here reaches the home page, the guides or the tour page.

   This layer REPLACES section 26 (v2.2.4 PREMIUM TOUR CARDS) and the card half
   of 31.11, both DELETED rather than stacked on. 33.7 is now the single
   definition of .edt-tour-list / .edt-premium-card for every surface that
   renders one: home Journeys, /tours/, city pages, tour-page related journeys
   and the plugin's Elementor Tour Grid editorial skin.

   Also deleted as provably unreachable (grep: CSS only, no theme or plugin
   template emits them): .edt-calendar-* and .edt-availability-result*, plus
   section 18's .edt-tour-card padding/title duplicates. Section 18's
   .edt-hero-filter is NOT dead -- front-page.php:78 still renders it.

   Breakpoints stay on the canonical scale: 640 / 900 / 1120.

   ------------------------------------------------------------------------- */

/* ---- 33.1 Page shell + band rotation. Only --sk-page and --sk-page-alt are
   used here; the city page's closing .edt-cta is its one dark band and the
   archive has none (spec 3.5.3). ---- */

.edt-listing { color: var(--sk-ink); background: var(--sk-page); }

/* The archive has no hero, so its header reserves the Fluid Island itself. */
.edt-listing-head { padding-block: calc(var(--sk-header-h) + var(--sk-section-y-sm)) var(--sk-section-y-sm); }

.edt-listing-results,
.edt-listing-gallery,
.edt-listing-map { background: var(--sk-page-alt); }
.edt-listing-story { background: var(--sk-page); }
/* Gallery + map read as one band when both render (and the map keeps its own
   top padding when the gallery is absent). */
.edt-listing-gallery + .edt-listing-map { padding-top: 0; }

/* ---- 33.2 Section header (spec 9.8). ---- */

.edt-listing .edt-section-head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--sk-gap-5);
	margin-bottom: var(--sk-sp-7);
}
.edt-listing .edt-eyebrow { margin: 0 0 var(--sk-sp-3); }
.edt-listing .edt-section-head h1,
.edt-listing .edt-section-head h2 { margin: 0; color: var(--sk-ink); font-weight: 500; }
.edt-listing-title {
	max-width: min(24ch, 100%);
	font-size: var(--sk-fs-h1);
	letter-spacing: -.018em;
	line-height: 1.06;
}
.edt-listing .edt-section-intro {
	max-width: 44ch;
	margin: 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-lede);
	line-height: 1.55;
}

/* ---- 33.3 Breadcrumb (spec 9.7): one line, scrolls, never wraps. ---- */

.edt-listing .sekhem-breadcrumb ol { flex-wrap: nowrap; }
.edt-listing .sekhem-breadcrumb {
	margin: 0 0 var(--sk-sp-5);
	overflow-x: auto;
	scrollbar-width: none;
	white-space: nowrap;
}
.edt-listing .sekhem-breadcrumb::-webkit-scrollbar { display: none; }
.edt-listing .sekhem-breadcrumb a { color: var(--sk-ink-3); }
.edt-listing .sekhem-breadcrumb a:hover { color: var(--sk-ink); text-decoration: underline; }
.edt-listing .sekhem-breadcrumb span[aria-hidden] { color: var(--sk-ink-3); }
.edt-listing .sekhem-breadcrumb span:not([aria-hidden]) { color: var(--sk-ink); }
/* City page: the crumb now sits in the dark hero, same as the tour page. */
.edt-listing .edt-detail-hero .sekhem-breadcrumb a,
.edt-listing .edt-detail-hero .sekhem-breadcrumb span[aria-hidden] { color: var(--sk-ink-on-dark-3); }
.edt-listing .edt-detail-hero .sekhem-breadcrumb a:hover,
.edt-listing .edt-detail-hero .sekhem-breadcrumb span:not([aria-hidden]) { color: var(--sk-ink-on-dark); }

/* ---- 33.4 Filter set (spec 9.5). Replaces the archive's six inline
   underline controls: those were a 1px rgba(16,46,61,.22) bottom border on a
   cream card, which measures ~1.4:1 and is not a valid control border
   (SC 1.4.11). Every control is now 48px tall with a --sk-line-strong box. ---- */

.edt-filters {
	margin: 0;
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-filters__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: end;
	gap: var(--sk-sp-5) var(--sk-gap-2);
}
.edt-filters__field--wide { grid-column: span 2; }
.edt-filters .edt-button { width: 100%; min-height: 48px; }

.edt-field { display: grid; gap: var(--sk-sp-2); min-width: 0; }
.edt-field__label {
	color: var(--sk-ink);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
}
.edt-field :is(input, select) {
	width: 100%;
	min-width: 0;
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-family: inherit;
	font-size: var(--sk-fs-body);
	transition: border-color var(--sk-dur-1) var(--sk-ease-out), box-shadow var(--sk-dur-1) var(--sk-ease-out);
}
/* iOS Safari ignores border-radius on a search input until appearance is
   reset. */
.edt-field input[type="search"] { -webkit-appearance: none; appearance: none; }
.edt-field input::placeholder { color: var(--sk-ink-3); opacity: 1; }
.edt-field :is(input, select):hover { border-color: var(--sk-ink-3); }
/* Spec 9.5 focus = accent border + 3px ring. The global .edt-scope
   :focus-visible outline is deliberately NOT suppressed: the ring is a
   box-shadow and forced-colours modes drop it, so the outline stays as the
   guaranteed indicator. */
.edt-field :is(input, select):focus { border-color: var(--sk-accent); }
.edt-field :is(input, select):focus-visible { box-shadow: 0 0 0 3px rgba(168, 68, 42, .18); }
.edt-field select {
	-webkit-appearance: none;
	appearance: none;
	padding-inline-end: 40px;
	/* 16px chevron, 14px from the right edge. The stroke is --sk-ink-3
       (#6E665B) as a literal because a data URI cannot read a custom
       property -- it is the token's value, not a new colour. */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236E665B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
}
/* The predictive-search wrapper stays the positioning context for
   .edt-suggest__panel (main.js appends it there). */
.edt-field .edt-suggest { display: block; min-width: 0; }

/* ---- 33.5 Results band + empty state. ---- */

.edt-listing-results .edt-tour-list { margin-bottom: var(--sk-sp-9); }
.edt-listing-results .edt-tour-list:last-child { margin-bottom: 0; }

.edt-listing-empty {
	max-width: 40rem;
	margin-inline: auto;
	padding: var(--sk-sp-10) var(--sk-sp-7);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
	text-align: center;
}
.edt-listing-empty .edt-eyebrow { margin-bottom: var(--sk-sp-3); }
.edt-listing-empty h2 {
	margin: 0 0 var(--sk-sp-3);
	color: var(--sk-ink);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
	letter-spacing: -.010em;
	line-height: 1.2;
}
.edt-listing-empty p:not(.edt-eyebrow) {
	max-width: 44ch;
	margin: 0 auto var(--sk-sp-6);
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body-sm);
	line-height: 1.7;
}

/* ---- 33.6 Pagination. paginate_links() emits .page-numbers, .current
   (with aria-current="page"), .dots, .prev and .next; every item is a 44px
   target (SC 2.5.5) and the current page is marked by fill AND by the
   attribute, never by colour alone. ---- */

.edt-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--sk-sp-2);
}
.edt-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 var(--sk-sp-3);
	/* --sk-line-strong, not --sk-line-2: a pagination item is a control, so
       its box has to clear 3:1 (spec 3.2.4) -- and it then matches the filter
       fields, which is the point of the system. */
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink-2);
	background: var(--sk-surface);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	transition: color var(--sk-dur-1) var(--sk-ease-out), border-color var(--sk-dur-1) var(--sk-ease-out), background var(--sk-dur-1) var(--sk-ease-out);
}
.edt-pagination a.page-numbers:hover { color: var(--sk-ink); border-color: var(--sk-ink-2); }
.edt-pagination .page-numbers.current { color: #fff; border-color: var(--sk-accent); background: var(--sk-accent); }
.edt-pagination .page-numbers.dots { color: var(--sk-ink-3); border-color: transparent; background: transparent; }
.edt-pagination .page-numbers.prev,
.edt-pagination .page-numbers.next { padding: 0 var(--sk-sp-4); }

/* ---- 33.7 Tour card (spec 9.2) -- the ONE definition, shared by the theme's
   template-parts/tours/edt-card.php and the plugin's Elementor Tour Grid
   editorial skin. Class names are the existing contract (front-page.php and
   the widget both emit them), so spec 9.2 is applied to those names rather
   than renaming markup across five call sites.

   .edt-scope prefixes the base rule on purpose: `.edt-scope a { color:
   inherit }` (section 2) is 0-1-1 and would otherwise beat a bare
   .edt-premium-card colour, leaving the card's text inherited from whatever
   band it sits on -- cream on white inside the home page's dark Journeys
   band. ---- */

.edt-tour-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--sk-gap-3);
}

.edt-scope .edt-premium-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	color: var(--sk-ink);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
	text-decoration: none;
	transition: transform var(--sk-dur-2) var(--sk-ease-out), border-color var(--sk-dur-2) var(--sk-ease-out), box-shadow var(--sk-dur-2) var(--sk-ease-out);
}
.edt-scope .edt-premium-card:hover { border-color: var(--sk-accent); box-shadow: var(--sk-e-2); transform: translateY(-2px); }
.edt-scope .edt-premium-card:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus); outline-offset: 3px; }

.edt-premium-card__image-wrap {
	display: block;
	overflow: hidden;
	aspect-ratio: 16 / 10;
	background: var(--sk-sunken);
}
.edt-premium-card__image-wrap img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--sk-dur-4) var(--sk-ease-out);
}
.edt-premium-card:hover .edt-premium-card__image-wrap img { transform: scale(1.03); }

.edt-premium-card__body {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
	gap: var(--sk-sp-2);
	min-height: 168px;
	padding: var(--sk-sp-5);
}
.edt-premium-card__meta {
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.edt-premium-card__title {
	display: -webkit-box;
	max-width: min(24ch, 100%);
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h4);
	font-weight: 600;
	font-variation-settings: "opsz" 24;
	letter-spacing: -.006em;
	line-height: 1.28;
}
/* Spec 9.2's <hr> between body and foot, as a border -- no markup change in
   either card copy. */
.edt-premium-card__footer {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--sk-gap-1);
	margin-top: auto;
	padding-top: var(--sk-sp-4);
	border-top: var(--sk-bw-1) solid var(--sk-line);
}
.edt-premium-card__price { display: grid; gap: var(--sk-sp-1); }
.edt-premium-card__price small { color: var(--sk-ink-3); font-size: var(--sk-fs-meta); font-weight: 500; }
.edt-premium-card__price strong {
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.015em;
	line-height: 1.1;
}
/* Spec 9.2 asks for a tertiary CTA here, not a filled pill (the pill read as
   a button nested inside the card's own link). */
.edt-premium-card__btn {
	color: var(--sk-accent);
	font-size: var(--sk-fs-button);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	white-space: nowrap;
	transition: color var(--sk-dur-1) var(--sk-ease-out), text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.edt-premium-card:hover .edt-premium-card__btn { color: var(--sk-accent-hover); text-decoration-thickness: 2px; }

@media (hover: none) {
	.edt-scope .edt-premium-card:hover { box-shadow: var(--sk-e-1); transform: none; }
	.edt-premium-card:hover .edt-premium-card__image-wrap img { transform: none; }
}

/* ---- 33.8 City page: story grid, fact panel, map. The gallery deliberately
   has no rules here -- the template now emits the tour page's .edt-gallery /
   .edt-gallery__item mosaic (31.8, spec 9.9) instead of a second copy of the
   section 17 masonry. ---- */

.edt-listing-story .edt-detail-intro__grid {
	grid-template-columns: minmax(0, 1fr) 20rem;
	gap: var(--sk-gap-5);
}
.edt-listing-story .edt-tour-kicker { margin-bottom: var(--sk-sp-4); }
.edt-listing-story .edt-body-large { color: var(--sk-ink-2); }
.edt-listing-aside { display: grid; align-content: start; gap: var(--sk-sp-6); }
/* The field-notes card carries a 34px top margin from section 23 for its
   in-flow use on guides; inside a gap-driven grid that reads as a double gap. */
.edt-listing-aside .edt-fieldnotes { margin-top: 0; }

/* "Best time to visit": the .edt-price component at panel scale. A month
   range is prose, not a figure, so the value sits at h4 rather than
   --sk-fs-price-lg. */
.edt-price--fact {
	display: grid;
	gap: var(--sk-sp-1);
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-md);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-price--fact span,
.edt-price--fact small {
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-caption);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
}
.edt-price--fact strong {
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h4);
	font-weight: 600;
	letter-spacing: -.006em;
	line-height: 1.28;
}

.edt-listing-map__frame {
	overflow: hidden;
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-sunken);
	box-shadow: var(--sk-e-1);
}
.edt-listing-map__embed { display: block; width: 100%; border: 0; }

/* ---- 33.9 Responsive. ---- */

@media (max-width: 1120px) {
	.edt-listing-story .edt-detail-intro__grid { grid-template-columns: minmax(0, 1fr) 17rem; gap: var(--sk-gap-4); }
}

@media (max-width: 900px) {
	.edt-listing .edt-section-head { grid-template-columns: minmax(0, 1fr); row-gap: var(--sk-sp-4); }
	.edt-listing .edt-section-intro { max-width: min(56ch, 100%); }
	.edt-filters__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.edt-tour-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sk-gap-2); }
	.edt-listing-story .edt-detail-intro__grid { grid-template-columns: minmax(0, 1fr); gap: var(--sk-sp-8); }
}

@media (max-width: 640px) {
	.edt-listing-head { padding-block: calc(var(--sk-header-h) + var(--sk-sp-7)) var(--sk-section-y-sm); }
	.edt-listing .sekhem-breadcrumb {
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
		mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
	}
	.edt-filters { padding: var(--sk-sp-5); }
	.edt-filters__grid { grid-template-columns: minmax(0, 1fr); }
	.edt-filters__field--wide { grid-column: auto; }
	.edt-tour-list { grid-template-columns: minmax(0, 1fr); }
	.edt-premium-card__body { padding: var(--sk-sp-4); }
	.edt-listing-empty { padding: var(--sk-sp-8) var(--sk-sp-5); }
	.edt-pagination .page-numbers.prev,
	.edt-pagination .page-numbers.next { flex: 1 1 100%; }
}

@media (prefers-reduced-motion: reduce) {
	.edt-scope .edt-premium-card:hover { transform: none; }
	.edt-premium-card:hover .edt-premium-card__image-wrap img { transform: none; }
}


/* ---------------------------------------------------------------------------

   34. RESPONSIVE + A11Y HARDENING -- 320px overflow, focus-ring contrast,
   touch targets, reduced motion, and the reviews height budget.

   Additive only. Every rule here either sets a custom property on a
   DESCENDANT (which always beats an inherited value, whatever the
   specificity), raises specificity over an earlier rule, or declares a
   property nothing else in the file declares. The geometry fixes that the
   mobile blocks in §13 / §31 / §32 / §33 would have overridden were made in
   place in those sections instead -- appending them here would have beaten
   the very mobile resets they depend on.

   Deleted in this pass as provably unreachable (grep for 'edt-tour-card'
   across theme AND plugin, every file type: the only hits were edt.css
   itself): all .edt-tour-card* rules from §8, §13, §22 and two entries in
   §30's dark-band list. Also deleted: .edt-brand__copy small,
   .edt-detail-brand small and .edt-about-brand small -- 5-6px type, below the
   13px floor in spec 4.2, and no template renders a <small> in any of those
   three lockups.

   ------------------------------------------------------------------------- */

/* ---- 34.1 Long words and URLs (spec 4.4). `anywhere`, not `break-word`:
   only `anywhere` feeds its break opportunities into min-content intrinsic
   sizing, which is what stops one long word from widening an fr track or a
   flex item past the viewport. Rendered output is identical to break-word. -- */

.edt-scope,
.edt-header,
.edt-menu-overlay { overflow-wrap: anywhere; }

/* ---- 34.2 Focus-ring contrast (SC 1.4.11, 3:1 minimum).

   §30 already flips --sk-focus-ring to --sk-focus-on-dark (#D9825E) inside
   every dark band. Two holes were left:

   (a) Light cards NESTED in a dark band inherited the on-dark ring, and
       #D9825E on #FFFFFF measures 2.71:1 -- a fail. Reset to the accent ring
       (#A8442A on #FFFFFF = 5.96:1, on #F7E9E3 = 5.03:1).
   (b) .edt-menu-overlay is translucent, rgba(23,21,18,.66); over a limestone
       page the effective backdrop is ~#626262, where #D9825E is 2.11:1.
       --sk-ink-on-dark (#F7F5F1) is 5.10:1 there and 16.74:1 on basalt. ---- */

.edt-way-card:not(.edt-way-card--dark),
.edt-principle-card,
.edt-availability-card { --sk-focus-ring: var(--sk-focus); }

.edt-menu-overlay { --sk-focus-ring: var(--sk-ink-on-dark); }

/* Rings that land on hero photography: the veil is only 18% opaque at the top
   of the box, so the pixel behind the ring is unknowable. A basalt halo
   (--sk-scrim-strong, 7px spread so it reads on both sides of the 3px-offset
   2px ring) guarantees the ring sits on at least the scrim's solid equivalent
   #3E3A34, where #D9825E is 4.16:1 and #F7F5F1 is 11.29:1. */
.edt-hero :focus-visible,
.edt-detail-hero :focus-visible,
.edt-about-hero :focus-visible { box-shadow: 0 0 0 7px var(--sk-scrim-strong); }

/* ---- 34.3 Touch targets (SC 2.5.5, 44x44). The visual circles keep their
   design size; an inset ::after extends the hit area at zero layout cost. -- */

.edt-way-card > a::after { position: absolute; inset: -3px; content: ""; }   /* 38 + 6 = 44 */
.edt-compass::after { position: absolute; inset: -7px; content: ""; }        /* 31 + 14 = 45 */

@media (max-width: 900px) {
	.edt-coverflow-arrow { width: 44px; height: 44px; }
}

/* ---- 34.5 Reviews height budget (spec 8.1: populated <= 420px desktop).

   The 96px distribution block sat between the header and the card row, which
   put the populated state at 64 + 20 + 96 + 16 + 168 + 24 + 44 = 456px. It
   moves into the header row's right-hand column, which is otherwise only as
   tall as the 52px summary, so row 1 becomes max(64, 96) = 96px:

     96 (head + dist) + 20 + 168 (cards) + 24 + 44 (foot) = 352px.

   With <= 5 reviews the distribution is not rendered at all and nothing
   changes (320px). .edt-reviews is the grid itself: single-sekhem_tour.php:502
   renders head / dist / list / foot as its direct children with no inner
   container. ---- */

.edt-reviews:has(> .edt-reviews__dist) {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	column-gap: var(--sk-gap-4);
}
.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__head { grid-column: 1; margin-bottom: 0; }
.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__dist { grid-column: 2; margin: 0; }
.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__list { grid-column: 1 / -1; margin-top: var(--sk-sp-5); }
.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__foot { grid-column: 1 / -1; }

/* A long localised price and a nowrap CTA label could not both fit the 248px
   card interior at 320px. The row wraps; the CTA keeps nowrap because a
   two-word label broken mid-word reads worse than a second line. */
.edt-premium-card__footer { flex-wrap: wrap; }

@media (max-width: 640px) {
	/* Mobile budget is 560px (8.1). Stacked, the header's own 32px row gap put
       the total at 564px; 16px brings it to 548px. */
	.edt-reviews__head { row-gap: var(--sk-sp-4); }
	.edt-reviews:has(> .edt-reviews__dist) { grid-template-columns: minmax(0, 1fr); }
	.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__head { margin-bottom: var(--sk-sp-4); }
	.edt-reviews:has(> .edt-reviews__dist) > .edt-reviews__dist { grid-column: 1; margin-bottom: var(--sk-sp-4); }
}

/* ---- 34.6 Header pill at 320px -- the one overflow source the audit list did
   not name. The four controls cannot share the pill's 274px interior on a
   320px phone: brand 120 (logo cap) + lang 45 + CTA 134 + toggle 56 + 30 of
   gaps = 385px, and .edt-brand was flex: 0 0 auto, so a long site name could
   not give way either. Fixed by degrees. ---- */

@media (max-width: 640px) {
	/* The CTA's trailing arrow is decoration, so it goes first (-42px), and the
       brand may now shrink and truncate instead of pushing controls off-screen.
       At 320px that still leaves brand 153 + 10 + lang 45 + 10 + CTA 92 + 10 +
       toggle 56 = 376px, hence the 480px block below. */
	.edt-header__cta > svg { display: none; }
	.edt-header__cta { padding: 0 12px; }
	.edt-brand { flex: 0 1 auto; min-width: 0; }
	.edt-brand__copy { min-width: 0; }
	.edt-brand__copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

@media (max-width: 480px) {
	/* Below 480 the header CTA is hidden, and nothing is lost: the overlay menu
       foot renders the identical Book-now button (header.php:155) and the toggle
       that opens it is the very next control.
         320px: brand 153 + 10 + lang 45 + 10 + toggle 56 = 274px = the interior.
       This is the only new @media value in the pass; 480px is --sk-bp-xs on the
       spec's own scale (6.1), so the file still carries no off-scale width. */
	.edt-header__cta { display: none; }
}

/* ---- 34.7 Reduced motion (spec 10.3).

   §14's blanket is scoped to `.edt-scope *`, but the header pill, the nav
   dropdown, the language switcher and the fullscreen overlay all render
   OUTSIDE .edt-scope (header.php:74-168) -- their transitions leaked. The
   first block closes that.

   The second block removes the decorative hover/press TRANSFORMS that a
   0.01ms duration only makes instant rather than absent. State transforms are
   deliberately left alone because they carry meaning: the hamburger X morph,
   the FAQ plus/minus, .edt-acc__chev, the language chevron, the sticky booking
   bar's own translate, and the writing-mode rails.

   Known leak that CSS cannot reach: .edt-coverflow__slide's rotateY is
   assigned by the inline scroll script in page-cities.php, so only its
   transition is killable from here (§17 already does that). ---- */

@media (prefers-reduced-motion: reduce) {
	.edt-header, .edt-header *, .edt-header *::before, .edt-header *::after,
	.edt-menu-overlay, .edt-menu-overlay *, .edt-menu-overlay *::before, .edt-menu-overlay *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
	}

	.edt-button:hover, .edt-button:active, .edt-button:hover > svg,
	.edt-button--gold:hover, .edt-button--navy:hover, .edt-button--primary:hover,
	.edt-modern-btn:hover, .edt-menu-toggle:active,
	.edt-nav .sub-menu,
	.edt-menu-overlay__nav a:hover, .edt-menu-overlay__nav a:focus-visible,
	.edt-footer-social a:hover, .edt-footer-social a:focus-visible,
	.edt-filter-pill:hover, .edt-filter-pill--active,
	.edt-toc a:hover, .edt-toc a:focus-visible, .edt-toc a.is-active,
	.edt-child-index a:hover, .edt-child-index a:focus-visible,
	.edt-way-card:hover, .edt-way-card > a:hover,
	.edt-principle-card:hover, .edt-inclusion-card:hover, .edt-confidence-card:hover,
	.edt-destination-card:hover img,
	.edt-destination-card:hover .edt-destination-card__copy i,
	.edt-inclusion-card:hover .edt-card-media img,
	.edt-text-link:hover > svg, .edt-back:hover > svg, .edt-tour-rail__human:hover > svg,
	.edt-play-link:hover .edt-play-link__icon, .edt-compass:hover,
	.edt-coverflow-arrow:hover {
		transform: none;
	}
}

/* ---- 34.8 Overlay close control (SC 2.1.2, 2.4.3, 2.5.5, 1.4.11).

   The fullscreen menu had no pointer close path. .edt-header is
   --sk-z-header (40) under this --sk-z-overlay (60) scrim with no
   pointer-events exception, and main.js now also marks it `inert` while the
   overlay is open, so the hamburger X morph read as a live control through
   the glass but could not be clicked or tapped -- Escape or a menu link were
   the only ways out.

   Raising the pill over the scrim instead would leave four more controls
   (brand, language switcher, Book-now CTA, phone) reachable outside a box
   that asserts aria-modal="true", and would paint the opaque cream --solid
   pill on top of the dark overlay. So the dialog carries its own close
   button (ARIA APG dialog pattern) and remains the single interactive
   surface while modal; main.js closes it through the click delegate that
   already handled menu links.

   Ring colour is --sk-focus-ring, which 34.2 above pins to --sk-ink-on-dark
   inside .edt-menu-overlay. 34.2 records 5.10:1 on the scrim's effective
   backdrop; measured in-browser over the composite rgb(98,96,92) it is
   5.76:1, against 2.18:1 for --sk-focus-on-dark. The X glyph inherits the
   overlay's own #F4F1EC -- 5.57:1 there, 3.76:1 at the hover opacity -- so
   the control identifies itself without a border. Nothing transitions, so 10.3 has
   nothing to answer.

   position: fixed, not absolute: the overlay scrolls once the links outgrow
   the viewport (block above), and an absolute child would scroll away with
   them. The overlay's backdrop-filter makes it the containing block either
   way, so both keywords resolve to the same origin. top: 52px clears the
   46px mobile WP admin bar (z-index 99999, painted ABOVE the overlay) and
   the overlay's 108px top padding keeps the button off the first link. ---- */

.edt-menu-overlay__close {
	position: fixed;
	top: 52px;
	inset-inline-end: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: var(--sk-r-circle);
	color: inherit;
	background: transparent;
	cursor: pointer;
}

.edt-menu-overlay__close:hover { opacity: .72; }

.edt-menu-overlay__close:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus-ring); outline-offset: 3px; }
/* ---------------------------------------------------------------------------

   35. SITE PAGES v2 -- home, about, cities, contact, guides, utility
   (REDESIGN-SPEC 3.5 rules of use, 4.3 element map, 5.2 rhythm, 5.3
   containers, 6.1 breakpoints, 9.1 / 9.4 / 9.5 / 9.8 components, 10.2 motion.)

   Numbered 35, not 34: section 34 (RESPONSIVE + A11Y HARDENING) already exists
   in this file and 34.x is referenced from three template comments.

   The last rollout layer. Two things happen here.

   (a) BAND ROTATION comes inside spec 3.5.3, which allows exactly ONE dark
       band per page -- the closing CTA -- and forbids two --sk-page-alt
       sections touching. The home page carried five dark bands (trust strip,
       Journeys, Ways, Planning, Contact) on top of the hero; About two; the
       travel guide three; the guide article two; 404, both archives and
       /contact/ one each in a header band. Every band except the closing CTA
       is now --sk-page or --sk-page-alt.

       This is also the .edt-journeys decision. The shared tour card (33.7) is
       light: white surface, --sk-line hairline, warm-black --sk-e-1
       elevation. On basalt the shadow is invisible, the hairline is the wrong
       polarity and the "one card for every surface" rule has to be paid for
       with a second on-dark override set for the section head, the sort rail,
       the sunline and the "See all journeys" link. White cards on basalt is a
       legitimate pattern, but not while the same page also breaks the
       one-dark-band rule and the card supplies its own elevation. The band
       moved instead: one background declaration in place of a dozen
       overrides, and the accent budget drops because --sk-accent-ctx stops
       resolving to the on-dark terracotta inside it.

       As a side effect this fixes three real contrast failures. .edt-principles
       and .edt-ways were in 30's dark-band list, so the WHITE cards nested
       inside them inherited --sk-accent-on-dark (#D9825E) for their serial
       numbers and arrows: 2.71:1 on #FFFFFF. They now resolve to --sk-accent
       (5.96:1). Same story for .edt-way-card > span.

   (b) EVERY INLINE STYLE ATTRIBUTE left in the 19 templates in scope is now a
       class here. What stays inline is per-item data only: background-image
       URLs, --delay stagger values computed from a loop index, and the counted
       --edt-gal-total the mobile gallery counter reads through content:.

   Utility pages (blog + guide archive, search, 404, legal, generic page,
   travel guide, cities, contact) now carry .edt-scope.edt-listing and reuse
   section 33's shell -- .edt-listing-head, .edt-section-head,
   .edt-listing-title, .edt-listing-empty, .edt-pagination -- instead of
   re-implementing a header band each out of the dark .edt-cta. The guide
   article reuses 31.6's .edt-acc accordion, 31.8's .edt-gallery mosaic and
   section 32's reviews component.

   Deleted in this pass, each proven unreachable by grep across theme AND
   plugin, every file type (evidence in the release notes):

     .edt-about-brand*              no emitter anywhere
     .edt-rating-input* / .edt-rating-star* / .edt-rating-thanks
		                           no emitter anywhere
     .edt-masonry*                  only emitter was the guide gallery
     .edt-faq-list / .edt-faq-item* only emitter was the guide FAQ
     .edt-trust / .edt-trust-grid / .edt-trust-copy / .edt-review-surface* /
     .edt-review-empty* / .edt-trust .comment-form*
		                           only emitter was the guide reviews block
     section 21's dark .edt-review* superseded by 32.3 -- every .edt-review
		                           now renders inside .edt-reviews
     .edt-contact-band* / .edt-contact-channel* / #contact-band
		                           template-parts/content/contact-section.php
		                           had zero get_template_part callers and is
		                           deleted along with them
     .edt-lang--full / .edt-footer .edt-lang__*
		                           footer.php renders no switcher (user
		                           directive: header switcher only)
     .edt-legal-head h1             the legal header band is .edt-listing-head
     .edt-footer-meta               footer.php printed the site description
		                           twice; the duplicate paragraph is gone
     .edt-inclusions                no emitter after this pass

   Kept deliberately: .edt-availability-card has no theme emitter left, but the
   PLUGIN ships rules for it in public/css/booking-widget.css, so something in
   the booking stack is expected to render it. .edt-crumb-col .edt-kicker and
   .edt-inclusion-card a[aria-label] are also emitter-less but belong to the
   tour/city templates, which are out of scope for this pass.

   Breakpoints stay on the canonical scale: 640 / 900 / 1120.

   ------------------------------------------------------------------------- */

/* ---- 35.1 Band rotation (spec 3.5.3). ---- */

/* Was basalt, now the alternate limestone band. */
.edt-journeys,
.edt-ways,
.edt-planning,
.edt-principles,
.edt-seasons,
.edt-cities-flow,
.edt-guide-gallery,
.edt-legal,
.edt-page-body { color: var(--sk-ink); background: var(--sk-page-alt); }

/* ...and their neighbours drop to the default band, so no two alternate
   bands ever touch (3.5.3). */
.edt-destinations,
.edt-field-notes,
.edt-portrait,
.edt-guide-faq,
.edt-guide-author,
.edt-guide-reviews { background: var(--sk-page); }

/* The author box continues the FAQ band instead of opening its own. */
.edt-guide-author { padding-bottom: var(--sk-section-y); }

/* Section 8's heading list hard-codes --edt-gold-light (accent-on-dark, 2.4:1
   on limestone), so the em accents must be re-stated even though
   --sk-accent-ctx now resolves to the light value on these bands. */
.edt-journeys .edt-section-head h2,
.edt-ways .edt-section-head h2,
.edt-principles .edt-section-head h2,
.edt-planning h2 { color: var(--sk-ink); }
.edt-journeys .edt-section-head h2 em,
.edt-ways .edt-section-head h2 em,
.edt-principles .edt-section-head h2 em,
.edt-planning h2 em { color: var(--sk-accent); }

/* ---- 35.2 Section header (spec 9.8) and heading weight (4.2) as ONE
   definition for every page, not just the listings. Section 4's flex version
   stays underneath for anything rendered outside .edt-scope. ---- */

.edt-scope .edt-section-head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--sk-gap-5);
	margin-bottom: var(--sk-sp-7);
}
.edt-scope .edt-section-head .edt-eyebrow { margin: 0 0 var(--sk-sp-3); }
.edt-scope .edt-section-intro {
	max-width: 44ch;
	margin: 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-lede);
	line-height: 1.55;
}

/* Spec 4.2 is Fraunces 500 at every level, italic accent included. Section 4
   set 400 (the Bodoni-era weight) and 31 / 32 / 33 each re-stated 500 for
   their own headings; this is the one place it belongs. */
.edt-scope :is(h1, h2, h3) { font-weight: 500; }
.edt-scope :is(h1, h2) em { font-weight: 500; }

/* ---- 35.3 Home page: hero filter and the sort rail. ---- */

/* The predictive-search wrapper carried five declarations inline so main.js
   had a positioned box to append its panel into. .edt-suggest already IS that
   context (section 21); this only sizes it inside the flex bar. */
.edt-hero-filter .edt-suggest { display: flex; flex: 1 1 130px; min-width: 0; }
.edt-hero-filter .edt-suggest-input { flex: 1; }

/* Sort rail on the light band. It stays a hairline list -- it is a sort
   control, not four primary buttons -- and the active state is accent + 600 +
   the existing 7px nudge + aria-pressed, never colour alone. */
.edt-filter-label { color: var(--sk-ink-3); }
.edt-filter-pill { border-bottom-color: var(--sk-line); color: var(--sk-ink-2); }
.edt-filter-pill > svg { color: var(--sk-ink-3); }
.edt-filter-pill:hover { color: var(--sk-accent); }
.edt-filter-pill[aria-pressed="true"],
.edt-filter-pill--active { color: var(--sk-accent); font-weight: 600; }
.edt-filter-pill[aria-pressed="true"] > svg,
.edt-filter-pill--active > svg { color: var(--sk-accent); }
.edt-filter-foot { color: var(--sk-ink-3); }
.edt-filter-foot svg { color: var(--sk-accent); }

/* Trust strip (27): the hairline row under the hero, on limestone. The rating
   figure is ink -- spec 9.3, accent belongs to the action -- and the star is
   the one accent glyph in the row. */
.edt-trust-strip {
	border-block-color: var(--sk-line);
	color: var(--sk-ink-2);
	background: var(--sk-page);
}
.edt-trust-strip__inner span { color: var(--sk-ink-2); }
.edt-trust-strip__inner strong { color: var(--sk-ink); }
.edt-trust-strip__inner svg { color: var(--sk-accent); }
.edt-trust-strip__inner i { background: var(--sk-line-2); }

/* The two polaroid captions sat as dark ink over the frame's dark bottom
   gradient (field notes) or straight over the photograph (portrait), where
   the pixel behind them is unknowable. Both become the 9.4 on-image chip,
   the same one .edt-tour-itin__lead figcaption uses. */
.edt-field-notes-image span,
.edt-portrait-image span {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 0 var(--sk-sp-3);
	border-radius: var(--sk-r-pill);
	color: var(--sk-ink-on-dark);
	background: rgba(23, 21, 18, .72);
}

/* ---- 35.4 The cards that used to sit on dark bands. Spec 5.6: 1px
   --sk-line + --sk-e-1 at rest, --sk-e-2 and -2px on hover, never a
   scale. ---- */

.edt-confidence-card {
	border-color: var(--sk-line);
	border-radius: var(--sk-r-lg);
	color: var(--sk-ink);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-confidence-card:hover { border-color: var(--sk-accent); box-shadow: var(--sk-e-2); transform: translateY(-2px); }
.edt-confidence-card > svg { color: var(--sk-accent); }
.edt-confidence-card h3 { color: var(--sk-ink); }
.edt-confidence-card p { color: var(--sk-ink-2); }

.edt-way-card,
.edt-principle-card {
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	box-shadow: var(--sk-e-1);
}
.edt-way-card:hover,
.edt-principle-card:hover { border-color: var(--sk-accent); box-shadow: var(--sk-e-2); }
.edt-way-card p,
.edt-principle-card p { color: var(--sk-ink-2); }
.edt-way-card > span,
.edt-principle-card > span,
.edt-principle-card > svg { color: var(--sk-accent); }

/* A dark CARD is not a dark BAND (3.5.3), so the variant survives -- it just
   moves onto the token surface and keeps its on-dark ink and focus ring
   (30's context list still carries .edt-way-card--dark). */
.edt-way-card--dark { border-color: transparent; color: var(--sk-ink-on-dark); background: var(--sk-band-2); }
.edt-way-card--dark > span { color: var(--sk-accent-on-dark); }
.edt-way-card--dark p { color: var(--sk-ink-on-dark-2); }
.edt-way-card--dark:hover { border-color: var(--sk-accent-on-dark); }
.edt-way-card--gold { border-color: var(--sk-accent-tint-2); background: var(--sk-accent-tint); }
.edt-way-card--gold > span { color: var(--sk-accent-ink); }

/* ---- 35.5 Season chips (spec 9.4): pill geometry and three systemic
   variants instead of three arbitrary fills. Font size stays --sk-fs-overline
   rather than 9.4's caption because the label is uppercase and 4.4.3 allows
   uppercase at the overline level only. ---- */

.edt-season-badge {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	margin-bottom: var(--sk-sp-4);
	padding: 0 var(--sk-sp-3);
	border: var(--sk-bw-1) solid transparent;
	border-radius: var(--sk-r-pill);
}
.edt-season-badge--gold { border-color: var(--sk-accent-tint-2); color: var(--sk-accent-ink); background: var(--sk-accent-tint); }
.edt-season-badge--blue { border-color: var(--sk-line); color: var(--sk-ink-2); background: var(--sk-page-alt); }
.edt-season-badge--sand { border-color: var(--sk-line-2); color: var(--sk-ink-2); background: var(--sk-sunken); }

/* ---- 35.6 Cities coverflow on the light band (17 styled it for basalt).
   The slide itself stays a dark photo card and gets the card radius: 4px on a
   460px media panel was the smallest radius in the scale on the largest
   element using it. ---- */

.edt-coverflow-arrow {
	border-color: var(--sk-line-strong);
	color: var(--sk-ink);
	background: var(--sk-surface);
}
.edt-coverflow-arrow:hover { color: #fff; border-color: var(--sk-accent); background: var(--sk-accent); }
.edt-coverflow-nav { margin-top: var(--sk-sp-6); }
.edt-coverflow__slide { border-radius: var(--sk-r-lg); background: var(--sk-band-2); }
.edt-coverflow__slide.is-center { box-shadow: var(--sk-e-4), 0 0 0 var(--sk-bw-2) var(--sk-accent); }

/* ---- 35.7 404: one centred card on the listing shell, replacing the dark
   .edt-trust band and its five inline style attributes. ---- */

.edt-404 { padding-bottom: var(--sk-section-y-lg); }
.edt-404__card { display: grid; justify-items: center; }
.edt-404__mark { display: inline-flex; margin-bottom: var(--sk-sp-5); color: var(--sk-accent); }
.edt-404__card h1 { margin: 0 0 var(--sk-sp-4); }
.edt-404__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sk-sp-3); }

/* ---- 35.8 Utility pages: legal body, generic page body, comments, and the
   search form inside an empty state (spec 9.5 fields). ---- */

.edt-legal .edt-legal-body { margin-top: 0; }

.edt-listing-empty .search-form { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sk-sp-2); }
.edt-listing-empty .search-form label { flex: 1 1 14rem; min-width: 0; }
.edt-listing-empty .search-field {
	width: 100%;
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-family: inherit;
	font-size: var(--sk-fs-body);
}
.edt-listing-empty .search-field:focus { border-color: var(--sk-accent); }
.edt-listing-empty .search-submit {
	min-height: 48px;
	padding: 0 var(--sk-sp-6);
	border: 0;
	border-radius: var(--sk-r-sm);
	color: #fff;
	background: var(--sk-accent);
	font-family: inherit;
	font-size: var(--sk-fs-button);
	font-weight: 600;
	cursor: pointer;
}
.edt-listing-empty .search-submit:hover { background: var(--sk-accent-hover); }

.edt-comments {
	max-width: min(var(--sk-container-prose), 100%);
	margin-top: var(--sk-sp-11);
	padding-top: var(--sk-sp-8);
	border-top: var(--sk-bw-1) solid var(--sk-line);
}
.edt-comments__title { margin: 0 0 var(--sk-sp-6); color: var(--sk-ink); font-size: var(--sk-fs-h3); letter-spacing: -.010em; line-height: 1.2; }
.edt-comments__list { margin: 0 0 var(--sk-sp-8); padding: 0; list-style: none; }
.edt-comments__list li + li { margin-top: var(--sk-sp-5); padding-top: var(--sk-sp-5); border-top: var(--sk-bw-1) solid var(--sk-line); }
.edt-comments__list .comment-author { display: flex; align-items: center; gap: var(--sk-sp-3); color: var(--sk-ink); font-size: var(--sk-fs-meta); font-weight: 600; }
.edt-comments__list .comment-author img { border-radius: var(--sk-r-circle); }
.edt-comments__list .comment-metadata { color: var(--sk-ink-3); font-size: var(--sk-fs-caption); }
.edt-comments__list .comment-content { color: var(--sk-ink-2); font-size: var(--sk-fs-body-sm); line-height: 1.65; }
.edt-comments__list .children {
	margin: var(--sk-sp-5) 0 0;
	padding-inline-start: var(--sk-sp-6);
	border-inline-start: var(--sk-bw-1) solid var(--sk-line);
	list-style: none;
}
.edt-comments__closed { margin: 0; color: var(--sk-ink-3); font-size: var(--sk-fs-body-sm); }

/* ---- 35.9 Guide reading room. ---- */

/* --sk-sticky-top also reserves the tour page's 52px jump nav, which the
   guide never renders, so the TOC used to stop 52px lower than it needed to
   and every TOC link jumped to a 148px offset for a 72px header. Sticky
   itself works because .edt-guide-layout is align-items: start, so the rail
   is shorter than its grid area -- verified against the CSS Grid spec's
   "grid area is the containing block for a grid item" rule. */
.edt-guide .edt-toc { top: calc(var(--sk-header-h) + var(--sk-sp-4)); }
.edt-guide .edt-article-body [id] { scroll-margin-top: calc(var(--sk-header-h) + var(--sk-sp-6)); }

.edt-reviews__intro { max-width: 62ch; margin: 0 0 var(--sk-sp-6); color: var(--sk-ink-2); font-size: var(--sk-fs-body); line-height: 1.65; }

/* A guest review is a 4-line teaser with "read all" behind it; a guide
   comment is the whole contribution, so it is not clamped. */
.edt-guide-reviews .edt-review__body { display: block; -webkit-line-clamp: none; line-clamp: none; }
.edt-guide-reviews .edt-review__body > * { margin: 0; }
.edt-guide-reviews .edt-review__body > * + * { margin-top: var(--sk-sp-3); }
.edt-guide-reviews .edt-reviews__list .children { margin: var(--sk-sp-3) 0 0; padding: 0; list-style: none; }
.edt-guide-reviews .edt-reviews__form-body { margin-top: var(--sk-sp-8); }

/* ---- 35.10 Contact form fields (spec 9.5) on the dark band. The
   underline-only fields were the weakest control set on the site: no box, so
   no 3:1 boundary at all in forced-colours mode, an uppercase overline where
   a label belongs, and a 2.1:1 placeholder. The box is --sk-band-3 ("input
   surface on dark", 3.1.2) inside a --sk-ink-on-dark-3 border, 5.6:1.

   outline: none is NOT re-declared: section 2's `.edt-scope :focus-visible`
   (0-2-0) already beats section 8's `.edt-contact-form input` (0-1-1), so the
   ring survives forced-colours modes that drop the box-shadow. ---- */

.edt-contact-form { border-color: var(--sk-line-on-dark); border-radius: var(--sk-r-xl); }
.edt-contact-form label {
	color: var(--sk-ink-on-dark);
	font-size: var(--sk-fs-meta);
	letter-spacing: 0;
	text-transform: none;
}
.edt-contact-form input,
.edt-contact-form textarea {
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-ink-on-dark-3);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink-on-dark);
	background: var(--sk-band-3);
}
.edt-contact-form textarea { min-height: 96px; padding: 12px 14px; line-height: 1.6; }
.edt-contact-form input::placeholder,
.edt-contact-form textarea::placeholder { color: var(--sk-ink-on-dark-3); opacity: 1; }
.edt-contact-form input:hover,
.edt-contact-form textarea:hover { border-color: var(--sk-ink-on-dark-2); }
.edt-contact-form input:focus,
.edt-contact-form textarea:focus { border-color: var(--sk-accent-on-dark); box-shadow: 0 0 0 3px rgba(217, 130, 94, .24); }
.edt-contact-form input[aria-invalid="true"],
.edt-contact-form textarea[aria-invalid="true"] { border-width: var(--sk-bw-2); border-color: var(--sk-danger-tint); }
/* rgba(247,245,241,.44) over basalt is 2.1:1 -- below AA for 13px text. */
.edt-form-footer > span { color: var(--sk-ink-on-dark-3); }

/* ---- 35.11 Stagger for hand-written card rows. A hardcoded "80ms" in a
   template is not per-item data, so those four attributes moved here and onto
   the --sk-stagger step (10.1). Loop-driven --delay values stay inline. ---- */

.edt-confidence-grid > .edt-reveal:nth-child(2),
.edt-ways-grid > .edt-reveal:nth-child(2) { --delay: var(--sk-stagger); }
.edt-confidence-grid > .edt-reveal:nth-child(3),
.edt-ways-grid > .edt-reveal:nth-child(3) { --delay: calc(var(--sk-stagger) * 2); }
.edt-confidence-grid > .edt-reveal:nth-child(4) { --delay: calc(var(--sk-stagger) * 3); }

/* ---- 35.12 Responsive. ---- */

@media (max-width: 900px) {
	.edt-scope .edt-section-head { grid-template-columns: minmax(0, 1fr); row-gap: var(--sk-sp-4); }
	.edt-scope .edt-section-intro { max-width: min(56ch, 100%); }
	.edt-404__actions { width: 100%; }
	.edt-404__actions .edt-button { flex: 1 1 auto; }
}

@media (max-width: 640px) {
	.edt-comments { margin-top: var(--sk-sp-8); padding-top: var(--sk-sp-6); }
	.edt-comments__list .children { padding-inline-start: var(--sk-sp-4); }
	.edt-guide-author { padding-bottom: var(--sk-section-y-sm); }
	.edt-coverflow-nav { margin-top: var(--sk-sp-5); }
}

/* ---- 35.13 Reduced motion (spec 10.3). The coverflow rotateY is assigned as
   an INLINE style by the page-cities.php script, which reads the preference
   once at load; !important is the only way CSS can win if the preference is
   switched on while the page is open. ---- */

@media (prefers-reduced-motion: reduce) {
	.edt-coverflow__slide { transform: none !important; }
	.edt-confidence-card:hover,
	.edt-way-card--dark:hover { transform: none; }
}

/* ---------------------------------------------------------------------------

   36. WOOCOMMERCE v2 -- cart, checkout, account, notices

   The theme overrides NO WooCommerce template. inc/woocommerce.php only swaps
   WC's wrapper for .sekhem-woo-wrap > .sekhem-container on product pages and
   sets one body class, so every rule here is written against WooCommerce's own
   classic markup and scoped to the class that already exists:
   .sekhem-woo-page (cart / checkout / account / any WC page). No new hook, no
   template copy, nothing to re-sync on a WooCommerce update.

   Cascade: main.css loads before edt.css (inc/enqueue.php) and WooCommerce's
   three stylesheets are registered by the plugin, i.e. earlier still, so an
   equal-specificity rule here wins over both. Two places need more than a
   tie and say so in place: a.remove ships color:red!important, and
   woocommerce.css sets outline:0 on .input-text at 0-3-2, which was silently
   beating .edt-scope :focus-visible (0-2-0) -- WooCommerce fields have had NO
   focus ring at all.

   THE 768px GAP, and why this file still has no 768 breakpoint.
   WooCommerce stacks .shop_table_responsive itself from
   woocommerce-smallscreen.css, enqueued as media="only screen and
   (max-width: 768px)". That boundary sits between this project's 640 and 900
   steps, so 641-768px was stacked-but-unstyled and 769-900px rendered a
   six-column desktop table at phone width. Instead of adopting 768, section
   36.12 takes ownership of the stacked presentation for the WHOLE 0-900
   range: below 900px the cart, totals and review tables stack HERE, with
   td[data-title]::before row labels (the same attribute WooCommerce's own
   cart template emits). Below 768 that agrees with WooCommerce's own rules
   and simply wins on cascade order; from 769 to 900 it is the only stacking
   in play. Either mode reads identically, and the breakpoint scale stays
   480 / 640 / 900 / min-901 / 1120.

   Controls follow spec 9.5 to the letter (48px, --sk-line-strong,
   --sk-r-sm, accent focus ring) so a WooCommerce field is indistinguishable
   from a theme field. Touch targets: .quantity input and .product-remove a
   are the two controls that could not be hit on a phone; both are >= 44x44
   in 36.5.

   ------------------------------------------------------------------------- */

/* ---- 36.1 Where WooCommerce actually renders, and the two inherited rules
   that broke it. Cart, checkout, order-received and account are ordinary
   pages, so they come through page.php: .edt-listing-head (which already
   reserves --sk-header-h, so the pill never covers the H1) then
   .edt-page-body > .edt-container > .edt-article-body > the_content(). That
   prose wrapper capped the whole cart at a 68ch measure and put a clay
   hairline under every link in it (section 22), Remove x and Place order
   included. Both are undone for WooCommerce content only. ---- */

.sekhem-woo-page .edt-article-body { max-width: 100%; color: var(--sk-ink-2); }
.sekhem-woo-page .edt-article-body .woocommerce a { border-bottom: 0; }

/* Genuine text links keep an underline, so they are not signalled by colour
   alone (SC 1.4.1). Buttons and the remove glyph opt out by class -- and,
   since the 40 round, so do .edt-button anchors (the order-received hero
   CTAs), which this 0-6-1 rule would otherwise outpaint. */
.sekhem-woo-page .edt-article-body .woocommerce a:not(.button):not(.remove):not(.edt-button):not([class*="wc-block-components-button"]) {
	color: var(--sk-accent);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color var(--sk-dur-1) var(--sk-ease-out), text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.sekhem-woo-page .edt-article-body .woocommerce a:not(.button):not(.remove):not(.edt-button):hover {
	color: var(--sk-accent-hover);
	text-decoration-thickness: 2px;
}

.sekhem-woo-page .woocommerce { display: grid; gap: var(--sk-sp-8); }

/* One consequence of that grid: a grid item's float computes to none, and
   WooCommerce lays My Account out as a 30% / 68% float pair. Restored as two
   columns above the md flip, stacked below it -- which is what the floats did
   anyway once they ran out of room. */
@media (min-width: 901px) {
	.sekhem-woo-page .woocommerce:has( > .woocommerce-MyAccount-navigation ) {
		grid-template-columns: 14rem minmax(0, 1fr);
		gap: var(--sk-gap-5);
		align-items: start;
	}
}
.sekhem-woo-page .woocommerce h2,
.sekhem-woo-page .woocommerce h3 {
	margin: 0 0 var(--sk-sp-4);
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
}

/* ---- 36.2 Form controls -- spec 9.5, one definition for every field
   WooCommerce prints (billing, shipping, coupon, login, account, order
   notes). 48px box, --sk-line-strong border (3.8:1 on --sk-page-alt, the
   band .edt-page-body puts under these pages), --sk-r-sm. ---- */

.sekhem-woo-page :is(
	input[type="text"], input[type="email"], input[type="tel"], input[type="number"],
	input[type="password"], input[type="search"], input[type="url"], input[type="date"],
	select, textarea
) {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body);
	line-height: normal;
	transition: border-color var(--sk-dur-1) var(--sk-ease-out), box-shadow var(--sk-dur-1) var(--sk-ease-out);
}
.sekhem-woo-page textarea { min-height: 96px; padding: 12px 14px; line-height: 1.6; resize: vertical; }
.sekhem-woo-page :is(input, textarea)::placeholder { color: var(--sk-ink-3); opacity: 1; }
.sekhem-woo-page :is(input, select, textarea):hover { border-color: var(--sk-ink-3); }

/* select: appearance:none plus a 16px chevron 14px from the right edge. */
.sekhem-woo-page select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: 40px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%236E665B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 16px 16px;
}

/* Focus. woocommerce.css's `.woocommerce form .form-row input.input-text`
   carries outline:0 at 0-3-2, so the ring is re-asserted at 0-4-2 as well as
   through the box-shadow of spec 9.5 -- two independent indicators, and
   nothing here declares outline:none. */
.sekhem-woo-page .woocommerce form .form-row input.input-text:focus-visible,
.sekhem-woo-page .woocommerce form :is(input, select, textarea):focus-visible,
.sekhem-woo-page :is(input, select, textarea):focus-visible {
	outline: var(--sk-bw-2) solid var(--sk-focus);
	outline-offset: 2px;
	border-color: var(--sk-accent);
	box-shadow: 0 0 0 3px rgba(168, 68, 42, .18);
}

/* Error state is never colour alone: 2px --sk-danger AND WooCommerce's own
   inline message row. */
.sekhem-woo-page .woocommerce-invalid :is(input, select, textarea),
.sekhem-woo-page :is(input, select, textarea)[aria-invalid="true"] {
	border: var(--sk-bw-2) solid var(--sk-danger);
}
.sekhem-woo-page .woocommerce-validated .input-text { border-color: var(--sk-success); }
.sekhem-woo-page :is(input, select, textarea):disabled {
	color: var(--sk-ink-3);
	background: var(--sk-sunken);
	border-color: var(--sk-line-2);
}

.sekhem-woo-page .woocommerce form .form-row { margin: 0 0 var(--sk-sp-5); padding: 0; }
.sekhem-woo-page .woocommerce form .form-row label,
.sekhem-woo-page .woocommerce-billing-fields label,
.sekhem-woo-page .woocommerce-additional-fields label {
	display: block;
	margin-bottom: var(--sk-sp-2);
	color: var(--sk-ink);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	line-height: 1.4;
}
.sekhem-woo-page .woocommerce form .form-row .required { color: var(--sk-danger); text-decoration: none; }
.sekhem-woo-page .woocommerce form .form-row-first,
.sekhem-woo-page .woocommerce form .form-row-last { width: 100%; float: none; }

/* Checkbox / radio: 20px box, 2px control border, 44px hit area from the
   label padding (spec 9.5). */
.sekhem-woo-page :is(input[type="checkbox"], input[type="radio"]) {
	appearance: none;
	-webkit-appearance: none;
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: var(--sk-bw-2) solid var(--sk-line-strong);
	border-radius: var(--sk-r-xs);
	background: var(--sk-surface);
	cursor: pointer;
}
.sekhem-woo-page input[type="radio"] { border-radius: var(--sk-r-circle); }
.sekhem-woo-page :is(input[type="checkbox"], input[type="radio"]):checked {
	border-color: var(--sk-accent);
	background: var(--sk-accent);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.5l3 3 6-6.5' stroke='%23FFFFFF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 14px 14px;
}
.sekhem-woo-page .woocommerce-form__label-for-checkbox,
.sekhem-woo-page label.checkbox {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-3);
	min-height: 44px;
	margin: 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body-sm);
	font-weight: 400;
	cursor: pointer;
}

/* select2 (WooCommerce's country / state control) inherits the same box. */
.sekhem-woo-page .select2-container .select2-selection--single {
	height: 48px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	background: var(--sk-surface);
}
.sekhem-woo-page .select2-container .select2-selection--single .select2-selection__rendered {
	padding-inline: 14px 40px;
	color: var(--sk-ink);
	font-size: var(--sk-fs-body);
	line-height: 46px;
}
.sekhem-woo-page .select2-container .select2-selection--single .select2-selection__arrow { height: 46px; right: 12px; }
.sekhem-woo-page .select2-container--focus .select2-selection--single,
.sekhem-woo-page .select2-container--open .select2-selection--single {
	border-color: var(--sk-accent);
	box-shadow: 0 0 0 3px rgba(168, 68, 42, .18);
}
.sekhem-woo-page .select2-dropdown {
	border: var(--sk-bw-1) solid var(--sk-line-2);
	border-radius: var(--sk-r-sm);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-3);
}
.sekhem-woo-page .select2-container .select2-results__option { min-height: 44px; padding: var(--sk-sp-3) var(--sk-sp-4); font-size: var(--sk-fs-body-sm); }
.sekhem-woo-page .select2-container .select2-results__option--highlighted[aria-selected] { color: var(--sk-ink); background: var(--sk-accent-tint); }
.sekhem-woo-page .select2-container .select2-search--dropdown .select2-search__field { min-height: 44px; border-radius: var(--sk-r-xs); }

/* ---- 36.3 Buttons. main.css:316-323 skinned .button in --sekhem-nile
   (basalt) with a !important label colour; the primary action on these pages
   is clay per spec 3.5.1, and both states need a 48px box. ---- */

.sekhem-woo-page :is(.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #payment #place_order, .woocommerce .button) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--sk-sp-2);
	min-height: 48px;
	padding: 0 var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-accent);
	border-radius: var(--sk-r-sm);
	color: #fff !important; /* main.css:321 ships !important on the label. */
	background: var(--sk-accent);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-button);
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--sk-dur-1) var(--sk-ease-out), border-color var(--sk-dur-1) var(--sk-ease-out), transform var(--sk-dur-2) var(--sk-ease-out);
}
.sekhem-woo-page :is(.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #payment #place_order):hover {
	border-color: var(--sk-accent-hover);
	background: var(--sk-accent-hover);
	transform: translateY(-1px);
}
.sekhem-woo-page :is(.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #payment #place_order):active { transform: translateY(0); }
.sekhem-woo-page .woocommerce .button:disabled,
.sekhem-woo-page .woocommerce .button.disabled {
	border-color: var(--sk-line-2);
	color: var(--sk-ink-3) !important;
	background: var(--sk-sunken);
	transform: none;
	cursor: not-allowed;
}

/* Secondary: "Continue shopping", "Return to shop", coupon apply. Ink label
   on the page band, --sk-line-strong box -- 4.4:1 border, 8.1:1 label. */
.sekhem-woo-page :is(.woocommerce a.button.wc-backward, .woocommerce button[name="apply_coupon"], .woocommerce button[name="update_cart"], .woocommerce .woocommerce-Button--next, .woocommerce .woocommerce-Button--previous) {
	border-color: var(--sk-line-strong);
	color: var(--sk-ink) !important;
	background: transparent;
}
.sekhem-woo-page :is(.woocommerce a.button.wc-backward, .woocommerce button[name="apply_coupon"], .woocommerce button[name="update_cart"]):hover {
	border-color: var(--sk-ink);
	color: var(--sk-ink) !important;
	background: var(--sk-sunken);
}
/* ---- 36.4 The cart table. One card: white surface, --sk-line hairline,
   --sk-e-1 (spec 5.6 -- a white card on limestone is 1.13:1, so it is never
   distinguished by fill alone). border-collapse must be `separate` for the
   radius to render, so the row rule lives on the cells. ---- */

.sekhem-woo-page .woocommerce table.shop_table {
	width: 100%;
	margin: 0;
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	border-collapse: separate;
	border-spacing: 0;
	color: var(--sk-ink);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
	font-size: var(--sk-fs-body-sm);
	text-align: left;
}
.sekhem-woo-page .woocommerce table.shop_table thead th {
	padding: var(--sk-sp-4) var(--sk-sp-4);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
	color: var(--sk-ink-3);
	background: var(--sk-surface-2);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	white-space: nowrap;
}
.sekhem-woo-page .woocommerce table.shop_table tbody td,
.sekhem-woo-page .woocommerce table.shop_table tbody th,
.sekhem-woo-page .woocommerce table.shop_table tfoot td,
.sekhem-woo-page .woocommerce table.shop_table tfoot th {
	padding: var(--sk-sp-4);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
	vertical-align: middle;
}
.sekhem-woo-page .woocommerce table.shop_table tbody tr:last-child > :is(td, th),
.sekhem-woo-page .woocommerce table.shop_table tfoot tr:last-child > :is(td, th) { border-bottom: 0; }

.sekhem-woo-page .woocommerce table.shop_table .product-thumbnail { width: 88px; }
.sekhem-woo-page .woocommerce table.shop_table .product-thumbnail img {
	display: block;
	width: 72px;
	height: 72px;
	border-radius: var(--sk-r-sm);
	object-fit: cover;
	background: var(--sk-sunken);
}
.sekhem-woo-page .woocommerce table.shop_table .product-name a {
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h4);
	font-weight: 500;
	text-decoration: none;
}
.sekhem-woo-page .woocommerce table.shop_table .product-name a:hover { color: var(--sk-accent); }

/* The booking rows the plugin adds through woocommerce_get_item_data land in
   this <dl>: Date, Guests, Booking Ref. They are the customer's proof of what
   they booked, so they are a labelled list, not grey small print. */
.sekhem-woo-page .woocommerce .product-name dl.variation {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--sk-sp-1) var(--sk-sp-2);
	margin: var(--sk-sp-3) 0 0;
	font-size: var(--sk-fs-caption);
}
.sekhem-woo-page .woocommerce .product-name dl.variation dt { margin: 0; color: var(--sk-ink-3); font-weight: 600; }
.sekhem-woo-page .woocommerce .product-name dl.variation dd { margin: 0; color: var(--sk-ink-2); }
.sekhem-woo-page .woocommerce .product-name dl.variation :is(dd, dt) p { margin: 0; }

.sekhem-woo-page .woocommerce table.shop_table :is(.product-price, .product-subtotal, .product-total) {
	color: var(--sk-ink);
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	white-space: nowrap;
}
.sekhem-woo-page .woocommerce .woocommerce-Price-amount { font-variant-numeric: tabular-nums; }

/* ---- 36.5 The reported mobile bug: neither control was hittable.
   .quantity input was WooCommerce's default ~34px box and a.remove is a
   1.5em glyph in a 1em box (~24px). Both are now >= 44x44 -- the input at the
   spec 9.5 height of 48px, the remove link as a 44px circle around the same
   small glyph, so no ::after hit-area expansion is needed. ---- */

.sekhem-woo-page .woocommerce .quantity { display: inline-flex; align-items: center; }
.sekhem-woo-page .woocommerce .quantity input.qty,
.sekhem-woo-page .woocommerce .quantity input[type="number"],
.sekhem-woo-page .woocommerce .quantity input {
	width: 5rem;          /* 80px */
	min-width: 44px;      /* WCAG 2.5.5 floor, if a UA ever shrinks it */
	min-height: 48px;     /* spec 9.5; also clears the 44px floor */
	padding: 0 var(--sk-sp-2);
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-size: var(--sk-fs-body);
	font-variant-numeric: tabular-nums;
	text-align: center;
}

.sekhem-woo-page .woocommerce .product-remove { width: 56px; }
.sekhem-woo-page .woocommerce .product-remove a.remove,
.sekhem-woo-page .woocommerce a.remove {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin: 0;
	border: var(--sk-bw-1) solid transparent;
	border-radius: var(--sk-r-circle);
	/* !important answers woocommerce.css's `color: red !important` on
	   a.remove -- and #B21F24 is 6.74:1 on white, where red was 4.0:1. */
	color: var(--sk-danger) !important;
	background: transparent;
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-h4);
	font-weight: 400;
	line-height: 1;
	text-decoration: none;
	transition: background-color var(--sk-dur-1) var(--sk-ease-out), color var(--sk-dur-1) var(--sk-ease-out);
}
.sekhem-woo-page .woocommerce .product-remove a.remove:hover,
.sekhem-woo-page .woocommerce a.remove:hover {
	color: #fff !important;
	background: var(--sk-danger);
}
.sekhem-woo-page .woocommerce a.remove:focus-visible { outline: var(--sk-bw-2) solid var(--sk-focus); outline-offset: 2px; }

/* ---- 36.6 Actions row + coupon. The actions cell is a full-width row in the
   same table; on desktop the coupon sits left and Update cart right. ---- */

.sekhem-woo-page .woocommerce table.shop_table td.actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--sk-sp-3);
	padding: var(--sk-sp-4);
	background: var(--sk-surface-2);
}
.sekhem-woo-page .woocommerce td.actions .coupon {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sk-sp-2);
	float: none;
}
.sekhem-woo-page .woocommerce td.actions .coupon label { margin: 0; }
.sekhem-woo-page .woocommerce td.actions .coupon input#coupon_code { width: auto; min-width: 12rem; flex: 1 1 12rem; }
.sekhem-woo-page .woocommerce .woocommerce-form-coupon-toggle { margin: 0; }
.sekhem-woo-page .woocommerce form.checkout_coupon {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sk-sp-2);
	width: 100%;
	margin: 0 0 var(--sk-sp-6);
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-md);
	background: var(--sk-surface);
}
.sekhem-woo-page .woocommerce form.checkout_coupon .form-row { margin: 0; flex: 1 1 12rem; }

/* ---- 36.7 Cart totals card + the primary CTA out of the cart. ---- */

.sekhem-woo-page .woocommerce .cart-collaterals { width: 100%; }
.sekhem-woo-page .woocommerce .cart-collaterals .cross-sells { float: none; width: 100%; }
.sekhem-woo-page .woocommerce .cart_totals {
	float: none;
	width: 100%;
	max-width: 24rem;
	margin-inline-start: auto;
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.sekhem-woo-page .woocommerce .cart_totals h2 { margin: 0 0 var(--sk-sp-4); font-size: var(--sk-fs-h4); }
.sekhem-woo-page .woocommerce .cart_totals table.shop_table {
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}
.sekhem-woo-page .woocommerce .cart_totals table.shop_table :is(th, td) { padding: var(--sk-sp-3) 0; }
.sekhem-woo-page .woocommerce .cart_totals table.shop_table th {
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
	text-align: left;
}
.sekhem-woo-page .woocommerce .cart_totals table.shop_table td { color: var(--sk-ink); text-align: right; }
.sekhem-woo-page .woocommerce .cart_totals tr.order-total :is(th, td) {
	border-top: var(--sk-bw-1) solid var(--sk-line-2);
	padding-top: var(--sk-sp-4);
	color: var(--sk-ink);
}
.sekhem-woo-page .woocommerce .cart_totals tr.order-total td strong,
.sekhem-woo-page .woocommerce .cart_totals tr.order-total td .amount {
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.02em;
}
.sekhem-woo-page .woocommerce .wc-proceed-to-checkout { padding: var(--sk-sp-5) 0 0; }
.sekhem-woo-page .woocommerce .wc-proceed-to-checkout a.checkout-button {
	display: flex;
	width: 100%;
	min-height: 52px;
	font-size: var(--sk-fs-body);
}
/* ---- 36.8 Checkout. WooCommerce floats .col-1 / .col-2 at 48%; a grid does
   the same job without the float math and collapses cleanly in 36.12.
   #order_review becomes the summary card, and Place order is a full-width
   52px primary -- the last tap of the funnel is never a 34px button. ---- */

/* WooCommerce ships a decorative clearfix -- ::before/::after set to
   content:" "; display:table -- on .col2-set (woocommerce-layout.css) and on
   the payment list and each of its rows (woocommerce.css). 36.8 lays every one
   of those out with CSS grid, and in a grid a generated pseudo-element is a
   real grid ITEM: it claims the first cell and shunts the actual children on by
   one. That dropped #customer_details into a diagonal (billing in the right
   column, "Additional information" in the row below -- the empty cell above it
   is the stray "white box") and, in every payment row, pushed the <label> into
   the 20px radio column so each method name stacked one letter per line. The
   grid does its own gapping, so the clearfix is pure breakage here -- drop it
   on exactly the containers 36.8 re-lays-out. (.payment_box::before is already
   dropped below; the notice ::after is handled in 36.9.) */
.sekhem-woo-page .woocommerce #customer_details::before,
.sekhem-woo-page .woocommerce #customer_details::after,
.sekhem-woo-page .woocommerce #payment ul.payment_methods::before,
.sekhem-woo-page .woocommerce #payment ul.payment_methods::after,
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method::before,
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method::after {
	content: none;
	display: none;
}

.sekhem-woo-page .woocommerce form.checkout { margin: 0; }
.sekhem-woo-page .woocommerce #customer_details {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--sk-gap-4);
	align-items: start;
	margin-bottom: var(--sk-sp-8);
}
.sekhem-woo-page .woocommerce #customer_details :is(.col-1, .col-2) { float: none; width: auto; }
.sekhem-woo-page .woocommerce :is(.woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-additional-fields) {
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.sekhem-woo-page .woocommerce .woocommerce-additional-fields { margin-top: var(--sk-gap-4); }
.sekhem-woo-page .woocommerce :is(.woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-additional-fields) > h3 {
	margin: 0 0 var(--sk-sp-5);
	font-size: var(--sk-fs-h4);
}
.sekhem-woo-page .woocommerce .woocommerce-billing-fields__field-wrapper,
.sekhem-woo-page .woocommerce .woocommerce-additional-fields__field-wrapper { display: grid; }

.sekhem-woo-page .woocommerce #order_review_heading {
	margin: 0 0 var(--sk-sp-4);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h3);
	font-weight: 500;
}
.sekhem-woo-page .woocommerce #order_review {
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table {
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	margin-bottom: var(--sk-sp-6);
}
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table thead th {
	padding-inline: 0;
	background: transparent;
}
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) :is(td, th) { padding-inline: 0; }
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table tfoot th { color: var(--sk-ink-2); font-size: var(--sk-fs-body-sm); font-weight: 600; text-align: left; }
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table tfoot td { color: var(--sk-ink); text-align: right; font-variant-numeric: tabular-nums; }
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table .product-quantity { color: var(--sk-ink-3); font-weight: 600; }
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.order-total :is(th, td) {
	border-top: var(--sk-bw-1) solid var(--sk-line-2);
	border-bottom: 0;
	padding-top: var(--sk-sp-4);
}
.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table tfoot tr.order-total td :is(strong, .amount) {
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.02em;
}

.sekhem-woo-page .woocommerce #payment { border: 0; border-radius: 0; background: transparent; }
.sekhem-woo-page .woocommerce #payment ul.payment_methods {
	display: grid;
	gap: var(--sk-sp-2);
	margin: 0 0 var(--sk-sp-5);
	padding: 0;
	border: 0;
	list-style: none;
}
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method {
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr);
	align-items: center;
	gap: 0 var(--sk-sp-3);
	padding: var(--sk-sp-3) var(--sk-sp-4);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-md);
	background: var(--sk-surface-2);
}
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method > label {
	display: flex;
	align-items: center;
	gap: var(--sk-sp-2);
	min-height: 44px;
	margin: 0;
	padding: 0;
	color: var(--sk-ink);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
	cursor: pointer;
}
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method > label img { max-height: 24px; width: auto; }
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method .payment_box {
	grid-column: 1 / -1;
	margin: var(--sk-sp-3) 0 0;
	padding: var(--sk-sp-4);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink-2);
	background: var(--sk-surface);
	font-size: var(--sk-fs-caption);
}
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method .payment_box::before { display: none; }
.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method .payment_box p:last-child { margin-bottom: 0; }

.sekhem-woo-page .woocommerce #payment .place-order { margin: 0; padding: 0; }
.sekhem-woo-page .woocommerce .woocommerce-terms-and-conditions-wrapper { margin-bottom: var(--sk-sp-4); font-size: var(--sk-fs-caption); }
.sekhem-woo-page .woocommerce #payment #place_order {
	display: flex;
	width: 100%;
	min-height: 52px;
	margin: 0;
	float: none;
	font-size: var(--sk-fs-body);
}

/* ---- 36.9 Notices. WooCommerce's own are a lilac-topped grey box with an
   icon-font glyph; these are the token semantics (5.30:1 / 5.76:1 label
   contrast on their tints) with a 3px status edge. The glyph is dropped, not
   restyled -- it is a WooCommerce webfont this theme does not load. ---- */

.sekhem-woo-page :is(.woocommerce-info, .woocommerce-message, .woocommerce-error) {
	display: grid;
	gap: var(--sk-sp-2);
	width: auto;
	margin: 0 0 var(--sk-sp-6);
	padding: var(--sk-sp-4) var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-inline-start: 3px solid var(--sk-info);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-info-tint);
	font-size: var(--sk-fs-body-sm);
	list-style: none;
}
.sekhem-woo-page :is(.woocommerce-info, .woocommerce-message, .woocommerce-error)::before,
.sekhem-woo-page :is(.woocommerce-info, .woocommerce-message, .woocommerce-error)::after { display: none; content: none; }
.sekhem-woo-page .woocommerce-message { border-inline-start-color: var(--sk-success); color: var(--sk-ink); background: var(--sk-success-tint); }
.sekhem-woo-page .woocommerce-error { border-inline-start-color: var(--sk-danger); color: var(--sk-ink); background: var(--sk-danger-tint); }
.sekhem-woo-page .woocommerce-error li { margin: 0; }
.sekhem-woo-page :is(.woocommerce-info, .woocommerce-message) .button { justify-self: start; }
.sekhem-woo-page .woocommerce-NoticeGroup { display: grid; gap: var(--sk-sp-3); }
.sekhem-woo-page .woocommerce-notices-wrapper:empty { display: none; }

/* ---- 36.10 Order received, thank-you details, account, login. ---- */

.sekhem-woo-page .woocommerce .woocommerce-order p,
.sekhem-woo-page .woocommerce .woocommerce-thankyou-order-received {
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h4);
	font-weight: 500;
}
.sekhem-woo-page .woocommerce ul.woocommerce-thankyou-order-details,
.sekhem-woo-page .woocommerce ul.order_details {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(11rem, 100%), 1fr));
	gap: var(--sk-sp-4);
	margin: 0 0 var(--sk-sp-7);
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
	list-style: none;
}
.sekhem-woo-page .woocommerce ul.order_details li {
	margin: 0;
	padding: 0;
	border: 0;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.sekhem-woo-page .woocommerce ul.order_details li strong {
	display: block;
	margin-top: var(--sk-sp-1);
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body);
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
}

.sekhem-woo-page .woocommerce .woocommerce-MyAccount-navigation ul {
	display: grid;
	gap: var(--sk-sp-1);
	margin: 0 0 var(--sk-sp-6);
	padding: 0;
	list-style: none;
}
.sekhem-woo-page .woocommerce .woocommerce-MyAccount-navigation li { margin: 0; }
.sekhem-woo-page .woocommerce .woocommerce-MyAccount-navigation a {
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: var(--sk-sp-2) var(--sk-sp-4);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
	text-decoration: none;
}
.sekhem-woo-page .woocommerce .woocommerce-MyAccount-navigation a:hover { color: var(--sk-ink); background: var(--sk-surface-2); }
.sekhem-woo-page .woocommerce .woocommerce-MyAccount-navigation li.is-active a { color: var(--sk-accent-ink); background: var(--sk-accent-tint); }

.sekhem-woo-page .woocommerce form.woocommerce-form-login,
.sekhem-woo-page .woocommerce form.register {
	margin: 0 0 var(--sk-sp-6);
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.sekhem-woo-page .woocommerce form.woocommerce-form-login .woocommerce-form-login__rememberme { display: block; margin-bottom: var(--sk-sp-4); }

/* ---- 36.11 Cart/Checkout BLOCKS -- the cheap half. The plugin's booking
   rows reach the block cart through the same woocommerce_get_item_data filter
   (Store API CartItemSchema::get_item_data applies it), and they render in
   .wc-block-components-product-details, so that list and the control geometry
   are what matter here. The blocks' own layout is left alone. ---- */

.sekhem-woo-page .wc-block-components-product-details {
	margin: var(--sk-sp-3) 0 0;
	padding: 0;
	font-size: var(--sk-fs-caption);
	list-style: none;
}
.sekhem-woo-page .wc-block-components-product-details__name { color: var(--sk-ink-3); font-weight: 600; }
.sekhem-woo-page .wc-block-components-product-details__value { color: var(--sk-ink-2); }
.sekhem-woo-page :is(.wc-block-components-text-input input, .wc-block-components-textarea, .wc-block-components-select__select) {
	min-height: 48px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	background: var(--sk-surface);
}
.sekhem-woo-page .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input {
	min-width: 44px;
	min-height: 44px;
}
.sekhem-woo-page .wc-block-components-quantity-selector button { min-width: 44px; min-height: 44px; }
.sekhem-woo-page .wc-block-components-button:not(.is-link) {
	min-height: 48px;
	border-radius: var(--sk-r-sm);
	background: var(--sk-accent);
	color: #fff;
}
.sekhem-woo-page .wc-block-components-button:not(.is-link):hover { background: var(--sk-accent-hover); }
.sekhem-woo-page .wc-block-cart-item__remove-link { min-height: 44px; color: var(--sk-danger); }
/* ---- 36.12 Responsive. Section header explains the 768px problem; this is
   the answer. The stacked presentation is declared here for the WHOLE 0-900
   range, so it does not matter whether WooCommerce's own
   media="only screen and (max-width: 768px)" sheet is in play: 0-768 it
   agrees with these rules and loses only on cascade order, 769-900 these are
   the only stacking rules that exist. No 768 breakpoint is introduced. ---- */

@media (max-width: 900px) {
	.sekhem-woo-page .woocommerce #customer_details { grid-template-columns: minmax(0, 1fr); gap: var(--sk-gap-3); }
	.sekhem-woo-page .woocommerce .cart_totals { max-width: 100%; }
	.sekhem-woo-page .woocommerce :is(.woocommerce-billing-fields, .woocommerce-shipping-fields, .woocommerce-additional-fields, #order_review, form.woocommerce-form-login, form.register) { padding: var(--sk-sp-5); }

	/* Cart: every row becomes a card, every cell a label/value line. The
	   thumbnail is kept (WooCommerce's own smallscreen sheet leaves it as an
	   orphan block) and Remove is parked top-right of the card, still 44px. */
	.sekhem-woo-page .woocommerce table.shop_table.cart thead { display: none; }
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr { display: block; }
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item {
		position: relative;
		padding: var(--sk-sp-4);
		border-bottom: var(--sk-bw-1) solid var(--sk-line);
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--sk-sp-4);
		width: auto;
		padding: var(--sk-sp-2) 0;
		border: 0;
		text-align: right;
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td[data-title]::before {
		content: attr(data-title);
		color: var(--sk-ink-3);
		font-size: var(--sk-fs-overline);
		font-weight: 600;
		letter-spacing: .14em;
		text-transform: uppercase;
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-name {
		justify-content: flex-start;
		padding-inline-end: 52px;
		text-align: left;
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-name::before { display: none; content: none; }
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-name dl.variation { width: 100%; }
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-thumbnail {
		display: block;
		padding: 0 0 var(--sk-sp-3);
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-remove {
		position: absolute;
		top: var(--sk-sp-3);
		inset-inline-end: var(--sk-sp-3);
		width: 44px;
		padding: 0;
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr:last-child { border-bottom: 0; }

	/* Totals: WooCommerce's smallscreen sheet hides `tbody th` below 768,
	   which took the "Subtotal" / "Total" labels with it. Re-asserted, as a
	   two-column flex row that reads the same in both modes. */
	.sekhem-woo-page .woocommerce .cart_totals table.shop_table tr {
		display: flex;
		align-items: baseline;
		justify-content: space-between;
		gap: var(--sk-sp-4);
	}
	.sekhem-woo-page .woocommerce .cart_totals table.shop_table :is(th, td) { display: block; width: auto; }
	.sekhem-woo-page .woocommerce .cart_totals table.shop_table td::before { display: none; content: none; }
}

@media (max-width: 640px) {
	/* main.css:315 (`.woocommerce table.shop_table th, td { padding: 14px;
	   text-align: left; border-bottom: 1px solid }`) is written for a desktop
	   table and fights every stacked cell -- ragged left-aligned values, a
	   14px indent on the label line and a hairline under each cell inside a
	   card that already has one. main.css is owned elsewhere this round, so it
	   is neutralised from here, which loads later. */
	.sekhem-woo-page .woocommerce table.shop_table th,
	.sekhem-woo-page .woocommerce table.shop_table td,
	.sekhem-woo-page.woocommerce table.shop_table th,
	.sekhem-woo-page.woocommerce table.shop_table td {
		padding: var(--sk-sp-2) 0;
		border-bottom: 0;
		text-align: right;
	}
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item { padding: var(--sk-sp-4) var(--sk-sp-3); }
	.sekhem-woo-page .woocommerce table.shop_table.cart tbody tr.cart_item > td.product-thumbnail img { width: 64px; height: 64px; }

	/* Actions: coupon field, Apply and Update cart each take a full row --
	   three controls on one 280px line is how the coupon box ended up 90px
	   wide. */
	.sekhem-woo-page .woocommerce table.shop_table td.actions {
		display: grid;
		gap: var(--sk-sp-3);
		padding: var(--sk-sp-4) var(--sk-sp-3);
		text-align: left;
	}
	.sekhem-woo-page .woocommerce td.actions .coupon { display: grid; gap: var(--sk-sp-2); }
	.sekhem-woo-page .woocommerce td.actions .coupon input#coupon_code { width: 100%; min-width: 0; }
	.sekhem-woo-page .woocommerce td.actions :is(.button, button, input.button) { width: 100%; }
	.sekhem-woo-page .woocommerce form.checkout_coupon { padding: var(--sk-sp-4); }
	.sekhem-woo-page .woocommerce form.checkout_coupon .button { width: 100%; }

	/* Order summary: the review table stacks too, so a long tour title never
	   squeezes the figure into a two-character column. The total keeps its
	   --sk-fs-price-md figure and Place order stays a full-width 52px. */
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table thead { display: none; }
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) tr {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		justify-content: space-between;
		gap: var(--sk-sp-2) var(--sk-sp-4);
		padding-block: var(--sk-sp-3);
	}
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table :is(tbody, tfoot) tr:not(:last-child) { border-bottom: var(--sk-bw-1) solid var(--sk-line); }
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table :is(td, th) { display: block; width: auto; padding-block: 0; }
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table td.product-name { flex: 1 1 100%; text-align: left; }
	.sekhem-woo-page .woocommerce table.woocommerce-checkout-review-order-table tfoot th { text-align: left; }

	.sekhem-woo-page .woocommerce ul.order_details { padding: var(--sk-sp-4); }
	.sekhem-woo-page .woocommerce #payment ul.payment_methods li.wc_payment_method { padding: var(--sk-sp-3); }
}

/* ---- 36.13 Reduced motion. Only three things move here -- the 1px button
   lift, colour and the link underline. main.css's global block already zeroes
   every duration with !important; the transform is the one that has to be
   removed rather than shortened. ---- */

@media (prefers-reduced-motion: reduce) {
	.sekhem-woo-page :is(.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #payment #place_order):hover { transform: none; }
}
/* ---------------------------------------------------------------------------

   37. CITY CARDS, NAV RHYTHM, HEADER CART LINK, OVERLAY SWITCHER,
       FOOTER WIDGETS

   Unrelated fixes, one layer, appended after 36 so nothing earlier has to be
   rewritten (the file's rule since 30: later sections win).

   37.1-37.3 answer the mobile cities screenshot. Both city modules on
   page-cities.php are anchors -- .edt-coverflow__slide and
   .edt-destination-card -- and both declared `color: white` at 0-1-0, which
   section 2's `.edt-scope a { color: inherit }` (0-1-1) has always beaten.
   The cards therefore inherited the band colour, which 35.1 sets to
   --sk-ink (dark), which is why the city NAME rendered as dark serif over the
   photograph (visible only where the sky is bright, as on Alexandria) while
   the eyebrow -- the one element with its own rgba() colour -- stayed
   readable, and why the circular arrow was an empty outline: its SVG strokes
   currentColor. One selector at 0-2-1 fixes the title and the glyph together.

   ------------------------------------------------------------------------- */

/* ---- 37.1 Legibility. The veil DIVs already exist in the markup (both
   modules print one), so the scrim is strengthened in place -- no ::before,
   no template change. It now covers the FULL card instead of darkening only
   the bottom 42%: the copy block is ~130px tall inside a ~240px card, so the
   title sat at roughly 70% height, above the old gradient's transparent edge.

   Measured against the worst case a photograph can present -- pure white
   under the scrim -- with #171512 alpha-composited in sRGB:
     title   #F7F5F1 at the 70% stop (alpha .62)  -> 4.77:1  (>= 3:1 large, and
                                                     it clears 4.5:1 too)
     copy    #C9C1B5 at the 20-55% band (alpha .80) -> 5.48:1
     eyebrow #F7F5F1 in its 9.4 chip (.72 over .51 = .863) -> 11.11:1
   Over a mid-tone photograph every figure is higher. Translucent
   rgba(255,255,255,.74) text was replaced by opaque tokens precisely because
   a translucent value cannot be measured. ---- */

.edt-destination-card__veil,
.edt-coverflow__veil {
	background: linear-gradient(to top,
		rgba(23, 21, 18, .90) 0%,
		rgba(23, 21, 18, .80) 46%,
		rgba(23, 21, 18, .62) 74%,
		rgba(23, 21, 18, .48) 100%);
}

.edt-scope a.edt-destination-card,
.edt-scope a.edt-coverflow__slide { color: var(--sk-ink-on-dark); }
.edt-destination-card__copy strong,
.edt-coverflow__copy strong { color: var(--sk-ink-on-dark); }
.edt-destination-card__copy small,
.edt-coverflow__copy small { color: var(--sk-ink-on-dark-2); }
.edt-destination-card__copy i { border-color: rgba(247, 245, 241, .55); color: inherit; }
.edt-destination-card:hover .edt-destination-card__copy i { color: var(--sk-ink); background: var(--sk-ink-on-dark); }

/* The eyebrow is the one string that sits at the top of the card, where even
   a full-coverage scrim is at its thinnest. It becomes the on-image chip from
   spec 9.4 -- the same component 35.3 gave the polaroid captions. */
.edt-destination-card__meta,
.edt-coverflow__meta {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	padding: 0 var(--sk-sp-2);
	border-radius: var(--sk-r-pill);
	color: var(--sk-ink-on-dark);
	background: rgba(23, 21, 18, .72);
}
.edt-coverflow__meta { justify-self: start; }

/* Description: 20 words from page-cities.php clamped to two full lines, so
   the ellipsis lands at a line end instead of mid-phrase after one word. */
.edt-destination-card__copy small {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
}

/* ---- 37.2 Geometry. The grid gave card 3 of every 3 `grid-column: 1 / -1`
   below 900px, so "Greater Cairo" ran the full viewport width at 350px tall
   while its neighbours were half-width -- one card owning half the screen.
   Uniform aspect-ratio instead of four different min-heights: 4/3 is 240px at
   a 320px viewport, 36% of a 667px phone, and the copy is absolutely
   positioned so content can never stretch it. ---- */

@media (max-width: 900px) {
	.edt-destination-card,
	.edt-destination-card--2,
	.edt-destination-card--3 {
		grid-column: auto;
		min-height: 0;
		aspect-ratio: 4 / 3;
	}
	.edt-destination-card img { height: 100%; }
}

/* ---- 37.3 Header clearance. The pill is fixed, so anything scrolled or
   anchored to the top of the viewport lands under it. Both card types get the
   header reserve as scroll-margin, which is what keyboard focus and in-page
   anchors use, and the coverflow rail's own top padding is raised to clear
   --sk-e-4's 48px blur (it was 30px inside an overflow-x:auto box, which
   clips the vertical axis too). Tokens only, no magic numbers. ---- */

.edt-destination-card,
.edt-coverflow__slide { scroll-margin-top: calc(var(--sk-header-h) + var(--sk-sp-4)); }
.edt-coverflow { padding-top: var(--sk-sp-9); }

/* ---- 37.4 Nav rhythm. Reported as "excessive spacing between menu items and
   sub-items", and it is measurable: .edt-header .edt-nav a carried 23px of
   padding top AND bottom, so a 14px label sat in a 63px box -- taller than
   the 64px pill it lives in, which is what forced the pill open. Row gap was
   34px. Sub-menu rows were 38px (under the 44px target) with a 2px gap and a
   10px panel inset. Every replacement value comes off the 5.1 scale. ---- */

.edt-nav ul { gap: var(--sk-sp-6); }
.edt-header .edt-nav a { padding-block: var(--sk-sp-3); min-height: 44px; }
.edt-header .edt-nav a::after { bottom: var(--sk-sp-1); }
.edt-nav .sub-menu { gap: 0; padding: var(--sk-sp-1); }
.edt-nav .sub-menu a {
	min-height: 44px;
	padding: var(--sk-sp-2) var(--sk-sp-3);
	border-radius: var(--sk-r-xs);
}
.edt-nav .sub-menu a:hover { background: var(--sk-surface-2); }

@media (min-width: 901px) {
	.edt-nav .sub-menu:has( > li:nth-child(7) ) { gap: 0 var(--sk-sp-2); }
}

/* The overlay list is one column of --sk-fs-h2 rows; 9px padding plus a 4px
   list gap put 53px of pitch on a 31px line. 48px min-height keeps the target
   while removing the double gap. */
.edt-menu-overlay__nav ul { gap: 0; }
.edt-menu-overlay__nav a { min-height: 48px; padding-block: var(--sk-sp-2); }

/* ---- 37.5 Header cart link (markup owned by header.php this round -- these
   are the two agreed classes and nothing here emits any). Icon-only in the
   pill, icon + label in the overlay foot. The box copies .edt-lang__btn
   verbatim, including its neutral 35% grey border: it is the one border value
   that reads on both the dark-glass pill and the cream --scrolled/--solid
   state, so the cart control needs no state-specific colour of its own. ---- */

.edt-cart-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--sk-sp-2);
	min-width: 44px;
	min-height: 44px;
	padding: 0 var(--sk-sp-3);
	border: var(--sk-bw-1) solid rgba(127, 127, 127, .35);
	border-radius: var(--sk-r-xs);
	color: inherit;
	background: transparent;
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	transition: border-color var(--sk-dur-2) var(--sk-ease-spring), color var(--sk-dur-1) var(--sk-ease-out);
}
.edt-cart-link:hover { border-color: var(--sk-accent); }
.edt-cart-link:focus-visible { outline: var(--sk-bw-2) solid currentColor; outline-offset: 2px; }
.edt-cart-link > svg { width: 18px; height: 18px; flex: 0 0 auto; }
.edt-header--scrolled .edt-cart-link,
.edt-header--solid .edt-cart-link { border-color: rgba(26, 24, 20, .16); }

/* Icon-only inside the pill. :not(.screen-reader-text) so an accessible name
   carried in a visually-hidden span is never removed from the a11y tree. */
.edt-header .edt-cart-link > span:not(.edt-cart-link__count):not(.screen-reader-text) { display: none; }

.edt-cart-link__count {
	position: absolute;
	top: -7px;
	inset-inline-end: -7px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	padding: 0 5px;
	border-radius: var(--sk-r-pill);
	color: #fff;
	background: var(--sk-accent);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-caption);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}
.edt-cart-link.is-empty .edt-cart-link__count { display: none; }

/* Overlay foot: a text row, not a boxed control, so it matches the phone link
   beside it. The bubble goes inline -- there is no icon corner to hang off. */
.edt-menu-overlay .edt-cart-link {
	gap: var(--sk-sp-3);
	padding: 0;
	border: 0;
	color: rgba(247, 245, 241, .72);
	font-size: var(--sk-fs-body-sm);
	font-weight: 700;
}
.edt-menu-overlay .edt-cart-link:hover,
.edt-menu-overlay .edt-cart-link:focus-visible { color: var(--sk-accent-on-dark); }
.edt-menu-overlay .edt-cart-link__count {
	position: static;
	inset: auto;
	margin-inline-start: var(--sk-sp-1);
}

@media (max-width: 480px) {
	/* 34.6 budgeted the 320px pill down to the pixel (brand 153 + lang 45 +
	   toggle 56 + gaps = 274px = the interior). The cart control adds 44px, so
	   the row gap tightens by 2px a side and .edt-brand -- already flex: 0 1
	   auto with an ellipsis from 34.6 -- absorbs the rest. */
	.edt-header-actions { gap: var(--sk-sp-2); }
	.edt-cart-link { padding: 0; }
}

/* ---- 37.6 Language switcher, overlay copy (.edt-lang--menu).

   The switcher now has a SECOND instance, in the overlay foot (header.php,
   style => 'menu'). The shared panel rule anchors it at `top: calc(100% + 10px)`
   -- below a control that .edt-menu-overlay__foot pins to the bottom of the
   viewport with `margin-top: auto` -- so that copy opened off-screen. It opens
   upward instead, and from the START edge rather than the end: with WooCommerce
   inactive and no header phone number the foot is just [Book now][switcher],
   which leaves the switcher's own right edge around 240px in -- the panel's
   min-width -- and an end-anchored panel then runs off the left of the screen.

   Scoped to >= 901px on purpose. The 900px block at line 1280 re-anchors the
   panel to the viewport on phones (position: fixed, top 84px, inset-inline
   12px) and has to keep winning there: percentages in `bottom` resolve against
   the containing block, so on a fixed box that is one whole screen too high.
   This selector is 0-2-0 and would otherwise beat it at every width. ---- */

@media (min-width: 901px) {
	.edt-lang--menu .edt-lang__panel {
		top: auto;
		bottom: calc(100% + 10px);
		inset-inline: 0 auto;
	}
}

/* The shared hover border is --edt-gold (aliased onto the clay accent, which is
   a dark colour): on this scrim the dark-surface variant is the right one --
   the same call .edt-menu-overlay .edt-cart-link:hover already makes. */
.edt-lang--menu .edt-lang__btn:hover { border-color: var(--sk-accent-on-dark); }

/* ---- 37.7 Footer widget area (.edt-footer-widgets).

   footer.php now renders the `sekhem-footer` sidebar registered at
   inc/setup.php:55, which had no renderer anywhere, so every widget dropped
   into it vanished silently. Nothing in this block emits markup: the wrapper is
   <div class="sekhem-footer-widget"> with an <h4> title (setup.php's own
   before_widget / before_title), and neither package styled either one --
   main.css dresses widgets only inside the legacy .sekhem-footer, which this
   footer is not, so the titles arrived as bare browser <h4>s.

   Rhythm: the --sk-sp-8 band plus the hairline the .edt-footer-grid and
   .edt-footer-bottom rows already use, so the widgets read as one more footer
   row rather than a floating block. Columns are auto-fit instead of a
   breakpoint -- the widget count is unknown at author time, and the file's
   width scale stays 480/640/900/901/1120. ---- */

.edt-footer-widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
	gap: var(--sk-gap-3);
	padding-block: var(--sk-sp-8);
	border-bottom: var(--sk-bw-1) solid var(--sk-line);
}
.sekhem-footer-widget :is(h1, h2, h3, h4, h5, h6) {
	margin: 0 0 var(--sk-sp-4);
	color: var(--sk-ink-3);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.sekhem-footer-widget :is(ul, ol) { display: grid; gap: var(--sk-sp-3); margin: 0; padding: 0; list-style: none; }
.sekhem-footer-widget p { margin: 0 0 var(--sk-sp-3); color: var(--sk-ink-2); font-size: var(--sk-fs-body-sm); line-height: 1.6; }
.sekhem-footer-widget a {
	color: var(--sk-ink);
	font-size: var(--sk-fs-body-sm);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}
/* 24px minimum pointer target for the list rows (WCAG 2.5.8), matching
   .edt-footer-nav a. */
.sekhem-footer-widget li a { display: inline-flex; align-items: center; min-height: 24px; }
.sekhem-footer-widget a:hover,
.sekhem-footer-widget a:focus-visible { color: var(--sk-accent); text-decoration-color: var(--sk-accent); }
/* ---------------------------------------------------------------------------

   38. CHECKOUT ROUND -- BLOCK CART RHYTHM, ORDER CONFIRMATION, PRINT
       RECEIPT, TRACKING PAGE

   One appended layer (the file's rule since 30: later sections win). Built
   from the DevTools session exported into "new issues found.md"; its
   suggestions were literal DevTools values, tokenized here:
     #ddd border   -> --sk-line-strong (a control border must clear 3:1,
                      spec 3.2.4 -- --sk-line is decorative only)
     #f9f9f9 fill  -> --sk-surface-2, hover --sk-sunken
     #000 text     -> --sk-ink
     1.1rem name   -> --sk-fs-h4 (17.6px sits between --sk-fs-body 16-17 and
                      --sk-fs-h4 19-24; a cart row title is a card title,
                      spec 4.3)
     0.85rem meta  -> --sk-fs-meta (14px, the nearest step above the 13px
                      floor)
     36px buttons  -> 44px minimum: WCAG 2.5.5 beats the DevTools number.
   Scope: .sekhem-woo-page, the body class inc/woocommerce.php already sets
   on every WooCommerce page, the block cart included (the DevTools export
   confirms the theme tokens cascade into the block markup today).
   WooCommerce's block stylesheets can enqueue AFTER edt.css (they register
   at block render time), so every selector below is at least one class
   deeper than WooCommerce's own and wins on specificity, never on order.
   Only colour transitions are added; the global reduced-motion block in
   main.css already zeroes every duration.

------------------------------------------------------------------------- */

/* ---- 38.1 Block cart item rhythm (DevTools finding: 4px gap, flat
   hierarchy, metadata undifferentiated from the name). 12px = --sk-sp-3;
   name/price weight 600 over --sk-ink, metadata one step down. ---- */

.sekhem-woo-page .wc-block-cart-item__wrap {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--sk-sp-3);
}
.sekhem-woo-page .wc-block-cart-item__wrap .wc-block-components-product-name {
	margin: 0;
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-h4);
	font-weight: 600;
	text-decoration: none;
}
.sekhem-woo-page .wc-block-cart-item__wrap .wc-block-cart-item__prices {
	color: var(--sk-ink);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}
.sekhem-woo-page .wc-block-cart-item__wrap .wc-block-components-product-metadata {
	margin: 0;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-meta);
	font-weight: 400;
}

/* ---- 38.2 The quantity selector as ONE grouped control (the DevTools
   "pill"). The block ships three separately-bordered boxes; grouped here: a
   single --sk-line-strong border and --sk-r-sm radius on the container
   (overflow clips the children to it), internal hairline dividers on the
   buttons in logical properties (rtl.css has nothing to mirror),
   --sk-surface-2 button fills over a --sk-surface input, everything at the
   44px target floor. Focus: the ring insets into the clipped box
   (offset -2px) so the container radius does not cut it. ---- */

.sekhem-woo-page .wc-block-components-quantity-selector {
	display: flex;
	align-items: stretch;
	width: fit-content;
	margin: var(--sk-sp-1) 0 0;
	overflow: hidden;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	background: var(--sk-surface);
}
.sekhem-woo-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	border: 0;
	border-radius: 0;
	color: var(--sk-ink);
	background: var(--sk-surface-2);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-h4);
	font-weight: 400;
	line-height: 1;
	transition: background-color var(--sk-dur-1) var(--sk-ease-out), color var(--sk-dur-1) var(--sk-ease-out);
}
.sekhem-woo-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button--minus {
	border-inline-end: var(--sk-bw-1) solid var(--sk-line);
}
.sekhem-woo-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button--plus {
	border-inline-start: var(--sk-bw-1) solid var(--sk-line);
}
.sekhem-woo-page .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input {
	width: auto;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0 var(--sk-sp-2);
	border: 0;
	border-radius: 0;
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	text-align: center;
	-moz-appearance: textfield;
}
.sekhem-woo-page .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover {
	background: var(--sk-sunken);
}
.sekhem-woo-page .wc-block-components-quantity-selector :is(.wc-block-components-quantity-selector__button, input.wc-block-components-quantity-selector__input):focus-visible {
	outline: var(--sk-bw-2) solid var(--sk-focus);
	outline-offset: -2px;
}
.sekhem-woo-page .wc-block-components-quantity-selector :is(.wc-block-components-quantity-selector__button, input.wc-block-components-quantity-selector__input):disabled {
	color: var(--sk-ink-3);
	background: var(--sk-sunken);
	cursor: not-allowed;
}

/* The CLASSIC cart's .quantity is a single input (core WooCommerce adds no
   -/+ pair there) and 36.5 already renders it as one 48px control -- nothing
   to group, deliberately untouched. */
/* ---- 38.3 Thumbnails in the classic checkout review table and the
   order-received details table. Both are injected by guarded filters in
   inc/woocommerce.php; .edt-order-thumb is their wrapper. 56x56, --sk-r-sm,
   object-fit cover, --sk-sunken as the empty-state fill (WC's placeholder
   image chain is handled upstream by get_image itself). ---- */

.sekhem-woo-page .woocommerce .edt-order-thumb {
	display: inline-flex;
	align-items: center;
	vertical-align: middle;
}
.sekhem-woo-page .woocommerce .edt-order-thumb img {
	width: 56px;
	height: 56px;
	margin-inline-end: var(--sk-sp-3);
	border-radius: var(--sk-r-sm);
	object-fit: cover;
	background: var(--sk-sunken);
}

/* ---- 38.4 Order-received confirmation (markup: inc/woocommerce.php).
   WooCommerce's own notice, order-overview card and details table are
   preserved below the hero and keep their 36.10 styling -- except the
   "order received" notice, which becomes the lede under this heading
   instead of a second display heading. ---- */

section.edt-confirm {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--sk-sp-3) var(--sk-sp-4);
	align-items: center;
	margin: 0 0 var(--sk-sp-5);
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
section.edt-confirm .edt-confirm__badge {
	display: inline-grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: var(--sk-r-circle);
	color: var(--sk-success);
	background: var(--sk-success-tint);
}
section.edt-confirm .edt-confirm__title {
	margin: 0;
	color: var(--sk-ink);
	font-family: var(--sk-font-display);
	font-size: var(--sk-fs-h2);
	font-weight: 500;
}
section.edt-confirm .edt-confirm__refline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sk-sp-2) var(--sk-sp-3);
	grid-column: 1 / -1;
	margin: var(--sk-sp-2) 0 0;
}
section.edt-confirm .edt-confirm__reflabel {
	color: var(--sk-ink-3);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-overline);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}
section.edt-confirm .edt-confirm__ref {
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.015em;
}
section.edt-confirm .edt-confirm__copy {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 var(--sk-sp-4);
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: transparent;
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-button);
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	transition: border-color var(--sk-dur-1) var(--sk-ease-out), background-color var(--sk-dur-1) var(--sk-ease-out), color var(--sk-dur-1) var(--sk-ease-out);
}
section.edt-confirm .edt-confirm__copy:hover {
	border-color: var(--sk-ink);
	background: var(--sk-sunken);
}
section.edt-confirm .edt-confirm__copy:focus-visible {
	outline: var(--sk-bw-2) solid var(--sk-focus);
	outline-offset: 2px;
}
section.edt-confirm .edt-confirm__actions a { color: #fff; }
section.edt-confirm .edt-confirm__copy.is-copied {
	border-color: var(--sk-success);
	color: var(--sk-success);
}
section.edt-confirm .edt-confirm__summary {
	grid-column: 1 / -1;
	margin: 0;
	color: var(--sk-ink-2);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body);
}
section.edt-confirm .edt-confirm__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sk-sp-3);
	grid-column: 1 / -1;
	margin-top: var(--sk-sp-2);
}
section.edt-confirm .edt-receipt-foot { display: none; }

/* WooCommerce's own notice under the hero: 36.10's display-heading
   treatment is dropped to a lede. The text itself is untouched. */
.sekhem-woo-page .woocommerce .woocommerce-thankyou-order-received {
	color: var(--sk-ink-2);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-lede);
	font-weight: 400;
}

@media (max-width: 640px) {
	section.edt-confirm {
		grid-template-columns: minmax(0, 1fr);
		padding: var(--sk-sp-5);
	}
	section.edt-confirm .edt-confirm__badge { justify-self: start; }
	section.edt-confirm .edt-confirm__actions :is(a, button) { flex: 1 1 100%; }
}
/* ---- 38.5 Print receipt. UX: "Download receipt (PDF)" is one line of JS
   (window.print, assets/js/main.js); the browser's print dialog saves the
   sheet as PDF -- no PHP PDF library, no server-side file storage, nothing
   to secure. The printed sheet is this order-received page minus the site
   chrome: the confirmation hero (reference + tour/date/guests),
   WooCommerce's order-overview card (order number, date, total, payment
   method), the details table (item table + totals; the plugin's item meta
   carries the pickup location) and a print-only footer line with the site
   URL. ---- */

@media print {
	@page { margin: 1.5cm; }

	.edt-header,
	.edt-menu-overlay,
	.edt-footer,
	.skw,
	[data-tour-bar],
	#wpadminbar,
	.edt-listing-head,
	section.edt-confirm .edt-confirm__actions,
	section.edt-confirm .edt-confirm__copy,
	.screen-reader-text { display: none !important; }

	/* .edt-reveal elements that never entered the viewport would print
	   invisible (opacity 0); the receipt must not depend on scroll history. */
	.edt-reveal { opacity: 1 !important; transform: none !important; }

	html, body { background: #fff !important; }
	.sekhem-woo-page .edt-page-body { background: #fff; }

	/* Structure comes from borders, which print by default; backgrounds do
	   not, so the shadows and tinted fills are dropped cleanly. */
	.edt-confirm,
	.sekhem-woo-page .woocommerce ul.order_details,
	.sekhem-woo-page .woocommerce table.shop_table { box-shadow: none; }
	section.edt-confirm { break-inside: avoid; }
	.sekhem-woo-page .woocommerce table.shop_table tr { break-inside: avoid; }

	section.edt-confirm .edt-receipt-foot {
		display: block;
		margin: var(--sk-sp-6) 0 0;
		color: var(--sk-ink);
		font-family: var(--sk-font-body);
		font-size: var(--sk-fs-caption);
	}
}

/* ---- 38.6 Tracking page (page-tracking.php). The server renders the shell
   and the form only; .edt-track__result is filled by main.js from the
   plugin's rate-limited REST route -- no order data in the page source.
   Timeline scale note: labels at --sk-fs-body-sm (the nearest token to the
   requested "small" label size), dates at --sk-fs-meta. ---- */

.edt-track__form {
	display: grid;
	gap: var(--sk-sp-3);
	max-width: 34rem;
	margin: 0;
}
.edt-track__form label {
	display: block;
	margin: 0;
	color: var(--sk-ink);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
}
.edt-track__row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--sk-sp-2);
}
.edt-track__form input[type="text"] {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 0 14px;
	border: var(--sk-bw-1) solid var(--sk-line-strong);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-surface);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body);
	font-variant-numeric: tabular-nums;
	transition: border-color var(--sk-dur-1) var(--sk-ease-out), box-shadow var(--sk-dur-1) var(--sk-ease-out);
}
.edt-track__form input[type="text"]:hover { border-color: var(--sk-ink-3); }
.edt-track__form input[type="text"]:focus-visible {
	outline: var(--sk-bw-2) solid var(--sk-focus);
	outline-offset: 2px;
	border-color: var(--sk-accent);
	box-shadow: 0 0 0 3px rgba(168, 68, 42, .18);
}
.edt-track__form button[type="submit"]:disabled {
	color: var(--sk-ink-3) !important;
	background: var(--sk-sunken) !important;
	cursor: progress;
}
.edt-track__noscript {
	margin: 0;
	color: var(--sk-ink-2);
	font-family: var(--sk-font-body);
	font-size: var(--sk-fs-body-sm);
}
.edt-track__result {
	display: grid;
	gap: var(--sk-sp-5);
	max-width: 40rem;
	margin: var(--sk-sp-6) 0 0;
	font-family: var(--sk-font-body);
}
.edt-track__note {
	margin: 0;
	padding: var(--sk-sp-4) var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-inline-start: 3px solid var(--sk-warning);
	border-radius: var(--sk-r-sm);
	color: var(--sk-ink);
	background: var(--sk-info-tint);
	font-size: var(--sk-fs-body-sm);
}.edt-track__card {
	display: grid;
	gap: var(--sk-sp-4);
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}
.edt-track__statusline {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--sk-sp-2) var(--sk-sp-3);
	margin: 0;
}
.edt-track__status {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	padding: 0 var(--sk-sp-3);
	border-radius: var(--sk-r-pill);
	color: var(--sk-ink);
	background: var(--sk-surface-2);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
}
.edt-track__ref {
	color: var(--sk-ink);
	font-size: var(--sk-fs-price-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.015em;
}
.edt-track__summary {
	margin: 0;
	color: var(--sk-ink-2);
	font-size: var(--sk-fs-body);
}

/* Vertical timeline: a 2px --sk-line rail, milestone dots filled
   --sk-success when done, ringed --sk-accent when current, --sk-sunken when
   pending. Logical offsets throughout, so rtl.css needs nothing. */
.edt-track__timeline {
	position: relative;
	margin: 0;
	padding: var(--sk-sp-2) 0 0 var(--sk-sp-7);
	list-style: none;
}
.edt-track__timeline::before {
	content: "";
	position: absolute;
	top: var(--sk-sp-4);
	bottom: var(--sk-sp-4);
	inset-inline-start: 8px;
	width: 2px;
	background: var(--sk-line);
}
.edt-track__timeline li {
	position: relative;
	padding-block: 0 var(--sk-sp-5);
}
.edt-track__timeline li:last-child { padding-bottom: 0; }
.edt-track__timeline li::before {
	content: "";
	position: absolute;
	top: 3px;
	inset-inline-start: calc(-1 * var(--sk-sp-7) + 4px);
	width: 10px;
	height: 10px;
	border-radius: var(--sk-r-circle);
	background: var(--sk-sunken);
}
.edt-track__timeline li.is-done::before { background: var(--sk-success); }
.edt-track__timeline li.is-current::before {
	background: var(--sk-surface);
	box-shadow: 0 0 0 2px var(--sk-accent);
}
.edt-track__timeline li strong {
	display: block;
	color: var(--sk-ink);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
}
.edt-track__timeline .edt-track__when {
	display: block;
	margin-top: 2px;
	color: var(--sk-ink-3);
	font-size: var(--sk-fs-meta);
}

/* Review invitation (rendered only when the route says review_eligible). */
.edt-track__invite {
	display: grid;
	gap: var(--sk-sp-3);
	justify-items: start;
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-accent-tint-2);
	border-radius: var(--sk-r-md);
	background: var(--sk-accent-tint);
}
section.edt-track .edt-track__invite a { color: #fff; }
.edt-track__invite p {
	margin: 0;
	color: var(--sk-accent-ink);
	font-size: var(--sk-fs-body-sm);
	font-weight: 600;
}

@media (max-width: 640px) {
	.edt-track__row { grid-template-columns: minmax(0, 1fr); }
	.edt-track__row .edt-button { width: 100%; }
	.edt-track__card { padding: var(--sk-sp-5); }
}

/* ---------------------------------------------------------------------------

   39. FOOTER LEGAL ROW + ABOUT GUIDES + HEADER NAV SQUEEZE + DISABLED BUTTON

   v3.2.0 follow-ups. Additive only: every value comes off the §30 tokens and
   this layer lands after §38, so the file's later-wins cascade order is kept.

   Widths used: 640 / 900 for the guide grid (canonical), plus ONE
   non-canonical 1240px for the nav valve. 1240 is not a §6.1 breakpoint --
   it is the pill's own geometry (.edt-header-inner is
   width:min(1240px,100%-32px)), the same component-derived-edge trick the
   §33.7 sub-menu flip uses with 1121px. It gates one defensive display:none
   and nothing else.

   ------------------------------------------------------------------------- */

/* ---- 39.1 Footer legal row (footer.php bottom bar). Layout only: the
   links are descendants of .edt-footer-bottom, so §28's a rules (ink +
   underline + accent hover/focus-visible, ≥3:1 ring) already cover them. ---- */

.edt-footer-legal { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-sp-2) var(--sk-sp-5); }

/* ---- 39.2 About: Tour Guides section (page-about.php, rows from the
   plugin's sekhem_get_setting('guides')). Card convention 33.7 / 35.4:
   --sk-surface, 1px --sk-line, --sk-r-lg, --sk-e-1; grid 3/2/1 like every
   other card grid (5.4). Band rotation (35.1): portrait is --sk-page, so
   guides takes the alternate --sk-page-alt band before the dark CTA. The
   h2 em is covered by §3's .edt-scope h2 em (--sk-accent-ctx = accent,
   5.01:1 on page-alt). ---- */

.edt-guides { color: var(--sk-ink); background: var(--sk-page-alt); }

.edt-guides-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sk-gap-3); }

.edt-guide-card {
	display: grid;
	gap: var(--sk-sp-2);
	padding: var(--sk-sp-5);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
	box-shadow: var(--sk-e-1);
}

/* Name = card-title level (spec 4.3: guide cards, --sk-fs-h4, Fraunces 600);
   role = a muted fact line (4.3 meta). */
.edt-guide-card__name { margin: 0; color: var(--sk-ink); font-size: var(--sk-fs-h4); font-weight: 600; }
.edt-guide-card__role { margin: 0; color: var(--sk-ink-3); font-size: var(--sk-fs-meta); font-weight: 600; }

/* Contact links = the tertiary pattern (9.1): accent + underline, thickness
   grows on hover, never colour alone. 24px box keeps SC 2.5.8. */
.edt-guide-card__contact { display: grid; gap: var(--sk-sp-1); margin-top: var(--sk-sp-3); padding-top: var(--sk-sp-4); border-top: var(--sk-bw-1) solid var(--sk-line); }
.edt-guide-card__contact a {
	display: flex;
	align-items: center;
	min-height: 24px;
	color: var(--sk-accent);
	font-size: var(--sk-fs-meta);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: color var(--sk-dur-1) var(--sk-ease-out), text-decoration-thickness var(--sk-dur-1) var(--sk-ease-out);
}
.edt-guide-card__contact a:hover { color: var(--sk-accent-hover); text-decoration-thickness: 2px; }

@media (max-width: 900px) {
	.edt-guides-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sk-gap-2); }
}

@media (max-width: 640px) {
	.edt-guides-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---- 39.3 Header nav squeeze, 1121-1240px. The inline nav only renders
   above 1120 (§23 hides it below), but the pill caps at
   min(1240px, 100% - 32px), so 6+ top-level items collide with
   .edt-header-actions inside the 1121-1240 band. Two count-agnostic
   reliefs:

   - the item gap drops 24px (§37.4) -> 14px, and the nav/actions margin
     24px -> 16px, both only inside the band;
   - top-level items 7 and beyond hide from the pill. They are still in the
     fullscreen overlay: .edt-menu-overlay renders the same menu location
     through its own .edt-menu-overlay__nav markup, which this selector
     cannot reach. nth-child(n+7), not the nth-last-child variant: hiding
     must keep the FIRST six items (menu order is meaningful -- Home,
     Tours...) and drop the tail, exactly like every other overflow-to-
     overlay pattern on the site.

   No overflow-x:auto on .edt-nav -- it would clip the absolutely-positioned
   sub-menus. The <=900 world is untouched: the nav is display:none there,
   so §34.6's 274px pill arithmetic (brand + cart + toggle) is unaffected. ---- */

@media (max-width: 1240px) {
	.edt-nav, .edt-nav ul { gap: 14px; }
	.edt-nav { margin-inline-end: var(--sk-sp-4); }
	.edt-nav > ul > li:nth-child(n+7) { display: none; }
}

/* ---- 39.4 Buttons: the one real hole the Task-5 audit found. main.js
   disables the tracking form's .edt-button while a lookup is in flight
   (main.js:650) and re-enables it on settle (659/663), but nothing styled
   the disabled state, so the in-flight button looked fully pressable.
   The box copies §36.3's WooCommerce disabled treatment (sunken fill +
   muted label + not-allowed cursor -- never opacity alone). Later source
   order beats the variant/hover rules at equal specificity. ---- */

.edt-button:disabled, .edt-button[disabled] {
	border-color: var(--sk-line-2);
	color: var(--sk-ink-3);
	background: var(--sk-sunken);
	box-shadow: none;
	transform: none;
	cursor: not-allowed;
}
/* ---------------------------------------------------------------------------

   40. BUTTON ANCHOR COLOR GUARD + ORDER-RECEIVED / CHECKOUT POLISH

   §2's `.edt-scope a { color: inherit }` and §22's `.edt-article-body a`
   both sit at (0,1,1), which outspecifies every plain button-variant
   selector at (0,1,0) — so every <a> wearing .edt-button--* silently
   inherited the section's text colour instead of the variant's (the
   invisible navy CTA on the light PROMISE band: ink on ink, 0:1).
   Anchor-qualified selectors here tie those rules on specificity and win
   on source order; this layer is last, so nothing earlier can re-create
   the hole. Variant :hover / :active / :disabled rules sit at (0,2,0) >
   (0,1,1) and keep winning; <button> / <summary> elements never match an
   `a.`-qualified selector, so the plain variant rules still carry them.
   §37.1's a.edt-destination-card pattern is the same trick, one instance
   earlier.

   ------------------------------------------------------------------------- */

a.edt-button--gold { color: #fff; }
a.edt-button--navy { color: var(--edt-cream); }
a.edt-button--primary { color: #fff; }
a.edt-button--secondary { color: var(--sk-ink); }
a.edt-button--tertiary {
	color: var(--sk-accent);
	/* `.edt-scope a`'s text-decoration:none shorthand also reset the
	   tertiary underline's thickness + offset, so all longhands return. */
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

/* §4's text links, same hole. Both only looked right by coincidence (the
   inherited band colour happened to match the token); now deterministic. */
a.edt-text-link { color: var(--edt-ink); }
a.edt-text-link--dark { color: var(--edt-cream); }

/* ---- 40.2 Order-received polish (§38.4 overrides, equal specificity,
   later source order; markup in inc/woocommerce.php untouched). The badge
   entrance is transform/opacity only, on the §30 spring, switched off
   entirely under reduced motion. ---- */

@keyframes edt-confirm-badge-in {
	from { opacity: 0; transform: scale(.55); }
	to { opacity: 1; transform: scale(1); }
}

section.edt-confirm .edt-confirm__badge {
	width: 64px;
	height: 64px;
	animation: edt-confirm-badge-in var(--sk-dur-3) var(--sk-ease-spring) both;
}
section.edt-confirm .edt-confirm__badge svg { width: 30px; height: 30px; }

/* The reference is the line customers scan for: its own hairline band and
   one type step up (fs-price-md -> fs-h3); the summary keeps the body
   scale, one step below, clearly detached from the reference row. */
section.edt-confirm .edt-confirm__refline {
	border-top: var(--sk-bw-1) solid var(--sk-line);
	margin-top: var(--sk-sp-2);
	padding-top: var(--sk-sp-4);
}
section.edt-confirm .edt-confirm__ref { font-size: var(--sk-fs-h3); }
section.edt-confirm .edt-confirm__summary { margin-top: var(--sk-sp-1); }
section.edt-confirm .edt-confirm__actions { margin-top: var(--sk-sp-3); }

@media (prefers-reduced-motion: reduce) {
	section.edt-confirm .edt-confirm__badge { animation: none; }
}

/* ---- 40.3 Blocks checkout polish. .sekhem-woo-page is emitted on the
   blocks checkout too: inc/woocommerce.php's body_class callback keys on
   is_checkout(), which answers from the checkout PAGE ID — the same page
   the Checkout block is placed on. Per §38's rule, every selector is one
   class deeper than the block's own and wins on specificity, never on
   enqueue order. ---- */

/* Express-payment row (WooPayments / gateway sheets): one rhythm, no
   default list margins; the "or" divider line takes the muted ink. */
.sekhem-woo-page .wc-block-components-express-payment__event-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sk-sp-3);
}
.sekhem-woo-page .wc-block-components-express-payment__event-buttons > li { margin: 0; }
.sekhem-woo-page .wc-block-components-express-payment-continue-rule { color: var(--sk-ink-3); }

/* Place order: the same 52px full-width terminal action §36.8 gives the
   classic checkout's #place_order (that one is already width:100% /
   min-height:52px at 4585-4592 — this is the blocks counterpart). */
.sekhem-woo-page .wc-block-checkout__actions .wc-block-components-button:not(.is-link) { min-height: 52px; }

/* Order-summary sidebar: the §36.4 card convention (hairline + surface +
   --sk-r-lg + --sk-e-1's weight class via the border) and the 12px
   (--sk-sp-3) section rhythm from §38.2. */
.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper {
	padding: var(--sk-sp-6);
	border: var(--sk-bw-1) solid var(--sk-line);
	border-radius: var(--sk-r-lg);
	background: var(--sk-surface);
}
.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper > * + * { margin-top: var(--sk-sp-3); }

@media (max-width: 640px) {
	.sekhem-woo-page .wc-block-checkout__actions .wc-block-components-button:not(.is-link) { width: 100%; }
	.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper { padding: var(--sk-sp-5); }
}

/* ---------------------------------------------------------------------------

   41. CHECKOUT BLOCK -- ORDER SUMMARY + FLOATING-LABEL FIELDS

   Measured against WooCommerce 11.1.0's own bundles as this site serves
   them (assets/client/blocks/: packages-style.css, cart.css, checkout.css).
   Three of §40.3's assumptions did not survive it, and one tie in §36.2
   does not survive a reordered stylesheet -- the raw page currently prints
   edt.css before the block bundles (both in <head>), but LiteSpeed's CSS
   combine may merge and reorder them, so nothing here may depend on it.

   41.1  Empty totals rows. §40.3's sidebar card is (0,3,0). WooCommerce's
         own collapse -- `.wc-block-components-totals-wrapper:empty,
         :has(>:only-child:empty) { border-width:0; padding:0 }` in
         packages-style.css -- is (0,2,0) for the :empty branch, so every
         EMPTY fee/discount slot kept the 24px pad plus a 1px border: the
         ~50px phantom gap. Restated at (0,4,0) / (0,5,0) so the collapse no
         longer depends on which sheet prints last. Nothing can be hidden:
         :empty matches no content by definition, and it un-matches the
         instant a slow fee/shipping row paints into the wrapper. The class
         is only touched by padding/border-width -- never display. The
         .slot-wrapper branch restores WooCommerce's own transparent slot
         container (its base is padding:0, out-specified by §40.3), which
         was double-padding every populated slot row.

   41.2  Order summary. The block is locked to --wp--preset--font-size--
         small, which WP's default theme.json resolves to 13px here; the
         title is the medium preset (20px, weight 500). The block moves to
         the 15px body step and the title to --sk-fs-body at 600.
         WooCommerce's title-text rule is (0,3,0), hence the (0,4,0) below.

   41.3  Floating-label fields. Block text inputs put the label inside the
         box (absolute, top:25px) and the input's top padding IS the
         clearance for typed text: `padding:16px 12px` base, `24px 9px 8px`
         when .is-active. §36.2 asks for `padding:0 14px` at (0,2,1) -- a TIE
         with WooCommerce's own (0,2,1), so whenever the two sheets print
         the other way round the label sits on top of the text. Re-asserted
         at (0,3,0): above WooCommerce's base (0,2,1), below its .is-active
         (0,3,1) so the raised label keeps its own 24px, and identical to
         WooCommerce's own values so the resting state is unchanged.

   41.4  Address form. WooCommerce already ships `display:flex; flex-wrap:
         wrap; gap:0 12px` with `flex: 1 0 calc(50% - 12px)` per field, but
         the automatic minimum size is still in play, so one long label can
         push a field past its half and collide with (or hard-wrap) its
         neighbour. Re-asserted wrap on the row and min-width:0 on the
         fields -- the (0,4,0) is needed to out-rank WooCommerce's own
         three-class field rule.

   Scope: every selector sits under .sekhem-woo-page AND a .wc-block-* class
   that only the block checkout emits, so none of it can reach the classic
   shortcode checkout or any other page. No new breakpoints.

   ------------------------------------------------------------------------- */

/* ---- 41.1 Empty totals rows -- root cause of the reported gaps. ---- */

.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper:empty,
.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper.slot-wrapper {
	padding: 0;
	border-width: 0;
}

@supports selector( :has( * ) ) {
	.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-totals-wrapper:has( > *:only-child:empty ) {
		padding: 0;
		border-width: 0;
	}
}

/* ---- 41.2 Order-summary legibility, and the ring on the collapsible
   title (role="button" + tabIndex=0 below the large viewport). ---- */

.sekhem-woo-page .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block {
	font-size: var(--sk-fs-body-sm);
}

.sekhem-woo-page .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title-text {
	font-size: var(--sk-fs-body);
	font-weight: 600;
}

.sekhem-woo-page .wc-block-checkout__sidebar .wc-block-components-checkout-order-summary__title:focus-visible {
	outline: var(--sk-bw-2) solid var(--sk-focus);
	outline-offset: 2px;
}

/* ---- 41.3 Floating-label clearance. ---- */

.sekhem-woo-page .wc-block-components-text-input input {
	padding: var(--sk-sp-4) var(--sk-sp-3);
}

/* ---- 41.4 Address-form overlap guard. ---- */

.sekhem-woo-page :is( .wc-block-checkout__billing-fields, .wc-block-checkout__shipping-fields ) .wc-block-components-address-form {
	flex-wrap: wrap;
}

.sekhem-woo-page :is( .wc-block-checkout__billing-fields, .wc-block-checkout__shipping-fields ) .wc-block-components-address-form :is( .wc-block-components-text-input, .wc-block-components-select-input, .wc-block-components-state-input ) {
	min-width: 0;
}

/* ===========================================================================
   40. v3.3.0 ADDITIONS — mobile hero repair, traveller wall, gallery page.
   Appended so it wins the cascade without editing the rules above.
   =========================================================================== */

/* 40.1 Traveller wall (homepage #travellers) — CSS masonry via columns. */
.edt-travellers__wall { column-count: 4; column-gap: 16px; }
.edt-travellers__item { break-inside: avoid; margin: 0 0 16px; border-radius: 12px; overflow: hidden; background: var(--edt-sand, #efe9df); }
.edt-travellers__item img { display: block; width: 100%; height: auto; }
@media (max-width: 1120px) { .edt-travellers__wall { column-count: 3; } }
@media (max-width: 900px)  { .edt-travellers__wall { column-count: 2; column-gap: 12px; } .edt-travellers__item { margin-bottom: 12px; } }
@media (max-width: 480px)  { .edt-travellers__wall { column-count: 2; column-gap: 10px; } }

/* 40.2 Gallery page template. */
.edt-gallery-hero { min-height: clamp(20rem, 14rem + 24vw, 34rem); }
.edt-gallery-page__intro { max-width: 68ch; margin: 0 auto var(--sk-sp-8, 40px); text-align: center; color: var(--edt-muted, #6b6357); }
.edt-gallery-masonry { column-count: 3; column-gap: 18px; }
.edt-gallery-masonry__item { break-inside: avoid; margin: 0 0 18px; border-radius: 12px; overflow: hidden; }
.edt-gallery-masonry__link { display: block; }
.edt-gallery-masonry__item img { display: block; width: 100%; height: auto; transition: transform .5s var(--sk-ease-out, ease); }
.edt-gallery-masonry__link:hover img { transform: scale(1.04); }
@media (max-width: 900px) { .edt-gallery-masonry { column-count: 2; column-gap: 14px; } .edt-gallery-masonry__item { margin-bottom: 14px; } }
@media (max-width: 560px) { .edt-gallery-masonry { column-count: 1; } }

/* 40.3 MOBILE HERO REPAIR (<=640px).
   The stock hero centres its content inside a 100svh box while the stats,
   coordinate rail and scroll cue are absolutely positioned — on a phone those
   collide with each other, with the floating contact widgets, and the title
   ran under the floating header pill. Below 640px the hero now flows top-down
   with real top clearance for the header, the stats drop into normal flow
   under the actions, and the decorative rail is hidden. Bottom padding keeps
   the CTA clear of the fixed WhatsApp/Call widget stack. */
@media (max-width: 640px) {
	.edt-hero { height: auto; min-height: 100svh; max-height: none; }
	.edt-hero__content {
		justify-content: flex-start;
		height: auto;
		min-height: 100svh;
		padding-top: 104px;   /* clears the floating header pill */
		padding-bottom: 108px; /* clears the fixed contact-widget stack */
		box-sizing: border-box;
	}
	.edt-hero__title { max-width: 100%; }
	.edt-hero__lede { margin: 20px 0 26px; }
	.edt-hero__rail { display: none; }
	.edt-hero__stats {
		position: static;
		inset: auto;
		margin-top: 30px;
		gap: 26px;
	}
	.edt-hero__stats div { min-width: 0; }
	.edt-hero-filter { width: 100%; }
	/* Full-bleed tap targets, but keep the Search button out from under the
	   floating widget by letting the row wrap before the viewport edge. */
	.edt-hero-filter .edt-button { width: 100%; }
}
@media (max-width: 400px) {
	.edt-hero__content { padding-top: 96px; }
	.edt-hero__stats { gap: 18px; }
}


/* ===========================================================================
   41. v3.3.0 — checkout trust row, payment marks, order-received next-steps,
   print-only branded invoice header. Additive; own classes; print-safe.
   =========================================================================== */

.edt-checkout-trust { display:flex; flex-wrap:wrap; align-items:center; gap: var(--sk-sp-3, 12px) var(--sk-sp-4, 16px); margin:0 0 var(--sk-sp-4, 16px); padding: var(--sk-sp-4, 16px); border:1px solid var(--sk-line, #e2ddd3); border-radius: var(--sk-r-sm, 8px); background: var(--sk-surface, #fff); }
.edt-checkout-trust__line { display:flex; align-items:center; gap: var(--sk-sp-2, 8px); margin:0; color: var(--sk-ink-2, #4a453d); font-family: var(--sk-font-body, sans-serif); font-size: var(--sk-fs-body-sm, .9rem); line-height:1.5; }
.edt-checkout-trust__line svg { flex:0 0 auto; color: var(--sk-success, #2e7d32); }
.edt-pay-marks { display:inline-flex; gap:6px; margin-inline-start:auto; }
.edt-pay-marks svg { border:1px solid var(--sk-line, #e2ddd3); border-radius:3px; }

.edt-next-steps { margin: var(--sk-sp-6, 32px) 0 0; }
.edt-next-steps__title { margin:0 0 var(--sk-sp-4, 16px); color:var(--sk-ink, #1a1815); font-family:var(--sk-font-display, serif); font-size:var(--sk-fs-h3, 1.4rem); font-weight:500; }
.edt-next-steps__list { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sk-sp-4, 16px); margin:0; padding:0; list-style:none; }
.edt-next-steps__item { display:grid; grid-template-columns:auto 1fr; gap:var(--sk-sp-3, 12px); align-items:start; padding:var(--sk-sp-4, 16px); border:1px solid var(--sk-line, #e2ddd3); border-radius:var(--sk-r-lg, 14px); background:var(--sk-surface, #fff); }
.edt-next-steps__num { display:inline-grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--sk-accent, #a8442a); color:#fff; font-family:var(--sk-font-body, sans-serif); font-weight:700; font-size:14px; }
.edt-next-steps__body { display:grid; gap:4px; }
.edt-next-steps__body strong { color:var(--sk-ink, #1a1815); font-size:var(--sk-fs-body, 1rem); }
.edt-next-steps__body span { color:var(--sk-ink-2, #4a453d); font-size:var(--sk-fs-body-sm, .9rem); line-height:1.5; }
@media (max-width:760px){ .edt-next-steps__list{ grid-template-columns:1fr; } }

.edt-receipt-head { display:none; }
.edt-receipt-head__brand img { max-height:54px; width:auto; }

@media print {
	.edt-next-steps, .edt-checkout-trust { display:none !important; }
	.edt-receipt-head { display:flex !important; justify-content:space-between; align-items:flex-start; gap:24px; margin:0 0 16px; padding:0 0 12px; border-bottom:1px solid #999; }
	.edt-receipt-head__meta { text-align:right; font-size:11px; color:#333; }
	.edt-receipt-head__meta span { display:block; }
	.edt-receipt-head__brand strong { font-size:18px; }
}


/* ===========================================================================
   42. v3.3.0 — booking price wrapping. With the currency joined by a normal
   space (plugin helper), let it wrap between amount and currency, and never
   break inside the currency word; scale the big display price down on very
   narrow rails so it stays on as few lines as possible.
   =========================================================================== */
.edt-price strong,
.edt-price--rail strong,
.single-sekhem_tour .edt-tour-hero__price strong,
.edt-tour-bar__price strong { word-break: keep-all; overflow-wrap: normal; hyphens: none; }
@media (max-width: 480px) {
	.edt-price--rail strong,
	.single-sekhem_tour .edt-tour-hero__price strong { font-size: clamp(1.5rem, 6.5vw, 2rem); line-height: 1.05; }
}
