:root {
  --ink: #2d2721;
  --ink-soft: #5c5144;
  --cream: #f7f0e0;
  --paper: #fcf9f3;
  --paper-warm: #f6ecda;
  --paper-panel: #f9f3e5;
  --olive: #46491d;
  --olive-soft: #596525;
  --orange: #bc5a0c;
  --orange-light: #ce6c16;
  --gold: #e9a119;
  --sage-wash: #e7e5d2;
  --peach-wash: #f6e8d0;
  --yellow-wash: #fcf1d7;
  --border: rgba(72, 58, 37, 0.18);
  --shadow: 0 18px 40px rgba(55, 40, 20, 0.15);
  --font-display: "DM Serif Display", Georgia, serif;
  --font-body: "Manrope", system-ui, sans-serif;
  --font-hand: "Caveat", cursive;
  --shell: min(1312px, calc(100% - 80px));
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 92px;
}

body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 10% 20%, rgba(143, 117, 75, 0.04) 0 1px, transparent 1.5px) 0 0 / 18px 18px,
    var(--paper);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
  overflow-x: hidden;
}

body.menu-open,
body.modal-open {
  overflow: hidden;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
select {
  font: inherit;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

button {
  color: inherit;
}

:focus-visible {
  outline: 3px solid var(--gold);
  outline-offset: 4px;
}

.shell {
  width: var(--shell);
  margin-inline: auto;
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 1000;
  padding: 10px 14px;
  background: var(--ink);
  color: #fff;
  border-radius: 6px;
  transform: translateY(-160%);
  transition: transform 180ms ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.button {
  min-height: 46px;
  padding: 12px 22px;
  border: 1px solid transparent;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-weight: 700;
  cursor: pointer;
  transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease;
}

.button:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(57, 41, 20, 0.18);
}

.button ion-icon {
  font-size: 1.15em;
}

.button--olive {
  background: var(--olive-soft);
  color: #fff;
}

.button--olive:hover {
  background: var(--olive);
}

.button--orange {
  color: #fff;
  background: linear-gradient(100deg, var(--orange), #d66c0c);
}

.button--paper {
  color: var(--ink);
  background: var(--paper);
}

.eyebrow {
  margin: 0 0 14px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.eyebrow--ink {
  color: var(--olive-soft);
}

.section-title {
  margin: 0;
  font: 400 clamp(2rem, 3vw, 2.55rem) / 1.05 var(--font-display);
  color: var(--ink);
}

.section-title--center {
  text-align: center;
}

.section-title span {
  position: relative;
  display: inline-block;
}

.section-title span::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 3%;
  bottom: -9px;
  height: 5px;
  border-radius: 100%;
  background: var(--gold);
  transform: rotate(-1.5deg);
}

/* Header */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(252, 249, 243, 0.98);
  border-bottom: 1px solid rgba(70, 73, 29, 0.1);
  /* NOTE: no backdrop-filter/transform/filter here — any of those would make the
     mega panel and mobile menu (position:fixed) resolve against this header box
     instead of the viewport, clipping them. Keep the header a plain sticky bar. */
}

.header-inner {
  min-height: 84px;
  display: grid;
  grid-template-columns: 190px 1fr auto;
  align-items: center;
  gap: 28px;
}

.brand {
  display: inline-flex;
  align-items: center;
  width: 164px;
}

.brand img {
  width: 100%;
  height: auto;
}

.desktop-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(18px, 2.1vw, 36px);
  font-size: 0.87rem;
  font-weight: 600;
}

.desktop-nav a {
  position: relative;
  padding: 12px 0;
}

.desktop-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 5px;
  height: 2px;
  background: var(--orange);
  transition: right 180ms ease;
}

.desktop-nav a:hover::after {
  right: 0;
}

.header-cta {
  min-width: 170px;
}

.menu-toggle {
  width: 48px;
  height: 48px;
  border: 0;
  border-radius: 50%;
  background: var(--olive);
  color: #fff;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  display: none;
}

.menu-toggle ion-icon {
  font-size: 1.8rem;
}

.mobile-menu {
  position: fixed;
  inset: 84px 0 auto;
  padding: 20px 32px 32px;
  background: var(--paper);
  border-top: 1px solid var(--border);
  box-shadow: var(--shadow);
}

.mobile-menu[hidden] {
  display: none;
}

.mobile-menu nav {
  display: grid;
  gap: 4px;
}

.mobile-menu a {
  padding: 12px 6px;
  font: 400 1.45rem/1.1 var(--font-display);
  border-bottom: 1px solid var(--border);
}

.mobile-menu .button {
  margin-top: 14px;
}

/* Hero */
.hero {
  position: relative;
  min-height: 720px;
  color: #fff;
  isolation: isolate;
  overflow: hidden;
}

.hero-photo,
.hero-shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.hero-photo {
  z-index: -3;
  object-fit: cover;
  object-position: center 55%;
  filter: saturate(0.88) contrast(1.02);
}

.hero-shade {
  z-index: -2;
  background:
    linear-gradient(90deg, rgba(25, 42, 52, 0.75) 0%, rgba(25, 42, 52, 0.28) 43%, rgba(25, 42, 52, 0.08) 70%),
    linear-gradient(0deg, rgba(22, 25, 14, 0.55) 0%, transparent 45%),
    rgba(31, 69, 96, 0.16);
}

.hero-grid {
  min-height: 720px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(520px, 610px);
  align-items: center;
  gap: 72px;
  padding-block: 42px;
}

.hero-copy {
  position: relative;
  align-self: center;
  max-width: 480px;
  padding-top: 28px;
}

.hero-copy h1 {
  margin: 0;
  max-width: 500px;
  font: 400 clamp(4rem, 6.2vw, 6rem) / 0.92 var(--font-display);
  letter-spacing: -0.035em;
  text-wrap: balance;
  text-shadow: 0 3px 22px rgba(17, 22, 20, 0.22);
}

.paint-stroke {
  display: block;
  width: 150px;
  height: 12px;
  margin: 24px 0 24px;
  border-radius: 80% 30% 75% 25%;
  background: var(--gold);
  clip-path: polygon(0 35%, 12% 18%, 30% 26%, 48% 8%, 71% 20%, 100% 0, 97% 73%, 78% 64%, 52% 92%, 25% 70%, 3% 100%);
  transform: rotate(-2deg);
}

.hero-lead {
  max-width: 420px;
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 2px 14px rgba(0, 0, 0, 0.28);
}

.dotted-flight {
  position: absolute;
  left: 320px;
  top: 320px;
  width: 120px;
  height: 75px;
  border-top: 3px dotted rgba(255, 255, 255, 0.76);
  border-radius: 50%;
  transform: rotate(18deg);
}

.dotted-flight span {
  display: none;
}

.dotted-flight ion-icon {
  position: absolute;
  right: -2px;
  top: -14px;
  font-size: 1.4rem;
  transform: rotate(58deg);
}

.paper-card {
  position: relative;
  color: var(--ink);
  background:
    radial-gradient(circle at 20% 30%, rgba(111, 84, 45, 0.045) 0 1px, transparent 1.6px) 0 0 / 14px 14px,
    var(--paper);
  box-shadow: var(--shadow);
}

.trip-builder {
  position: relative;
  width: 100%;
  padding: 42px 46px 50px;
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 14px 14px 7px 7px;
}

.trip-builder::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -13px;
  height: 23px;
  background: var(--paper);
  clip-path: polygon(0 15%, 4% 45%, 8% 24%, 12% 62%, 17% 36%, 22% 70%, 28% 36%, 33% 66%, 38% 32%, 44% 72%, 50% 35%, 56% 65%, 62% 28%, 69% 72%, 75% 35%, 81% 68%, 87% 32%, 93% 64%, 97% 27%, 100% 48%, 100% 0, 0 0);
}

.planner-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.planner-heading h2 {
  margin: 0;
  font: 400 clamp(3.45rem, 4.7vw, 4.4rem) / 0.91 var(--font-display);
  letter-spacing: -0.035em;
}

.dream-stamp {
  position: relative;
  flex: 0 0 105px;
  width: 105px;
  height: 105px;
  border: 2px solid rgba(136, 94, 48, 0.36);
  border-radius: 50%;
  color: rgba(137, 88, 40, 0.68);
  display: grid;
  place-items: center;
  transform: rotate(13deg);
}

.dream-stamp::before,
.dream-stamp::after {
  content: "";
  position: absolute;
  inset: 6px;
  border: 1px dashed currentColor;
  border-radius: 50%;
}

.dream-stamp::after {
  inset: 16px;
  border-style: solid;
  opacity: 0.3;
}

.dream-stamp ion-icon {
  font-size: 2rem;
}

.step-row {
  margin: 32px 0 16px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  border-bottom: 1px solid var(--border);
}

.planner-step {
  position: relative;
  min-height: 48px;
  padding: 5px 4px 12px;
  border: 0;
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 0.82rem;
  cursor: pointer;
}

.planner-step::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -1px;
  height: 2px;
  background: var(--olive-soft);
  transition: right 180ms ease;
}

.planner-step span {
  width: 28px;
  height: 28px;
  border: 1px solid rgba(45, 39, 33, 0.45);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.74rem;
  font-weight: 800;
}

.planner-step.is-active {
  color: var(--olive);
  font-weight: 800;
}

.planner-step.is-active::after {
  right: 0;
}

.planner-step.is-active span,
.planner-step.is-complete span {
  color: #fff;
  border-color: var(--olive-soft);
  background: var(--olive-soft);
}

.adventure-fieldset {
  margin: 0 0 18px;
  padding: 0;
  border: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.adventure-option {
  min-height: 104px;
  padding: 13px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.35);
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  cursor: pointer;
  transition: border 180ms ease, background 180ms ease, transform 180ms ease;
}

.adventure-option:hover {
  transform: translateY(-2px);
}

.adventure-option.is-selected {
  border: 1.5px solid var(--olive-soft);
  background: rgba(236, 237, 215, 0.72);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.65);
}

.adventure-option ion-icon {
  font-size: 2.25rem;
}

.adventure-option span {
  font: 400 1.12rem var(--font-display);
}

.planner-control {
  min-height: 60px;
  margin-top: 12px;
  padding: 9px 14px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.32);
  display: grid;
  grid-template-columns: 30px 1fr;
  align-items: center;
  gap: 10px;
}

.planner-control > ion-icon {
  color: var(--olive-soft);
  font-size: 1.35rem;
}

.planner-control span {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 10px;
}

.planner-control small {
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.planner-control input,
.planner-control select {
  max-width: 190px;
  min-height: 34px;
  padding: 3px 7px;
  border: 0;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.62);
  color: var(--ink);
  font-weight: 700;
}

.planner-submit {
  width: 100%;
  min-height: 58px;
  margin-top: 18px;
  font-size: 1.05rem;
}

.form-error {
  margin: 10px 0 0;
  color: #8c2d1c;
  font-size: 0.82rem;
  font-weight: 700;
}

/* Trust strip */
.trust-strip {
  position: relative;
  z-index: 3;
  background: var(--paper);
  border-bottom: 1px solid rgba(72, 58, 37, 0.08);
}

.trust-grid {
  min-height: 102px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
}

.trust-item {
  min-height: 64px;
  padding: 9px 24px;
  display: grid;
  grid-template-columns: 42px 1fr;
  align-items: center;
  gap: 12px;
  border-right: 1px solid var(--border);
}

.trust-item:first-child {
  padding-left: 0;
}

.trust-item:last-child {
  padding-right: 0;
  border-right: 0;
}

.trust-item > ion-icon {
  color: var(--olive-soft);
  font-size: 2.3rem;
  --ionicon-stroke-width: 24px;
}

.trust-item h2 {
  margin: 0 0 2px;
  font-size: 0.78rem;
  line-height: 1.2;
}

.trust-item p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.67rem;
  line-height: 1.35;
}

/* Paper route */
.paper-band {
  position: relative;
  background:
    radial-gradient(circle at 80% 20%, rgba(105, 80, 47, 0.06) 0 1px, transparent 1.5px) 0 0 / 16px 16px,
    var(--paper-warm);
}

.paper-band::before,
.paper-band::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  z-index: 2;
  height: 22px;
  background: inherit;
  pointer-events: none;
}

.paper-band::before {
  top: -13px;
  clip-path: polygon(0 60%, 4% 28%, 8% 58%, 12% 22%, 17% 64%, 22% 26%, 27% 60%, 33% 18%, 38% 64%, 44% 30%, 50% 62%, 56% 22%, 62% 64%, 68% 28%, 74% 68%, 81% 24%, 87% 64%, 93% 28%, 100% 62%, 100% 100%, 0 100%);
}

.paper-band::after {
  bottom: -13px;
  clip-path: polygon(0 0, 100% 0, 100% 40%, 96% 72%, 91% 38%, 86% 76%, 81% 36%, 75% 72%, 69% 35%, 63% 78%, 57% 36%, 51% 72%, 45% 32%, 39% 76%, 33% 38%, 27% 72%, 21% 34%, 15% 76%, 9% 38%, 4% 70%, 0 42%);
}

.destination-route {
  min-height: 430px;
  padding-block: 62px 54px;
  overflow: hidden;
}

.route-shell {
  position: relative;
}

.postcard-track {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
  padding-inline: 82px;
}

.postcard {
  position: relative;
  min-height: 285px;
  padding: 12px 12px 42px;
  color: var(--ink);
  background: #f9f4e8;
  border: 1px solid rgba(83, 62, 33, 0.15);
  border-radius: 5px;
  box-shadow: 0 10px 20px rgba(55, 42, 24, 0.17);
  transition: transform 220ms ease, box-shadow 220ms ease;
}

.postcard:hover {
  z-index: 8;
  box-shadow: 0 18px 32px rgba(55, 42, 24, 0.23);
}

.postcard--one {
  transform: rotate(-4deg) translateY(10px);
}

.postcard--two {
  transform: rotate(2deg) translateY(-4px);
}

.postcard--three {
  transform: rotate(-2deg) translateY(8px);
}

.postcard--four {
  transform: rotate(3deg) translateY(-1px);
}

.postcard--one:hover,
.postcard--two:hover,
.postcard--three:hover,
.postcard--four:hover {
  transform: rotate(0) translateY(-8px);
}

.postcard-photo {
  height: 160px;
  overflow: hidden;
  border-radius: 2px;
  background: #ddd4c1;
}

.postcard-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 450ms ease;
}

.postcard:hover img {
  transform: scale(1.05);
}

.postcard h3 {
  margin: 10px 0 1px;
  font: 400 1.45rem var(--font-display);
}

.postcard p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.78rem;
  line-height: 1.35;
}

.postcard > span {
  position: absolute;
  right: 11px;
  bottom: 10px;
  padding: 4px 9px;
  border-radius: 999px;
  background: #e9deca;
  font-size: 0.68rem;
  font-weight: 800;
}

.route-note {
  position: absolute;
  z-index: 6;
  top: 18px;
  max-width: 110px;
  font: 600 1.55rem/0.95 var(--font-hand);
  color: #4d3726;
  transform: rotate(-8deg);
}

.route-note--left {
  left: -2px;
}

.route-note--right {
  right: -2px;
  top: 190px;
  text-align: right;
  transform: rotate(7deg);
}

.route-line {
  position: absolute;
  z-index: 3;
  left: 11%;
  right: 11%;
  top: 46%;
  height: 100px;
  border-top: 3px dashed var(--olive-soft);
  border-radius: 50%;
  transform: rotate(-1deg);
  opacity: 0.85;
}

