/* =========================================================================
   Makito Safaris & Adventures — Design System
   Plain CSS. Glassmorphism-first. No framework.
   Sections: 1 Tokens · 2 Reset/Base · 3 Type · 4 Utilities/Glass · 5 Buttons
             6 Header/Nav/Mega · 7 Hero · 8 Sections/Cards/Rails · 9 Forms
             10 Modals/Popups · 11 Footer · 12 Motion · 13 Responsive
   ========================================================================= */

/* ---- 1. TOKENS ---------------------------------------------------------- */
:root {
  /* Brand greens (from logo) */
  --green-900: #14241d;
  --green-800: #1d3028;
  --green-700: #284038;
  --green-600: #33564a;
  --green-500: #476b5c;
  --green-400: #608068;
  --green-300: #8aa895;

  /* Gold / brass accent */
  --gold-600: #a5822f;
  --gold-500: #c9a24b;
  --gold-400: #ddbd70;
  --gold-100: #f4e6c4;

  /* Neutrals */
  --ink: #16201c;
  --ink-soft: #3c4a44;
  --paper: #f7f5ef;
  --paper-2: #efece2;
  --white: #ffffff;

  /* Glass surfaces */
  --glass-tint: rgba(255, 255, 255, 0.55);
  --glass-tint-strong: rgba(255, 255, 255, 0.72);
  --glass-dark: rgba(20, 36, 29, 0.42);
  --glass-dark-strong: rgba(20, 36, 29, 0.72);
  --glass-border: rgba(255, 255, 255, 0.5);
  --glass-border-dark: rgba(255, 255, 255, 0.14);
  --glass-blur: 18px;

  /* Text */
  --text: var(--ink);
  --text-muted: #5b6862;
  --text-on-dark: rgba(255, 255, 255, 0.92);
  --text-on-dark-muted: rgba(255, 255, 255, 0.66);

  /* Type — single family sitewide (Plus Jakarta Sans), a paid proprietary competitor font */
  --font-display: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-ui: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* Radii */
  --r-sm: 10px;
  --r-md: 16px;
  --r-lg: 24px;
  --r-xl: 34px;
  --r-pill: 999px;

  /* Shadows (layered, soft) */
  --shadow-sm: 0 2px 8px rgba(20, 36, 29, 0.08);
  --shadow-md: 0 12px 30px -12px rgba(20, 36, 29, 0.28);
  --shadow-lg: 0 30px 70px -24px rgba(20, 36, 29, 0.45);
  --shadow-glass: 0 8px 32px rgba(16, 30, 24, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.45);

  /* Layout */
  --maxw: 1240px;
  --gutter: clamp(20px, 5vw, 64px);
  --header-h: 76px;
  --util-h: 40px;

  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---- 2. RESET / BASE ---------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; overflow-x: hidden; width: 100%; scrollbar-width: none; }
html::-webkit-scrollbar { width: 0; height: 0; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
body {
  font-family: var(--font-ui);
  color: var(--text);
  background: var(--paper);
  line-height: 1.6;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* overflow-x is clipped on <html> only — setting it here too would make
     the CSS overflow-xy auto-quirk turn <body> into its own scroll
     container, which silently breaks position:sticky (e.g. the package
     page sidebar) since it'd stick to the wrong scrolling ancestor. */
}
img, video, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; border: 0; background: none; }
input, textarea, select { font: inherit; color: inherit; }
ul, ol { list-style: none; padding: 0; }
:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 3px; border-radius: 4px; }

/* Ambient paper texture behind everything */
body::before {
  content: "";
  position: fixed; inset: 0; z-index: -2;
  background:
    radial-gradient(1200px 700px at 80% -10%, rgba(96,128,104,0.16), transparent 60%),
    radial-gradient(1000px 800px at -10% 100%, rgba(201,162,75,0.10), transparent 55%),
    var(--paper);
}

/* ---- 3. TYPOGRAPHY ------------------------------------------------------ */
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; color: var(--green-800); }
h1 { font-size: clamp(2.4rem, 5.6vw, 4.4rem); }
h2 { font-size: clamp(1.9rem, 3.6vw, 2.8rem); }
h3 { font-size: clamp(1.3rem, 2.2vw, 1.7rem); }
h4 { font-size: clamp(1.1rem, 1.5vw, 1.3rem); }
p { color: var(--text-muted); }

.eyebrow {
  font-family: var(--font-ui);
  font-size: .78rem; font-weight: 700;
  letter-spacing: .22em; text-transform: uppercase;
  color: var(--gold-600);
  display: inline-flex; align-items: center; gap: .6em;
}
.eyebrow::before { content: ""; width: 26px; height: 1px; background: var(--gold-500); display: inline-block; }
.eyebrow.center::after { content: ""; width: 26px; height: 1px; background: var(--gold-500); display: inline-block; }
.lead { font-size: 1.12rem; color: var(--text-muted); max-width: 60ch; }
.serif-accent { font-weight: 800; font-style: italic; color: var(--gold-500); }

/* ---- 4. LAYOUT UTILITIES + GLASS --------------------------------------- */
.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: clamp(64px, 9vw, 128px); position: relative; }
.section--tight { padding-block: clamp(48px, 6vw, 84px); }
.section-head { max-width: 62ch; margin-bottom: clamp(32px, 5vw, 56px); }
.section-head.center { margin-inline: auto; text-align: center; }
.section-head h2 { margin-top: .5rem; }
.section-head p { margin-top: 1rem; }

.grid { display: grid; gap: clamp(18px, 2.4vw, 30px); }
.cols-2 { grid-template-columns: repeat(2, 1fr); }
.cols-3 { grid-template-columns: repeat(3, 1fr); }
.cols-4 { grid-template-columns: repeat(4, 1fr); }
.text-gold { color: var(--gold-600); }
.text-center { text-align: center; }

/* Glass surfaces */
.glass {
  background: var(--glass-tint);
  backdrop-filter: blur(var(--glass-blur)) saturate(140%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-glass);
}
.glass-dark {
  background: var(--glass-dark);
  backdrop-filter: blur(var(--glass-blur)) saturate(140%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
  border: 1px solid var(--glass-border-dark);
  color: var(--text-on-dark);
}
.hairline { height: 1px; background: linear-gradient(90deg, transparent, rgba(201,162,75,.5), transparent); border: 0; }

/* ---- 5. BUTTONS --------------------------------------------------------- */
.btn {
  --btn-bg: var(--green-700);
  --btn-fg: #fff;
  display: inline-flex; align-items: center; justify-content: center; gap: .55em;
  padding: .85em 1.5em;
  font-family: var(--font-ui); font-weight: 600; font-size: .95rem; letter-spacing: .01em;
  border-radius: var(--r-pill);
  background: var(--btn-bg); color: var(--btn-fg);
  box-shadow: var(--shadow-md);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .3s var(--ease);
  will-change: transform;
}
.btn:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); --btn-bg: var(--green-800); }
.btn:active { transform: translateY(0) scale(.97); box-shadow: var(--shadow-sm); filter: brightness(.92); transition-duration: .12s; }
.btn svg { width: 1.05em; height: 1.05em; }
.btn--gold { --btn-bg: var(--gold-500); --btn-fg: #2a2410; }
.btn--gold:hover { --btn-bg: var(--gold-600); }
.btn--ghost { --btn-bg: transparent; --btn-fg: var(--green-800); border: 1px solid rgba(40,64,56,.28); box-shadow: var(--shadow-sm); transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease); }
.btn--ghost:hover { background: rgba(40,64,56,.08); border-color: var(--green-700); color: var(--green-900); box-shadow: var(--shadow-md); }
.btn--glass {
  background: var(--glass-tint); color: var(--green-800);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-glass);
}
.btn--glass:hover { background: var(--glass-tint-strong); box-shadow: var(--shadow-md); }
.btn--on-dark { --btn-fg: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.3); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--shadow-sm); transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .3s var(--ease), border-color .3s var(--ease); }
.btn--on-dark:hover { background: rgba(255,255,255,.26); border-color: rgba(255,255,255,.5); box-shadow: var(--shadow-md); }
.btn--sm { padding: .6em 1.1em; font-size: .85rem; }
.btn--lg { padding: 1em 1.9em; font-size: 1.02rem; }
.btn--block { width: 100%; }


.chip { display: inline-flex; align-items: center; gap: .4em; padding: .35em .8em; border-radius: var(--r-pill);
  font-size: .78rem; font-weight: 600; background: rgba(40,64,56,.08); color: var(--green-700); }
.chip--gold { background: rgba(201,162,75,.16); color: var(--gold-600); }