.route-line::before,
.route-line::after {
  content: "";
  position: absolute;
  top: -10px;
  width: 15px;
  height: 15px;
  border: 3px solid var(--paper-warm);
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 2px var(--olive-soft);
}

.route-line::before {
  left: 29%;
}

.route-line::after {
  right: 28%;
  background: var(--orange);
}

.route-paw {
  position: absolute;
  z-index: 2;
  color: rgba(79, 57, 37, 0.57);
  font-size: 1.7rem;
  transform: rotate(25deg);
}

.route-paw--one {
  left: 3%;
  bottom: 24px;
}

.route-paw--two {
  right: 4%;
  top: 18px;
  transform: rotate(-25deg);
}

/* Rhythm */
.rhythm-section {
  padding: 58px 0 42px;
}

.rhythm-filters {
  margin-top: 34px;
  display: flex;
  justify-content: center;
  gap: 22px;
}

.rhythm-pill {
  min-width: 176px;
  min-height: 48px;
  padding: 10px 18px;
  border: 1px solid rgba(90, 100, 38, 0.58);
  border-radius: 999px;
  background: rgba(231, 229, 210, 0.64);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  cursor: pointer;
  transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease;
}

.rhythm-pill:nth-child(2) {
  border-color: rgba(188, 90, 12, 0.55);
  background: rgba(246, 232, 208, 0.65);
}

.rhythm-pill:nth-child(3) {
  border-color: rgba(233, 161, 25, 0.7);
  background: rgba(252, 241, 215, 0.7);
}

.rhythm-pill:hover,
.rhythm-pill.is-active {
  transform: translateY(-2px);
  box-shadow: 0 8px 18px rgba(74, 56, 32, 0.12);
}

.rhythm-pill.is-active {
  color: #fff;
  border-color: var(--olive-soft);
  background: var(--olive-soft);
}

.rhythm-pill ion-icon {
  font-size: 1.25rem;
}

/* Journeys */
.journeys {
  padding: 18px 0 58px;
}

.section-heading-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  margin-bottom: 24px;
}

.section-heading-row p {
  margin: 7px 0 0;
  color: var(--ink-soft);
  font-size: 0.9rem;
}

.section-heading-row--compact {
  margin-bottom: 18px;
}

.text-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--olive);
  font-size: 0.86rem;
  font-weight: 700;
}

.text-link ion-icon {
  transition: transform 180ms ease;
}

.text-link:hover ion-icon {
  transform: translateX(4px);
}

.journey-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

.journey-card {
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(252, 249, 243, 0.82);
  overflow: hidden;
  box-shadow: 0 6px 18px rgba(64, 49, 28, 0.06);
  opacity: 1;
  transform: translateY(0);
  transition: opacity 180ms ease, transform 220ms ease, box-shadow 220ms ease;
}

.journey-card:hover {
  transform: translateY(-7px);
  box-shadow: 0 18px 36px rgba(64, 49, 28, 0.14);
}

.journey-card.is-filtered-out {
  display: none;
}

.journey-image {
  position: relative;
  height: 190px;
  overflow: hidden;
  background: #d8cfbb;
}

.journey-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.journey-card:hover .journey-image img {
  transform: scale(1.06);
}

.journey-tag {
  position: absolute;
  left: 10px;
  top: 10px;
  padding: 5px 8px;
  border-radius: 4px;
  color: #fff;
  font-size: 0.6rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.journey-tag--orange { background: #d06a0b; }
.journey-tag--clay { background: #8b422b; }
.journey-tag--olive { background: #6c702b; }
.journey-tag--brown { background: #704128; }

.journey-body {
  min-height: 150px;
  padding: 16px 15px 13px;
}

.journey-body h3 {
  margin: 0 0 5px;
  font: 400 1.25rem/1.12 var(--font-display);
}

.journey-body p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.76rem;
  line-height: 1.5;
}

.journey-body .journey-route {
  margin-bottom: 7px;
  color: var(--ink);
  font-size: 0.7rem;
  font-weight: 700;
}

.journey-meta {
  min-height: 54px;
  padding: 13px 15px;
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-size: 0.7rem;
}

.journey-meta strong {
  font-size: 0.78rem;
}

.journey-meta span {
  text-align: right;
  color: var(--ink-soft);
}

.journey-meta b {
  color: var(--olive-soft);
  font-size: 0.9rem;
}

.pricing-note {
  margin: 10px 0 0;
  color: var(--ink-soft);
  font-size: 0.67rem;
  text-align: right;
}

.included-row {
  margin-top: 25px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px 32px;
}

.included-row span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--ink-soft);
  font-size: 0.74rem;
}

.included-row ion-icon {
  color: var(--olive-soft);
  font-size: 1.05rem;
}

/* Local planner */
.planner-story {
  padding: 52px 0 50px;
}

.planner-story-grid {
  display: grid;
  grid-template-columns: 360px minmax(0, 1fr) 335px;
  align-items: center;
  gap: 50px;
}

.planner-portrait-wrap {
  position: relative;
  height: 255px;
  overflow: hidden;
  background: #d4bea0;
  clip-path: polygon(5% 5%, 15% 0, 27% 4%, 38% 1%, 50% 5%, 63% 2%, 74% 6%, 88% 1%, 97% 8%, 99% 23%, 96% 39%, 100% 55%, 96% 72%, 99% 90%, 88% 96%, 71% 94%, 58% 99%, 44% 95%, 31% 99%, 17% 94%, 3% 98%, 1% 81%, 4% 65%, 0 49%, 4% 32%, 1% 17%);
  box-shadow: var(--shadow);
}

.planner-portrait-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 47% 43%;
}

.planner-portrait-wrap span {
  position: absolute;
  left: 12px;
  bottom: 9px;
  padding: 3px 7px;
  border-radius: 3px;
  background: rgba(45, 39, 33, 0.75);
  color: #fff;
  font-size: 0.58rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.planner-story-copy .handwritten {
  margin: 10px 0 12px;
  color: var(--orange);
  font: 600 1.85rem/1 var(--font-hand);
  transform: rotate(-1deg);
}

.planner-story-copy > p:not(.handwritten) {
  max-width: 520px;
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.84rem;
}

.check-list {
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 5px;
}

.check-list li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.77rem;
}

.check-list ion-icon {
  color: var(--olive-soft);
}

.sticky-note {
  position: relative;
  min-height: 225px;
  padding: 34px 36px 25px;
  background:
    radial-gradient(circle at 18% 18%, rgba(116, 86, 47, 0.055) 0 1px, transparent 1.5px) 0 0 / 15px 15px,
    #fff8e9;
  box-shadow: 0 14px 28px rgba(58, 41, 20, 0.18);
  transform: rotate(3deg);
  text-align: center;
}

.sticky-note::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid rgba(90, 66, 37, 0.15);
  clip-path: polygon(2% 1%, 99% 2%, 98% 98%, 2% 97%);
}

.sticky-note .tape,
.giraffe-cutout .tape {
  position: absolute;
  z-index: 3;
  top: -12px;
  left: 50%;
  width: 86px;
  height: 27px;
  background: rgba(226, 209, 169, 0.76);
  box-shadow: 0 2px 4px rgba(58, 41, 20, 0.1);
  transform: translateX(-50%) rotate(-4deg);
}

.sticky-note p {
  position: relative;
  margin: 0 0 5px;
  font: 600 2.1rem/0.88 var(--font-hand);
}

.sticky-note small {
  display: block;
  margin-bottom: 14px;
  font-size: 0.71rem;
}

.sticky-note .button {
  position: relative;
  width: 100%;
  min-height: 44px;
  padding: 10px 15px;
  font-size: 0.78rem;
}

.sticky-note em {
  position: relative;
  display: block;
  margin-top: 8px;
  color: var(--ink-soft);
  font-size: 0.64rem;
  font-style: normal;
}

/* Stories */
.stories {
  padding: 48px 0 38px;
  overflow: hidden;
}

.stories-shell {
  position: relative;
  padding-right: 215px;
}