/* ---- 6. HEADER / NAV / MEGA-MENU --------------------------------------- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 100; transition: transform .4s var(--ease); }

/* utility bar */
.util-bar {
  height: var(--util-h);
  display: flex; align-items: center; justify-content: space-between;
  font-size: .8rem; color: var(--text-on-dark-muted);
  border-bottom: 1px solid rgba(255,255,255,.1);
  transition: color .4s var(--ease), border-color .4s var(--ease);
}
.util-bar .container { display: flex; align-items: center; justify-content: space-between; width: 100%; }
.util-left, .util-right { display: flex; align-items: center; gap: 1.4rem; }
.util-item { display: inline-flex; align-items: center; gap: .45em; transition: color .25s; }
.util-item:hover { color: var(--gold-400); }
.util-item--wa { color: #3ddc7a; }
.util-item--wa:hover { color: #2fc767; }
.site-header.scrolled .util-item--wa { color: #1da851; }
.site-header.scrolled .util-item--wa:hover { color: #178a42; }
.util-item svg { width: 15px; height: 15px; }
.util-badge { color: var(--gold-400); font-weight: 600; }
.util-sep { width: 1px; height: 14px; background: rgba(255,255,255,.22); }

/* working currency / language dropdowns */
.util-dd { position: relative; }
.util-dd-btn { display: inline-flex; align-items: center; gap: .35em; background: transparent; border: 0; color: inherit; font: inherit; cursor: pointer; padding: .2em 0; }
.util-dd-btn svg { width: 11px; height: 11px; opacity: .75; transition: transform .25s var(--ease); }
.util-dd.open .util-dd-btn svg { transform: rotate(180deg); }
.util-dd-panel {
  position: absolute; top: calc(100% + 12px); right: -10px; z-index: 30; width: 220px; max-height: 340px; overflow-y: auto;
  scrollbar-width: none;
  border-radius: 16px; padding: 8px; background: rgba(255, 255, 255, 0.5);
  backdrop-filter: blur(24px) saturate(180%); -webkit-backdrop-filter: blur(24px) saturate(180%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.5);
  opacity: 0; visibility: hidden; transform: translateY(6px); pointer-events: none;
  transition: opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
}
.util-dd.open .util-dd-panel { opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; }
.util-dd-panel::-webkit-scrollbar { width: 0; height: 0; }
.util-dd-option { display: flex; align-items: center; gap: .65em; width: 100%; padding: .55em .7em; border-radius: 10px; font-size: .87rem; color: var(--green-800); text-align: left; }
.util-dd-option:hover { background: rgba(40,64,56,.08); }
.util-dd-option.active { background: rgba(201,162,75,.16); color: var(--gold-600); font-weight: 700; }
.util-dd-flag { font-size: 1.15em; line-height: 1; }
.util-dd-name { flex: 1; }
.util-dd-code { font-size: .74rem; color: var(--text-muted); }
.util-dd-search { display: flex; align-items: center; gap: .5em; padding: .5em .7em; margin-bottom: 4px;
  border-radius: 10px; background: rgba(40,64,56,.06); }
.util-dd-search svg { width: 14px; height: 14px; color: var(--text-muted); flex-shrink: 0; }
.util-dd-search input { background: none; border: 0; font-size: .85rem; width: 100%; color: var(--green-800); }
.util-dd-search input::placeholder { color: var(--text-muted); }
.util-dd-region { display: flex; align-items: center; justify-content: space-between; width: 100%;
  padding: .5em .7em; font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--gold-600); }
.util-dd-region svg { width: 11px; height: 11px; transition: transform .25s var(--ease); }
.util-dd-region.collapsed svg { transform: rotate(-90deg); }
.util-dd-region-items { display: flex; flex-direction: column; }
.util-dd-region.collapsed + .util-dd-region-items { display: none; }

/* main nav */
.nav {
  height: var(--header-h);
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
  transition: color .4s var(--ease);
}
.nav .container { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; width: 100%; }
.nav-logo { flex-shrink: 0; display: flex; align-items: center; }
.nav-logo img { height: 42px; width: auto; transition: opacity .3s; }
.logo-white { display: block; }
.logo-green { display: none; }

.nav-menu { display: flex; align-items: center; gap: .3rem; }
.nav-link {
  position: relative; white-space: nowrap;
  display: inline-flex; align-items: center; gap: .35em;
  padding: .55em .8em; border-radius: var(--r-pill);
  font-weight: 600; font-size: .92rem; color: var(--text-on-dark);
  transition: background .25s, color .25s;
}
.nav-link svg.caret { width: 12px; height: 12px; opacity: .7; transition: transform .3s var(--ease); }
.nav-link:hover { background: rgba(255,255,255,.12); }
.has-mega.open .caret, .has-mega:focus-within .caret { transform: rotate(180deg); }
.nav-cta { display: flex; align-items: center; gap: .6rem; flex-shrink: 0; }

/* scrolled / solid state (frosted light) */
.site-header.scrolled { box-shadow: var(--shadow-md); }
.site-header.scrolled .util-bar,
.site-header.scrolled .nav-solid-bg { }
.nav-solid-bg { position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .4s var(--ease);
  background: var(--glass-tint-strong); backdrop-filter: blur(20px) saturate(150%); -webkit-backdrop-filter: blur(20px) saturate(150%);
  border-bottom: 1px solid var(--glass-border); }
.site-header.scrolled .nav-solid-bg { opacity: 1; }
.site-header.scrolled .util-bar { color: var(--text-muted); border-color: rgba(40,64,56,.12); }
.site-header.scrolled .util-item:hover { color: var(--gold-600); }
.site-header.scrolled .util-badge { color: var(--gold-600); }
.site-header.scrolled .util-sep { background: rgba(40,64,56,.18); }
.site-header.scrolled .nav-link { color: var(--green-800); }
.site-header.scrolled .nav-link:hover { background: rgba(40,64,56,.07); }
.site-header.scrolled .logo-white { display: none; }
.site-header.scrolled .logo-green { display: block; }
/* pages without a dark hero start solid */
.site-header.solid .logo-white { display: none; }
.site-header.solid .logo-green { display: block; }

/* mega dropdown — reference-matched pattern: left list of sub-items (verified live by
   hovering every reference nav item), right detail panel that swaps title/desc/
   image/CTA as each list item is hovered/focused. */
.mega {
  position: absolute; left: 50%; top: calc(100% + 6px); transform: translateX(-50%) translateY(8px);
  width: min(760px, 94vw);
  border-radius: var(--r-lg);
  padding: 20px;
  background: var(--glass-tint-strong);
  backdrop-filter: blur(30px) saturate(180%); -webkit-backdrop-filter: blur(30px) saturate(180%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.5);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
  display: grid; grid-template-columns: 1fr 1.5fr; gap: 8px;
}
.has-mega { position: static; }
/* opening is driven by JS (initMegaA11y) via the .open class — see comment
   there for why plain CSS :hover breaks across the gap to this panel.
   :focus-within stays for keyboard users tabbing through the list. */
.has-mega:focus-within .mega, .has-mega.open .mega {
  opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0);
}
.has-mega.open .nav-link, .has-mega:focus-within .nav-link { background: rgba(255,255,255,.12); }
.site-header.scrolled .has-mega.open .nav-link, .site-header.scrolled .has-mega:focus-within .nav-link { background: rgba(40,64,56,.07); }

.mega-list { display: flex; flex-direction: column; gap: 1px; padding-right: 14px; border-right: 1px solid rgba(40,64,56,.1); }
.mega-list-item {
  display: flex; align-items: center; justify-content: space-between; gap: .6em; width: 100%;
  padding: .68em .7em; border-radius: 12px; text-align: left; transition: background .2s;
}
.mega-list-item:hover, .mega-list-item:focus-visible, .mega-list-item.active { background: rgba(40,64,56,.08); }
.mega-list-item.active { background: rgba(201,162,75,.14); }
.mega-list-item span:first-child { font-size: .9rem; font-weight: 600; color: var(--green-800); line-height: 1.25; }
.mega-list-item svg.mli-chev { flex-shrink: 0; width: 13px; height: 13px; color: var(--text-muted); opacity: .6; }
.mega-badge { flex-shrink: 0; font-size: .64rem; font-weight: 700; letter-spacing: .02em; padding: .28em .55em; border-radius: var(--r-pill); background: rgba(201,162,75,.18); color: var(--gold-600); white-space: nowrap; }

.mega-detail { display: grid; grid-template-columns: 1.2fr 1fr; gap: 16px; padding-left: 18px; align-items: center; }
.mega-detail-title { font-size: 1.1rem; font-weight: 800; color: var(--green-800); margin-bottom: .5rem; }
.mega-detail-desc { font-size: .86rem; color: var(--text-muted); line-height: 1.55; margin-bottom: 1rem; }
.mega-detail-cta { display: inline-flex; align-items: center; gap: .5em; padding: .65em 1.1em; border-radius: var(--r-pill); white-space: nowrap;
  background: var(--green-700); color: #fff; font-size: .85rem; font-weight: 700; transition: background .2s, transform .2s; }
.mega-detail-cta:hover { background: var(--green-600); transform: translateY(-1px); }
.mega-detail-cta svg { width: 13px; height: 13px; }
.mega-detail-media { position: relative; border-radius: var(--r-md); overflow: hidden; aspect-ratio: 4/3.3; }
.mega-detail-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .3s var(--ease); }
.mega-detail-media img.active { opacity: 1; }
.mega-detail-body { opacity: 0; transition: opacity .2s var(--ease); }
.mega-detail-body.active { opacity: 1; }

/* mobile nav — legacy toggle kept only as a no-op fallback, real UI is the bottom tab bar below */

/* ---- iOS-style floating bottom tab bar (mobile) ------------------------- */
.mob-nav-wrap { display: none; }
@media (max-width: 900px) {
  .mob-nav-wrap {
    display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 150;
    padding: 0 16px calc(14px + env(safe-area-inset-bottom, 0px));
    pointer-events: none;
    /* Keep it on a stable compositing layer so iOS Safari doesn't drop the
       fixed bar during scroll repaints. No `will-change` (leaving it on
       permanently makes Chrome evict/re-promote the layer, which itself
       causes flicker). */
    transform: translateZ(0); -webkit-transform: translateZ(0);
    backface-visibility: hidden; -webkit-backface-visibility: hidden;
  }
  .mob-pill {
    pointer-events: auto; position: relative; max-width: 420px; margin: 0 auto;
    height: 62px; border-radius: 26px; display: flex; align-items: stretch; overflow: visible;
    /* Near-opaque solid fill, no backdrop-filter: sampling the playing hero
       video with backdrop blur made this bar flicker/vanish on mobile GPUs
       whenever it overlapped the video. A solid fill always paints. */
    background: rgba(18, 30, 25, 0.97);
    border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 16px 40px rgba(0,0,0,.38), 0 2px 8px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.08);
  }
  .mob-pill::before {
    content: ""; position: absolute; top: 0; left: 18px; right: 18px; height: 1px; z-index: 4;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.16), rgba(255,255,255,.26), rgba(255,255,255,.16), transparent);
  }
  .mob-indicator {
    position: absolute; top: -20px; left: 50%; width: 50px; height: 50px; margin-left: -25px;
    border-radius: 50%; z-index: 2;
    background: var(--gold-500);
    box-shadow: 0 8px 20px rgba(201,162,75,.5), 0 3px 8px rgba(201,162,75,.35), inset 0 1px 0 rgba(255,255,255,.35);
    transition: left .55s cubic-bezier(.5,1.7,.42,.95), transform .4s cubic-bezier(.34,1.6,.64,1);
    will-change: left, transform;
  }
  .mob-pill.is-moving .mob-indicator { transform: scale(1.08, .92); }
  .mob-tab {
    position: relative; z-index: 3; flex: 1 1 0; min-width: 0; display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 3px; height: 100%; -webkit-tap-highlight-color: transparent;
    /* zero the UA <button> padding/appearance so the two action tabs (Plan,
       Menu, which are <button>s) are the exact same width as the <a> tabs.
       Otherwise buttons stay ~12px wider, pushing the whole row off-centre so
       the active Home tab (and its gold circle) no longer lines up with the
       viewport centre / hero Scroll indicator. */
    padding: 0; appearance: none; -webkit-appearance: none;
  }
  .mob-lbl { white-space: nowrap; }
  .mob-tab .mob-ic { display: flex; transition: transform .4s cubic-bezier(.34,1.6,.64,1); }
  .mob-tab .mob-ic svg { width: 20px; height: 20px; stroke: rgba(255,255,255,.55); transition: stroke .3s; }
  .mob-tab.active .mob-ic { transform: translateY(-15px); }
  .mob-tab.active .mob-ic svg { stroke: #1d3028; }
  .mob-lbl { font-size: .66rem; font-weight: 600; color: rgba(255,255,255,.58); transition: color .3s; }
  .mob-tab.active .mob-lbl { color: var(--gold-400); font-weight: 700; }
  /* Clearance for the fixed bottom nav lives on the footer (not body padding)
     so the space below the last content is the footer's own green, not the
     paper body background showing as a white band under the footer. Sized to
     clear the bottom nav (~92px) *and* the support-fab launcher above it
     (bottom:106px + ~46px avatar ≈ reaches 152px up), not just the nav bar —
     otherwise the "Designed with... by..." credit line sits right behind it. */
  body { padding-bottom: 0; }
  .site-footer { padding-bottom: calc(190px + env(safe-area-inset-bottom, 0px)); }
}

/* mobile "Menu" sheet — same clear glass language as every other modal */
.mob-sheet-scrim {
  position: fixed; inset: 0; z-index: 149; background: rgba(20,36,29,.32);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  opacity: 0; visibility: hidden; transition: opacity .35s var(--ease), visibility .35s;
}
.mob-sheet-scrim.open { opacity: 1; visibility: visible; }
.mob-sheet {
  position: fixed; left: 12px; right: 12px; bottom: calc(88px + env(safe-area-inset-bottom, 0px));
  max-height: 68vh; overflow-y: auto; scrollbar-width: none; border-radius: 28px; z-index: 150;
  padding: 18px 16px calc(18px + env(safe-area-inset-bottom, 0px));
  /* iOS-style translucent "material": more see-through than the standard
     glass tint, with a heavier blur + saturation so the content behind
     shows as a soft frosted wash rather than a near-solid panel. */
  background: rgba(255, 255, 255, 0.52);
  backdrop-filter: blur(40px) saturate(180%); -webkit-backdrop-filter: blur(40px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.6);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.6);
  transform: translateY(16px) scale(.98); opacity: 0; visibility: hidden;
  transition: transform .4s var(--ease-out), opacity .35s var(--ease), visibility .4s;
}
.mob-sheet-scrim.open .mob-sheet { transform: translateY(0) scale(1); opacity: 1; visibility: visible; }
.mob-sheet-handle { width: 38px; height: 4px; border-radius: var(--r-pill); background: rgba(40,64,56,.22); margin: 0 auto 14px; }
.mob-sheet .m-acc { border-bottom: 1px solid rgba(40,64,56,.1); }
.mob-sheet .m-acc-head { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: .95rem .2rem; font-weight: 700; font-size: 1.05rem; color: var(--green-800); }
.mob-sheet .m-acc-head svg { width: 16px; height: 16px; transition: transform .3s; color: var(--gold-600); }
.mob-sheet .m-acc.open .m-acc-head svg { transform: rotate(45deg); }
.mob-sheet .m-acc-body { max-height: 0; overflow: hidden; transition: max-height .4s var(--ease); }
.mob-sheet .m-acc.open .m-acc-body { max-height: 420px; }
.mob-sheet .m-acc-body a { display: block; padding: .5rem .2rem .5rem 1rem; color: var(--text-muted); font-size: .92rem; }
.mob-sheet-simple { display: flex; flex-direction: column; }
.mob-sheet-simple a { padding: .8rem .2rem; font-weight: 700; font-size: 1.02rem; color: var(--green-800); border-bottom: 1px solid rgba(40,64,56,.1); }
.mob-sheet-foot { display: flex; justify-content: space-between; gap: .8rem; margin-top: 1rem; }
.mob-sheet-foot select { flex: 1; padding: .6em .8em; border-radius: var(--r-sm); background: rgba(255,255,255,.5); border: 1px solid rgba(40,64,56,.16); font-size: .85rem; }

/* ---- 7. HERO ------------------------------------------------------------ */
.hero { position: relative; min-height: 100svh; display: flex; align-items: center; overflow: hidden; color: #fff; }
.hero-media { position: absolute; inset: 0; z-index: -1; }
.hero-media video, .hero-media img { width: 100%; height: 100%; object-fit: cover; }
.hero-media::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(20,36,29,.6) 0%, rgba(20,36,29,.42) 35%, rgba(20,36,29,.5) 60%, rgba(20,36,29,.9) 100%); }
.hero-inner { width: 100%; padding-bottom: 110px; padding-top: calc(var(--header-h) + var(--util-h) + 24px); }
.hero h1 { color: #fff; max-width: 16ch; }
.hero-rotator { transition: opacity .5s var(--ease), transform .5s var(--ease); }
.hero-rotator.is-swapping { opacity: 0; transform: translateY(10px); }
.hero .lead { color: var(--text-on-dark); margin-top: 1.2rem; max-width: 52ch; }
.hero-eyebrow { color: var(--gold-400); }
.hero-eyebrow::before { background: var(--gold-400); }
.hero-actions { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: .9rem; }
/* compact trust strip shown inside the hero on phones/tablets, so the key
   proof points are visible on first paint without scrolling. Hidden on
   desktop, where the full trust section already sits near the fold. */
.hero-trust { display: none; }

/* On phones the full-height hero centres the headline over the brightest
   middle of the video, where white text washes out. Darken the scrim more
   so the H1/lead/eyebrow/trust strip stay legible on any video frame. */
@media (max-width: 900px) {
  .hero-media::after {
    background: linear-gradient(180deg, rgba(20,36,29,.64) 0%, rgba(20,36,29,.52) 40%, rgba(20,36,29,.6) 65%, rgba(20,36,29,.92) 100%);
  }
}
.hero-scroll { position: absolute; z-index: 10; left: 50%; bottom: 108px; transform: translateX(-50%); color: rgba(255,255,255,.85); font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; display: flex; flex-direction: column; align-items: center; gap: .5rem; text-shadow: 0 1px 8px rgba(0,0,0,.4);
  animation: scrollBob 2.8s ease-in-out infinite; }
@keyframes scrollBob {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(9px); }
}
.hero-scroll .mouse { width: 22px; height: 34px; border: 1.5px solid rgba(255,255,255,.5); border-radius: 12px; position: relative; }
.hero-scroll .mouse::after { content: ""; position: absolute; top: 6px; left: 50%; transform: translateX(-50%); width: 3px; height: 6px; background: #fff; border-radius: 2px; animation: scrollDot 1.8s var(--ease) infinite; }
@keyframes scrollDot { 0% { opacity: 0; transform: translate(-50%, 0); } 40% { opacity: 1; } 80% { opacity: 0; transform: translate(-50%, 10px); } 100% { opacity: 0; } }
/* desktop: hero sized tall and immersive while keeping the trust stats
   visible below it, so the intro heading stays below the fold until scroll */
@media (min-width: 901px) {
  .hero { min-height: clamp(700px, 98vh, 920px); }
  #after-hero { padding-block: 24px 24px; }
}

/* floating enquiry / booking bar */
.hero-booking-wrap { margin-top: -46px; }
.booking-bar {
  position: relative; z-index: 5;
  padding: 20px; border-radius: var(--r-lg);
  display: grid; grid-template-columns: repeat(4, 1fr) auto; gap: 14px; align-items: end;
}
.bf-field { display: flex; flex-direction: column; gap: .3rem; }
.bf-field label { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--green-700); }
.bf-field select, .bf-field input {
  padding: .7em .8em; border-radius: var(--r-sm); border: 1px solid rgba(40,64,56,.16);
  background: rgba(255,255,255,.6); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  font-size: .92rem; transition: border-color .25s, box-shadow .25s;
}
.bf-field select:focus, .bf-field input:focus { outline: none; border-color: var(--gold-500); box-shadow: 0 0 0 3px rgba(201,162,75,.2); }

/* trust strip */
.trust { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(20px, 5vw, 64px); }
.trust-item { display: flex; align-items: center; gap: .7rem; color: var(--text-muted); font-size: .9rem; }
.trust-item strong { display: block; font-family: var(--font-display); font-size: 1.6rem; color: var(--green-800); line-height: 1; }
.trust-stars { color: var(--gold-500); letter-spacing: 2px; }

/* certification / credential strip */
.cert-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.1rem 2.6rem;
  margin-top: 1.1rem; padding-top: 1.1rem; border-top: 1px solid rgba(40,64,56,.1); }
.cert-item { display: flex; align-items: center; gap: .55em; font-size: .84rem; font-weight: 600; color: var(--green-700); }
.cert-item svg { width: 18px; height: 18px; color: var(--gold-500); flex-shrink: 0; }
@media (max-width: 680px) {
  .cert-strip { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1rem; text-align: left; }
  .cert-item { font-size: .8rem; }
  .trust { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem 1rem; }
  /* homepage trust row has 5 items (odd), so the last one spans both
     columns and centers; other .trust instances (e.g. kilimanjaro.html)
     have an even count and fill the 2-col grid naturally. */
  #after-hero .trust-item:last-child { grid-column: 1 / -1; justify-content: center; text-align: center; }
}

/* traveller persona split cards */
.persona-card { min-height: 300px; }
.persona-card .gateway-card-body p { max-width: 34ch; }

/* ---- 8. CARDS / RAILS --------------------------------------------------- */
.rail-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: clamp(24px, 4vw, 44px); }
.rail-controls { display: flex; gap: .6rem; }
.rail-btn { width: 46px; height: 46px; border-radius: var(--r-pill); display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(40,64,56,.2); background: rgba(255,255,255,.5); box-shadow: var(--shadow-sm); transition: background .25s, transform .25s, opacity .25s, box-shadow .25s; }
.rail-btn:hover { background: var(--green-700); color: #fff; border-color: var(--green-700); transform: translateY(-2px); box-shadow: var(--shadow-md); }
.rail-btn:active { transform: translateY(0) scale(.95); filter: brightness(.92); }
.rail-btn svg { width: 20px; height: 20px; }
.rail { display: flex; gap: clamp(16px, 2vw, 24px); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 8px; scrollbar-width: none;
  /* cards dissolve at both edges instead of being sharply cut by the container */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%); }
/* cards inside a scrolling rail skip their resting drop-shadow, it just
   reads as a dark smear trailing the row while it auto-scrolls */
.rail .card, .rail .quote { box-shadow: none; }
.rail .card:hover { box-shadow: none; }
.rail::-webkit-scrollbar { display: none; }
.rail > * { scroll-snap-align: start; flex: 0 0 clamp(280px, 32%, 380px); }
.rail.auto-scroll { scroll-snap-type: none; cursor: grab; }

/* reviews marquee: full-bleed auto-scroll strip with a soft fade at both edges */
/* reviews wall — three offset columns of compact review cards drifting
   bottom-to-top over a faint African mud-cloth pattern, fading out at both
   ends. Hover pauses the drift so reviews can actually be read. */
.reviews-wall {
  position: relative; height: clamp(480px, 68vh, 640px); overflow: hidden; padding: 0 var(--gutter);
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 9%, #000 91%, transparent 100%);
}
/* scattered African motifs behind the cards, one colour, one tone: the
   continent, acacia, elephant, giraffe, kilimanjaro, bird, footprints */
.reviews-wall::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .055;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='340' height='340' viewBox='0 0 340 340' fill='none' stroke='%231d3028' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M56 18l10-6 12 3 9 9-2 10 6 9-3 12-8 8-4 12-8 3-6-8-1-11-7-9 1-12z'/%3E%3Cpath d='M180 62h44M202 62V26m0 0l-14 10m14-10l15 9m-24 27l-8 26m26-26l7 26'/%3E%3Cpath d='M52 208c0-12 10-20 24-20 6 0 8-6 16-6 10 0 18 8 18 18v22m-50 0v-16m14 16v-12m22 12v-14m-44-18c-6 0-10 4-10 9 0 4 3 6 6 6'/%3E%3Cpath d='M258 132l10-26 4 26 12 4-12 5-2 42m-8-42l-4 42m-2-51l-8-4 8-2z'/%3E%3Cpath d='M138 306l28-38 14 16 10-11 26 33z'/%3E%3Cpath d='M262 246c8-8 22-8 26 2-8 4-14 2-18 8l-8 12-4-10z'/%3E%3Ccircle cx='84' cy='300' r='3.4'/%3E%3Ccircle cx='96' cy='288' r='3.4'/%3E%3Ccircle cx='108' cy='300' r='3.4'/%3E%3Ccircle cx='96' cy='310' r='2.6'/%3E%3Cpath d='M296 40c-14 2-24 12-26 26 14-2 24-12 26-26z'/%3E%3Cpath d='M283 53c-3 8-3 16 0 22'/%3E%3C/svg%3E");
  background-size: 340px 340px;
}
.reviews-wall-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 1.8vw, 22px); max-width: 1160px; margin: 0 auto; height: 100%; }
.wall-col { overflow: hidden; }
.wall-col-2 { padding-top: 72px; }
.wall-col-3 { padding-top: 34px; }
.wall-track { display: flex; flex-direction: column; gap: clamp(14px, 1.8vw, 22px); animation: wallDrift 46s linear infinite; }
/* middle column flows the other way, each at its own speed — the columns
   pass each other in a slow, continuous weave */
.wall-col-2 .wall-track { animation-duration: 58s; animation-delay: -18s; animation-direction: reverse; }
.wall-col-3 .wall-track { animation-duration: 51s; animation-delay: -33s; }
@keyframes wallDrift { from { transform: translateY(0); } to { transform: translateY(-50%); } }
/* compact flat cards (no shadow), slight alternating tilt */
.reviews-wall .quote { padding: 1.1rem 1.2rem; box-shadow: none; }
.reviews-wall .quote .q { font-size: .84rem; line-height: 1.5; }
.reviews-wall .quote .who img { width: 34px; height: 34px; }
.reviews-wall .quote .who strong { font-size: .84rem; }
.reviews-wall .quote .who span { font-size: .74rem; }
.reviews-wall .trust-stars { font-size: .8rem !important; margin-bottom: .4rem !important; }
.wall-track .quote:nth-child(odd) { transform: rotate(-.6deg); }
.wall-track .quote:nth-child(even) { transform: rotate(.55deg); }
@media (max-width: 680px) {
  .reviews-wall-cols { grid-template-columns: 1fr 1fr; }
  .wall-col-3 { display: none; }
}
.rail.auto-scroll:active { cursor: grabbing; }