.story-track {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.story-card {
  min-height: 135px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(252, 249, 243, 0.76);
  display: grid;
  grid-template-columns: 76px 1fr;
  align-items: center;
  gap: 14px;
  box-shadow: 0 5px 15px rgba(71, 52, 28, 0.05);
}

.story-card > img {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  object-fit: cover;
}

.story-card span {
  display: block;
  margin-bottom: 3px;
  color: var(--orange);
  font-size: 0.54rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.story-card p {
  margin: 0 0 5px;
  color: var(--ink-soft);
  font: 400 0.78rem/1.45 var(--font-display);
}

.story-card strong {
  font-size: 0.63rem;
}

.giraffe-cutout {
  position: absolute;
  z-index: 4;
  right: -28px;
  bottom: -54px;
  width: 218px;
  height: 250px;
  overflow: hidden;
  background: var(--paper-warm);
  clip-path: polygon(8% 6%, 28% 1%, 46% 4%, 65% 0, 85% 7%, 99% 22%, 94% 44%, 100% 62%, 94% 81%, 98% 98%, 73% 94%, 51% 100%, 28% 95%, 4% 98%, 7% 74%, 1% 51%, 6% 30%);
  transform: rotate(4deg);
  box-shadow: var(--shadow);
}

.giraffe-cutout img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.giraffe-cutout .tape {
  top: 3px;
  width: 70px;
}

/* Seasons */
.season-guide {
  padding: 34px 0 38px;
  background: linear-gradient(180deg, rgba(248, 240, 223, 0.4), rgba(248, 240, 223, 0.82));
}

.season-guide .section-title {
  font-size: clamp(1.7rem, 2.4vw, 2.2rem);
}

.season-guide .section-title em {
  color: var(--ink-soft);
  font-family: var(--font-hand);
  font-size: 0.9em;
  font-weight: 600;
}

.season-grid {
  margin-top: 18px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 15px;
}

.season-card {
  min-height: 112px;
  padding: 18px;
  border: 1px solid rgba(82, 65, 41, 0.13);
  border-radius: 7px;
  display: grid;
  grid-template-columns: 50px 1fr;
  align-items: center;
  gap: 14px;
}

.season-card--sun { background: #f8e5b9; }
.season-card--cloud { background: #e8e8d5; }
.season-card--warm { background: #fbefd0; }
.season-card--rain { background: #e9e4d0; }

.season-card ion-icon {
  color: var(--gold);
  font-size: 2.65rem;
}

.season-card--cloud ion-icon,
.season-card--rain ion-icon {
  color: #5a8ea4;
}

.season-card strong {
  display: block;
  font-size: 0.67rem;
}

.season-card h3 {
  margin: 1px 0 2px;
  font-size: 0.82rem;
}

.season-card p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.65rem;
  line-height: 1.35;
}

/* CTA */
.final-cta {
  padding: 20px 0 0;
  background: var(--paper);
}

.final-cta-card {
  position: relative;
  min-height: 105px;
  padding: 20px 40px;
  color: #fff;
  background:
    radial-gradient(circle at 80% 50%, rgba(255, 255, 255, 0.1) 0 1px, transparent 1.5px) 0 0 / 17px 17px,
    linear-gradient(100deg, #b84c07, #d66e0e);
  display: grid;
  grid-template-columns: 95px 1fr auto 100px;
  align-items: center;
  gap: 25px;
  clip-path: polygon(1% 6%, 9% 1%, 18% 5%, 27% 0, 37% 5%, 47% 1%, 57% 5%, 67% 0, 76% 4%, 86% 1%, 99% 5%, 100% 87%, 90% 94%, 79% 90%, 68% 96%, 58% 91%, 48% 96%, 37% 90%, 26% 95%, 15% 91%, 1% 96%);
}

.final-cta .binoculars {
  font-size: 3.4rem;
}

.final-cta h2 {
  margin: 0;
  font: 400 2rem/1 var(--font-display);
}

.final-cta p {
  margin: 5px 0 0;
  color: rgba(255, 255, 255, 0.86);
  font-size: 0.79rem;
}

.final-cta .button {
  min-width: 190px;
}

.cta-footprints {
  display: flex;
  gap: 12px;
  opacity: 0.64;
  transform: rotate(-22deg);
}

.cta-footprints ion-icon {
  font-size: 1.7rem;
}

.cta-footprints ion-icon:last-child {
  transform: translateY(-13px) rotate(20deg);
}

/* Footer */
.site-footer {
  padding: 50px 0 20px;
  color: rgba(255, 255, 255, 0.76);
  background:
    linear-gradient(120deg, rgba(255, 255, 255, 0.015), transparent 55%),
    #27231f;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.6fr repeat(3, 0.8fr) 1.1fr;
  gap: 40px;
}

.footer-brand img {
  width: 190px;
  margin-bottom: 16px;
  filter: brightness(0) invert(1);
}

.footer-brand p,
.footer-ready p {
  max-width: 280px;
  margin: 0;
  font-size: 0.72rem;
  line-height: 1.55;
}

.social-links {
  margin-top: 18px;
  display: flex;
  gap: 8px;
}

.social-links a {
  width: 32px;
  height: 32px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  display: grid;
  place-items: center;
  transition: background 180ms ease, color 180ms ease;
}

.social-links a:hover {
  color: var(--ink);
  background: var(--paper);
}

.footer-column {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 7px;
}

.footer-column h2 {
  margin: 0 0 6px;
  color: #fff;
  font-size: 0.67rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.footer-column a {
  font-size: 0.69rem;
}

.footer-column a:hover {
  color: #fff;
  text-decoration: underline;
}

.footer-ready .button {
  width: 100%;
  min-height: 42px;
  margin-top: 13px;
  padding: 9px 12px;
  font-size: 0.72rem;
}

.footer-bottom {
  margin-top: 35px;
  padding-top: 15px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  display: flex;
  justify-content: space-between;
  gap: 20px;
  font-size: 0.61rem;
}

.footer-bottom > span:last-child {
  display: flex;
  gap: 20px;
}

/* Modal */
.site-modal {
  width: min(590px, calc(100% - 32px));
  max-height: min(780px, calc(100vh - 32px));
  padding: 0;
  border: 0;
  border-radius: 12px;
  background: transparent;
  overflow: visible;
}

.site-modal::backdrop {
  background: rgba(35, 29, 23, 0.65);
  backdrop-filter: blur(4px);
}

.modal-card {
  position: relative;
  max-height: min(780px, calc(100vh - 32px));
  padding: 42px;
  border: 1px solid rgba(255, 255, 255, 0.46);
  border-radius: 12px;
  background:
    radial-gradient(circle at 20% 30%, rgba(111, 84, 45, 0.05) 0 1px, transparent 1.6px) 0 0 / 14px 14px,
    var(--paper);
  box-shadow: 0 28px 70px rgba(20, 14, 9, 0.35);
  overflow-y: auto;
}

.modal-close {
  position: absolute;
  z-index: 4;
  top: 14px;
  right: 14px;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: var(--paper-warm);
  display: grid;
  place-items: center;
  cursor: pointer;
}

.modal-close ion-icon {
  font-size: 1.45rem;
}

.modal-content h2 {
  margin: 0 0 8px;
  font: 400 2.5rem/1 var(--font-display);
}

.modal-content > p {
  margin: 0 0 20px;
  color: var(--ink-soft);
  font-size: 0.85rem;
}

.trip-summary {
  margin: 22px 0;
  padding: 18px;
  border: 1px dashed rgba(70, 73, 29, 0.45);
  border-radius: 7px;
  background: rgba(231, 229, 210, 0.45);
  display: grid;
  gap: 10px;
}

.trip-summary span {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  font-size: 0.8rem;
}

.trip-summary strong {
  text-align: right;
}

.contact-form {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

.contact-form label {
  display: grid;
  gap: 5px;
  color: var(--ink-soft);
  font-size: 0.7rem;
  font-weight: 700;
}

.contact-form label:last-of-type,
.contact-form .form-status,
.contact-form .button {
  grid-column: 1 / -1;
}

.contact-form input,
.contact-form textarea {
  width: 100%;
  min-height: 45px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.65);
  color: var(--ink);
  font: inherit;
}

.contact-form textarea {
  min-height: 100px;
  resize: vertical;
}

.form-status {
  margin: 0;
  color: var(--olive);
  font-size: 0.76rem;
  font-weight: 700;
}

/* Responsive */
@media (max-width: 1180px) {
  :root {
    --shell: min(100% - 56px, 1100px);
  }

  .header-inner {
    grid-template-columns: 170px 1fr auto;
    gap: 16px;
  }

  .desktop-nav {
    gap: 15px;
    font-size: 0.77rem;
  }

  .header-cta {
    min-width: 145px;
    padding-inline: 14px;
  }

  .hero-grid {
    grid-template-columns: minmax(0, 0.85fr) minmax(500px, 1.15fr);
    gap: 42px;
  }

  .hero-copy h1 {
    font-size: 4.6rem;
  }

  .dotted-flight {
    display: none;
  }

  .trip-builder {
    padding: 36px 34px 44px;
  }

  .postcard-track {
    padding-inline: 55px;
    gap: 18px;
  }

  .planner-story-grid {
    grid-template-columns: 300px minmax(0, 1fr) 285px;
    gap: 32px;
  }

  .stories-shell {
    padding-right: 165px;
  }

  .giraffe-cutout {
    width: 175px;
  }
}

@media (max-width: 980px) {
  :root {
    --shell: min(100% - 44px, 900px);
  }

  .header-inner {
    grid-template-columns: 1fr auto;
  }

  .desktop-nav,
  .header-cta {
    display: none;
  }

  .menu-toggle {
    display: inline-flex;
  }

  .hero {
    min-height: auto;
    padding-bottom: 42px;
    overflow: visible;
    background: #315770;
  }

  .hero-photo,
  .hero-shade {
    height: 560px;
  }

  .hero-grid {
    min-height: auto;
    padding: 0;
    display: block;
  }

  .hero-copy {
    min-height: 535px;
    padding-top: 72px;
  }

  .hero-copy h1 {
    font-size: clamp(4.4rem, 10vw, 5.7rem);
  }

  .trip-builder {
    width: min(680px, 100%);
    margin: -44px auto 0;
  }

  .trust-grid {
    grid-template-columns: repeat(2, 1fr);
    padding-block: 22px;
  }

  .trust-item {
    padding: 20px 26px;
  }

  .trust-item:nth-child(2) {
    border-right: 0;
  }

  .trust-item:nth-child(-n + 2) {
    border-bottom: 1px solid var(--border);
  }

  .trust-item:first-child {
    padding-left: 26px;
  }

  .postcard-track {
    margin-inline: calc((100vw - var(--shell)) / -2);
    padding: 14px max(28px, calc((100vw - var(--shell)) / 2));
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }

  .postcard-track::-webkit-scrollbar {
    display: none;
  }

  .postcard {
    flex: 0 0 260px;
    scroll-snap-align: center;
  }

  .route-note,
  .route-paw,
  .route-line {
    display: none;
  }

  .journey-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .planner-story-grid {
    grid-template-columns: 1fr 1.3fr;
  }

  .sticky-note {
    grid-column: 1 / -1;
    width: min(430px, 100%);
    justify-self: center;
  }

  .stories-shell {
    padding-right: 0;
  }

  .story-track {
    margin-right: 125px;
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }

  .story-card {
    flex: 0 0 310px;
    scroll-snap-align: start;
  }

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

  .final-cta-card {
    grid-template-columns: 70px 1fr auto;
  }

  .cta-footprints {
    display: none;
  }

  .footer-grid {
    grid-template-columns: 1.4fr repeat(2, 1fr);
  }

  .footer-ready {
    grid-column: 2 / -1;
  }
}

@media (max-width: 680px) {
  :root {
    --shell: calc(100% - 40px);
  }

  html {
    scroll-padding-top: 75px;
  }

  .site-header {
    min-height: 72px;
  }

  .header-inner {
    min-height: 72px;
  }

  .brand {
    width: 145px;
  }

  .mobile-menu {
    inset: 72px 0 auto;
  }

  .hero-photo,
  .hero-shade {
    height: 520px;
  }

  .hero-photo {
    object-position: 48% center;
  }

  .hero-copy {
    min-height: 500px;
    padding-top: 54px;
  }

  .hero-copy .eyebrow {
    font-size: 0.61rem;
  }

  .hero-copy h1 {
    font-size: clamp(3.9rem, 17vw, 5rem);
  }

  .hero-lead {
    max-width: 320px;
    font-size: 0.9rem;
  }

  .trip-builder {
    margin-top: -28px;
    padding: 28px 20px 38px;
  }

  .planner-heading h2 {
    font-size: clamp(3rem, 13vw, 3.8rem);
  }

  .dream-stamp {
    flex-basis: 78px;
    width: 78px;
    height: 78px;
  }

  .dream-stamp ion-icon {
    font-size: 1.5rem;
  }

  .planner-step {
    justify-content: center;
    font-size: 0;
  }

  .planner-step span {
    font-size: 0.72rem;
  }

  .adventure-fieldset {
    gap: 7px;
  }

  .adventure-option {
    min-height: 94px;
    padding-inline: 4px;
  }

  .adventure-option ion-icon {
    font-size: 1.8rem;
  }

  .adventure-option span {
    font-size: 0.96rem;
  }

  .planner-control span {
    display: block;
  }

  .planner-control small {
    display: block;
    margin-bottom: 3px;
  }

  .planner-control input,
  .planner-control select {
    width: 100%;
    max-width: none;
  }

  .trust-grid {
    grid-template-columns: 1fr;
  }

  .trust-item,
  .trust-item:first-child,
  .trust-item:last-child {
    padding: 18px 5px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .trust-item:last-child {
    border-bottom: 0;
  }

  .destination-route {
    padding-block: 42px 35px;
  }

  .postcard-track {
    padding-inline: 24px;
  }

  .postcard {
    flex-basis: 245px;
  }

  .rhythm-section {
    padding-block: 45px 30px;
  }

  .rhythm-filters {
    margin-inline: -20px;
    padding: 3px 20px 12px;
    justify-content: flex-start;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }

  .rhythm-pill {
    min-width: 150px;
    scroll-snap-align: start;
  }

  .section-heading-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .journey-grid {
    grid-template-columns: 1fr;
  }

  .journey-image {
    height: 230px;
  }

  .planner-story {
    padding-block: 45px;
  }

  .planner-story-grid {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .planner-portrait-wrap {
    height: 300px;
  }

  .sticky-note {
    grid-column: auto;
    width: calc(100% - 18px);
  }

  .story-track {
    margin-right: 0;
    margin-inline: -20px;
    padding: 0 20px 14px;
  }

  .story-card {
    flex-basis: min(330px, calc(100vw - 64px));
  }

  .giraffe-cutout {
    display: none;
  }

  .season-grid {
    display: flex;
    margin-inline: -20px;
    padding: 0 20px 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }

  .season-card {
    flex: 0 0 min(300px, calc(100vw - 64px));
    scroll-snap-align: start;
  }

  .final-cta {
    padding-top: 12px;
  }

  .final-cta-card {
    min-height: 235px;
    padding: 30px 28px;
    grid-template-columns: 1fr;
    justify-items: start;
    gap: 12px;
  }

  .final-cta .binoculars {
    font-size: 2.5rem;
  }

  .final-cta .button {
    width: 100%;
  }

  .site-footer {
    padding-top: 42px;
  }

  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 22px;
  }

  .footer-brand,
  .footer-ready {
    grid-column: 1 / -1;
  }

  .footer-bottom {
    align-items: flex-start;
    flex-direction: column;
  }

  .footer-bottom > span:last-child {
    flex-wrap: wrap;
    gap: 10px 16px;
  }

  .modal-card {
    padding: 38px 22px 24px;
  }

  .contact-form {
    grid-template-columns: 1fr;
  }

  .contact-form label:last-of-type,
  .contact-form .form-status,
  .contact-form .button {
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* =========================================================
   Indigo multi-page system — Dream Trip Studio refinement
   ========================================================= */

:root {
  --paper-deep: #efe2c9;
  --paper-edge: #e4d2b2;
  --sky: #dcecf3;
  --blue-ink: #203748;
  --clay: #9e4816;
  --shell: min(1340px, calc(100% - 48px));
}

body {
  min-width: 320px;
}

[hidden] {
  display: none !important;
}

textarea {
  font: inherit;
}

.button--outline {
  color: var(--olive);
  border-color: rgba(70, 73, 29, 0.42);
  background: transparent;
}

.button--outline:hover {
  color: #fff;
  background: var(--olive);
}

.button--ghost {
  color: var(--ink);
  border-color: var(--border);
  background: rgba(255, 255, 255, 0.42);
}

.text-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--olive);
  font-size: 0.82rem;
  font-weight: 800;
}

.text-link ion-icon {
  transition: transform 180ms ease;
}

.text-link:hover ion-icon {
  transform: translateX(4px);
}

/* Header with contact strip and disclosure navigation */
.site-header {
  background: rgba(252, 249, 243, 0.97);
  overflow: visible;
}

.contact-bar {
  color: rgba(255, 255, 255, 0.9);
  background: #35391c;
}

.contact-bar__inner {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.contact-bar__details,
.top-socials {
  display: flex;
  align-items: center;
}

.contact-bar__details {
  gap: 24px;
}

.contact-bar__details a {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.68rem;
  font-weight: 700;
}

.contact-bar__details ion-icon {
  color: #e1b048;
  font-size: 0.95rem;
}

.top-socials {
  gap: 3px;
}

.top-socials a {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-inline: 1px solid rgba(255, 255, 255, 0.06);
  transition: color 160ms ease, background 160ms ease;
}

.top-socials a:hover {
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
}

.top-socials ion-icon {
  font-size: 1rem;
}

.top-socials img {
  width: 15px;
  height: 15px;
}

.header-inner {
  min-height: 78px;
  grid-template-columns: 155px minmax(0, 1fr) auto;
  gap: 18px;
}

.brand {
  width: 150px;
}

.desktop-nav {
  position: static;
  gap: clamp(12px, 1.35vw, 22px);
  font-size: clamp(0.68rem, 0.72vw, 0.82rem);
}

.desktop-nav > a,
.nav-disclosure {
  position: relative;
  min-height: 78px;
  padding: 0;
  border: 0;
  background: transparent;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  color: var(--ink);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.desktop-nav > a::after,
.nav-disclosure::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 17px;
  height: 2px;
  background: var(--orange);
  transition: right 180ms ease;
}

.desktop-nav > a:hover::after,
.desktop-nav > a[aria-current="page"]::after,
.nav-disclosure:hover::after,
.nav-disclosure[aria-expanded="true"]::after {
  right: 0;
}

.nav-disclosure > ion-icon {
  font-size: 0.78rem;
  transition: transform 180ms ease;
}

.nav-disclosure[aria-expanded="true"] > ion-icon {
  transform: rotate(180deg);
}

.nav-item {
  position: relative;
}

.nav-panel {
  position: absolute;
  top: calc(100% - 4px);
  z-index: 150;
  border: 1px solid rgba(72, 58, 37, 0.16);
  border-radius: 4px;
  background:
    radial-gradient(circle at 15% 25%, rgba(91, 67, 35, 0.04) 0 1px, transparent 1.6px) 0 0 / 14px 14px,
    #fbf5e8;
  box-shadow: 0 24px 50px rgba(45, 31, 17, 0.22);
}

.nav-panel::before {
  content: "";
  position: absolute;
  top: -8px;
  left: 48px;
  width: 16px;
  height: 16px;
  border-top: 1px solid rgba(72, 58, 37, 0.16);
  border-left: 1px solid rgba(72, 58, 37, 0.16);
  background: #fbf5e8;
  transform: rotate(45deg);
}

.nav-panel a::after {
  display: none;
}

.safari-mega {
  left: 50%;
  width: min(790px, calc(100vw - 60px));
  padding: 20px;
  grid-template-columns: 1.2fr 1fr 0.9fr;
  gap: 20px;
  transform: translateX(-28%);
}

.safari-mega:not([hidden]) {
  display: grid;
}

.mega-feature {
  position: relative;
  min-height: 270px;
  border-radius: 3px;
  overflow: hidden;
  color: #fff;
}

.mega-feature::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(25, 27, 17, 0.82), transparent 72%);
}

.mega-feature img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.mega-feature:hover img {
  transform: scale(1.045);
}

.mega-feature > span {
  position: absolute;
  z-index: 2;
  inset: auto 18px 18px;
  display: grid;
  gap: 2px;
}

.mega-feature small,
.mega-feature em {
  font-size: 0.66rem;
  font-style: normal;
}

.mega-feature strong {
  font: 400 1.45rem var(--font-display);
}

.mega-column {
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.mega-column > p {
  margin: 0 0 10px;
  color: var(--orange);
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.mega-column a {
  padding: 9px 0;
  border-bottom: 1px solid var(--border);
  display: grid;
  gap: 1px;
  font-size: 0.76rem;
}

.mega-column a:hover {
  color: var(--orange);
}

.mega-column a strong {
  font-size: 0.78rem;
}

.mega-column a span {
  color: var(--ink-soft);
  font-size: 0.62rem;
}

.mega-column .mega-all {
  margin-top: auto;
  padding: 13px 14px;
  border: 0;
  border-radius: 4px;
  background: var(--olive);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-weight: 800;
}

.hiking-dropdown {
  left: 50%;
  width: 310px;
  padding: 12px;
  transform: translateX(-35%);
}

.hiking-dropdown a {
  min-height: 64px;
  padding: 10px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.78rem;
}

.hiking-dropdown a:hover {
  background: rgba(231, 229, 210, 0.62);
}

.hiking-dropdown ion-icon {
  color: var(--olive);
  font-size: 1.45rem;
}

.hiking-dropdown a span {
  display: grid;
}

.hiking-dropdown small {
  color: var(--ink-soft);
  font-size: 0.62rem;
}

.hiking-dropdown .dropdown-all {
  min-height: 42px;
  justify-content: center;
  border: 0;
  color: #fff;
  background: var(--orange);
  font-weight: 800;
}

.header-cta {
  min-width: 156px;
  min-height: 46px;
  padding-inline: 16px;
  font-size: 0.76rem;
}

.mobile-menu {
  inset: 100% 0 auto;
  max-height: calc(100vh - 96px);
  padding: 18px 24px 28px;
  overflow-y: auto;
}

.mobile-menu nav > a,
.mobile-menu summary {
  padding: 13px 6px;
  border-bottom: 1px solid var(--border);
  font: 400 1.35rem/1.1 var(--font-display);
}

.mobile-menu details {
  border-bottom: 1px solid var(--border);
}

.mobile-menu summary {
  border: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  list-style: none;
}

.mobile-menu summary::-webkit-details-marker {
  display: none;
}

.mobile-menu details[open] summary ion-icon {
  transform: rotate(180deg);
}

.mobile-menu details > div {
  padding: 5px 0 12px 18px;
  display: grid;
}

.mobile-menu details a {
  padding: 9px 6px;
  border: 0;
  color: var(--ink-soft);
  font: 700 0.82rem var(--font-body);
}

/* Hero and CSS paint details */
.hero {
  min-height: 715px;
}

.hero-grid {
  min-height: 715px;
  grid-template-columns: minmax(0, 0.9fr) minmax(540px, 1.12fr);
  gap: clamp(44px, 5vw, 80px);
}

.hero-copy {
  max-width: 520px;
  padding-top: 6px;
}

.hero-copy h1 {
  font-size: clamp(4.4rem, 6.2vw, 6.25rem);
  margin-bottom: 24px;
}

.paint-stroke {
  display: none;
}

.paint-brush {
  position: relative;
  width: 215px;
  height: 22px;
  margin: 17px 0 20px;
  display: block;
  transform: rotate(-2.5deg);
}

.paint-brush::before {
  content: "";
  position: absolute;
  inset: 2px 0 3px;
  background: linear-gradient(90deg, transparent 0, var(--gold) 2%, #e6a01c 75%, transparent 100%);
  clip-path: polygon(0 54%, 3% 35%, 9% 31%, 17% 26%, 27% 31%, 39% 15%, 52% 23%, 64% 8%, 77% 18%, 91% 2%, 100% 18%, 96% 48%, 88% 57%, 78% 64%, 67% 74%, 55% 70%, 43% 86%, 32% 77%, 19% 92%, 8% 79%, 1% 88%);
  filter: drop-shadow(0 1px 0 rgba(92, 54, 7, 0.15));
}

.paint-brush::after {
  content: "";
  position: absolute;
  left: 10px;
  right: 28px;
  bottom: 1px;
  height: 4px;
  border-radius: 60%;
  background: linear-gradient(90deg, transparent, #f3b33d 8%, #d98d09 72%, transparent);
  transform: rotate(1.5deg);
  opacity: 0.75;
}

.paint-brush i {
  position: absolute;
  left: 42px;
  right: 8px;
  top: 0;
  height: 3px;
  border-radius: 100%;
  background: rgba(249, 188, 69, 0.82);
  transform: rotate(-1deg);
}

.paint-brush--small {
  width: 165px;
  height: 17px;
  margin-block: 12px 17px;
}

.hero-lead {
  max-width: 410px;
}

.hero-planner-slot {
  min-height: 570px;
}

.trip-builder {
  min-height: 570px;
  padding: 34px 42px 44px;
  border-radius: 13px 13px 5px 5px;
}

.trip-builder::after {
  height: 25px;
  bottom: -15px;
  background:
    radial-gradient(circle at 22% 10%, rgba(99, 73, 39, 0.05) 0 1px, transparent 1.5px) 0 0 / 14px 14px,
    var(--paper);
  clip-path: polygon(0 0, 100% 0, 100% 34%, 97% 48%, 94% 34%, 91% 62%, 87% 42%, 84% 72%, 80% 44%, 76% 65%, 72% 39%, 68% 75%, 64% 43%, 60% 67%, 55% 39%, 51% 73%, 47% 45%, 43% 69%, 39% 37%, 35% 74%, 31% 41%, 27% 67%, 23% 35%, 19% 70%, 15% 43%, 11% 64%, 7% 38%, 3% 62%, 0 45%);
}

.planner-heading h2 {
  font-size: clamp(3.35rem, 4.8vw, 4.35rem);
}

.dream-stamp {
  position: relative;
  flex: 0 0 112px;
  width: 112px;
  height: 112px;
  border: 0;
  color: rgba(151, 96, 40, 0.72);
  display: grid;
  place-items: center;
  transform: rotate(10deg);
}

.dream-stamp::before,
.dream-stamp::after {
  content: "";
  position: absolute;
  border-radius: 48% 52% 46% 54% / 52% 45% 55% 48%;
  pointer-events: none;
}

.dream-stamp::before {
  inset: 3px;
  border: 3px solid currentColor;
  clip-path: polygon(3% 18%, 10% 7%, 22% 4%, 34% 1%, 48% 3%, 61% 0, 77% 7%, 89% 14%, 97% 28%, 100% 42%, 98% 58%, 100% 72%, 91% 88%, 77% 97%, 61% 99%, 46% 97%, 30% 100%, 17% 94%, 7% 82%, 1% 66%, 3% 51%, 0 35%);
  box-shadow: inset 0 0 0 1px rgba(151, 96, 40, 0.18);
}

.dream-stamp::after {
  inset: 9px 7px 8px 10px;
  border: 1.5px dashed currentColor;
  opacity: 0.45;
  transform: rotate(-7deg);
}

.dream-stamp > ion-icon {
  position: relative;
  z-index: 3;
  font-size: 2rem;
  transform: rotate(-8deg);
}

.stamp-arc {
  position: absolute;
  z-index: 4;
  inset: 0;
}

.stamp-arc b {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 8px;
  height: 9px;
  margin: -4px;
  display: block;
  font-size: 0.41rem;
  font-weight: 800;
  line-height: 1;
  text-align: center;
  transform: rotate(var(--angle)) translateY(-39px);
  transform-origin: center;
}

.stamp-arc--bottom b {
  transform: rotate(var(--angle)) translateY(-39px) rotate(180deg);
}

.wizard-progress {
  margin: 25px 0 18px;
  padding: 0;
  border-bottom: 1px solid var(--border);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  list-style: none;
}

.wizard-progress li {
  position: relative;
  min-height: 46px;
  padding: 4px 3px 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 0.73rem;
}

.wizard-progress li::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -1px;
  height: 2px;
  background: var(--olive);
  transition: right 180ms ease;
}

.wizard-progress li.is-active::after,
.wizard-progress li.is-complete::after {
  right: 0;
}

.wizard-progress span {
  width: 28px;
  height: 28px;
  border: 1px solid rgba(45, 39, 33, 0.42);
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: 0 0 28px;
  font-size: 0.72rem;
  font-weight: 800;
}

.wizard-progress em {
  font-style: normal;
}

.wizard-progress .is-active,
.wizard-progress .is-complete {
  color: var(--olive);
  font-weight: 800;
}

.wizard-progress .is-active span,
.wizard-progress .is-complete span {
  color: #fff;
  border-color: var(--olive);
  background: var(--olive-soft);
}

.wizard-panel {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.wizard-panel > legend:not(.sr-only) {
  margin: 4px 0 0;
  padding: 0;
  font: 400 1.9rem var(--font-display);
}

.wizard-intro {
  margin: 4px 0 17px;
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.adventure-fieldset {
  margin-bottom: 13px;
}

.adventure-option {
  min-height: 94px;
}

.planner-control {
  min-height: 56px;
  margin-top: 9px;
}

.planner-submit {
  min-height: 54px;
  margin-top: 14px;
}

.wizard-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 13px;
}

.wizard-fields label,
.wizard-notes {
  display: grid;
  gap: 5px;
  color: var(--ink-soft);
  font-size: 0.69rem;
  font-weight: 800;
}

.wizard-fields input,
.wizard-notes textarea {
  width: 100%;
  min-height: 48px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--ink);
  background: rgba(255, 255, 255, 0.52);
}

.wizard-notes textarea {
  min-height: 118px;
  resize: vertical;
}

.wizard-actions {
  margin-top: 17px;
  display: grid;
  grid-template-columns: 0.72fr 1.6fr;
  gap: 10px;
}

.planner-control--select {
  margin-top: 13px;
}

.trip-review {
  margin-top: 13px;
  padding: 10px 12px;
  border: 1px dashed rgba(70, 73, 29, 0.4);
  border-radius: 5px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px 15px;
  color: var(--olive);
  background: rgba(231, 229, 210, 0.42);
  font-size: 0.68rem;
  font-weight: 800;
}

.trip-complete {
  min-height: 490px;
  padding: 48px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.trip-complete > ion-icon {
  margin-bottom: 18px;
  color: var(--olive-soft);
  font-size: 4.4rem;
}

.trip-complete h2 {
  margin: 0;
  font: 400 3rem/1 var(--font-display);
}

.trip-complete > p:not(.eyebrow) {
  max-width: 410px;
  margin: 14px auto 23px;
  color: var(--ink-soft);
  font-size: 0.8rem;
}

/* Destination postcards and route — route is deliberately above cards */
.paper-band,
.paper-section {
  position: relative;
  background:
    radial-gradient(circle at 13% 24%, rgba(101, 73, 36, 0.07) 0 1px, transparent 1.5px) 0 0 / 15px 15px,
    radial-gradient(circle at 73% 67%, rgba(132, 92, 43, 0.04) 0 1px, transparent 1.4px) 3px 5px / 21px 21px,
    linear-gradient(103deg, rgba(255, 255, 255, 0.3), transparent 42%, rgba(115, 77, 33, 0.035)),
    var(--paper-warm);
}

.paper-band::before,
.paper-band::after,
.paper-section::before,
.paper-section::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  z-index: 3;
  height: 24px;
  background: inherit;
  pointer-events: none;
}

.paper-band::before,
.paper-section::before {
  top: -14px;
  clip-path: polygon(0 54%, 3% 39%, 7% 48%, 11% 28%, 16% 42%, 21% 21%, 26% 37%, 31% 30%, 36% 45%, 42% 23%, 48% 39%, 54% 25%, 61% 43%, 67% 24%, 73% 40%, 79% 27%, 85% 44%, 91% 22%, 96% 37%, 100% 30%, 100% 100%, 0 100%);
  filter: drop-shadow(0 -3px 3px rgba(67, 45, 24, 0.09));
}

.paper-band::after,
.paper-section::after {
  bottom: -14px;
  clip-path: polygon(0 0, 100% 0, 100% 45%, 97% 62%, 93% 53%, 89% 71%, 84% 56%, 79% 76%, 74% 58%, 69% 68%, 64% 52%, 59% 74%, 54% 57%, 49% 79%, 44% 56%, 39% 69%, 34% 52%, 29% 76%, 24% 58%, 19% 71%, 14% 54%, 9% 74%, 5% 57%, 0 68%);
  filter: drop-shadow(0 4px 4px rgba(67, 45, 24, 0.1));
}

.destination-route {
  min-height: 455px;
  padding-block: 62px 56px;
}

.route-shell {
  min-height: 330px;
}

.postcard-track {
  z-index: 3;
  padding-inline: 78px;
  gap: 22px;
}

.postcard {
  min-height: 296px;
  padding: 12px 12px 44px;
  background:
    radial-gradient(circle at 18% 24%, rgba(102, 73, 38, 0.06) 0 1px, transparent 1.5px) 0 0 / 14px 14px,
    linear-gradient(135deg, rgba(255, 255, 255, 0.28), transparent 46%),
    #efe3cc;
  border-color: #d5c19f;
  box-shadow: 0 12px 23px rgba(55, 42, 24, 0.19);
}

.postcard-photo {
  height: 170px;
}

.postcard > span {
  background: #dfd0b4;
}

.route-note {
  z-index: 10;
  font-size: 1.5rem;
}

.route-overlay {
  position: absolute;
  z-index: 8;
  inset: 0;
  pointer-events: none;
}

.route-segment {
  position: absolute;
  height: 70px;
  border-top: 3px dashed rgba(67, 76, 35, 0.94);
  border-radius: 50%;
  filter: drop-shadow(0 1px 0 rgba(250, 242, 225, 0.9));
}

.route-segment--one {
  left: 14%;
  top: 192px;
  width: 27%;
  transform: rotate(7deg);
}

.route-segment--two {
  left: 37%;
  top: 176px;
  width: 29%;
  border-radius: 42% 58% 0 0;
  transform: rotate(-8deg);
}

.route-segment--three {
  left: 61%;
  top: 193px;
  width: 28%;
  transform: rotate(7deg);
}

.route-waypoint {
  position: absolute;
  z-index: 2;
  width: 15px;
  height: 15px;
  border: 3px solid var(--paper-warm);
  border-radius: 50%;
  background: var(--olive-soft);
  box-shadow: 0 0 0 2px #4c5729;
}

.route-waypoint--one { left: 27%; top: 211px; }
.route-waypoint--two { left: 47.2%; top: 201px; background: var(--gold); }
.route-waypoint--three { left: 67.2%; top: 205px; background: var(--orange); }
.route-waypoint--four { left: 87%; top: 220px; background: var(--gold); }

.route-paws {
  position: absolute;
  z-index: 9;
  inset: -4px 0;
  pointer-events: none;
}

.route-paws ion-icon {
  position: absolute;
  color: rgba(80, 57, 35, 0.64);
  font-size: 1.45rem;
}

.route-paws ion-icon:nth-child(1) { left: 1%; top: 32px; transform: rotate(22deg); }
.route-paws ion-icon:nth-child(2) { left: 3.5%; top: 78px; transform: rotate(38deg); }
.route-paws ion-icon:nth-child(3) { left: 1.5%; top: 260px; transform: rotate(-25deg); }
.route-paws ion-icon:nth-child(4) { left: 5%; top: 298px; transform: rotate(-8deg); }
.route-paws ion-icon:nth-child(5) { left: 47%; top: 7px; transform: rotate(13deg); }
.route-paws ion-icon:nth-child(6) { left: 49%; top: 38px; transform: rotate(28deg); }
.route-paws ion-icon:nth-child(7) { right: 4%; top: 12px; transform: rotate(-30deg); }
.route-paws ion-icon:nth-child(8) { right: 1%; top: 46px; transform: rotate(-12deg); }
.route-paws ion-icon:nth-child(9) { right: 3%; top: 255px; transform: rotate(23deg); }
.route-paws ion-icon:nth-child(10) { right: 6%; top: 291px; transform: rotate(42deg); }
.route-paws ion-icon:nth-child(11) { left: 24%; top: 284px; transform: rotate(-34deg); opacity: 0.42; }
.route-paws ion-icon:nth-child(12) { left: 74%; top: 24px; transform: rotate(21deg); opacity: 0.46; }

/* Local planner as a single torn sheet */
.planner-story {
  position: relative;
  isolation: isolate;
  padding: 54px 0 50px;
  background: transparent;
  overflow: visible;
}

.planner-story::before,
.planner-story::after {
  display: none;
}

.planner-paper {
  position: absolute;
  z-index: -1;
  inset: -17px 0;
  background:
    radial-gradient(circle at 20% 30%, rgba(93, 65, 31, 0.08) 0 1px, transparent 1.6px) 0 0 / 17px 17px,
    radial-gradient(circle at 80% 70%, rgba(93, 65, 31, 0.045) 0 1px, transparent 1.5px) 4px 3px / 23px 23px,
    linear-gradient(100deg, rgba(255, 255, 255, 0.28), transparent 40%, rgba(132, 91, 42, 0.035)),
    #f3e7d0;
  clip-path: polygon(0 2.6%, 4% 1.2%, 9% 2.1%, 14% 0.7%, 20% 1.8%, 27% 0.5%, 34% 2.2%, 41% 0.8%, 48% 1.9%, 55% 0.4%, 62% 2%, 69% 0.7%, 76% 1.8%, 83% 0.5%, 90% 2.1%, 96% 0.8%, 100% 1.7%, 100% 98.2%, 95% 99.5%, 89% 98.4%, 82% 99.7%, 75% 98.5%, 68% 99.4%, 61% 98.1%, 54% 99.7%, 47% 98.6%, 39% 99.6%, 31% 98.3%, 24% 99.5%, 17% 98.5%, 9% 99.6%, 0 98.2%);
  filter: drop-shadow(0 -3px 5px rgba(66, 45, 23, 0.12)) drop-shadow(0 5px 7px rgba(66, 45, 23, 0.13));
}

.planner-story-grid {
  min-height: 300px;
  grid-template-columns: minmax(280px, 0.95fr) minmax(360px, 1.35fr) minmax(280px, 0.9fr);
  gap: clamp(30px, 4vw, 62px);
  align-items: center;
}

.planner-portrait-wrap {
  position: relative;
  height: 300px;
  margin: 0;
  overflow: visible;
  background: transparent;
  clip-path: none;
}

.planner-portrait-wrap::before {
  content: "";
  position: absolute;
  inset: -9px -10px -8px -8px;
  z-index: -1;
  background: #e4d1af;
  clip-path: polygon(5% 2%, 17% 0, 31% 3%, 45% 0, 59% 2%, 74% 0, 91% 4%, 98% 14%, 96% 30%, 100% 47%, 97% 62%, 99% 79%, 93% 98%, 76% 96%, 61% 100%, 45% 97%, 30% 100%, 13% 96%, 2% 86%, 4% 68%, 0 52%, 4% 34%, 1% 17%);
  filter: drop-shadow(0 10px 18px rgba(54, 38, 20, 0.15));
}

.planner-portrait-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 37%;
  clip-path: polygon(4% 3%, 18% 0, 31% 2%, 44% 0, 60% 2%, 75% 0, 94% 4%, 99% 15%, 96% 31%, 100% 48%, 97% 64%, 99% 81%, 92% 98%, 75% 96%, 59% 100%, 44% 97%, 29% 100%, 12% 96%, 2% 85%, 4% 68%, 0 51%, 4% 33%, 1% 16%);
}

.planner-portrait-wrap figcaption {
  position: absolute;
  left: 12px;
  bottom: 8px;
  padding: 4px 7px;
  color: rgba(255, 255, 255, 0.88);
  background: rgba(38, 33, 27, 0.68);
  font-size: 0.48rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.planner-story-copy .handwritten {
  margin: 5px 0 10px;
  color: var(--orange);
  font-size: 2rem;
}

.sticky-note {
  border: 1px solid rgba(102, 76, 43, 0.14);
  clip-path: polygon(2% 2%, 30% 0, 58% 2%, 98% 0, 100% 28%, 98% 55%, 100% 98%, 63% 96%, 31% 100%, 1% 97%, 2% 62%, 0 31%);
}

/* Stories and editorial preview */
.stories {
  padding-top: 54px;
}

.journal-preview {
  margin-top: 22px;
  padding: 70px 0 68px;
}

.journal-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: 1.3fr 0.85fr 0.85fr;
  gap: 20px;
}

.journal-card {
  min-height: 400px;
  border: 1px solid rgba(81, 58, 31, 0.18);
  background: #f6ead4;
  display: grid;
  grid-template-rows: 210px 1fr;
  box-shadow: 0 12px 24px rgba(62, 43, 22, 0.1);
  transform: rotate(0.6deg);
  transition: transform 200ms ease, box-shadow 200ms ease;
}

.journal-card:nth-child(3) {
  transform: rotate(-0.8deg);
}

.journal-card:hover {
  transform: translateY(-6px) rotate(0);
  box-shadow: 0 20px 32px rgba(62, 43, 22, 0.17);
}

.journal-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.journal-card > div {
  padding: 20px;
}

.journal-card span,
.blog-page-card span,
.blog-related span {
  color: var(--orange);
  font-size: 0.59rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.journal-card h3 {
  margin: 7px 0 8px;
  font: 400 1.55rem/1.05 var(--font-display);
}

.journal-card p {
  margin: 0 0 12px;
  color: var(--ink-soft);
  font-size: 0.72rem;
}

.journal-card small {
  color: var(--ink-soft);
  font-size: 0.62rem;
}

.journal-card--lead {
  grid-template-rows: 230px 1fr;
  transform: rotate(-0.4deg);
}

.journal-card--lead h3 {
  font-size: 1.9rem;
}

/* Group departure calendar */
.departures-section {
  padding: 78px 0 72px;
  background: #faf6ed;
}

.sample-data-note {
  padding: 7px 11px;
  border: 1px dashed rgba(188, 90, 12, 0.42);
  border-radius: 999px;
  color: var(--orange);
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

.departures-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: minmax(520px, 1.2fr) minmax(350px, 0.8fr);
  gap: 22px;
}

.calendar-card,
.departure-panel {
  border: 1px solid rgba(72, 58, 37, 0.16);
  border-radius: 9px;
  background:
    radial-gradient(circle at 12% 22%, rgba(95, 69, 37, 0.045) 0 1px, transparent 1.5px) 0 0 / 15px 15px,
    #fffaf0;
  box-shadow: 0 15px 32px rgba(68, 47, 23, 0.08);
}

.calendar-card {
  padding: 24px;
}

.calendar-header {
  margin-bottom: 15px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.calendar-header h3 {
  margin: 0;
  font: 400 1.7rem var(--font-display);
}

.calendar-nav {
  width: 42px;
  height: 42px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: transparent;
  display: grid;
  place-items: center;
  cursor: pointer;
}

.calendar-nav:disabled {
  opacity: 0.28;
  cursor: not-allowed;
}

.calendar-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 5px;
  table-layout: fixed;
}

.calendar-table th {
  padding: 4px 0 9px;
  color: var(--ink-soft);
  font-size: 0.6rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.calendar-table td {
  height: 53px;
}

.calendar-table button {
  position: relative;
  width: 100%;
  height: 100%;
  border: 1px solid transparent;
  border-radius: 7px;
  background: rgba(247, 240, 224, 0.68);
  cursor: pointer;
  font-size: 0.74rem;
  font-weight: 700;
}

.calendar-table button:hover:not(:disabled) {
  border-color: var(--olive-soft);
  background: rgba(231, 229, 210, 0.8);
}

.calendar-table button:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.calendar-table button.has-departure {
  color: #fff;
  background: var(--olive-soft);
}

.calendar-table button.has-departure i {
  position: absolute;
  left: 50%;
  bottom: 5px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--gold);
  transform: translateX(-50%);
}

.calendar-table button.is-selected {
  outline: 3px solid var(--gold);
  outline-offset: 1px;
}

.calendar-key {
  margin: 13px 5px 0;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 0.65rem;
}

.calendar-key span {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--olive-soft);
}

.departure-panel {
  min-height: 100%;
  padding: 30px;
  background:
    radial-gradient(circle at 75% 15%, rgba(255, 255, 255, 0.12) 0 1px, transparent 1.5px) 0 0 / 17px 17px,
    #e8e6d3;
}

.departure-panel > h3 {
  margin: 0;
  font: 400 2rem/1.05 var(--font-display);
}

.departure-results {
  margin-top: 22px;
}

.departure-empty {
  min-height: 235px;
  padding: 24px;
  border: 1px dashed rgba(70, 73, 29, 0.38);
  border-radius: 7px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.departure-empty ion-icon {
  margin-bottom: 14px;
  color: var(--olive-soft);
  font-size: 2.4rem;
}

.departure-empty h4 {
  margin: 0;
  font: 400 1.4rem var(--font-display);
}

.departure-empty p {
  margin: 7px 0 17px;
  color: var(--ink-soft);
  font-size: 0.75rem;
}

.departure-card {
  position: relative;
  padding: 22px;
  border: 1px solid rgba(70, 73, 29, 0.25);
  border-radius: 7px;
  background: rgba(255, 250, 240, 0.82);
}

.departure-card > p {
  margin: 0;
  color: var(--orange);
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

.departure-card h4 {
  margin: 5px 0 12px;
  padding-right: 70px;
  font: 400 1.55rem/1.05 var(--font-display);
}

.departure-card > a {
  display: inline-block;
  margin-bottom: 15px;
  color: var(--olive);
  font-size: 0.7rem;
  font-weight: 800;
  text-decoration: underline;
}

.departure-card .button {
  width: 100%;
}

.departure-spaces {
  position: absolute;
  top: 18px;
  right: 18px;
  padding: 5px 8px;
  border-radius: 999px;
  color: #fff;
  background: var(--olive-soft);
  font-size: 0.56rem;
  font-weight: 800;
}

/* Gallery preview and full gallery */
.gallery-preview {
  padding: 72px 0 66px;
}

.gallery-collage {
  margin-top: 28px;
  min-height: 520px;
  display: grid;
  grid-template-columns: 1.5fr 0.8fr 0.8fr;
  grid-template-rows: repeat(2, 250px);
  gap: 12px;
}

.gallery-tile {
  position: relative;
  overflow: hidden;
  background: #d7c8aa;
}

.gallery-tile--lead {
  grid-row: 1 / 3;
}

.gallery-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.gallery-tile::after {
  content: "";
  position: absolute;
  inset: 50% 0 0;
  background: linear-gradient(0deg, rgba(24, 25, 17, 0.6), transparent);
}

.gallery-tile:hover img {
  transform: scale(1.045);
}

.gallery-tile span {
  position: absolute;
  z-index: 2;
  left: 15px;
  bottom: 13px;
  color: #fff;
  font: 600 1.15rem var(--font-hand);
}

/* Generic inner pages */
.page-hero {
  position: relative;
  min-height: 510px;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
}

.page-hero > img,
.page-hero__shade {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
}

.page-hero > img {
  object-fit: cover;
  object-position: center 50%;
}

.page-hero__shade {
  z-index: -1;
  background: linear-gradient(90deg, rgba(25, 39, 45, 0.79), rgba(25, 39, 45, 0.22) 62%, rgba(25, 39, 45, 0.05)), linear-gradient(0deg, rgba(25, 29, 18, 0.5), transparent 55%);
}

.page-hero__content {
  min-height: 510px;
  padding-block: 78px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.page-hero__content h1 {
  max-width: 760px;
  margin: 0;
  font: 400 clamp(3.7rem, 6vw, 6rem) / 0.92 var(--font-display);
  letter-spacing: -0.035em;
}

.page-hero__content h1 em {
  color: #f1bd4b;
  font-weight: inherit;
}

.page-hero__content > p:last-child {
  max-width: 610px;
  margin: 0;
  color: rgba(255, 255, 255, 0.9);
  font-size: 0.92rem;
  line-height: 1.7;
}

.page-hero--zanzibar > img {
  object-position: center 57%;
}

.page-hero--about > img {
  object-position: center 40%;
}

.standard-section {
  padding: 82px 0;
}

.intro-grid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 9vw;
  align-items: start;
}

.intro-grid > div:last-child > p,
.section-lead {
  margin: 0 0 20px;
  color: var(--ink-soft);
  font-size: 0.88rem;
  line-height: 1.75;
}

.section-heading-row > div > p:last-child {
  color: var(--ink-soft);
}

.catalog-grid {
  margin-top: 30px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.catalog-card .journey-body h2 {
  margin: 4px 0 5px;
  font: 400 1.3rem/1.08 var(--font-display);
}

.catalog-card[hidden] {
  display: none;
}

.card-kicker {
  color: var(--orange);
  font-size: 0.56rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.catalog-toolbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
}

.catalog-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.catalog-filter,
.gallery-filter {
  min-height: 39px;
  padding: 8px 15px;
  border: 1px solid rgba(70, 73, 29, 0.34);
  border-radius: 999px;
  color: var(--olive);
  background: transparent;
  font-size: 0.69rem;
  font-weight: 800;
  cursor: pointer;
}

.catalog-filter:hover,
.catalog-filter.is-active,
.gallery-filter:hover,
.gallery-filter.is-active {
  color: #fff;
  background: var(--olive-soft);
}

.destination-deepdives {
  padding: 74px 0;
}

.destination-deepdives__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.destination-deepdives article {
  border: 1px solid rgba(83, 61, 34, 0.18);
  background: #efe2c9;
  box-shadow: 0 13px 25px rgba(58, 40, 19, 0.1);
}

.destination-deepdives img {
  width: 100%;
  height: 230px;
  object-fit: cover;
}

.destination-deepdives article > div {
  position: relative;
  padding: 22px;
}

.destination-deepdives article > div > span {
  position: absolute;
  right: 18px;
  top: -29px;
  width: 48px;
  height: 48px;
  border: 4px solid #efe2c9;
  border-radius: 50%;
  color: #fff;
  background: var(--orange);
  display: grid;
  place-items: center;
  font-size: 0.66rem;
  font-weight: 800;
}

.destination-deepdives h2 {
  margin: 0;
  font: 400 1.8rem var(--font-display);
}

.destination-deepdives p {
  min-height: 58px;
  color: var(--ink-soft);
  font-size: 0.75rem;
}

.destination-deepdives a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--olive);
  font-size: 0.7rem;
  font-weight: 800;
}

.values-band {
  padding: 54px 0;
  color: #fff;
  background: #3f4724;
}

.values-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
}

.values-grid article {
  padding: 20px 36px;
  border-right: 1px solid rgba(255, 255, 255, 0.16);
}

.values-grid article:last-child {
  border-right: 0;
}

.values-grid ion-icon {
  margin-bottom: 13px;
  color: #e8ba51;
  font-size: 2.2rem;
}

.values-grid h2 {
  margin: 0;
  font: 400 1.4rem var(--font-display);
}

.values-grid p {
  margin: 6px 0 0;
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.73rem;
}

.inner-cta {
  padding: 24px 0 0;
  background: var(--paper);
}

.inner-cta__card {
  position: relative;
  min-height: 160px;
  padding: 34px 55px;
  color: #fff;
  background:
    radial-gradient(circle at 80% 50%, rgba(255, 255, 255, 0.09) 0 1px, transparent 1.5px) 0 0 / 17px 17px,
    linear-gradient(100deg, #ad490b, #cf690f);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  clip-path: polygon(1% 5%, 12% 1%, 24% 4%, 37% 0, 51% 4%, 65% 1%, 80% 5%, 99% 1%, 100% 92%, 88% 96%, 73% 92%, 58% 97%, 43% 93%, 28% 97%, 13% 93%, 1% 97%);
}

.inner-cta__card .eyebrow {
  margin-bottom: 6px;
}

.inner-cta h2 {
  margin: 0;
  font: 400 2.2rem/1 var(--font-display);
}

.inner-cta p:last-child {
  margin: 7px 0 0;
  color: rgba(255, 255, 255, 0.8);
  font-size: 0.76rem;
}

.inner-cta .button {
  flex: 0 0 auto;
}

.mountain-choice-grid {
  margin-top: 30px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.mountain-choice-grid a {
  position: relative;
  min-height: 470px;
  padding: 26px;
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden;
  isolation: isolate;
}

.mountain-choice-grid a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(0deg, rgba(24, 28, 22, 0.82), transparent 65%);
}

.mountain-choice-grid img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.mountain-choice-grid a:hover img {
  transform: scale(1.04);
}

.mountain-choice-grid span {
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.mountain-choice-grid h2 {
  margin: 5px 0;
  font: 400 2rem var(--font-display);
}

.mountain-choice-grid p {
  margin: 0;
  color: rgba(255, 255, 255, 0.82);
  font-size: 0.72rem;
}

.safety-section {
  padding: 72px 0;
  color: #fff;
  background: #283745;
}

.safety-grid {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 80px;
  align-items: center;
}

.safety-grid h2 {
  margin: 0;
  font: 400 2.5rem/1 var(--font-display);
}

.safety-grid ul {
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
  list-style: none;
}

.safety-grid li {
  min-height: 80px;
  padding: 17px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  display: flex;
  align-items: center;
  gap: 13px;
  font-size: 0.72rem;
}

.safety-grid li ion-icon {
  flex: 0 0 auto;
  color: #e8ba51;
  font-size: 1.8rem;
}

.mountain-intro {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 8vw;
  align-items: center;
}

.mountain-intro > div:first-child > p:not(.eyebrow) {
  margin: 18px 0 25px;
  color: var(--ink-soft);
  line-height: 1.75;
}

.fact-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  border: 1px solid var(--border);
  background: var(--paper-warm);
}

.fact-grid > div {
  min-height: 120px;
  padding: 24px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.fact-grid > div:nth-child(2n) {
  border-right: 0;
}

.fact-grid > div:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.fact-grid span {
  color: var(--ink-soft);
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
}

.fact-grid strong {
  margin-top: 5px;
  font: 400 1.3rem var(--font-display);
}

.mountain-notes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.mountain-notes article {
  min-height: 215px;
  padding: 28px;
  border: 1px solid rgba(90, 65, 35, 0.18);
  background: rgba(255, 250, 240, 0.58);
}

.mountain-notes span {
  color: var(--orange);
  font: 600 1.6rem var(--font-hand);
}

.mountain-notes h2 {
  margin: 10px 0 8px;
  font: 400 1.55rem var(--font-display);
}

.mountain-notes p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.75rem;
}

.experience-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 25px;
}

.experience-grid article {
  position: relative;
  min-height: 250px;
  padding: 32px;
  border: 1px solid var(--border);
  background: #faf3e5;
}

.experience-grid ion-icon {
  color: var(--olive);
  font-size: 2.5rem;
}

.experience-grid article > span {
  position: absolute;
  top: 25px;
  right: 25px;
  color: #d9c4a0;
  font: 400 2.1rem var(--font-display);
}

.experience-grid h2 {
  margin: 30px 0 7px;
  font: 400 1.7rem var(--font-display);
}

.experience-grid p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.image-story {
  padding: 72px 0;
}

.image-story__grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 7vw;
  align-items: center;
}

.image-story__grid > img {
  width: 100%;
  height: 450px;
  object-fit: cover;
  clip-path: polygon(2% 2%, 27% 0, 49% 2%, 72% 0, 98% 3%, 100% 26%, 98% 48%, 100% 72%, 97% 98%, 74% 96%, 51% 100%, 28% 97%, 1% 99%, 3% 72%, 0 47%, 3% 23%);
  filter: drop-shadow(0 14px 25px rgba(58, 41, 20, 0.18));
}

.image-story__grid > div > p:not(.eyebrow) {
  margin: 18px 0 24px;
  color: var(--ink-soft);
  line-height: 1.75;
}

.about-story-grid,
.responsible-grid {
  display: grid;
  grid-template-columns: 1fr 0.82fr;
  gap: 8vw;
  align-items: center;
}

.about-story-grid > div > p:not(.eyebrow),
.responsible-grid > div > p:not(.eyebrow) {
  color: var(--ink-soft);
  line-height: 1.75;
}

.paper-photo {
  position: relative;
  margin: 0;
  padding: 13px 13px 42px;
  background: #eee0c6;
  box-shadow: 0 18px 36px rgba(57, 40, 20, 0.17);
  transform: rotate(2deg);
}

.paper-photo::before {
  content: "";
  position: absolute;
  top: -14px;
  left: 50%;
  width: 95px;
  height: 28px;
  background: rgba(218, 198, 157, 0.78);
  transform: translateX(-50%) rotate(-5deg);
}

.paper-photo img {
  width: 100%;
  height: 420px;
  object-fit: cover;
}

.paper-photo figcaption {
  position: absolute;
  left: 18px;
  bottom: 13px;
  color: var(--ink-soft);
  font-size: 0.58rem;
}

.values-grid--paper {
  grid-template-columns: repeat(4, 1fr);
  color: var(--ink);
}

.values-grid--paper article {
  border-right-color: var(--border);
}

.values-grid--paper p {
  color: var(--ink-soft);
}

.check-list--large {
  gap: 11px;
}

.check-list--large li {
  font-size: 0.8rem;
}

.responsible-grid > div:first-child img {
  width: 100%;
  height: 480px;
  object-fit: cover;
}

.faq-section {
  padding: 76px 0;
}

.faq-grid {
  display: grid;
  grid-template-columns: 0.78fr 1.22fr;
  gap: 8vw;
}

.faq-list details {
  border-bottom: 1px solid rgba(76, 57, 32, 0.2);
}

.faq-list summary {
  min-height: 68px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  font: 400 1.15rem var(--font-display);
  cursor: pointer;
  list-style: none;
}

.faq-list summary::-webkit-details-marker {
  display: none;
}

.faq-list details[open] summary ion-icon {
  transform: rotate(45deg);
}

.faq-list p {
  margin: -3px 50px 20px 0;
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.contact-section {
  padding: 24px 0 0;
}

.contact-card {
  min-height: 190px;
  padding: 40px 55px;
  color: #fff;
  background: #ad4c0e;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
}

.contact-card h2 {
  margin: 0;
  font: 400 2.3rem var(--font-display);
}

.contact-card p:last-child {
  margin: 10px 0 0;
  font-size: 0.76rem;
}

/* Full gallery and blog */
.gallery-page-grid {
  margin-top: 30px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 220px;
  gap: 10px;
}

.gallery-page-item {
  position: relative;
  padding: 0;
  border: 0;
  overflow: hidden;
  background: #d6c7aa;
  cursor: zoom-in;
}

.gallery-page-item--1,
.gallery-page-item--5 {
  grid-column: span 2;
  grid-row: span 2;
}

.gallery-page-item--3 {
  grid-row: span 2;
}

.gallery-page-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 450ms ease;
}

.gallery-page-item:hover img {
  transform: scale(1.04);
}

.gallery-page-item > span {
  position: absolute;
  inset: auto 0 0;
  padding: 38px 16px 14px;
  color: #fff;
  background: linear-gradient(0deg, rgba(28, 27, 18, 0.75), transparent);
  display: grid;
  justify-items: start;
  font: 600 1.05rem var(--font-hand);
  text-align: left;
}

.gallery-page-item small {
  font: 800 0.5rem var(--font-body);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.blog-page-grid {
  margin-top: 30px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 22px;
}

.blog-page-card {
  border: 1px solid var(--border);
  background: #f7eedc;
}

.blog-page-card > a {
  height: 100%;
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
}

.blog-page-card img {
  width: 100%;
  height: 100%;
  min-height: 330px;
  object-fit: cover;
}

.blog-page-card > a > div {
  padding: 30px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.blog-page-card h2 {
  margin: 9px 0 10px;
  font: 400 1.8rem/1.05 var(--font-display);
}

.blog-page-card p {
  margin: 0 0 20px;
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.blog-page-card small {
  color: var(--ink-soft);
  font-size: 0.62rem;
}

.blog-page-card b {
  margin-top: auto;
  padding-top: 22px;
  color: var(--olive);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.7rem;
}

.blog-page-card--lead {
  grid-column: 1 / -1;
}

.blog-page-card--lead > a {
  grid-template-columns: 1.15fr 0.85fr;
}

.blog-page-card--lead h2 {
  font-size: 2.4rem;
}

/* Package details */
.detail-hero {
  position: relative;
  min-height: 620px;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
}

.detail-hero > img,
.detail-hero__shade {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
}

.detail-hero > img {
  object-fit: cover;
}

.detail-hero__shade {
  z-index: -1;
  background: linear-gradient(90deg, rgba(26, 38, 43, 0.84), rgba(26, 38, 43, 0.18) 70%), linear-gradient(0deg, rgba(25, 28, 18, 0.62), transparent 58%);
}

.detail-hero__content {
  min-height: 620px;
  padding-block: 55px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.breadcrumbs {
  margin-bottom: 45px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  color: rgba(255, 255, 255, 0.76);
  font-size: 0.62rem;
}

.breadcrumbs a:hover {
  color: #fff;
  text-decoration: underline;
}

.breadcrumbs ion-icon {
  font-size: 0.68rem;
}

.detail-hero h1 {
  max-width: 850px;
  margin: 0;
  font: 400 clamp(4rem, 6vw, 6rem) / 0.94 var(--font-display);
}

.detail-hero__content > p:not(.eyebrow) {
  max-width: 620px;
  margin: 18px 0 26px;
  color: rgba(255, 255, 255, 0.88);
  line-height: 1.7;
}

.detail-stats {
  color: #fff;
  background: #3d4324;
}

.detail-stats .shell {
  min-height: 110px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
}

.detail-stats .shell > div {
  padding: 18px 25px;
  border-right: 1px solid rgba(255, 255, 255, 0.14);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.detail-stats .shell > div:last-child {
  border-right: 0;
}

.detail-stats span {
  color: rgba(255, 255, 255, 0.62);
  font-size: 0.56rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.detail-stats strong {
  margin-top: 4px;
  font: 400 1.1rem var(--font-display);
}

.detail-overview {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: 9vw;
  align-items: start;
}

.detail-lead {
  margin: 20px 0 12px;
  font: 400 1.35rem/1.45 var(--font-display);
}

.detail-overview > div > p:last-child {
  color: var(--ink-soft);
  line-height: 1.75;
}

.detail-plan-card {
  position: relative;
  padding: 36px;
  border: 1px solid rgba(86, 62, 33, 0.18);
  background:
    radial-gradient(circle at 20% 20%, rgba(104, 76, 41, 0.055) 0 1px, transparent 1.5px) 0 0 / 14px 14px,
    #f6ead3;
  box-shadow: 0 18px 34px rgba(55, 38, 19, 0.15);
  transform: rotate(1.5deg);
}

.detail-plan-card .tape {
  position: absolute;
  top: -14px;
  left: 50%;
  width: 95px;
  height: 28px;
  background: rgba(218, 198, 157, 0.78);
  transform: translateX(-50%) rotate(-4deg);
}

.detail-plan-card .handwritten {
  margin: 0;
  color: var(--orange);
  font-size: 1.8rem;
}

.detail-plan-card h2 {
  margin: 4px 0 15px;
  font: 400 1.65rem var(--font-display);
}

.detail-plan-card ul {
  margin: 0 0 20px;
  padding-left: 19px;
  color: var(--ink-soft);
  font-size: 0.72rem;
}

.detail-plan-card .button {
  width: 100%;
}

.detail-plan-card small {
  display: block;
  margin-top: 10px;
  color: var(--ink-soft);
  font-size: 0.56rem;
  text-align: center;
}

.highlights-section {
  padding: 72px 0;
}

.highlight-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 15px;
}

.highlight-grid article {
  min-height: 150px;
  padding: 23px;
  border: 1px solid rgba(82, 61, 33, 0.17);
  background: rgba(255, 250, 240, 0.55);
}

.highlight-grid span {
  color: var(--orange);
  font: 600 1.3rem var(--font-hand);
}

.highlight-grid p {
  margin: 25px 0 0;
  font: 400 1.05rem/1.3 var(--font-display);
}

.itinerary-grid {
  display: grid;
  grid-template-columns: 0.72fr 1.28fr;
  gap: 8vw;
  align-items: start;
}

.itinerary-grid > div > p:last-child {
  color: var(--ink-soft);
  font-size: 0.78rem;
}

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

.itinerary-list li {
  position: relative;
  padding: 0 0 30px 96px;
  display: grid;
  min-height: 100px;
}

.itinerary-list li::before {
  content: "";
  position: absolute;
  left: 58px;
  top: 11px;
  bottom: -5px;
  border-left: 1px dashed rgba(70, 73, 29, 0.48);
}

.itinerary-list li:last-child::before {
  display: none;
}

.itinerary-list > li > span {
  position: absolute;
  left: 0;
  top: 0;
  width: 67px;
  min-height: 30px;
  padding: 7px 9px;
  border-radius: 999px;
  color: #fff;
  background: var(--olive-soft);
  font-size: 0.62rem;
  font-weight: 800;
  text-align: center;
}

.itinerary-list > li > span::after {
  content: "";
  position: absolute;
  right: -25px;
  top: 11px;
  width: 8px;
  height: 8px;
  border: 3px solid var(--paper);
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 1px var(--olive);
}

.itinerary-list h3 {
  margin: 0 0 5px;
  font: 400 1.4rem var(--font-display);
}

.itinerary-list p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.76rem;
  line-height: 1.65;
}

.included-section {
  padding: 74px 0;
}

.included-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8vw;
}

.detail-list {
  margin: 25px 0 0;
  padding: 0;
  display: grid;
  gap: 11px;
  list-style: none;
}

.detail-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: var(--ink-soft);
  font-size: 0.78rem;
}

.detail-list ion-icon {
  flex: 0 0 auto;
  margin-top: 2px;
  color: var(--olive-soft);
  font-size: 1rem;
}

.detail-list--excluded ion-icon {
  color: var(--orange);
}

/* Journal details */
.post-hero {
  padding: 78px 0 70px;
  background: var(--paper-warm);
}

.post-hero__grid {
  display: grid;
  grid-template-columns: 1fr 0.72fr;
  gap: 8vw;
  align-items: center;
}

.breadcrumbs--ink {
  margin-bottom: 35px;
  color: var(--ink-soft);
}

.post-hero h1 {
  margin: 0;
  font: 400 clamp(3.3rem, 5.2vw, 5rem) / 0.98 var(--font-display);
}

.post-hero__grid > div > p:not(.eyebrow) {
  margin: 18px 0;
  color: var(--ink-soft);
  font-size: 0.9rem;
  line-height: 1.7;
}

.post-hero small {
  color: var(--ink-soft);
  font-size: 0.66rem;
}

.post-hero .paper-photo img {
  height: 470px;
}

.post-layout {
  padding-block: 78px;
  display: grid;
  grid-template-columns: 80px minmax(0, 720px);
  gap: 50px;
  justify-content: center;
}

.post-share {
  position: sticky;
  top: 150px;
  align-self: start;
  display: grid;
  justify-items: center;
  gap: 8px;
}

.post-share > span {
  margin-bottom: 5px;
  color: var(--ink-soft);
  font-size: 0.55rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.post-share a {
  width: 38px;
  height: 38px;
  border: 1px solid var(--border);
  border-radius: 50%;
  display: grid;
  place-items: center;
}

.post-body {
  color: var(--ink-soft);
  line-height: 1.8;
}

.post-intro {
  margin: 0 0 40px;
  color: var(--ink);
  font: 400 1.55rem/1.5 var(--font-display);
}

.post-body section {
  margin-bottom: 38px;
}

.post-body h2 {
  margin: 0 0 10px;
  color: var(--ink);
  font: 400 2rem/1.1 var(--font-display);
}

.post-body p {
  margin: 0;
}

.post-callout {
  margin-top: 50px;
  padding: 35px;
  border: 1px solid rgba(87, 61, 33, 0.16);
  background: var(--paper-warm);
}

.post-callout .handwritten {
  margin: 0;
  color: var(--orange);
  font-size: 1.8rem;
}

.post-callout .button {
  margin-top: 20px;
}

.blog-related {
  margin-top: 28px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 22px;
}

.blog-related a {
  padding: 12px 12px 22px;
  border: 1px solid var(--border);
  background: rgba(255, 250, 240, 0.58);
}

.blog-related img {
  width: 100%;
  height: 220px;
  margin-bottom: 18px;
  object-fit: cover;
}

.blog-related h2 {
  margin: 7px 0 0;
  font: 400 1.5rem/1.08 var(--font-display);
}

/* Legal pages */
.legal-page {
  padding: 95px 0;
}

.legal-shell {
  max-width: 830px;
}

.legal-page h1 {
  margin: 0;
  font: 400 clamp(3.4rem, 6vw, 5rem) var(--font-display);
}

.legal-intro {
  margin: 18px 0 35px;
  color: var(--ink-soft);
  font: 400 1.2rem/1.55 var(--font-display);
}

.legal-notice {
  margin-bottom: 45px;
  padding: 20px;
  border: 1px dashed rgba(188, 90, 12, 0.45);
  color: var(--clay);
  background: var(--paper-warm);
  display: grid;
  grid-template-columns: 30px 1fr;
  gap: 12px;
}

.legal-notice ion-icon {
  font-size: 1.5rem;
}

.legal-notice p {
  margin: 0;
  font-size: 0.76rem;
}

.legal-page section {
  margin-bottom: 32px;
}

.legal-page h2 {
  margin: 0 0 8px;
  font: 400 1.75rem var(--font-display);
}

.legal-page section p {
  margin: 0;
  color: var(--ink-soft);
  line-height: 1.75;
}

/* Modal refinements */
.site-modal {
  width: min(680px, calc(100% - 28px));
  max-height: calc(100vh - 24px);
}

.site-modal--planner {
  width: min(690px, calc(100% - 28px));
}

.site-modal--planner .modal-card {
  padding: 0;
  overflow: visible;
}

.site-modal--planner .modal-close {
  top: 13px;
  right: 13px;
  z-index: 20;
}

.site-modal--planner .trip-builder {
  box-shadow: none;
}

.site-modal--planner .trip-builder::after {
  display: none;
}

.site-modal--lightbox {
  width: min(1050px, calc(100% - 28px));
}

.site-modal--lightbox .modal-card {
  padding: 12px 12px 25px;
}

.lightbox-content img {
  width: 100%;
  max-height: 72vh;
  object-fit: contain;
  background: #241f19;
}

.lightbox-content .eyebrow {
  margin: 18px 12px 3px;
}

.lightbox-content h2 {
  margin-inline: 12px;
}

/* Footer fixes for real page links */
.footer-grid {
  grid-template-columns: 1.45fr 0.7fr 0.7fr 1.1fr 1fr;
}

.footer-column > span {
  font-size: 0.69rem;
  line-height: 1.55;
}

/* Responsive */
@media (max-width: 1240px) {
  :root {
    --shell: min(100% - 42px, 1160px);
  }

  .header-inner {
    grid-template-columns: 140px minmax(0, 1fr) auto;
    gap: 12px;
  }

  .brand {
    width: 135px;
  }

  .desktop-nav {
    gap: 11px;
    font-size: 0.68rem;
  }

  .header-cta {
    min-width: 137px;
    padding-inline: 12px;
  }

  .hero-grid {
    grid-template-columns: minmax(0, 0.78fr) minmax(520px, 1.22fr);
    gap: 40px;
  }

  .hero-copy h1 {
    font-size: 4.65rem;
  }

  .postcard-track {
    padding-inline: 60px;
    gap: 16px;
  }

  .planner-story-grid {
    grid-template-columns: 280px minmax(310px, 1fr) 265px;
    gap: 30px;
  }

  .catalog-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 1040px) {
  :root {
    --shell: min(100% - 40px, 920px);
  }

  .desktop-nav,
  .header-cta {
    display: none;
  }

  .header-inner {
    grid-template-columns: 1fr auto;
  }

  .brand {
    width: 150px;
  }

  .menu-toggle {
    display: inline-flex;
  }

  .hero {
    padding-bottom: 48px;
  }

  .hero,
  .hero-grid {
    min-height: auto;
  }

  .hero-photo,
  .hero-shade {
    height: 600px;
  }

  .hero-grid {
    display: block;
  }

  .hero-copy {
    min-height: 575px;
    padding-top: 82px;
  }

  .hero-planner-slot {
    width: min(690px, 100%);
    min-height: 570px;
    margin: -50px auto 0;
  }

  .trip-builder {
    margin: 0;
  }

  .route-overlay,
  .route-paws,
  .route-note {
    display: none;
  }

  .postcard-track {
    z-index: 4;
  }

  .planner-story-grid {
    grid-template-columns: 0.85fr 1.15fr;
  }

  .planner-story .sticky-note {
    grid-column: 1 / -1;
    width: min(440px, 100%);
    justify-self: center;
  }

  .journal-grid {
    grid-template-columns: 1fr 1fr;
  }

  .journal-card--lead {
    grid-column: 1 / -1;
    grid-template-columns: 1.1fr 0.9fr;
    grid-template-rows: none;
  }

  .departures-grid {
    grid-template-columns: 1fr;
  }

  .gallery-collage {
    grid-template-columns: 1.25fr 0.75fr;
  }

  .gallery-tile:nth-child(4),
  .gallery-tile:nth-child(5) {
    display: none;
  }

  .page-hero,
  .page-hero__content {
    min-height: 460px;
  }

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

  .destination-deepdives__grid,
  .mountain-choice-grid,
  .experience-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .destination-deepdives article:last-child,
  .mountain-choice-grid a:last-child,
  .experience-grid article:last-child {
    grid-column: 1 / -1;
  }

  .safety-grid,
  .mountain-intro,
  .image-story__grid,
  .about-story-grid,
  .responsible-grid,
  .faq-grid {
    gap: 45px;
  }

  .values-grid--paper {
    grid-template-columns: repeat(2, 1fr);
  }

  .values-grid--paper article:nth-child(2) {
    border-right: 0;
  }

  .values-grid--paper article:nth-child(-n + 2) {
    border-bottom: 1px solid var(--border);
  }

  .gallery-page-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .detail-stats .shell {
    grid-template-columns: repeat(3, 1fr);
  }

  .detail-stats .shell > div:nth-child(3) {
    border-right: 0;
  }

  .detail-stats .shell > div:nth-child(n + 4) {
    border-top: 1px solid rgba(255, 255, 255, 0.14);
  }

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

  .footer-grid {
    grid-template-columns: 1.3fr repeat(2, 0.8fr);
  }

  .footer-ready {
    grid-column: auto;
  }
}

@media (max-width: 760px) {
  :root {
    --shell: calc(100% - 32px);
  }

  html {
    scroll-padding-top: 112px;
  }

  .contact-bar__inner {
    min-height: 32px;
  }

  .contact-bar__details {
    gap: 10px;
  }

  .contact-bar__details a {
    min-height: 32px;
  }

  .contact-bar__details a:first-child span {
    display: none;
  }

  .top-socials a {
    width: 30px;
    height: 32px;
  }

  .header-inner {
    min-height: 70px;
  }

  .brand {
    width: 138px;
  }

  .hero-photo,
  .hero-shade {
    height: 530px;
  }

  .hero-copy {
    min-height: 515px;
    padding-top: 54px;
  }

  .hero-copy h1 {
    font-size: clamp(3.65rem, 16vw, 4.75rem);
  }

  .paint-brush {
    width: 180px;
  }

  .hero-planner-slot {
    margin-top: -24px;
  }

  .trip-builder {
    min-height: 0;
    padding: 28px 19px 37px;
  }

  .planner-heading h2 {
    font-size: clamp(3rem, 13vw, 3.7rem);
  }

  .dream-stamp {
    flex-basis: 82px;
    width: 82px;
    height: 82px;
  }

  .stamp-arc b {
    font-size: 0.34rem;
    transform: rotate(var(--angle)) translateY(-28px);
  }

  .stamp-arc--bottom b {
    transform: rotate(var(--angle)) translateY(-28px) rotate(180deg);
  }

  .dream-stamp > ion-icon {
    font-size: 1.45rem;
  }

  .wizard-progress em {
    display: none;
  }

  .wizard-progress li {
    justify-content: center;
  }

  .wizard-fields {
    grid-template-columns: 1fr;
  }

  .wizard-actions {
    grid-template-columns: 0.75fr 1.45fr;
  }

  .trust-grid {
    grid-template-columns: 1fr;
  }

  .destination-route {
    padding-block: 45px 38px;
  }

  .planner-story {
    padding-block: 52px;
  }

  .planner-story-grid {
    grid-template-columns: 1fr;
  }

  .planner-portrait-wrap {
    height: 340px;
  }

  .journal-preview,
  .gallery-preview {
    padding-block: 58px;
  }

  .journal-grid {
    grid-template-columns: 1fr;
  }

  .journal-card,
  .journal-card--lead {
    min-height: 390px;
    grid-column: auto;
    grid-template-columns: 1fr;
    grid-template-rows: 210px 1fr;
  }

  .departures-section {
    padding-block: 60px;
  }

  .calendar-card,
  .departure-panel {
    padding: 18px;
  }

  .calendar-table {
    border-spacing: 2px;
  }

  .calendar-table td {
    height: 44px;
  }

  .calendar-table th {
    font-size: 0.52rem;
  }

  .gallery-collage {
    min-height: 500px;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: 285px 200px;
  }

  .gallery-tile--lead {
    grid-column: 1 / -1;
    grid-row: auto;
  }

  .gallery-tile:nth-child(4) {
    display: block;
  }

  .gallery-tile:nth-child(5) {
    display: none;
  }

  .page-hero,
  .page-hero__content {
    min-height: 430px;
  }

  .page-hero__content {
    padding-block: 55px;
  }

  .page-hero__content h1 {
    font-size: clamp(3.1rem, 14vw, 4.4rem);
  }

  .standard-section {
    padding: 62px 0;
  }

  .intro-grid,
  .safety-grid,
  .mountain-intro,
  .image-story__grid,
  .about-story-grid,
  .responsible-grid,
  .faq-grid,
  .detail-overview,
  .itinerary-grid,
  .included-grid,
  .post-hero__grid {
    grid-template-columns: 1fr;
    gap: 35px;
  }

  .catalog-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .catalog-filters {
    justify-content: flex-start;
  }

  .catalog-grid,
  .destination-deepdives__grid,
  .mountain-choice-grid,
  .experience-grid,
  .mountain-notes {
    grid-template-columns: 1fr;
  }

  .destination-deepdives article:last-child,
  .mountain-choice-grid a:last-child,
  .experience-grid article:last-child {
    grid-column: auto;
  }

  .values-grid {
    grid-template-columns: 1fr;
  }

  .values-grid article,
  .values-grid article:last-child {
    padding: 24px 10px;
    border-right: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
  }

  .values-grid article:last-child {
    border-bottom: 0;
  }

  .values-grid--paper article {
    border-bottom-color: var(--border);
  }

  .inner-cta__card {
    min-height: 260px;
    padding: 38px 28px;
    align-items: flex-start;
    flex-direction: column;
    justify-content: center;
  }

  .inner-cta .button {
    width: 100%;
  }

  .safety-grid ul {
    grid-template-columns: 1fr;
  }

  .paper-photo img {
    height: 370px;
  }

  .responsible-grid > div:first-child img {
    height: 360px;
  }

  .contact-card {
    padding: 35px 28px;
    align-items: flex-start;
    flex-direction: column;
  }

  .contact-card .button {
    width: 100%;
  }

  .gallery-page-grid {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 190px;
  }

  .gallery-page-item--1,
  .gallery-page-item--5 {
    grid-column: span 2;
  }

  .blog-page-grid {
    grid-template-columns: 1fr;
  }

  .blog-page-card,
  .blog-page-card--lead {
    grid-column: auto;
  }

  .blog-page-card > a,
  .blog-page-card--lead > a {
    grid-template-columns: 1fr;
  }

  .blog-page-card img {
    min-height: 250px;
    height: 250px;
  }

  .detail-hero,
  .detail-hero__content {
    min-height: 540px;
  }

  .detail-hero h1 {
    font-size: clamp(3.2rem, 14vw, 4.5rem);
  }

  .detail-stats .shell {
    grid-template-columns: repeat(2, 1fr);
  }

  .detail-stats .shell > div,
  .detail-stats .shell > div:nth-child(3) {
    min-height: 90px;
    border-right: 1px solid rgba(255, 255, 255, 0.14);
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  }

  .detail-stats .shell > div:nth-child(2n) {
    border-right: 0;
  }

  .highlight-grid {
    grid-template-columns: 1fr;
  }

  .post-hero {
    padding-block: 60px;
  }

  .post-hero .paper-photo {
    width: min(430px, 100%);
    justify-self: center;
  }

  .post-layout {
    grid-template-columns: 1fr;
    gap: 25px;
  }

  .post-share {
    position: static;
    display: flex;
    justify-content: flex-start;
  }

  .post-share > span {
    margin: 0 7px 0 0;
    align-self: center;
  }

  .blog-related {
    grid-template-columns: 1fr;
  }

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

  .footer-brand,
  .footer-ready {
    grid-column: 1 / -1;
  }
}

/* Desktop visual density: the roomy feel of roughly 80% browser zoom. */
@media screen and (min-width: 1041px) {
  body > [data-site-header],
  body > #main-content,
  body > [data-site-footer] {
    zoom: 0.8;
  }
}

@media (max-width: 480px) {
  .contact-bar__details a:last-child span {
    font-size: 0.58rem;
  }

  .top-socials a {
    width: 27px;
  }

  .adventure-option {
    min-height: 88px;
  }

  .adventure-option span {
    font-size: 0.9rem;
  }

  .planner-control {
    grid-template-columns: 25px 1fr;
  }

  .wizard-actions {
    grid-template-columns: 1fr;
  }

  .wizard-actions .wizard-back {
    order: 2;
  }

  .calendar-card {
    padding: 13px 8px;
  }

  .calendar-table button {
    border-radius: 4px;
    font-size: 0.66rem;
  }

  .gallery-collage {
    grid-template-rows: 230px 170px;
  }

  .gallery-page-grid {
    grid-template-columns: 1fr;
    grid-auto-rows: 260px;
  }

  .gallery-page-item--1,
  .gallery-page-item--5,
  .gallery-page-item--3 {
    grid-column: auto;
    grid-row: auto;
  }

  .detail-stats .shell {
    width: 100%;
  }

  .detail-stats .shell > div {
    padding-inline: 16px;
  }

  .itinerary-list li {
    padding-left: 0;
  }

  .itinerary-list li::before,
  .itinerary-list > li > span::after {
    display: none;
  }

  .itinerary-list > li > span {
    position: static;
    width: auto;
    justify-self: start;
    margin-bottom: 10px;
  }

  .footer-grid {
    grid-template-columns: 1fr;
  }

  .footer-brand,
  .footer-ready {
    grid-column: auto;
  }
}

/* =====================================================================
   Indigo UI fixes — 2026-07-21
   (calendar today, header contact, mobile nav animation, full-screen
   mega menu, FAB back-to-top, contact popup, compact planner modal,
   topbar tidy)
   ===================================================================== */

/* --- Calendar: Today button --- */
.calendar-header { gap: 12px; }
.calendar-today {
  border: 1px solid var(--border);
  background: var(--paper);
  color: var(--ink);
  border-radius: 999px;
  padding: 6px 15px;
  font: 700 0.68rem/1 var(--font-display);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
}
.calendar-today:hover { background: var(--olive); border-color: var(--olive); color: #fff; }

/* --- Header actions cluster --- */
.header-actions { display: inline-flex; align-items: center; gap: 10px; }
.header-contact { white-space: nowrap; }
@media (max-width: 980px) { .header-actions { display: none; } }

/* --- Top bar: no dividers between social icons (all screens) --- */
.top-socials a { border-inline: 0 !important; }
.top-socials { gap: 6px; }

/* --- Top bar small screens: contact shows icons only (no squished text) --- */
@media (max-width: 680px) {
  .contact-bar__inner { gap: 12px; }
  .contact-bar__details { gap: 6px; }
  .contact-bar__details a span { display: none; }
  .contact-bar__details a { min-width: 34px; justify-content: center; }
  .contact-bar__details ion-icon { font-size: 1.15rem; }
}

/* --- Mobile menu: animated hamburger -> X --- */
.menu-toggle__bars { position: relative; width: 22px; height: 16px; display: block; }
.menu-toggle__bars span {
  position: absolute; left: 0; width: 100%; height: 2.4px; border-radius: 2px; background: #fff;
  transition: transform 300ms cubic-bezier(.2,.8,.2,1), opacity 180ms ease, top 300ms cubic-bezier(.2,.8,.2,1);
}
.menu-toggle__bars span:nth-child(1) { top: 0; }
.menu-toggle__bars span:nth-child(2) { top: 6.8px; }
.menu-toggle__bars span:nth-child(3) { top: 13.6px; }
.menu-toggle.is-open .menu-toggle__bars span:nth-child(1) { top: 6.8px; transform: rotate(45deg); }
.menu-toggle.is-open .menu-toggle__bars span:nth-child(2) { opacity: 0; }
.menu-toggle.is-open .menu-toggle__bars span:nth-child(3) { top: 6.8px; transform: rotate(-45deg); }

/* --- Mobile menu: full-screen, slides down from the top, animated --- */
.mobile-menu { display: none; }
@media (max-width: 980px) {
  .menu-toggle { position: relative; z-index: 120; }
  .mobile-menu {
    display: block;
    position: fixed;
    inset: 0;
    max-height: none;
    z-index: 90;
    padding: 118px 22px 40px;
    background: var(--paper);
    border: 0;
    box-shadow: none;
    overflow-y: auto;
    transform: translateY(-102%);
    opacity: 0;
    visibility: hidden;
    transition: transform 360ms cubic-bezier(.2,.85,.25,1), opacity 240ms ease, visibility 0s linear 360ms;
  }
  .mobile-menu.is-open {
    transform: translateY(0);
    opacity: 1;
    visibility: visible;
    transition: transform 360ms cubic-bezier(.2,.85,.25,1), opacity 240ms ease, visibility 0s;
  }
  body.menu-open { overflow: hidden; }
  .mobile-menu nav { gap: 2px; width: 100%; max-width: 560px; margin: 0 auto; padding: 0 8px; }
  .mobile-menu nav > a, .mobile-menu summary { padding: 15px 12px; font: 400 1.55rem/1.2 var(--font-display); }
  .mobile-menu details > div { padding-left: 12px; }
  .mobile-menu details > div a { padding: 11px 12px; font-size: 1.05rem; }
  .mobile-menu__actions { margin-top: 26px; padding: 0 12px; }
}
.mobile-menu__actions { display: grid; gap: 12px; margin-top: 22px; }
.mobile-menu__actions .button { margin-top: 0; width: 100%; justify-content: center; }

/* --- Full-width Safari mega menu: destinations left, featured cards right --- */
.safari-mega.mega-fullscreen {
  position: fixed;
  top: 118px; left: 0; right: 0; bottom: 0;  /* bottom:0 = covers down to the viewport edge */
  width: auto; max-width: none; margin: 0;   /* left/right:0 span edge-to-edge without scrollbar overflow */
  transform: none;                 /* cancel the old dropdown translateX shift */
  border: 0; border-top: 1px solid var(--border);
  border-radius: 0;
  background:
    radial-gradient(circle at 12% 18%, rgba(111,84,45,.04) 0 1px, transparent 1.6px) 0 0 / 15px 15px,
    var(--paper);
  box-shadow: none;
  padding: 0;
  max-height: none;
  overflow: hidden;                          /* fills the screen, so no scrollbar */
}
.safari-mega.mega-fullscreen:not([hidden]) { display: block; }
.safari-mega.mega-fullscreen::before { display: none; }
.mega-fullscreen__inner {
  display: grid;
  grid-template-columns: minmax(240px, 300px) 1fr;
  gap: clamp(28px, 4vw, 64px);
  align-items: stretch;
  height: 100%;                              /* fill the panel top-to-bottom */
  padding: 30px clamp(24px, 5vw, 76px) 36px;
  max-width: 1720px; margin: 0 auto;
}
/* Right side stretches; the card row takes all remaining height so images grow tall. */
.mega-showcase { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.mega-showcase .mega-cards { flex: 1; min-height: 0; }
/* Body scroll is locked while the mega menu is open. */
body.mega-open { overflow: hidden; }
.mega-eyebrow { font-size: 0.68rem; text-transform: uppercase; letter-spacing: .12em; color: var(--olive-soft); font-weight: 800; margin: 0 0 12px; }
/* Left: destinations list.
   Selectors are scoped under .mega-fullscreen so they OUTRANK the base
   `.desktop-nav a { padding: 12px 0 }` rule, which was zeroing the side padding. */
.mega-nav { display: flex; flex-direction: column; }
.mega-fullscreen .mega-dest { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 16px; border-radius: 10px; border: 1px solid transparent; color: var(--ink); transition: background 160ms ease, border-color 160ms ease; }
.mega-fullscreen .mega-dest span { display: grid; gap: 2px; }
.mega-fullscreen .mega-dest strong { font-size: 0.98rem; font-weight: 700; }
.mega-fullscreen .mega-dest small { font-size: 0.75rem; color: var(--ink-soft); }
.mega-fullscreen .mega-dest > ion-icon { color: var(--olive-soft); font-size: 1.05rem; flex: none; }
.mega-fullscreen .mega-dest:hover, .mega-fullscreen .mega-dest.is-active { background: rgba(70,73,29,.06); border-color: rgba(70,73,29,.12); }
.mega-fullscreen .mega-dest.is-active strong { color: var(--olive); }
.mega-fullscreen .mega-seeall { margin-top: 16px; align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; padding: 13px 22px; border-radius: 10px; background: var(--olive); color: #fff; font-weight: 700; font-size: 0.82rem; }
.mega-fullscreen .mega-seeall ion-icon { font-size: 1rem; }
/* Right: featured package cards with photos */
.mega-showcase__head { display: flex; align-items: baseline; justify-content: space-between; }
.mega-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
/* No aspect-ratio: the grid stretches each card to the full remaining height. */
.mega-card { position: relative; border-radius: 12px; overflow: hidden; min-height: 320px; height: 100%; display: block; box-shadow: 0 10px 24px rgba(20,14,9,.14); }
.mega-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 400ms ease; }
.mega-card:hover img { transform: scale(1.06); }
.mega-card span { position: absolute; inset: auto 0 0 0; padding: 16px 14px 14px; color: #fff; z-index: 1; background: linear-gradient(to top, rgba(20,14,9,.86), transparent); }
.mega-card strong { display: block; font: 400 1.18rem/1.05 var(--font-display); }
.mega-card small { display: block; font-size: 0.74rem; opacity: .92; margin-top: 3px; }
@media (max-width: 1120px) {
  /* Columns stack here, so let the panel scroll — but keep the scrollbar invisible. */
  .safari-mega.mega-fullscreen { overflow-y: auto; scrollbar-width: none; }
  .safari-mega.mega-fullscreen::-webkit-scrollbar { display: none; }
  .mega-fullscreen__inner { grid-template-columns: 1fr; gap: 22px; height: auto; }
  .mega-showcase { height: auto; }
  .mega-card { min-height: 240px; }
}
@media (max-width: 720px) {
  .mega-cards { grid-template-columns: repeat(2, 1fr); }
}

/* --- Paw FAB: back to top --- */
.fab-top {
  position: fixed; right: 22px; bottom: 22px; z-index: 80;
  width: 54px; height: 54px; border: 0; border-radius: 50%;
  background: var(--olive); color: #fff; cursor: pointer;
  display: grid; place-items: center;
  box-shadow: none;
  opacity: 0; transform: translateY(14px) scale(.85); pointer-events: none;
  transition: opacity 240ms ease, transform 240ms cubic-bezier(.2,.8,.2,1), background 180ms ease;
}
.fab-top.is-visible { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
.fab-top:hover { background: var(--olive-soft); transform: translateY(-2px) scale(1.05); }
.fab-top ion-icon { font-size: 1.55rem; }

/* --- Contact choices popup --- */
.site-modal--contact-choices { width: min(560px, calc(100% - 28px)); }
.contact-choices .contact-choices__lead { color: var(--ink-soft); font-size: 0.86rem; margin: 4px 0 18px; }
/* Column-flow: first four fill the left column top-to-bottom, rest fill the right. */
.contact-choices__grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: repeat(4, auto); grid-auto-flow: column; gap: 10px; }
.contact-choice {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 13px; border: 1px solid var(--border); border-radius: 11px;
  background: rgba(255,255,255,.4); transition: border-color 160ms ease, transform 160ms ease, background 160ms ease;
}
.contact-choice:hover { border-color: var(--olive); transform: translateY(-1px); background: var(--paper-warm); }
/* Monochrome, brand-blended icons (no loud per-service colours). */
.contact-choice__icon { flex: none; width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; background: rgba(70,73,29,.07); color: var(--olive); }
.contact-choice:hover .contact-choice__icon { background: rgba(70,73,29,.12); }
.contact-choice__icon ion-icon { font-size: 1.35rem; }
.contact-choice__text { display: grid; line-height: 1.15; }
.contact-choice__text strong { font-size: 0.92rem; color: var(--ink); }
.contact-choice__text small { font-size: 0.72rem; color: var(--ink-soft); margin-top: 2px; }
.contact-choice__go { margin-left: auto; color: var(--ink-soft); font-size: 1rem; }
@media (max-width: 520px) { .contact-choices__grid { grid-template-columns: 1fr; grid-template-rows: none; grid-auto-flow: row; } }

/* --- Planner modal: keep the comfortable padding, just shrink the CONTENTS so it
   fits with no scrolling. The base .trip-builder forces min-height:570px which left
   dead space under the submit button and caused the vertical scroll — reset here. --- */
.site-modal--planner { width: min(560px, calc(100% - 24px)); }
.site-modal--planner .modal-card {
  padding: 0;
  max-height: min(94vh, 900px);
  overflow-x: hidden;                 /* horizontal scrollbar never appears */
  overflow-y: auto;
}
.site-modal--planner .modal-close { top: 12px; right: 12px; width: 36px; height: 36px; }
.site-modal--planner .trip-builder { min-height: 0; padding: 0; border: 0; margin: 0; }
.site-modal--planner .trip-builder::after { display: none; }
.site-modal--planner .planner-form-body { padding: 30px 34px 26px; }   /* padding restored */
.site-modal--planner .planner-heading { gap: 14px; padding-right: 30px; align-items: flex-start; }
.site-modal--planner .planner-heading h2 { font-size: 1.75rem; line-height: 0.96; }
.site-modal--planner .planner-heading .eyebrow { font-size: 0.66rem; }
.site-modal--planner .dream-stamp { flex: 0 0 62px; width: 62px; height: 62px; }   /* clears the X */
.site-modal--planner .dream-stamp ion-icon,
.site-modal--planner .dream-stamp > ion-icon { font-size: 1.4rem; }
.site-modal--planner .wizard-progress { margin: 14px 0; }
.site-modal--planner .adventure-option { min-height: 66px; padding: 9px 6px; gap: 4px; }
.site-modal--planner .adventure-option ion-icon { font-size: 1.7rem; }
.site-modal--planner .adventure-option span { font-size: 0.96rem; }
.site-modal--planner .planner-control { min-height: 48px; margin-top: 9px; padding: 7px 13px; }
.site-modal--planner .planner-control input,
.site-modal--planner .planner-control select { min-height: 30px; }
.site-modal--planner .wizard-fields { gap: 9px; }
.site-modal--planner .planner-submit { min-height: 48px; margin-top: 14px; font-size: 1rem; }
.site-modal--planner .wizard-actions .button { padding: 11px 16px; }
@media (max-height: 720px) {
  .site-modal--planner .planner-form-body { padding: 22px 28px 20px; }
  .site-modal--planner .planner-heading h2 { font-size: 1.5rem; }
  .site-modal--planner .dream-stamp { flex: 0 0 52px; width: 52px; height: 52px; }
  .site-modal--planner .adventure-option { min-height: 58px; }
  .site-modal--planner .adventure-option ion-icon { font-size: 1.45rem; }
  .site-modal--planner .wizard-progress { margin: 10px 0; }
}

/* --- Branded scrollbars (page + any scroll area) to match the earthy palette --- */
html { scrollbar-width: thin; scrollbar-color: rgba(70, 73, 29, 0.5) transparent; }
::-webkit-scrollbar { width: 11px; height: 11px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(70, 73, 29, 0.42);
  border-radius: 20px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: rgba(70, 73, 29, 0.62); background-clip: padding-box; }

/* --- Page loader: paper overlay + pulsing paw until everything has loaded.
   Pure CSS pseudo-elements on <body>, so it appears the instant the stylesheet
   parses (before the JS-rendered header/content exist); script.js adds
   .is-loaded on window load to fade it away. --- */
body:not(.is-loaded) { overflow: hidden; }
body::before {
  content: "";
  position: fixed; inset: 0; z-index: 9998;
  background: var(--paper);
  opacity: 1;
  transition: opacity 420ms ease, visibility 0s;
}
body::after {
  content: "";
  position: fixed; z-index: 9999;
  top: 50%; left: 50%;
  width: 58px; height: 58px; margin: -29px 0 0 -29px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='%2346491d'%3E%3Cellipse cx='21' cy='16' rx='7' ry='9.5'/%3E%3Cellipse cx='43' cy='16' rx='7' ry='9.5'/%3E%3Cellipse cx='7.5' cy='31' rx='6' ry='8'/%3E%3Cellipse cx='56.5' cy='31' rx='6' ry='8'/%3E%3Cpath d='M32 28c-10.5 0-19 8.5-19 17 0 7.5 6.5 11 19 11s19-3.5 19-11c0-8.5-8.5-17-19-17z'/%3E%3C/svg%3E") center / contain no-repeat;
  animation: paw-pulse 1.05s ease-in-out infinite;
  transition: opacity 420ms ease, visibility 0s;
}
body.is-loaded::before,
body.is-loaded::after {
  opacity: 0;
  visibility: hidden;
  animation: none;
  transition: opacity 420ms ease, visibility 0s 420ms;
}
@keyframes paw-pulse {
  0%, 100% { transform: scale(0.82); opacity: 0.55; }
  50%      { transform: scale(1.12); opacity: 1; }
}