/* package / tour card — full-bleed background image, reference-style */
.card { position: relative; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-md);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease); display: block; aspect-ratio: 3/4; }
.card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.card-media { position: relative; display: block; width: 100%; height: 100%; overflow: hidden; color: #fff; }
.card-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.card:hover .card-media img { transform: scale(1.06); }
.card-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 32%, rgba(20,36,29,.9) 100%); pointer-events: none; }
.card-badges { position: absolute; top: 14px; left: 14px; display: flex; gap: .5rem; z-index: 2; }
.card-fav { position: absolute; top: 58px; right: 12px; z-index: 2; width: 38px; height: 38px; border-radius: var(--r-pill);
  display: grid; place-items: center; background: var(--glass-tint); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid var(--glass-border); color: #fff; }
.card-rating {
  position: absolute; top: 14px; right: 14px; z-index: 2; display: inline-flex; align-items: center; gap: .35em;
  padding: .38em .7em; border-radius: var(--r-pill); background: rgba(255,255,255,.92);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: var(--shadow-sm);
  font-weight: 700; font-size: .82rem; color: var(--green-800);
}
.card-rating svg { width: 13px; height: 13px; color: var(--gold-500); }
.card-rating span { color: var(--text-muted); font-weight: 500; }
.card-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 22px; display: flex; flex-direction: column; gap: .35rem; }
.card-meta { display: flex; align-items: center; gap: .8rem; font-size: .8rem; color: var(--text-on-dark-muted); }
.card-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: currentColor; opacity: .5; }
.card h3 { font-size: 1.35rem; color: #fff; }
.card-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; padding-top: .9rem; margin-top: .3rem; }
.card .price small { display: block; font-size: .68rem; color: var(--text-on-dark-muted); text-transform: uppercase; letter-spacing: .1em; }
.card .price strong { font-size: 1.3rem; font-weight: 800; color: #fff; }
.card .price span { display: block; font-size: .74rem; color: var(--text-on-dark-muted); }
.rating { display: inline-flex; align-items: center; gap: .3em; font-weight: 600; font-size: .88rem; color: var(--green-700); }
.rating svg { width: 15px; height: 15px; color: var(--gold-500); }

/* day-trip cards: shorter, lighter excursions get a "ticket stub" feel
   instead of the heavier multi-day safari card treatment */
.card--daytrip .card-badges .chip { display: inline-flex; align-items: center; gap: .4em; }
.card--daytrip .card-badges .chip svg { width: 13px; height: 13px; }
.card-summary { font-size: .82rem; line-height: 1.4; color: var(--text-on-dark-muted); }
.ticket-notch {
  position: relative; height: 1px; margin: .9rem -22px 0; border-top: 1.5px dashed rgba(255,255,255,.28);
}
.ticket-notch::before, .ticket-notch::after {
  content: ""; position: absolute; top: -8px; width: 16px; height: 16px; border-radius: 50%;
  background: var(--green-900);
}
.ticket-notch::before { left: -8px; }
.ticket-notch::after { right: -8px; }
.card--daytrip .card-foot { padding-top: .7rem; }
/* activity cards (Zanzibar water sports) sit in a 4-up grid, too narrow for
   a price block + button side by side without the button label wrapping —
   stack them and let the button take the full width instead. */
.card--daytrip .card-foot:has(button[data-book-mode="enquire"]) { flex-direction: column; align-items: stretch; gap: .6rem; }
.card--daytrip .card-foot:has(button[data-book-mode="enquire"]) button { white-space: nowrap; text-align: center; justify-content: center; }
.card-cta { display: inline-flex; align-items: center; gap: .4em; font-weight: 700; font-size: .86rem; color: #fff;
  transition: gap .25s var(--ease); }
.card-cta svg { width: 15px; height: 15px; }
.card--daytrip:hover .card-cta { gap: .7em; }

/* feature / value cards */
.feature { padding: clamp(22px, 3vw, 34px); border-radius: var(--r-lg); background: #fff; box-shadow: var(--shadow-sm);
  border: 1px solid rgba(40,64,56,.06); transition: transform .4s var(--ease), box-shadow .4s var(--ease); }
.feature:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.feature .ico { width: 54px; height: 54px; border-radius: var(--r-md); display: grid; place-items: center; margin-bottom: 1rem;
  background: linear-gradient(135deg, rgba(96,128,104,.16), rgba(201,162,75,.16)); color: var(--green-700); }
.feature .ico svg { width: 26px; height: 26px; }
.feature h4 { margin-bottom: .4rem; }
.feature p { font-size: .92rem; }

/* destination tiles */
.dest-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 180px; grid-auto-flow: dense; gap: clamp(14px, 1.6vw, 20px); }
.dest { position: relative; border-radius: var(--r-lg); overflow: hidden; display: flex; align-items: flex-end; }
.dest img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.dest::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 35%, rgba(20,36,29,.88)); }
.dest:hover img { transform: scale(1.08); }
.dest-body { position: relative; z-index: 1; padding: 18px; color: #fff; }
.dest-body h4 { color: #fff; font-size: 1.35rem; }
.dest-body span { font-size: .82rem; color: rgba(255,255,255,.8); }
.dest.wide { grid-column: span 2; }
.dest.tall { grid-row: span 2; }
.dest.big { grid-column: span 2; grid-row: span 2; }
.dest.big .dest-body h4 { font-size: 1.8rem; }
.dest-cta { background: linear-gradient(160deg, var(--green-700), var(--green-900)); align-items: center; justify-content: center; text-align: center; transition: background .3s var(--ease), transform .3s var(--ease); }
.dest-cta:hover { background: linear-gradient(160deg, var(--green-600), var(--green-800)); transform: translateY(-3px); }
.dest-cta-body { position: relative; z-index: 1; padding: 18px; color: #fff; display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.dest-cta-arrow { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.3); }
.dest-cta-arrow svg { width: 16px; height: 16px; }
.dest-cta-body h4 { color: #fff; font-size: 1.1rem; line-height: 1.3; }
.dest-cta-body p { color: rgba(255,255,255,.72); font-size: .8rem; }

/* stat band */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 3vw, 40px); text-align: center; }
.fact-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px 28px; }
/* Price always spans the full row and left-aligns — on mobile the grid drops
   to 2 columns, and Price being the last cell would otherwise land bottom-right
   corner, exactly where the fixed support widget sits (collides with it on
   first paint). Spanning full width keeps its text clear of that corner. */
.fact-price { grid-column: 1 / -1; }
.stat .n { font-family: var(--font-display); font-size: clamp(2.4rem, 5vw, 3.6rem); color: var(--gold-400); line-height: 1; }
.stat .l { color: var(--text-on-dark-muted); font-size: .9rem; margin-top: .4rem; }
.stat-goal { display: block; font-size: .74rem; color: var(--text-on-dark-muted); margin-top: .5rem; }

/* live-rising impact graph */
.impact-graph { margin-bottom: clamp(28px, 4vw, 48px); }
.impact-graph-label { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem .8rem; margin-bottom: .8rem; }
.impact-graph-label strong { font-family: var(--font-display); font-size: 1.3rem; color: var(--gold-400); }
.impact-graph-label span { color: var(--text-on-dark-muted); font-size: .88rem; }
.impact-graph-svg { width: 100%; height: clamp(120px, 20vw, 200px); display: block; overflow: visible; }
.impact-graph-line { transition: stroke-dashoffset 4.5s cubic-bezier(.16,.8,.2,1); }
.impact-graph-fill { opacity: 0; transition: opacity 2s ease .5s; }
.impact-graph.in .impact-graph-fill { opacity: 1; }

/* split / feature block */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 72px); align-items: center; }
.split-media { position: relative; border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-lg); }
.split-media img, .split-media video { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4/3.4; }

/* testimonial */
.quote { padding: clamp(24px, 3vw, 36px); border-radius: var(--r-lg); }
.quote .q { font-family: var(--font-display); font-size: 1.3rem; line-height: 1.4; color: var(--green-800); font-style: italic; }
.quote .who { display: flex; align-items: center; gap: .8rem; margin-top: 1.2rem; }
.quote .who img { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; }
.quote .who strong { display: block; color: var(--green-800); font-size: .95rem; }
.quote .who span { font-size: .82rem; color: var(--text-muted); }

/* reviews.html — platform-authentic review wall. Masonry via CSS columns
   (cards keep natural heights), initials avatars (no fake headshots),
   verified chip, per-card micro-tilt for an organic, non-templated feel. */
.reviews-masonry { columns: 3; column-gap: 1.4rem; }
@media (max-width: 1020px) { .reviews-masonry { columns: 2; } }
@media (max-width: 640px)  { .reviews-masonry { columns: 1; } }
.review-card { break-inside: avoid; margin: 0 0 1.4rem; padding: 1.4rem 1.5rem 1.2rem; background: #fff;
  border: 1px solid rgba(40,64,56,.1); border-radius: var(--r-lg); box-shadow: 0 2px 10px rgba(20,36,29,.06);
  transform: rotate(var(--tilt, 0deg));
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease); }
.review-card:hover { transform: rotate(0deg) translateY(-4px); box-shadow: 0 12px 30px rgba(20,36,29,.13); border-color: rgba(201,162,75,.45); }
.rev-head { display: flex; align-items: center; gap: .75rem; }
.rev-avatar { width: 42px; height: 42px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center;
  font-size: .88rem; font-weight: 800; color: #fff; letter-spacing: .04em;
  background: linear-gradient(135deg, hsl(var(--h, 152), 32%, 38%), hsl(var(--h, 152), 40%, 26%)); }
.rev-id { min-width: 0; flex: 1; }
.rev-id strong { display: block; color: var(--green-800); font-size: .93rem; line-height: 1.25; }
.rev-id small { color: var(--text-muted); font-size: .78rem; }
.rev-verified { display: inline-flex; align-items: center; gap: .3em; flex-shrink: 0; font-size: .7rem; font-weight: 700;
  color: #1a7f4e; background: rgba(26,127,78,.1); border: 1px solid rgba(26,127,78,.22); padding: .3em .7em; border-radius: var(--r-pill); }
.rev-verified svg { width: 11px; height: 11px; }
.rev-meta { display: flex; align-items: center; justify-content: space-between; margin-top: .9rem; }
.rev-stars { font-size: .95rem; letter-spacing: .1em; }
.rev-star { color: rgba(40,64,56,.18); }
.rev-star.on { color: var(--gold-500); }
.rev-date { font-size: .76rem; color: var(--text-muted); }
.rev-title { display: block; margin-top: .55rem; color: var(--green-800); font-size: 1.02rem; line-height: 1.35; }
.rev-body { margin-top: .45rem; font-size: .92rem; line-height: 1.65; color: var(--text-muted); }
.rev-trip { margin-top: .9rem; padding-top: .8rem; border-top: 1px dashed rgba(40,64,56,.14); font-size: .78rem; color: var(--text-muted); }
.rev-trip em { font-style: normal; font-weight: 700; color: var(--green-700); }

/* price-on-request marker (Zanzibar packages & activities have tailored quotes) */
.price-poa { font-size: .95em; letter-spacing: .02em; }

/* story / article cards */
.story { display: flex; flex-direction: column; border-radius: var(--r-lg); overflow: hidden; background: #fff; box-shadow: var(--shadow-sm); transition: transform .4s var(--ease), box-shadow .4s var(--ease); }
.story:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.story-media { aspect-ratio: 16/10; overflow: hidden; }
.story-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.story:hover .story-media img { transform: scale(1.05); }
.story-body { padding: 20px; }
.story-body h4 { margin: .4rem 0; }
.story-body p { font-size: .9rem; }

/* CTA band */
.cta-band { position: relative; border-radius: var(--r-xl); overflow: hidden; padding: clamp(40px, 7vw, 90px); color: #fff; text-align: center; }
.cta-band img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -1; }
.cta-band::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(20,36,29,.6), rgba(20,36,29,.78)); }
.cta-band h2 { color: #fff; }
.cta-band p { color: var(--text-on-dark); max-width: 54ch; margin: 1rem auto 0; }
.cta-band .hero-actions { justify-content: center; }

/* ---- 8b. HOMEPAGE FLOW EXTRAS ------------------------------------------- */

/* 3D coverflow — "Our Popular Adventures". Center card sharp; side cards fan
   out scaled/rotated/faded on both sides. Autoplays, pauses on hover/touch,
   draggable with mouse/finger, filterable via chips. */
/* The fanned side cards intentionally extend past the container; clip them at
   the full-width section edge so they can never widen the page on phones
   (real iOS/Android grow the visual viewport from this even when desktop
   DevTools looks fine). clip > hidden: no scroll container is created. */
#popular { overflow-x: hidden; overflow-x: clip; }
.coverflow { position: relative; height: 460px; perspective: 1600px; }
.coverflow-track { position: absolute; inset: 0; transform-style: preserve-3d; cursor: grab; }
.coverflow-track:active { cursor: grabbing; }
.coverflow-card {
  position: absolute; top: 50%; left: 50%; width: 300px; height: 390px;
  border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-lg);
  transition: transform .65s cubic-bezier(.22,1,.36,1), opacity .65s ease;
  color: #fff; display: block;
}
.coverflow-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.coverflow-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 35%, rgba(20,36,29,.9) 100%); }
.coverflow-card .card-badges { position: absolute; top: .9rem; left: .9rem; z-index: 2; }
.coverflow-card .card-rating {
  position: absolute; top: .9rem; right: .9rem; left: auto; bottom: auto; z-index: 2;
  background: rgba(255,255,255,.92); backdrop-filter: blur(6px);
}
.coverflow-card-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 1.25rem; }
.coverflow-card-meta { font-size: .76rem; font-weight: 700; opacity: .85; }
.coverflow-card-body h3 { color: #fff; font-size: 1.1rem; margin-top: .3rem; }
.coverflow-card-price { font-size: .92rem; font-weight: 800; color: var(--gold-400); margin-top: .5rem; }
.coverflow-dots { display: flex; justify-content: center; gap: .5rem; margin-top: 1.75rem; }
.coverflow-dots button { width: 8px; height: 8px; border-radius: 50%; background: rgba(40,64,56,.22); transition: all .3s var(--ease); }
.coverflow-dots button.active { width: 26px; border-radius: var(--r-pill); background: var(--gold-500); }
@media (max-width: 860px) {
  .coverflow { height: 400px; }
  .coverflow-card { width: 230px; height: 320px; }
}

/* gateway cards (Kilimanjaro / Safari) */
.gateway-card { position: relative; border-radius: var(--r-xl); overflow: hidden; min-height: 320px; display: flex; align-items: flex-end; box-shadow: var(--shadow-lg); }
.gateway-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.gateway-card:hover img { transform: scale(1.06); }
.gateway-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 15%, rgba(20,36,29,.55) 55%, rgba(20,36,29,.94) 100%); }
.gateway-card-body { position: relative; z-index: 1; padding: 2rem; color: #fff; }
.gateway-card-body h3 { color: #fff; font-size: clamp(1.5rem, 2.6vw, 2rem); }
.gateway-card-body p { color: rgba(255,255,255,.82); margin-top: .35rem; }

/* consultation CTA banner */
.consult-banner { border-radius: var(--r-lg); padding: clamp(24px,3.5vw,40px); display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; }
.consult-banner .icon-circle { width: 5rem; height: 5rem; flex-shrink: 0; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, var(--green-700), var(--green-900)); }
.consult-banner .icon-circle--agent { position: relative; overflow: visible; padding: 4px; }
.consult-banner .icon-circle--agent img { width: 100%; height: 100%; border-radius: 50%; background: #fff; }
.consult-banner .icon-circle--agent .support-dot { width: 15px; height: 15px; right: 3px; bottom: 3px; }

/* qualification rail ("Makito is the right match if...") — editorial
   numbered manifesto: oversized outlined numerals over a shared glass band,
   each entry separated by a hairline, key phrase set in the serif accent.
   Deliberately no icons, no badges, no sparkles. */
.qual-row { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 2.5rem;
  border-radius: var(--r-lg); overflow: hidden; border: 1px solid rgba(255,255,255,.14);
  background: rgba(14,26,21,.55); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.qual-item { position: relative; padding: clamp(1.6rem, 2.6vw, 2.4rem); display: flex; flex-direction: column; gap: 1.1rem;
  transition: background .4s var(--ease); }
.qual-item + .qual-item { border-left: 1px solid rgba(255,255,255,.1); }
.qual-item:hover { background: rgba(201,162,75,.08); }
.qual-num { font-size: clamp(2.6rem, 4vw, 3.4rem); font-weight: 800; line-height: 1; letter-spacing: .02em;
  color: transparent; -webkit-text-stroke: 1.5px rgba(201,162,75,.75); transition: color .4s var(--ease); }
.qual-item:hover .qual-num { color: var(--gold-500); }
.qual-item::after { content: ""; position: absolute; left: clamp(1.6rem, 2.6vw, 2.4rem); bottom: 1.2rem; height: 2px; width: 34px;
  background: linear-gradient(90deg, var(--gold-500), transparent); transition: width .45s var(--ease); }
.qual-item:hover::after { width: 72px; }
.qual-item p { font-weight: 600; color: rgba(255,255,255,.92); font-size: 1.02rem; line-height: 1.55; padding-bottom: 1.4rem; }
.qual-item p em { font-style: italic; color: var(--gold-400); font-weight: 700; }
@media (max-width: 960px) {
  .qual-row { grid-template-columns: 1fr 1fr; }
  .qual-item + .qual-item { border-left: none; }
  .qual-item:nth-child(even) { border-left: 1px solid rgba(255,255,255,.1); }
  .qual-item:nth-child(n+3) { border-top: 1px solid rgba(255,255,255,.1); }
}
@media (max-width: 560px) {
  .qual-row { grid-template-columns: 1fr; }
  .qual-item:nth-child(even) { border-left: none; }
  .qual-item:nth-child(n+2) { border-top: 1px solid rgba(255,255,255,.1); }
}

/* achievements — reference-style award cards: emblem tile, heading, short
   story, read-more link */
.achv-card { display: flex; gap: 1.25rem; align-items: flex-start; padding: 1.75rem; border-radius: var(--r-lg); background: #fff; box-shadow: var(--shadow-sm); border: 1px solid rgba(40,64,56,.06); transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.achv-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.achv-ico { flex-shrink: 0; width: 64px; height: 64px; border-radius: 18px; display: grid; place-items: center;
  background: linear-gradient(150deg, rgba(201,162,75,.18), rgba(201,162,75,.06));
  border: 1px solid rgba(201,162,75,.35); color: var(--gold-600); }
.achv-ico svg { width: 32px; height: 32px; }
.achv-txt { flex: 1; min-width: 0; }
.achv-card h4 { font-size: 1.05rem; }
.achv-card p { font-size: .88rem; margin-top: .4rem; }
.achv-more { display: inline-flex; align-items: center; gap: .4em; margin-top: .7rem; font-size: .82rem; font-weight: 700; color: var(--gold-600); transition: gap .25s var(--ease); }
.achv-card:hover .achv-more { gap: .65em; }
.achv-more svg { width: 14px; height: 14px; }
@media (max-width: 680px) { .achv-card { flex-direction: column; gap: .9rem; } }
.achv-card p { font-size: .84rem; margin-top: .35rem; }

/* guests-from honest trust row: real flag icons only, no text label
   (country name lives in title/aria-label for accessibility) */
.guest-strip { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; }
.guest-strip .flag { display: block; width: 52px; height: 52px; border-radius: 50%;
  background: #fff; box-shadow: var(--shadow-sm); border: 1px solid rgba(40,64,56,.08);
  overflow: hidden; transition: transform .25s var(--ease), box-shadow .25s var(--ease); cursor: default; }
.guest-strip .flag:hover { transform: translateY(-3px) scale(1.05); box-shadow: var(--shadow-md); }
.guest-strip .flag svg { width: 100%; height: 100%; display: block; }

/* full-bleed video feature + lightbox */
.video-feature { position: relative; border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 21/9; box-shadow: var(--shadow-lg); }
.video-feature img, .video-feature video { width: 100%; height: 100%; object-fit: cover; }
.video-feature .play-btn {
  position: absolute; inset: 0; margin: auto; width: 84px; height: 84px; border-radius: 50%;
  display: grid; place-items: center; background: var(--glass-tint-strong); backdrop-filter: blur(14px);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg); transition: transform .3s var(--ease);
}
.video-feature .play-btn:hover { transform: scale(1.08); }
.video-feature .play-btn svg { width: 26px; height: 26px; color: var(--green-800); margin-left: 4px; }
.video-feature .vf-caption { position: absolute; bottom: 1.5rem; left: 1.5rem; color: #fff; font-weight: 800; letter-spacing: .12em; font-size: .8rem; text-transform: uppercase; }
.lightbox-scrim { position: fixed; inset: 0; z-index: 250; background: rgba(10,16,13,.92); display: grid; place-items: center; padding: 24px;
  opacity: 0; visibility: hidden; transition: opacity .3s var(--ease), visibility .3s; }
.lightbox-scrim.open { opacity: 1; visibility: visible; }
.lightbox-scrim video { width: 100%; max-width: 1000px; border-radius: var(--r-md); box-shadow: var(--shadow-lg); }
.lightbox-close { position: absolute; top: 24px; right: 24px; width: 44px; height: 44px; border-radius: 50%; background: rgba(255,255,255,.12); display: grid; place-items: center; color: #fff; }

/* Instagram-style visual strip */
.insta-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: .6rem; }
.insta-tile { aspect-ratio: 1; border-radius: var(--r-md); overflow: hidden; }
.insta-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.insta-tile:hover img { transform: scale(1.1); }
@media (max-width: 900px) { .insta-grid { grid-template-columns: repeat(3, 1fr); } .gateway-card { min-height: 240px; } }
@media (max-width: 680px) { .insta-grid { grid-template-columns: repeat(2, 1fr); } }

/* video-backed section — subtle fade so footage stays visible behind text */
.video-bg-section { position: relative; overflow: hidden; }
.video-bg { position: absolute; inset: 0; z-index: 0; }
.video-bg video { width: 100%; height: 100%; object-fit: cover; }
.video-bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(160deg, rgba(20,36,29,.68), rgba(20,36,29,.48)); }
.video-bg-section > .container { position: relative; z-index: 1; }

/* section on dark green */
.on-green { background: linear-gradient(160deg, var(--green-800), var(--green-900)); color: #fff; position: relative; overflow: hidden; }
.on-green h2, .on-green h3, .on-green h4 { color: #fff; }
.on-green p { color: var(--text-on-dark-muted); }
.on-green .eyebrow { color: var(--gold-400); }
.on-green .eyebrow::before, .on-green .eyebrow.center::after { background: var(--gold-400); }
.on-green::before { content: ""; position: absolute; inset: 0; opacity: .5;
  background: radial-gradient(700px 400px at 90% 0%, rgba(96,128,104,.4), transparent 60%); }

/* ---- 9. FORMS ----------------------------------------------------------- */
.field { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1rem; }
.field label { font-size: .82rem; font-weight: 600; color: var(--green-800); }
.field input, .field textarea, .field select {
  padding: .8em 1em; border-radius: var(--r-sm);
  background: rgba(255,255,255,.5); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(40,64,56,.18); transition: border-color .25s, box-shadow .25s, background .25s;
}
.field input::placeholder, .field textarea::placeholder { color: #9aa39d; }
.field input:focus, .field textarea:focus, .field select:focus { outline: none; border-color: var(--gold-500); box-shadow: 0 0 0 3px rgba(201,162,75,.2); background: rgba(255,255,255,.7); }
.field textarea { resize: vertical; min-height: 120px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* ---- 10. MODALS / POPUPS ------------------------------------------------ */
.modal-scrim { position: fixed; inset: 0; z-index: 200; display: grid; grid-template-columns: minmax(0, 1fr); place-items: center; padding: 24px;
  background: rgba(20,36,29,.4); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  opacity: 0; visibility: hidden; transition: opacity .35s var(--ease), visibility .35s; }
.modal-scrim.open { opacity: 1; visibility: visible; }
.modal {
  position: relative;
  /* min-width:0 lets the grid item shrink below its content's max-content
     size (e.g. the welcome modal's unbroken perks row) so width:min(560px,
     100%) actually clamps to the viewport instead of the content forcing
     the grid track wider. */
  width: min(560px, 100%); min-width: 0; max-height: 90vh; overflow-y: auto; scrollbar-width: none; border-radius: var(--r-lg); padding: clamp(24px, 4vw, 40px);
  background: var(--glass-tint-strong);
  backdrop-filter: blur(34px) saturate(160%); -webkit-backdrop-filter: blur(34px) saturate(160%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.5);
  transform: translateY(16px) scale(.98); transition: transform .4s var(--ease-out); }
.modal-scrim.open .modal { transform: translateY(0) scale(1); }
.modal-close { position: absolute; top: 16px; right: 16px; width: 40px; height: 40px; border-radius: var(--r-pill);
  display: grid; place-items: center; background: rgba(255,255,255,.6); transition: background .2s, transform .2s; }
.modal-close:hover { background: rgba(255,255,255,.85); transform: rotate(90deg); }
.modal-close svg { width: 16px; height: 16px; }
.modal-head { margin-bottom: 1.4rem; }
.modal-head h3 { color: var(--green-800); }
.modal-head p { margin-top: .4rem; font-size: .92rem; }
.modal--welcome { text-align: center; }
.modal--welcome .modal-head { margin-bottom: 1.2rem; }
.modal-badge { position: relative; width: 96px; height: 96px; margin: 0 auto 1.2rem; display: grid; place-items: center; }
.modal-badge-logo { position: relative; z-index: 2; width: 72px; height: 72px; border-radius: 50%; background: #fff; padding: 8px; box-shadow: var(--shadow-md); animation: badgeDropIn .6s var(--ease-out); }
.modal-badge-ring { position: absolute; inset: 0; border-radius: 50%; border: 1.5px solid rgba(201,162,75,.55); animation: badgePulse 2.6s ease-out infinite; }
.modal-badge-ring--2 { animation-delay: 1.3s; }
@keyframes badgePulse { 0% { transform: scale(.78); opacity: .9; } 100% { transform: scale(1.4); opacity: 0; } }
@keyframes badgeDropIn { 0% { transform: scale(.4) translateY(-16px); opacity: 0; } 60% { transform: scale(1.08) translateY(0); opacity: 1; } 100% { transform: scale(1); } }
.modal-perks { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem .9rem; margin: 1rem 0 1.4rem; }
.modal-perks span { display: inline-flex; align-items: center; gap: .4em; font-size: .84rem; color: var(--green-800); font-weight: 600;
  opacity: 0; animation: perkRise .5s var(--ease-out) forwards; }
@keyframes perkRise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.modal-perks svg { width: 15px; height: 15px; color: var(--gold-500); }
.modal-fine { margin-top: .9rem; font-size: .78rem; color: var(--text-muted); }
/* welcome popup v2: one glance = one offer. Shimmering 5%-OFF ribbon,
   joined pill email field with the claim button inside it. */
.welcome-off {
  position: relative; display: inline-flex; align-items: center; gap: .4em; overflow: hidden;
  margin: -.2rem auto 1rem; padding: .5em 1.3em; border-radius: var(--r-pill);
  background: linear-gradient(120deg, var(--gold-600), var(--gold-400) 45%, var(--gold-600));
  color: var(--green-900); font-size: .86rem; font-weight: 700; letter-spacing: .04em;
  box-shadow: 0 6px 18px rgba(201,162,75,.4), inset 0 1px 0 rgba(255,255,255,.45);
}
.welcome-off em { font-style: normal; font-family: var(--font-display); font-weight: 800; font-size: 1.15em; letter-spacing: .02em; }
.welcome-off::after {
  content: ""; position: absolute; inset: 0; transform: translateX(-120%) skewX(-18deg);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.65), transparent);
  width: 55%; animation: offShine 3.2s var(--ease) infinite;
}
@keyframes offShine { 0%, 55% { transform: translateX(-120%) skewX(-18deg); } 85%, 100% { transform: translateX(320%) skewX(-18deg); } }
.modal--welcome .modal-head p { max-width: 34ch; margin-inline: auto; }
.welcome-input {
  display: flex; align-items: center; gap: .4rem; padding: 6px 6px 6px 16px; border-radius: var(--r-pill);
  background: rgba(255,255,255,.72); border: 1.5px solid rgba(40,64,56,.14);
  box-shadow: var(--shadow-sm); transition: border-color .25s, box-shadow .25s, transform .2s;
}
.welcome-input:focus-within { border-color: var(--gold-500); box-shadow: 0 0 0 4px rgba(201,162,75,.18), var(--shadow-md); transform: translateY(-1px); }
.welcome-input.invalid { border-color: #c0392b; box-shadow: 0 0 0 4px rgba(192,57,43,.14); }
.welcome-input .wi-ico { flex-shrink: 0; display: flex; color: var(--gold-600); }
.welcome-input .wi-ico svg { width: 18px; height: 18px; }
.welcome-input input { flex: 1; min-width: 0; border: 0; background: none; font-size: .95rem; padding: .55em 0; }
.welcome-input input:focus { outline: none; }
.welcome-claim {
  flex-shrink: 0; display: inline-flex; align-items: center; gap: .4em; padding: .65em 1.15em; border-radius: var(--r-pill);
  background: linear-gradient(135deg, var(--gold-400), var(--gold-600)); color: var(--green-900);
  font-weight: 800; font-size: .88rem; box-shadow: 0 4px 12px rgba(201,162,75,.4), inset 0 1px 0 rgba(255,255,255,.4);
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.welcome-claim:hover { transform: translateY(-1px) scale(1.03); box-shadow: 0 6px 16px rgba(201,162,75,.5); }
.welcome-claim svg { width: 15px; height: 15px; }

/* "Design my own safari" step wizard, and the shared consultation-booking
   flow. Progress reads like a little journey: a dotted road with a paper
   plane that travels along it as the user moves step to step, rather than
   a plain loading-style bar. */
.modal--wizard { width: min(600px, 100%); }
/* The roadmap sits in its own tinted panel, pushed clear below the
   absolutely-positioned close button (top:16px, 40px tall) so the X and the
   progress never share a line. */
.wizard-progress-row { margin-top: 42px; margin-bottom: 1.8rem; }
.roadmap {
  border-radius: var(--r-md); padding: 12px 16px 8px;
  background: linear-gradient(180deg, rgba(201,162,75,.12), rgba(201,162,75,.03));
  border: 1px solid rgba(40,64,56,.10);
}
.roadmap-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 2px; }
.roadmap-title { font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--gold-600); }
.roadmap-step { font-size: .72rem; font-weight: 700; color: var(--green-800); }
.roadmap-svg { display: block; width: 100%; height: auto; overflow: visible; }
.roadmap-track { stroke: rgba(40,64,56,.20); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 0.1 8; }
.roadmap-done { stroke: var(--gold-500); stroke-width: 4; stroke-linecap: round; transition: stroke-dashoffset .7s cubic-bezier(.65,0,.35,1); }
.roadmap-node { fill: #fff; stroke: rgba(40,64,56,.28); stroke-width: 2; transition: fill .45s var(--ease), stroke .45s var(--ease); }
.roadmap-node.done { fill: var(--gold-500); stroke: var(--gold-600); }
.roadmap-marker { transition: transform .7s cubic-bezier(.65,0,.35,1); }
.roadmap-marker-bg { fill: var(--green-700); stroke: #fff; stroke-width: 3; filter: drop-shadow(0 3px 6px rgba(40,64,56,.35)); }
.roadmap-marker-ico { fill: #fff; }
/* tech variant (consultation): circuit-trace styling instead of a safari trail */
.roadmap--tech { background: linear-gradient(180deg, rgba(40,64,56,.08), rgba(40,64,56,.02)); border-color: rgba(40,64,56,.14); }
.roadmap--tech .roadmap-title { color: var(--green-700); }
.roadmap--tech .roadmap-track { stroke-dasharray: 5 5; stroke-width: 2.4; }
.roadmap--tech .roadmap-done { stroke: var(--green-600); }
.roadmap--tech .roadmap-node { stroke: rgba(40,64,56,.32); }
.roadmap--tech .roadmap-node.done { fill: var(--green-600); stroke: var(--green-700); }
.roadmap--tech .roadmap-marker-bg { fill: var(--green-800); }
/* climb variant (Kilimanjaro): jagged mountain-ascent trail with a summit flag */
.roadmap--climb { background: linear-gradient(180deg, rgba(94,118,153,.10), rgba(255,255,255,.03)); border-color: rgba(94,118,153,.22); }
.roadmap--climb .roadmap-title { color: var(--green-700); }
.roadmap--climb .roadmap-track { stroke: rgba(94,118,153,.38); stroke-dasharray: 0.1 7; stroke-width: 3; }
.roadmap--climb .roadmap-done { stroke: var(--gold-500); }
.roadmap--climb .roadmap-node { stroke: rgba(94,118,153,.5); }
.roadmap--climb .roadmap-node.done { fill: var(--gold-500); stroke: var(--gold-600); }
.roadmap--climb .roadmap-marker-bg { fill: #3f5673; }
/* package-specific booking modal: pinned package identity under the roadmap */
.book-pkg { display: flex; align-items: center; gap: .9rem; padding: .8rem 1rem; margin-bottom: 1.2rem;
  border-radius: var(--r-md); background: rgba(40,64,56,.06); border: 1px solid rgba(40,64,56,.1); }
.book-pkg-img { width: 54px; height: 54px; border-radius: 12px; object-fit: cover; flex-shrink: 0; }
.book-pkg-id strong { display: block; color: var(--green-800); font-size: 1rem; line-height: 1.25; }
.book-pkg-id small { color: var(--text-muted); font-size: .8rem; font-weight: 600; }
.book-pkg-id small .js-price { color: var(--gold-600); }
[data-book-body] h3 { margin: .4rem 0 1.2rem; }
.wizard-back { display: inline-flex; align-items: center; gap: .4em; font-size: .84rem; font-weight: 700; color: var(--text-muted); margin-bottom: 1rem; transition: color .2s; }
.wizard-back:hover { color: var(--green-800); }
.wizard-back svg { width: 14px; height: 14px; }
[data-wizard-body] h3 { margin: .4rem 0 1.2rem; }
.wizard-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 1rem; margin-bottom: 1.6rem; }
.wizard-opt { padding: .8em 1em; border-radius: var(--r-md); border: 1px solid rgba(40,64,56,.16); background: rgba(255,255,255,.5);
  font-weight: 600; font-size: .92rem; text-align: center; color: var(--green-800); transition: all .2s var(--ease); }
.wizard-opt:hover { border-color: var(--gold-500); background: rgba(201,162,75,.1); transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.wizard-opt.active { background: var(--green-700); border-color: var(--green-700); color: #fff; }
/* phone input with country-code dropdown; validation error states */
.phone-group { display: flex; gap: .5rem; }
.phone-group .phone-cc {
  flex-shrink: 0; width: auto; padding: .7em .6em; border-radius: var(--r-sm);
  background: rgba(255,255,255,.6); border: 1px solid rgba(40,64,56,.16);
  font-size: .9rem; font-weight: 600; color: var(--green-800); cursor: pointer;
}
.phone-group .phone-num { flex: 1; min-width: 0; }
.field.invalid input, .field.invalid textarea, .phone-group.invalid .phone-num {
  border-color: #c0392b; box-shadow: 0 0 0 3px rgba(192,57,43,.13);
}
.field-msg { min-height: 0; font-size: .78rem; color: #c0392b; font-weight: 600; margin-top: .4rem; text-align: left; }
.field-msg:empty { margin-top: 0; }

.wizard-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.5rem; margin-bottom: 1.6rem; }
.wizard-summary-row small { display: block; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--gold-600); font-weight: 700; margin-bottom: .2rem; }
.wizard-summary-row strong { color: var(--green-800); font-size: .95rem; }

/* toast — same glass language as the modals, gold check chip */
.toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(20px) scale(.96); z-index: 300;
  max-width: min(400px, calc(100vw - 40px));
  padding: 10px 20px 10px 10px; border-radius: var(--r-pill); color: var(--green-800); font-weight: 600; font-size: .88rem; line-height: 1.35;
  background: var(--glass-tint-strong);
  backdrop-filter: blur(28px) saturate(170%); -webkit-backdrop-filter: blur(28px) saturate(170%);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.6);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: transform .5s var(--ease-out), opacity .4s var(--ease-out), visibility .5s; display: flex; align-items: center; gap: .7em; }
.toast.show { transform: translateX(-50%) translateY(0) scale(1); opacity: 1; visibility: visible; pointer-events: auto; }
.toast-ico { width: 34px; height: 34px; flex-shrink: 0; border-radius: 50%; display: grid; place-items: center;
  background: linear-gradient(135deg, var(--gold-400), var(--gold-600)); color: var(--green-900);
  box-shadow: 0 3px 10px rgba(201,162,75,.4), inset 0 1px 0 rgba(255,255,255,.45); }
.toast-ico svg { width: 16px; height: 16px; }
.toast-ico-ok, .toast-ico-err { display: flex; }
.toast-ico-err, .toast--error .toast-ico-ok { display: none; }
.toast--error .toast-ico-err { display: flex; }
.toast--error .toast-ico { background: linear-gradient(135deg, #d35445, #b03225); color: #fff;
  box-shadow: 0 3px 10px rgba(176,50,37,.4), inset 0 1px 0 rgba(255,255,255,.3); }
.toast--error { color: #8c2b20; }
@media (max-width: 900px) { .toast { bottom: 106px; } }

/* cookie consent — bottom-left, glass, dismissible */
.cookie-banner {
  position: fixed; left: 22px; bottom: 22px; z-index: 140; width: min(340px, calc(100vw - 44px));
  padding: 18px 20px; border-radius: var(--r-lg); display: flex; flex-direction: column; gap: .9rem;
  background: var(--glass-tint-strong);
  backdrop-filter: blur(26px) saturate(160%); -webkit-backdrop-filter: blur(26px) saturate(160%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.5);
  transform: translateY(20px); opacity: 0; visibility: hidden;
  transition: transform .45s var(--ease-out), opacity .4s var(--ease), visibility .45s;
}
.cookie-banner.show { transform: translateY(0); opacity: 1; visibility: visible; }
.cookie-banner p { font-size: .84rem; color: var(--text-muted); line-height: 1.5; }
.cookie-banner a { color: var(--green-700); text-decoration: underline; font-weight: 600; }
.cookie-actions { display: flex; gap: .6rem; }
.cookie-actions .btn { flex: 1; }
@media (max-width: 900px) { .cookie-banner { left: 16px; bottom: 106px; width: calc(100vw - 32px); } }

/* floating support launcher: "How can I help you?" pill + agent avatar,
   opens a WhatsApp / Live-chat option menu and a coming-soon chat panel */
.support-fab { position: fixed; right: 22px; bottom: 22px; z-index: 95; display: flex; flex-direction: column; align-items: flex-end; }
.support-launch { display: flex; align-items: center; gap: 0; padding: 0; }
.support-label {
  background: var(--green-700); color: #fff; font-size: .88rem; font-weight: 700;
  padding: .7em 1.2em; border-radius: var(--r-pill); margin-right: -14px; padding-right: calc(1.2em + 14px);
  box-shadow: var(--shadow-md); white-space: nowrap;
  transition: transform .3s var(--ease), opacity .3s var(--ease);
}
.support-launch:hover .support-label { transform: translateX(-3px); }
.support-avatar {
  position: relative; width: 56px; height: 56px; flex-shrink: 0; border-radius: 50%;
  box-shadow: var(--shadow-lg); transition: transform .3s var(--ease);
}
/* thin breathing ring around the avatar — "we're online" */
.support-avatar::before {
  content: ""; position: absolute; inset: -3px; border-radius: 50%;
  border: 1.5px solid rgba(46,204,113,.85); pointer-events: none;
  animation: onlineGlow 2.6s ease-in-out infinite;
}
@keyframes onlineGlow {
  0%, 100% { opacity: .45; box-shadow: 0 0 4px rgba(46,204,113,.25); }
  50% { opacity: 1; box-shadow: 0 0 12px rgba(46,204,113,.55); }
}
.support-launch:hover .support-avatar { transform: scale(1.06); }
.support-avatar img { width: 100%; height: 100%; border-radius: 50%; border: 3px solid #fff; background: #fff; }
.support-avatar--sm { width: 38px; height: 38px; box-shadow: none; }
.support-avatar--sm img { border-width: 2px; }
.support-dot { position: absolute; right: 1px; bottom: 1px; width: 13px; height: 13px; border-radius: 50%;
  background: #2ecc71; border: 2.5px solid #fff; }
.support-avatar--sm .support-dot { width: 10px; height: 10px; border-width: 2px; }
.support-menu {
  position: absolute; right: 0; bottom: calc(100% + 12px); display: flex; flex-direction: column; gap: .55rem;
  visibility: hidden; pointer-events: none;
  transition: visibility .8s;
}
/* each option floats up on its own gentle curve, slightly staggered, so the
   menu feels like it rises rather than snapping open */
.support-menu .support-opt { opacity: 0; transform: translateY(22px) scale(.96);
  transition: opacity .45s var(--ease), transform .55s cubic-bezier(.22,1,.36,1); }
.support-menu .support-opt:first-child { transition-delay: .08s; }
.support-fab.menu-open .support-menu { visibility: visible; pointer-events: auto; }
.support-fab.menu-open .support-opt { opacity: 1; transform: translateY(0) scale(1); }
.support-opt {
  display: flex; align-items: center; gap: .6em; padding: .65em 1.1em; border-radius: var(--r-pill);
  font-size: .9rem; font-weight: 700; color: var(--green-800);
  background: var(--glass-tint-strong);
  backdrop-filter: blur(24px) saturate(160%); -webkit-backdrop-filter: blur(24px) saturate(160%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-md);
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.support-opt:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.support-opt svg { width: 20px; height: 20px; }
.support-opt--wa svg { color: #25d366; }
.support-opt--chat svg { color: var(--gold-600); }
.support-chat {
  position: absolute; right: 0; bottom: calc(100% + 12px); width: min(350px, calc(100vw - 44px));
  border-radius: 20px; overflow: hidden;
  background: var(--glass-tint-strong);
  backdrop-filter: blur(34px) saturate(170%); -webkit-backdrop-filter: blur(34px) saturate(170%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.5);
  opacity: 0; visibility: hidden; transform: translateY(10px) scale(.98); pointer-events: none; transform-origin: bottom right;
  transition: opacity .3s var(--ease), transform .35s var(--ease-out), visibility .35s;
}
.support-fab.chat-open .support-chat { opacity: 1; visibility: visible; transform: translateY(0) scale(1); pointer-events: auto; }
.support-fab.chat-open .support-menu { opacity: 0; visibility: hidden; pointer-events: none; }
.support-chat-head {
  display: flex; align-items: center; gap: .7rem; padding: 14px 14px 12px;
  background: linear-gradient(135deg, var(--green-700), var(--green-900)); color: #fff;
}
.support-chat-id { flex: 1; min-width: 0; }
.support-chat-id strong { display: block; font-size: .95rem; }
.support-chat-id small { font-size: .74rem; color: rgba(255,255,255,.75); }
.support-chat-close { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center;
  color: #fff; background: rgba(255,255,255,.14); transition: background .2s; }
.support-chat-close:hover { background: rgba(255,255,255,.28); }
.support-chat-close svg { width: 14px; height: 14px; }
.support-chat-body { padding: 16px 14px; display: flex; flex-direction: column; gap: .6rem; max-height: 46vh; overflow-y: auto; }
.chat-msg { max-width: 85%; }
.chat-msg--agent p {
  background: rgba(255,255,255,.75); color: var(--green-800); font-size: .87rem; line-height: 1.45;
  padding: .65em .9em; border-radius: 14px 14px 14px 4px; box-shadow: var(--shadow-sm);
}
.chat-soon {
  margin-top: .4rem; padding: 14px; border-radius: 14px; text-align: center;
  background: rgba(201,162,75,.14); border: 1px dashed rgba(201,162,75,.55);
}
.chat-soon strong { display: block; color: var(--gold-600); font-size: .88rem; }
.chat-soon p { font-size: .8rem; color: var(--text-muted); margin: .3rem 0 .7rem; }
.chat-soon .btn svg { width: 15px; height: 15px; }
.support-chat-input { display: flex; gap: .5rem; padding: 10px 14px 14px; }
.support-chat-input input {
  flex: 1; min-width: 0; padding: .6em 1em; border-radius: var(--r-pill);
  background: rgba(255,255,255,.6); border: 1px solid rgba(40,64,56,.14); font-size: .86rem;
}
.support-chat-input input:disabled { opacity: .65; cursor: not-allowed; }
.support-chat-input button { width: 40px; height: 40px; flex-shrink: 0; border-radius: 50%; display: grid; place-items: center;
  background: var(--gold-500); color: var(--green-900); opacity: .65; cursor: not-allowed; }
.support-chat-input button svg { width: 17px; height: 17px; }

/* go-to-top, scroll-progress ring — stacked on the right, above the WhatsApp bubble */
.go-top {
  position: fixed; right: 22px; bottom: 90px; z-index: 90; width: 52px; height: 52px; border-radius: 50%;
  display: grid; place-items: center; background: var(--glass-tint-strong);
  backdrop-filter: blur(16px) saturate(150%); -webkit-backdrop-filter: blur(16px) saturate(150%);
  border: 1px solid var(--glass-border); box-shadow: var(--shadow-md);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .3s var(--ease), transform .3s var(--ease), visibility .3s, bottom .3s var(--ease);
}
.go-top.show { opacity: 1; visibility: visible; transform: translateY(0); }
.go-top .ring { position: absolute; inset: 0; transform: rotate(-90deg); }
.go-top .ring .track { stroke: rgba(40,64,56,.14); }
.go-top .ring .fill { stroke: var(--green-600); stroke-linecap: round; }
.go-top .go-top-arrow { position: relative; z-index: 1; width: 18px; height: 18px; color: var(--green-800); }
@media (max-width: 900px) {
  .go-top { bottom: 174px; right: 16px; }
  .support-fab { bottom: 106px; right: 16px; }
  /* compact on phones so it doesn't sit over the hero Scroll indicator */
  .support-label { font-size: .72rem; padding: .55em .95em; margin-right: -11px; padding-right: calc(.95em + 11px); }
  .support-avatar { width: 46px; height: 46px; }
  .support-avatar img { border-width: 2px; }
}

/* ---- 11. FOOTER --------------------------------------------------------- */
.site-footer { background: linear-gradient(180deg, var(--green-800), var(--green-900)); color: var(--text-on-dark-muted); padding-top: clamp(56px, 8vw, 96px); }
.footer-top { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.4fr; gap: clamp(28px, 4vw, 56px); padding-bottom: 48px; }
.footer-brand img { height: 44px; width: auto; margin-bottom: 1.2rem; }
.footer-brand p { max-width: 34ch; font-size: .92rem; }
.footer-social { display: flex; gap: .7rem; margin-top: 1.4rem; }
.footer-social a { width: 40px; height: 40px; border-radius: var(--r-pill); display: grid; place-items: center;
  background: rgba(255,255,255,.08); color: #fff; transition: background .25s, transform .25s; }
/* keep every social glyph the same visual weight (the WhatsApp svg carries
   no width/height attributes, so without this it fills the whole circle) */
.footer-social a svg { width: 18px; height: 18px; }
.footer-social a:hover { background: var(--gold-500); color: var(--green-900); transform: translateY(-2px); }
.footer-contact { display: flex; flex-direction: column; gap: .5rem; margin-top: 1.4rem; }
.footer-contact a { display: inline-flex; align-items: center; gap: .5em; font-size: .9rem; color: var(--text-on-dark-muted); transition: color .2s; }
.footer-contact a:hover { color: var(--gold-400); }
.footer-contact svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--gold-500); }
.footer-col h5 { color: #fff; font-family: var(--font-ui); font-size: .78rem; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 1.1rem; }
.footer-col a { display: block; padding: .35rem 0; font-size: .92rem; transition: color .2s; }
.footer-col a:hover { color: var(--gold-400); }
.footer-news p { font-size: .9rem; margin-bottom: 1.1rem; }
.footer-news-form { display: flex; gap: .4rem; padding: .35rem; border-radius: var(--r-pill);
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.16); transition: border-color .25s, background .25s; }
.footer-news-form:focus-within { border-color: var(--gold-400); background: rgba(255,255,255,.1); }
.footer-news-form input { flex: 1; min-width: 0; padding: .7em 1em; border-radius: var(--r-pill); background: transparent; border: 0; color: #fff; }
.footer-news-form input::placeholder { color: rgba(255,255,255,.5); }
.footer-news-form .btn { flex-shrink: 0; }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  padding: 24px 0 32px; border-top: 1px solid rgba(255,255,255,.1); margin-top: 8px; font-size: .84rem; }
.footer-bottom a:hover { color: var(--gold-400); }
.footer-badges { display: flex; gap: 1rem; align-items: center; }
.footer-credit { display: block; text-align: center; padding: 16px 0 28px; font-size: .82rem; color: rgba(255,255,255,.45); }
.footer-credit .credit-heart { display: inline-block; vertical-align: -1px; margin: 0 .1em; }
.footer-credit a { color: rgba(255,255,255,.75); font-weight: 600; transition: color .2s; }
.footer-credit a:hover { color: var(--gold-400); }
.footer-credit-btn { font: inherit; color: rgba(255,255,255,.75); font-weight: 600; transition: color .2s; cursor: pointer; }
.footer-credit-btn:hover { color: var(--gold-400); }

/* credit modal */
.modal--credit .credit-name { margin-top: .3rem; }
.credit-tags { display: flex; flex-wrap: wrap; gap: .55rem; margin: 1.1rem 0; }
.credit-tags .chip { background: rgba(40,64,56,.07); }
.modal--credit > p { margin-bottom: 1.3rem; }
.credit-divider { height: 1px; background: rgba(40,64,56,.12); margin-bottom: 1.2rem; }
.credit-link { display: flex; align-items: center; gap: .6em; font-weight: 600; color: var(--green-800); margin-bottom: .7rem; transition: color .2s; }
.credit-link:hover { color: var(--gold-600); }
.credit-link svg { width: 15px; height: 15px; color: var(--green-700); flex-shrink: 0; }
.credit-actions { display: flex; gap: .8rem; margin-top: 1.4rem; flex-wrap: wrap; }
.credit-actions .btn { flex: 1 1 180px; }

/* ---- 12. MOTION / REVEAL ------------------------------------------------ */
[data-reveal] { opacity: 0; transform: translateY(38px) scale(.96); transition: opacity 1.35s var(--ease-out), transform 1.35s var(--ease-out); }
[data-reveal].in { opacity: 1; transform: none; }
[data-reveal][data-delay="1"] { transition-delay: .12s; }
[data-reveal][data-delay="2"] { transition-delay: .24s; }
[data-reveal][data-delay="3"] { transition-delay: .36s; }
[data-reveal][data-delay="4"] { transition-delay: .48s; }

/* scroll-progress bar */
.scroll-progress { position: fixed; top: 0; left: 0; height: 3px; width: 0%; z-index: 300;
  background: var(--gold-500); box-shadow: 0 0 8px rgba(201,162,75,.6); transition: width .1s linear; }

/* card tilt — JS drives the transform inline (always wins the cascade) so it
   composes cleanly with each card's existing hover-lift instead of fighting it */
.tilt-card { transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out); }
.tilt-card.tilting { transition: transform .08s linear; }

/* tactile button press */
.btn:active { transform: translateY(0) scale(.97); }

.page-hero { position: relative; padding-top: calc(var(--header-h) + var(--util-h) + clamp(60px, 10vw, 120px)); padding-bottom: clamp(48px, 8vw, 90px); color: #fff; overflow: hidden; }
.page-hero-media { position: absolute; inset: 0; z-index: -1; }
.page-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.page-hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,36,29,.6), rgba(20,36,29,.5) 40%, rgba(20,36,29,.8)); }
.page-hero h1 { color: #fff; }
.page-hero .lead { color: var(--text-on-dark); margin-top: 1rem; }
.breadcrumb { display: flex; gap: .5rem; align-items: center; font-size: .85rem; color: rgba(255,255,255,.7); margin-bottom: 1rem; }
.breadcrumb a:hover { color: var(--gold-400); }

/* ---- 12b. ACCORDION / ITINERARY / ARTICLE ------------------------------- */
[data-accordion] .acc-item { border-bottom: 1px solid rgba(40,64,56,.14); }
.acc-head { display: flex; align-items: center; gap: 1rem; width: 100%; padding: 1.1rem 0; text-align: left; }
.acc-day { flex-shrink: 0; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--gold-600);
  width: 62px; }
.acc-title { flex: 1; font-family: var(--font-display); font-size: 1.25rem; color: var(--green-800); }
.acc-ico { width: 30px; height: 30px; flex-shrink: 0; display: grid; place-items: center; border-radius: 50%;
  background: rgba(40,64,56,.08); color: var(--green-700); transition: transform .3s var(--ease), background .3s; }
.acc-ico svg { width: 16px; height: 16px; }
.acc-item.open .acc-ico { transform: rotate(45deg); background: var(--gold-500); color: #fff; }
.acc-body { max-height: 0; overflow: hidden; transition: max-height .4s var(--ease); }
.acc-item.open .acc-body { max-height: 300px; }
.acc-body p { padding: 0 0 1.2rem 78px; }

.article-body { font-size: 1.08rem; color: var(--ink-soft); line-height: 1.8; }
.article-body p { margin-bottom: 1.3rem; }
.article-body h2 { font-size: clamp(1.6rem,3vw,2.2rem); margin: 2rem 0 1rem; }
.article-body h3 { margin: 1.6rem 0 .8rem; }
.article-body ul { list-style: disc; padding-left: 1.4rem; margin-bottom: 1.3rem; }
.article-body ul li { margin-bottom: .5rem; }
.article-body blockquote { border-left: 3px solid var(--gold-500); padding-left: 1.4rem; font-family: var(--font-display); font-style: italic; font-size: 1.4rem; color: var(--green-800); margin: 1.6rem 0; }

/* filter bar (listing pages) */
.filter-bar { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; margin-bottom: clamp(28px, 4vw, 44px); }
.filter-chip { padding: .55em 1.1em; border-radius: var(--r-pill); font-weight: 600; font-size: .9rem; color: var(--green-700);
  background: rgba(255,255,255,.6); border: 1px solid rgba(40,64,56,.16); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  box-shadow: var(--shadow-sm); transition: background .25s, color .25s, border-color .25s, box-shadow .25s, transform .25s; }
.filter-chip:hover { border-color: var(--gold-500); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.filter-chip:active { transform: translateY(0) scale(.96); filter: brightness(.94); }
.filter-chip.active { background: var(--green-700); color: #fff; border-color: var(--green-700); }

/* ---- 13. RESPONSIVE ----------------------------------------------------- */
@media (max-width: 1040px) {
  .footer-top { grid-template-columns: 1fr 1fr; }
  .dest-grid { grid-template-columns: repeat(2, 1fr); }
  .dest.wide, .dest.big { grid-column: span 2; }
  .split { grid-template-columns: 1fr; }
  .cols-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
  .nav-menu, .nav-cta .btn { display: none; }
  .util-left .util-item.hide-sm, .util-sep.hide-sm { display: none; }
  .booking-bar { grid-template-columns: 1fr 1fr; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .hero-trust {
    display: grid; grid-template-columns: 1fr 1fr; gap: .6rem 1rem; margin-top: 1.5rem;
    padding-top: 1.15rem; border-top: 1px solid rgba(255,255,255,.2);
  }
  .hero-trust span { font-size: .78rem; color: rgba(255,255,255,.82); white-space: nowrap; display: inline-flex; align-items: baseline; gap: .35em; }
  .hero-trust strong { color: var(--gold-400); font-weight: 800; font-family: var(--font-display); font-size: .98rem; letter-spacing: .01em; }
  /* the hero already shows these same stats (.hero-trust) above the fold
     on mobile, so the full .trust row right under the booking bar is a
     repeat, cert-strip (different content) stays visible */
  #after-hero .trust { display: none; }
  .footer-bottom { justify-content: center; text-align: center; }
  .footer-badges { justify-content: center; }
}
@media (max-width: 680px) {
  :root { --gutter: 20px; }
  .guest-strip { gap: .8rem; }
  .guest-strip .flag { width: 44px; height: 44px; }
  .cols-2, .cols-3, .cols-4 { grid-template-columns: 1fr; }
  .booking-bar { grid-template-columns: 1fr; }
  .hero-booking-wrap { margin-top: -20px; }
  .rail > * { flex-basis: 82%; }
  .dest-grid { grid-template-columns: 1fr; grid-auto-rows: 200px; }
  .dest.wide, .dest.big { grid-column: span 1; }
  .fact-grid { grid-template-columns: repeat(2, 1fr); gap: 14px 20px; }
  .fact-grid strong { font-size: .92rem; }
  .dest.big, .dest.tall { grid-row: span 1; }
  .stats { grid-template-columns: 1fr 1fr; gap: 28px; }
  .form-row { grid-template-columns: 1fr; }
  .util-bar { display: none; }
  .hero-inner { padding-top: calc(var(--header-h) + 30px); padding-bottom: 150px; }
  .page-hero { padding-top: calc(var(--header-h) + 80px); }
  .footer-top { grid-template-columns: 1fr; }
  .rail-head { flex-direction: column; align-items: flex-start; }
  .hero-actions { flex-wrap: nowrap; gap: .5rem; }
  .hero-actions .btn { flex: 1 1 0; min-width: 0; padding: .8em .6em; font-size: .82rem; white-space: nowrap; }
}
