.tour-article {
  max-width:1180px;
  margin:0 auto;
  padding:5rem 3rem 0
}

@media(max-width:780px) {
  .tour-article {
    padding:3rem 1.2rem 0
  }
}

/* ─── BOOKING STRIP (sticky) ───
   The whole strip lives on ONE row for as long as the content fits. Every element
   is sized with clamp() so price · Даты · the four stats · the button shrink
   together as the viewport narrows. Only when even the fully-shrunk row would
   overflow does JS (single-tour.js) add `.is-stacked`, which splits it into two
   bars. The break point follows the real content width, not a media query. */
.book-strip {
  position:sticky;
  top:0;
  z-index:200;
  background:var(--text);
  color:var(--surface);
  padding:.85rem clamp(1rem,3vw,3rem);
  display:flex;
  flex-wrap:nowrap;
  align-items:flex-start;
  gap:clamp(.55rem,1.6vw,2rem);
  border-bottom:1px solid rgba(255,255,255,.08);
  box-shadow:0 8px 24px rgba(44,64,67,.18)
}

/* Both groups flatten so every field sits on one row; `order` keeps the
   sequence price · Даты · stats · actions regardless of DOM order. */
.book-strip__stats,.book-strip__main {
  display:contents
}

.book-strip__price {
  order:1
}

.book-strip__field--dates {
  order:2
}

.book-strip__stats > .book-strip__field {
  order:3
}

.book-strip__actions {
  order:4
}

.book-strip__price {
  display:flex;
  flex-direction:column;
  line-height:1.1;
  flex-shrink:0;
  padding-right:clamp(.7rem,1.4vw,1.5rem);
  border-right:1px solid rgba(255,255,255,.12);
  align-self:stretch
}

.book-strip__price .lbl {
  font-family:var(--sans);
  font-size:clamp(.5rem,.55vw,.62rem);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--accent-muted);
  font-weight:700
}

.book-strip__price .val {
  font-family:var(--sans);
  font-size:clamp(1.05rem,1.5vw,1.55rem);
  color:#fff;
  font-weight:700;
  line-height:1.05;
  margin-top:.2rem;
  white-space:nowrap
}

.book-strip__price .sub {
  font-family:var(--sans);
  font-style:normal;
  font-size:clamp(.58rem,.7vw,.72rem);
  letter-spacing:.04em;
  color:var(--text-muted);
  margin-top:.2rem;
  white-space:nowrap
}

.book-strip__field--dates {
  padding-right:clamp(.7rem,1.4vw,1.6rem);
  border-right:1px solid rgba(255,255,255,.12);
  align-self:stretch
}

.book-strip__field {
  display:flex;
  flex-direction:column;
  line-height:1.15;
  flex-shrink:0
}

.book-strip__field .lbl {
  font-family:var(--sans);
  font-size:clamp(.5rem,.55vw,.62rem);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--accent-muted);
  font-weight:700;
  margin-bottom:.25rem;
  white-space:nowrap
}

.book-strip__field .val {
  font-family:var(--sans);
  font-size:clamp(.74rem,.9vw,.95rem);
  color:var(--surface);
  font-weight:500;
  white-space:nowrap
}

.book-strip__field .dots {
  display:inline-flex;
  gap:.15rem;
  font-size:clamp(.78rem,.95vw,.98rem);
  line-height:1;
  letter-spacing:.04em
}

.book-strip__field .dots .on {
  color:var(--accent)
}

.book-strip__field .dots .off {
  color:rgba(255,255,255,.2)
}

.book-strip__actions {
  display:flex;
  gap:.55rem;
  flex-shrink:0;
  margin-left:auto;
  align-self:center
}

/* Vertical padding + font scale down to the SAME floor the stacked button uses
   (.55rem), so the button doesn't change size at the single-row ↔ stacked boundary. */
.book-strip__btn {
  padding:clamp(.55rem,1.1vw,.7rem) clamp(.6rem,1.4vw,1.2rem);
  font-family:var(--sans);
  font-size:clamp(.55rem,.72vw,.72rem);
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  border-radius:1px;
  cursor:pointer;
  border:none;
  transition:all .25s;
  white-space:nowrap
}

.book-strip__btn--primary {
  background:var(--accent);
  color:var(--text) !important
}

.book-strip__btn--primary:hover {
  background:#fff
}

.book-strip__btn--ghost {
  background:transparent;
  color:var(--border);
  border:1px solid rgba(255,255,255,.22)
}

.book-strip__btn--ghost:hover {
  border-color:var(--accent);
  color:var(--accent)
}

/* ── TWO-BAR (stacked) layout — applied only when JS detects the single row can no
   longer fit. The stats bar scrolls away with the content while the main bar
   (price · dates · button) stays pinned; the button never wraps below the row. ── */
.book-strip.is-stacked {
  display:contents
}

.book-strip.is-stacked .book-strip__stats {
  display:flex;
  align-items:flex-start;
  background:var(--text);
  color:var(--surface);
  padding:.5rem clamp(.6rem,3vw,.9rem);
  border-bottom:1px solid rgba(255,255,255,.08)
}

.book-strip.is-stacked .book-strip__stats > .book-strip__field {
  order:0;
  flex:1;
  align-self:auto;
  padding:0 clamp(.3rem,2.2vw,.7rem);
  border-left:1px solid rgba(255,255,255,.12)
}

.book-strip.is-stacked .book-strip__stats > .book-strip__field:first-child {
  padding-left:0;
  border-left:none
}

.book-strip.is-stacked .book-strip__main {
  position:sticky;
  top:0;
  z-index:200;
  display:flex;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:.4rem .5rem;
  background:var(--text);
  color:var(--surface);
  padding:.5rem clamp(.6rem,3vw,.75rem);
  border-bottom:1px solid rgba(255,255,255,.08);
  box-shadow:0 8px 24px rgba(44,64,67,.18)
}

.book-strip.is-stacked .book-strip__price {
  order:0;
  align-self:flex-start;
  padding-right:0;
  border-right:none;
  flex-shrink:0
}

.book-strip.is-stacked .book-strip__price .lbl {
  font-size:.5rem;
  letter-spacing:.14em
}

.book-strip.is-stacked .book-strip__price .val {
  font-size:clamp(.85rem,3vw,1.1rem)
}

.book-strip.is-stacked .book-strip__price .sub {
  display:none
}

.book-strip.is-stacked .book-strip__field--dates {
  order:0;
  align-self:flex-start;
  padding:0 0 0 clamp(.4rem,2vw,.6rem);
  border-left:1px solid rgba(255,255,255,.14);
  border-right:none
}

.book-strip.is-stacked .book-strip__actions {
  order:0;
  align-self:center;
  margin-left:auto;
  gap:.4rem;
  flex-shrink:0
}

/* Two CTAs no longer fit alongside price/dates on one line — give them their own
   full-width row (main bar wraps) rather than letting them shrink to illegible sizes. */
.book-strip.is-stacked .book-strip__actions {
  flex-basis:100%;
  margin-left:0
}

.book-strip.is-stacked .book-strip__actions .book-strip__btn {
  flex:1;
  text-align:center
}

.book-strip.is-stacked .book-strip__btn {
  padding:.55rem clamp(.5rem,2.5vw,.7rem);
  font-size:.55rem;
  letter-spacing:.04em
}

.book-strip.is-stacked .book-strip__field .lbl {
  font-size:.46rem;
  letter-spacing:.1em;
  margin-bottom:.1rem
}

.book-strip.is-stacked .book-strip__field .val {
  font-size:clamp(.64rem,2.5vw,.74rem)
}

.book-strip.is-stacked .book-strip__field .dots {
  font-size:.62rem
}

.book-strip.is-stacked .book-strip__field-alt {
  display:inline-block;
  margin-top:.1rem;
  font-size:.46rem;
  letter-spacing:.1em
}

/* «другие даты» + «или ваши даты» sub-links inside the Даты field */
.book-strip__field-alts {
  display:flex;
  flex-wrap:wrap;
  gap:.7rem;
  margin-top:.3rem;
  align-self:flex-start
}

.book-strip__field-alts .book-strip__field-alt {
  margin-top:0
}

.book-strip.is-stacked .book-strip__field-alts {
  margin-top:.1rem;
  gap:.5rem
}

/* «Свои даты» sub-link inside the Даты field */
.book-strip__field-alt {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-top:.3rem;
  padding-bottom:1px;
  border-bottom:1px dashed rgba(255,204,0,.4);
  align-self:flex-start;
  text-decoration:none;
  white-space:nowrap;
  transition:color .2s,border-color .2s
}

.book-strip__field-alt:hover {
  color:#fff;
  border-bottom-color:#fff
}

/* ─── CHAPTER HEADER ─── */
.chapter {
  display:grid;
  grid-template-columns:120px 1fr;
  gap:2.5rem;
  align-items:baseline;
  margin-bottom:2rem;
  padding-top:2rem;
  border-top:3px solid var(--text)
}

.chapter__num {
  font-family:var(--display);
  font-weight:400;
  font-size:2.6rem;
  line-height:1;
  color:var(--accent-strong);
  letter-spacing:.01em
}

.chapter__title {
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(1.8rem,2.8vw,2.4rem);
  line-height:1.08;
  letter-spacing:.005em;
  color:var(--text)
}

.chapter__sub {
  grid-column:2;
  font-family:var(--sans);
  font-style:normal;
  font-size:1.05rem;
  color:var(--text-muted);
  margin-top:.6rem;
  line-height:1.55
}

.chapter__sub--flush {
  grid-column:auto;
  margin-top:0
}

.essay__h--spaced {
  margin-top:3.5rem
}

@media(max-width:780px) {
  .chapter {
    grid-template-columns:1fr;
    gap:.6rem
  }
  .chapter__num {
    font-size:2rem
  }
  .chapter__sub {
    grid-column:1
  }
}

/* ─── BODY GRID + FACTBOX ─── */
.body-2col {
  display:grid;
  grid-template-columns:1fr 320px;
  gap:3rem;
  margin-top:2rem
}

.body-prose p {
  font-family:var(--sans);
  font-size:1.08rem;
  line-height:1.75;
  color:var(--text-soft);
  margin-bottom:1.2rem;
  max-width:64ch
}

/* Full-block width — used where the paragraph should span the whole section
   (video caption, «Где жить», «Стоимость») rather than the reading-measure column. */
.body-prose--wide p {
  max-width:none
}

.body-prose:not(.body-prose--wide) > p:first-of-type:not(.deck-fallback)::first-letter {
  font-family:var(--display);
  font-weight:400;
  font-size:6rem;
  float:left;
  line-height:.85;
  padding:.45rem .65rem 0 0;
  color:var(--accent-strong)
}

.factbox {
  background:var(--text);
  color:var(--bg);
  padding:1.6rem 1.5rem;
  position:sticky;
  top:2rem
}

.factbox h4 {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:1rem;
  border-bottom:1px solid rgba(255,255,255,.15);
  padding-bottom:.7rem
}

.factbox ul {
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  gap:.7rem
}

.factbox ul li {
  font-family:var(--serif);
  font-size:1.05rem;
  font-weight:400;
  padding-left:1.1em;
  position:relative
}

.factbox ul li::before {
  content:'•';
  position:absolute;
  left:0;
  color:var(--accent)
}

.factbox-stack {
  display:flex;
  flex-direction:column;
  gap:1rem;
  position:sticky;
  top:2rem
}

.factbox-stack .factbox {
  position:static
}

@media(max-width:980px) {
  .body-2col {
    grid-template-columns:1fr
  }
  .factbox,.factbox-stack {
    position:static
  }
}

/* ─── PHOTO ESSAY ─── */
.essay__h {
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.32em;
  text-transform:uppercase;
  font-weight:700;
  color:var(--text);
  margin:4rem 0 1.2rem;
  display:flex;
  align-items:center;
  gap:1rem
}

.essay__h::before {
  content:'■';
  color:var(--accent-strong);
  font-size:.7rem
}

.essay__grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1rem;
  margin-bottom:2rem
}

.fig {
  position:relative;
  overflow:hidden;
  margin:0
}

.fig img {
  width:100%;
  height:100%;
  object-fit:cover;
  aspect-ratio:3/4;
  cursor:zoom-in;
  transition:transform .6s;
  display:block
}

.fig:hover img {
  transform:scale(1.03)
}

.fig figcaption {
  font-family:var(--sans);
  font-size:.7rem;
  color:var(--text-muted);
  padding-top:.55rem;
  line-height:1.5;
  border-top:1px solid var(--text);
  margin-top:.55rem
}

.fig figcaption strong {
  color:var(--text);
  font-weight:600;
  letter-spacing:.04em
}

@media(max-width:780px) {
  /* Mobile: all highlight photos become one side-swipe carousel (like the cards on the home page) */
  .essay__stack {
    display:flex;
    gap:1rem;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    margin-left:-1.2rem;
    margin-right:-1.2rem;
    padding:0 1.2rem 1rem;
    scroll-padding-left:1.2rem
  }
  .essay__stack::-webkit-scrollbar {
    display:none
  }
  .essay__stack .essay__grid {
    display:contents
  }
  .essay__stack .fig {
    flex:0 0 82%;
    min-width:240px;
    max-width:340px;
    scroll-snap-align:start;
    margin-bottom:0
  }
}

/* ─── FULL-BLEED IMAGE ─── */
.bleed {
  position:relative;
  left:50%;
  right:50%;
  width:100vw;
  margin-left:-50vw;
  margin-right:-50vw;
  margin-top:3rem;
  margin-bottom:3rem
}

.bleed img {
  width:100%;
  aspect-ratio:21/9;
  object-fit:cover;
  display:block
}

.bleed figcaption {
  padding:.7rem 3rem;
  font-family:var(--sans);
  font-size:.7rem;
  color:var(--text-muted);
  background:var(--bg-alt);
  line-height:1.5;
  border-top:3px solid var(--accent)
}

.bleed figcaption strong {
  color:var(--text);
  font-weight:700;
  letter-spacing:.06em
}

@media(max-width:780px) {
  .bleed {
    margin-top:2rem;
    margin-bottom:2rem
  }
  .bleed figcaption {
    padding:.6rem 1.2rem
  }
}

/* ─── VIDEO ─── */
.video-block {
  position:relative;
  aspect-ratio:16/9;
  overflow:hidden;
  background:var(--text);
  cursor:pointer;
  margin-top:1.5rem;
  margin-bottom:2rem
}

.video-block video {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block
}

.video-block .video-block__poster {
  position:absolute;
  inset:0;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
  transition:opacity .4s
}

.video-block .video-block__grad {
  position:absolute;
  inset:0;
  background:linear-gradient(to top,rgba(44,64,67,.65) 0%,rgba(44,64,67,.2) 55%,transparent 100%);
  transition:opacity .4s;
  pointer-events:none
}

.video-block.playing .video-block__poster,.video-block.playing .video-block__grad,.video-block.playing .video-block__play,.video-block.playing .video-block__cap {
  opacity:0;
  pointer-events:none
}

.video-block__play {
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:88px;
  height:88px;
  border-radius:50%;
  background:var(--accent);
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .3s;
  box-shadow:0 8px 28px rgba(44,64,67,.45);
  border:none;
  cursor:pointer
}

.video-block:hover .video-block__play {
  transform:translate(-50%,-50%) scale(1.08);
  background:#fff
}

.video-block__play::after {
  content:'';
  display:block;
  margin-left:6px;
  border-style:solid;
  border-width:14px 0 14px 22px;
  border-color:transparent transparent transparent var(--text)
}

.video-block__cap {
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:1.6rem 2rem;
  color:#fff;
  transition:opacity .4s;
  pointer-events:none
}

.video-block__cap .video-block__cap-lbl {
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:.4rem
}

.video-block__cap .video-block__cap-title {
  font-family:var(--serif);
  font-size:1.25rem;
  font-weight:700;
  line-height:1.3;
  max-width:60ch
}

@media(max-width:780px) {
  .video-block__play {
    width:64px;
    height:64px
  }
  .video-block__play::after {
    border-width:10px 0 10px 16px
  }
  .video-block__cap {
    padding:1rem 1.2rem
  }
  .video-block__cap .video-block__cap-title {
    font-size:1rem
  }
}

/* ─── ITINERARY ─── */
.itinerary__list {
  display:flex;
  flex-direction:column;
  gap:0;
  border-top:1px solid var(--text)
}

.itinerary__day {
  display:grid;
  grid-template-columns:120px 1fr;
  gap:2.5rem;
  padding:2.4rem 0;
  border-bottom:1px solid rgba(44,64,67,.18);
  position:relative
}

.itinerary__num {
  font-family:var(--sans);
  font-weight:600;
  font-size:2.4rem;
  line-height:1;
  color:var(--text)
}

.itinerary__num small {
  display:block;
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--accent-strong);
  font-weight:700;
  margin-bottom:.4rem
}

.itinerary__content h3 {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.25rem;
  line-height:1.2;
  margin-bottom:.4rem
}

.itinerary__subtitle {
  font-family:var(--sans);
  font-size:1rem;
  font-weight:600;
  line-height:1.35;
  color:var(--accent-strong);
  margin-bottom:.5rem
}

.itinerary__date {
  font-family:var(--sans);
  font-size:.65rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:600;
  margin-bottom:1rem
}

.itinerary__content p {
  font-family:var(--serif);
  font-size:1.05rem;
  line-height:1.75;
  color:var(--text-soft);
  margin-bottom:1rem;
  max-width:62ch
}

/* Day description spans the full content column; the «О месте» aside keeps its own measure. */
.itinerary__text p {
  max-width:none
}

.itinerary__pics {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:.6rem;
  margin-top:1rem
}

.itinerary__pics img {
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  cursor:zoom-in;
  transition:opacity .3s;
  display:block
}

.itinerary__pics img:hover {
  opacity:.85
}

.itinerary__aside {
  margin-top:1.4rem;
  padding:1.2rem 1.4rem;
  background:var(--bg-alt);
  border-left:3px solid var(--accent)
}

.itinerary__aside h5 {
  font-family:var(--sans);
  font-size:.58rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--text);
  font-weight:700;
  margin-bottom:.5rem
}

.itinerary__aside p {
  font-family:var(--serif);
  font-style:normal;
  font-size:.98rem;
  color:var(--text-soft);
  margin:0;
  line-height:1.6;
  max-width:none
}

.itinerary__aside-more {
  margin-top:.7rem;
  background:transparent;
  border:none;
  padding:0 0 .15rem;
  color:var(--accent-strong);
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:700;
  cursor:pointer;
  border-bottom:1px solid var(--accent-strong);
  transition:color .2s,border-color .2s
}

.itinerary__aside-more:hover {
  color:var(--text);
  border-color:var(--text)
}

@media(max-width:780px) {
  .itinerary__day {
    grid-template-columns:1fr;
    gap:.4rem;
    padding:1.8rem 0
  }
  .itinerary__pics {
    grid-template-columns:1fr 1fr
  }
}

/* ─── PHOTO STRIP SLIDER ─── */
.photo-slider {
  position:relative;
  margin-top:1rem
}

.photo-slider__overflow {
  overflow-x:auto;
  overflow-y:hidden;
  scroll-behavior:smooth;
  scroll-snap-type:x mandatory;
  -ms-overflow-style:none;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch
}

.photo-slider__overflow::-webkit-scrollbar {
  display:none
}

.photo-slider__track {
  display:flex;
  gap:1rem
}

.photo-slider__track .photo-slider__slide {
  flex:0 0 calc((100% - 2rem)/3);
  scroll-snap-align:start;
  aspect-ratio:4/3;
  position:relative;
  overflow:hidden
}

.photo-slider--day .photo-slider__track .photo-slider__slide {
  max-width:301px
}

.photo-slider__slide img {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .6s;
  cursor:zoom-in;
  display:block
}

.photo-slider__slide:hover img {
  transform:scale(1.05)
}

.photo-slider__overlay-btn {
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:46px;
  height:46px;
  border-radius:50%;
  background:var(--accent);
  color:var(--text);
  border:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:5;
  box-shadow:0 6px 18px rgba(44,64,67,.28);
  transition:background .25s,opacity .25s;
  opacity:0;
  pointer-events:none
}

.photo-slider__overlay-btn:hover {
  background:#fff
}

.photo-slider__overlay-prev {
  left:10px
}

.photo-slider__overlay-next {
  right:10px
}

.photo-slider.has-prev .photo-slider__overlay-prev,.photo-slider.has-next .photo-slider__overlay-next {
  opacity:1;
  pointer-events:auto
}

.photo-slider--transport,
.photo-slider--meals {
  margin-bottom:2rem
}

@media(max-width:780px) {
  .photo-slider__track .photo-slider__slide {
    flex:0 0 82%
  }
  .photo-slider__overlay-btn {
    display:none
  }
}

/* ─── PRICE TABLE + INCLUDE/EXCLUDE ─── */
.price-table {
  width:100%;
  border-collapse:collapse;
  margin-top:1.5rem;
  font-family:var(--sans)
}

.price-note {
  margin-top:1.5rem
}

.price-note p:last-child {
  margin-bottom:0
}

.author__note {
  margin-top:.5rem;
  margin-bottom:1rem;
  font-weight:700
}

.author__info {
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  line-clamp:4;
  overflow:hidden;
  margin-bottom:.6rem
}

.author__info.is-expanded {
  display:block;
  -webkit-line-clamp:none;
  line-clamp:none;
  overflow:visible
}

.author__info-more {
  margin-bottom:2rem;
  background:transparent;
  border:none;
  padding:0 0 .15rem;
  color:var(--accent-strong);
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:700;
  cursor:pointer;
  border-bottom:1px solid var(--accent-strong);
  transition:color .2s,border-color .2s
}

.author__info-more:hover {
  color:var(--text);
  border-color:var(--text)
}

.author__note p:last-child {
  margin-bottom:0
}

.price-table th {
  font-size:.6rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--text-muted);
  padding:.7rem 1rem;
  border-bottom:2px solid var(--text);
  text-align:left;
  font-weight:700
}

.price-table td {
  padding:1rem;
  border-bottom:1px solid rgba(44,64,67,.15);
  font-size:.95rem;
  color:var(--text-soft)
}

.price-table td.price {
  font-family:var(--sans);
  font-size:1.1rem;
  font-weight:700;
  color:var(--text);
  overflow-wrap:break-word;
  hyphens:auto
}

.price-table tr:first-of-type td {
  background:rgba(255,204,0,.18)
}

/* Mobile: keep the price table within the viewport. */
@media(max-width:560px) {
  .price-table {
    margin-top:1.2rem;
    table-layout:fixed
  }
  .price-table th {
    font-size:.5rem;
    letter-spacing:.1em;
    padding:.55rem .5rem
  }
  .price-table td {
    padding:.7rem .5rem;
    font-size:.8rem;
    overflow-wrap:break-word;
    hyphens:auto
  }
  .price-table td.price {
    font-size:.9rem;
    white-space:normal;
    overflow-wrap:break-word;
    hyphens:auto
  }
}

@media(max-width:380px) {
  .price-table th,.price-table td {
    padding:.6rem .4rem
  }
  .price-table td {
    font-size:.74rem
  }
  .price-table td.price {
    font-size:.8rem
  }
}

.included-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.5rem;
  margin-top:1.5rem;
  margin-bottom:2rem
}

.included-grid__col {
  padding:1.5rem 1.7rem;
  border:1px solid var(--text)
}

.included-grid__col > h4 {
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.26em;
  text-transform:uppercase;
  font-weight:700;
  margin-bottom:1rem;
  padding-bottom:.6rem;
  border-bottom:1px solid var(--text)
}

/* Free-form WYSIWYG content — user controls the markup, we just style the prose. */
.included-grid__body {
  font-family:var(--serif);
  font-size:1rem;
  line-height:1.6
}

.included-grid__body > :first-child { margin-top:0 }
.included-grid__body > :last-child { margin-bottom:0 }

.included-grid__body p { margin:0 0 .8rem }

.included-grid__body ul,
.included-grid__body ol {
  margin:0 0 .8rem;
  padding-left:0;
  list-style:none
}

.included-grid__body li {
  padding:.35rem 0;
  line-height:1.55
}

/* Bulleted lists get an accent marker; nested items indent under it. */
.included-grid__body ul > li {
  position:relative;
  padding-left:1.5rem
}

.included-grid__body ul > li::before {
  content:'';
  position:absolute;
  left:.15rem;
  top:.85rem;
  width:.4rem;
  height:.4rem;
  border-radius:50%;
  background:var(--accent-strong)
}

.included-grid__col.no .included-grid__body ul > li::before {
  background:var(--text-muted)
}

/* Ordered lists keep numbers, styled as accent counters. */
.included-grid__body ol {
  counter-reset:incl
}

.included-grid__body ol > li {
  position:relative;
  padding-left:1.7rem;
  counter-increment:incl
}

.included-grid__body ol > li::before {
  content:counter(incl) '.';
  position:absolute;
  left:0;
  top:.35rem;
  font-family:var(--sans);
  font-size:.85rem;
  font-weight:700;
  line-height:1.7;
  color:var(--accent-strong)
}

.included-grid__col.no .included-grid__body ol > li::before {
  color:var(--text-muted)
}

/* Nested lists: reset padding so the parent marker gap doesn't double up. */
.included-grid__body li > ul,
.included-grid__body li > ol {
  margin:.35rem 0 0
}

.included-grid__body h2,
.included-grid__body h3,
.included-grid__body h4,
.included-grid__body h5,
.included-grid__body h6 {
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-weight:700;
  margin:1.2rem 0 .6rem
}

@media(max-width:780px) {
  .included-grid {
    grid-template-columns:1fr
  }
}

/* ─── JOIN TIMELINE ─── */
.join-wrap {
  margin-top:1.5rem;
  margin-bottom:2rem;
  display:grid;
  grid-template-columns:1fr 320px;
  gap:3rem;
  align-items:start
}

.join-timeline {
  position:relative;
  padding-left:0
}

.join-timeline::before {
  content:'';
  position:absolute;
  left:30px;
  top:14px;
  bottom:14px;
  width:2px;
  background:linear-gradient(to bottom,var(--accent-strong) 0%,var(--accent-strong) 50%,rgba(44,64,67,.15) 100%)
}

.join-step {
  position:relative;
  padding:0 0 2rem 5rem;
  display:block
}

.join-step:last-child {
  padding-bottom:0
}

.join-step__dot {
  position:absolute;
  left:18px;
  top:6px;
  width:26px;
  height:26px;
  border-radius:50%;
  background:var(--bg);
  border:2px solid var(--text);
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:var(--sans);
  font-weight:600;
  font-size:.78rem;
  color:var(--text);
  z-index:2
}

.join-step__meta {
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-family:var(--sans);
  font-size:.58rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:700;
  color:var(--accent-strong);
  margin-bottom:.4rem
}

.join-step__meta .pip {
  display:inline-block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent-strong)
}

.join-step h5 {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.25rem;
  line-height:1.2;
  margin-bottom:.5rem;
  color:var(--text)
}

.join-step p {
  font-family:var(--serif);
  font-size:1.02rem;
  line-height:1.65;
  color:var(--text-soft);
  max-width:54ch;
  margin-bottom:.8rem
}

.join-step__tags {
  display:flex;
  flex-wrap:wrap;
  gap:.4rem
}

.join-step__tag {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:600;
  padding:.35rem .7rem;
  background:var(--bg-alt);
  color:var(--text-soft);
  border:1px solid rgba(44,64,67,.12)
}

.join-step__tag.live::before {
  content:'';
  display:inline-block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent-muted);
  margin-right:.45rem;
  vertical-align:middle;
  animation:pulse 1.6s ease-in-out infinite
}

@keyframes pulse {
  0%,100% {
    opacity:1;
    transform:scale(1)
  }
  50% {
    opacity:.45;
    transform:scale(.7)
  }
}

.join-aside {
  position:sticky;
  top:6rem;
  background:var(--text);
  color:var(--bg);
  padding:1.7rem 1.5rem
}

.join-aside h4 {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:1rem;
  border-bottom:1px solid rgba(255,255,255,.15);
  padding-bottom:.7rem
}

.join-aside-stats {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem 1.2rem;
  margin-bottom:1.2rem
}

.join-aside-stats .key-stat {
  display:flex;
  flex-direction:column
}

.join-aside-stats .key-stat strong {
  font-family:var(--sans);
  font-size:1.5rem;
  color:#fff;
  font-weight:700;
  line-height:1
}

.join-aside-stats .key-stat span {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(255,255,255,.55);
  font-weight:600;
  margin-top:.3rem
}

/* Per-departure availability rows (the «Наличие мест» list) */
.join-aside-dates {
  margin-bottom:1.2rem
}

.join-aside-date {
  padding:1.1rem 0;
  border-top:1px solid rgba(255,255,255,.12)
}

.join-aside-date:first-child {
  padding-top:.2rem;
  border-top:none
}

.join-aside-date:last-child {
  padding-bottom:.2rem
}

.join-aside-date__head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:.85rem
}

.join-aside-date .jad-when {
  display:flex;
  flex-direction:column;
  gap:.35rem;
  min-width:0
}

.join-aside-date .jad-lbl {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700
}

.join-aside-date .jad-val {
  font-family:var(--sans);
  font-size:1.15rem;
  line-height:1.1;
  color:#fff;
  font-weight:700
}

.join-aside-date .jad-free {
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:.3rem;
  flex-shrink:0;
  text-align:right
}

.join-aside-date .jad-free strong {
  font-family:var(--sans);
  font-size:1.5rem;
  line-height:1;
  color:#fff;
  font-weight:700;
  white-space:nowrap
}

.join-aside-date .jad-free span {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(255,255,255,.55);
  font-weight:600
}

.join-aside-date.is-full .jad-free strong {
  color:rgba(255,255,255,.55)
}

.join-aside-date .join-aside-progress {
  margin-bottom:0
}

.join-aside-progress {
  margin-bottom:1.2rem
}

.join-aside-progress .lbl {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(255,255,255,.55);
  font-weight:600;
  display:flex;
  justify-content:space-between;
  margin-bottom:.5rem
}

.join-aside-progress .bar {
  height:6px;
  background:rgba(255,255,255,.12);
  position:relative;
  overflow:hidden
}

.join-aside-progress .bar span {
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  background:var(--accent)
}

.join-aside-cta {
  display:block;
  width:100%;
  padding:.95rem;
  background:var(--accent);
  color:var(--text);
  font-family:var(--sans);
  font-size:.7rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:700;
  cursor:pointer;
  border:none;
  text-align:center;
  transition:background .25s;
  margin-top:.8rem
}

.join-aside-cta:hover {
  background:#fff
}

.join-aside-msg {
  display:flex;
  gap:.4rem;
  justify-content:center;
  margin-top:.4rem
}

.join-aside-msg a {
  flex:1;
  padding:.6rem;
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-weight:700;
  color:rgba(255,255,255,.85);
  border:1px solid rgba(255,255,255,.18);
  text-align:center;
  transition:all .25s
}

.join-aside-msg a:hover {
  border-color:var(--accent);
  color:var(--accent)
}

.join-aside-alt {
  display:flex;
  align-items:center;
  gap:.8rem;
  margin-top:1rem;
  padding:.9rem 1rem;
  border:1px dashed rgba(255,255,255,.22);
  background:rgba(255,255,255,.03);
  transition:border-color .25s,background .25s;
  text-decoration:none
}

.join-aside-alt:hover {
  border-color:var(--accent);
  background:rgba(255,204,0,.06)
}

.join-aside-alt .alt-mark {
  font-family:var(--sans);
  font-size:1.05rem;
  color:var(--accent);
  flex-shrink:0;
  line-height:1
}

.join-aside-alt .alt-text {
  display:flex;
  flex-direction:column;
  gap:.2rem
}

.join-aside-alt .alt-top {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:#fff;
  font-weight:700
}

.join-aside-alt .alt-bot {
  font-family:var(--serif);
  font-size:.85rem;
  color:rgba(255,255,255,.7);
  line-height:1.35
}

@media(max-width:980px) {
  .join-wrap {
    grid-template-columns:1fr
  }
  .join-aside {
    position:static
  }
}

@media(max-width:780px) {
  .join-step {
    padding-left:3.5rem
  }
  .join-step__dot {
    left:8px
  }
  .join-timeline::before {
    left:20px
  }
}

/* ─── OPEN DATES ─── */
.open-dates {
  position:relative;
  left:50%;
  right:50%;
  width:100vw;
  margin-left:-50vw;
  margin-right:-50vw;
  margin-top:4rem;
  margin-bottom:4rem;
  background:var(--text);
  color:var(--surface);
  padding:4.5rem 3rem;
  overflow:hidden
}

.open-dates::before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:3px;
  background:var(--accent)
}

.open-dates__inner {
  max-width:1180px;
  margin:0 auto;
  display:grid;
  grid-template-columns:1.05fr 1.25fr;
  gap:3.5rem 4rem;
  align-items:start
}

.open-dates__kicker {
  display:inline-flex;
  align-items:center;
  gap:.7rem;
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:1.4rem
}

.open-dates__kicker::before {
  content:'';
  width:36px;
  height:1px;
  background:var(--accent)
}

.open-dates__title {
  font-family:var(--sans);
  font-weight:600;
  font-size:clamp(1.7rem,3.1vw,2.5rem);
  line-height:1.08;
  letter-spacing:-.015em;
  color:#fff;
  margin-bottom:1.1rem
}

.open-dates__deck {
  font-family:var(--serif);
  font-size:1.05rem;
  line-height:1.65;
  color:var(--border);
  max-width:46ch;
  margin-bottom:1.8rem
}

.open-dates__cta-row {
  display:flex;
  align-items:center;
  gap:1.2rem;
  flex-wrap:wrap;
  margin-bottom:2rem
}

.open-dates__cta {
  background:var(--accent);
  color:var(--text);
  padding:1rem 1.7rem;
  font-family:var(--sans);
  font-size:.7rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:700;
  border-radius:1px;
  cursor:pointer;
  border:none;
  transition:background .25s,transform .15s
}

.open-dates__cta:hover {
  background:#fff;
  transform:translateY(-1px)
}

.open-dates__cta-note {
  font-family:var(--sans);
  font-style:normal;
  font-size:.78rem;
  color:rgba(255,255,255,.6);
  max-width:20ch;
  line-height:1.4
}

.open-dates__stats {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.2rem;
  padding-top:1.5rem;
  border-top:1px solid rgba(255,255,255,.14)
}

.open-dates__stats > div {
  display:flex;
  flex-direction:column;
  gap:.35rem
}

.open-dates__stats strong {
  font-family:var(--sans);
  font-size:1.5rem;
  font-weight:700;
  color:var(--accent);
  line-height:1
}

.open-dates__stats span {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:rgba(255,255,255,.6);
  font-weight:600;
  line-height:1.4
}

.open-dates__steps {
  list-style:none;
  margin:0;
  padding:0;
  border-top:1px solid rgba(255,255,255,.14)
}

.open-dates__steps li {
  display:grid;
  grid-template-columns:110px 1fr;
  gap:1.5rem;
  padding:1.5rem 0;
  border-bottom:1px solid rgba(255,255,255,.14);
  align-items:start
}

.open-dates__steps .step-tag {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  padding-top:.3rem
}

.open-dates__steps h4 {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.1rem;
  margin-bottom:.4rem;
  color:#fff
}

.open-dates__steps p {
  font-family:var(--serif);
  font-size:.98rem;
  line-height:1.6;
  color:var(--border);
  margin:0;
  max-width:48ch
}

@media(max-width:980px) {
  .open-dates {
    padding:3rem 1.2rem;
    margin-top:2.5rem;
    margin-bottom:2.5rem
  }
  .open-dates__inner {
    grid-template-columns:1fr;
    gap:2.5rem
  }
  .open-dates__steps {
    border-top:none;
    padding-top:.5rem
  }
  .open-dates__steps li {
    grid-template-columns:80px 1fr;
    gap:1rem;
    padding:1.1rem 0
  }
  .open-dates__stats {
    grid-template-columns:1fr 1fr;
    gap:1rem
  }
}

/* ─── AUTHOR / GUIDE ─── */
.author {
  display:grid;
  grid-template-columns:160px 1fr;
  gap:2rem;
  align-items:start;
  margin-top:1.5rem;
  padding:2rem 0
}

.author img {
  width:160px;
  height:160px;
  object-fit:cover;
  filter:grayscale(.35) contrast(1.05)
}

.author__role {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--accent-strong);
  font-weight:700;
  margin-bottom:.5rem
}

.author__name {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.25rem;
  margin-bottom:.6rem
}

.author p {
  font-family:var(--serif);
  font-size:1.05rem;
  line-height:1.7;
  color:var(--text-soft);
  max-width:60ch;
  margin-bottom:1rem
}

.author__stats {
  display:flex;
  gap:2rem;
  flex-wrap:wrap;
  font-family:var(--sans);
  font-size:.7rem;
  color:var(--text-muted);
  text-transform:uppercase;
  letter-spacing:.15em;
  font-weight:600
}

.author__stats strong {
  display:block;
  font-family:var(--serif);
  font-size:1.5rem;
  color:var(--text);
  font-weight:700;
  letter-spacing:0;
  text-transform:none;
  margin-bottom:.15rem
}

@media(max-width:780px) {
  .author {
    grid-template-columns:1fr;
    text-align:center
  }
  .author img {
    margin:0 auto
  }
  .author p {
    margin:0 auto 1rem
  }
  .author__stats {
    justify-content:center
  }
}

/* ─── ABOUT / WHY MAVERIX ─── */
.why__wrap {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:3.2rem;
  align-items:stretch;
  margin-bottom:2rem
}

.why__wrap > div:first-child {
  display:flex;
  flex-direction:column
}

.why__quote {
  font-family:var(--sans);
  font-style:normal;
  font-weight:400;
  font-size:clamp(1.4rem,2.2vw,1.9rem);
  line-height:1.32;
  color:var(--text);
  letter-spacing:-.012em;
  text-wrap:pretty
}

.why__quote-cite {
  margin-top:1.4rem;
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:600
}

.why__quote-cite strong {
  color:var(--text);
  font-weight:700
}

.why__cta {
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.85rem 1.8rem;
  background:transparent;
  color:var(--text);
  font-family:var(--sans);
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  border:2px solid var(--text);
  transition:all .25s;
  cursor:pointer;
  text-decoration:none;
  margin-top:auto;
  align-self:flex-start
}

.why__cta:hover {
  background:var(--text);
  color:var(--bg)
}

.why__rows {
  display:flex;
  flex-direction:column
}

.why__row {
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1.4rem;
  padding:1.1rem 0;
  border-top:1px solid rgba(44,64,67,.18);
  align-items:baseline
}

.why__row:first-child {
  border-top:0
}

.why__row:last-child {
  border-bottom:0
}

.why__row-key {
  font-family:var(--sans);
  font-weight:600;
  font-size:.85rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--accent-strong);
  min-width:5ch
}

.why__row-body strong {
  display:block;
  font-family:var(--serif);
  font-weight:700;
  font-size:1.05rem;
  line-height:1.25;
  color:var(--text);
  margin-bottom:.2rem
}

.why__row-body p {
  font-family:var(--serif);
  font-size:.92rem;
  line-height:1.55;
  color:var(--text-soft)
}

@media(max-width:780px) {
  .why__wrap {
    grid-template-columns:1fr;
    gap:2rem
  }
  .why__cta {
    margin-top:1.6rem
  }
}

/* ─── FAQ ─── */
.faq {
  border-top:1px solid var(--text);
  margin-top:1.5rem
}

.faq details {
  border-bottom:1px solid rgba(44,64,67,.15);
  padding:1.2rem 0
}

.faq summary {
  cursor:pointer;
  font-family:var(--serif);
  font-weight:700;
  font-size:1.1rem;
  display:flex;
  justify-content:space-between;
  gap:1rem;
  list-style:none
}

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

.faq summary::after {
  content:'+';
  font-family:var(--sans);
  font-size:1.6rem;
  line-height:.6;
  color:var(--accent-strong);
  transition:transform .25s;
  flex-shrink:0
}

.faq details[open] summary::after {
  content:'–'
}

.faq details p {
  font-family:var(--serif);
  font-size:1.02rem;
  line-height:1.75;
  color:var(--text-soft);
  margin-top:.8rem;
  max-width:none
}

/* ─── REVIEWS WALL ─── */
.review-summary {
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:2rem;
  align-items:center;
  padding:1.5rem 1.8rem;
  background:var(--bg-alt);
  border-left:3px solid var(--accent);
  margin-top:1.5rem;
  flex-wrap:wrap
}

/* .review-summary-score/-text/-platforms internals live in theme.css (identical;
   shared with the reviews page). Only the tour-specific .review-summary container
   above and the @780 overrides below are kept here. */

@media(max-width:780px) {
  .review-summary {
    grid-template-columns:1fr;
    gap:1rem;
    padding:1.2rem
  }
  .review-summary-score {
    padding-right:0;
    border-right:none;
    border-bottom:1px solid rgba(44,64,67,.15);
    padding-bottom:1rem;
    flex-direction:row;
    align-items:center;
    gap:1rem
  }
  .review-summary-score .num {
    font-size:2.5rem
  }
}

.review-empty {
  margin-top:1.8rem;
  padding:2rem 1.8rem;
  background:var(--bg-alt);
  border-left:3px solid var(--accent)
}

.review-empty p {
  font-family:var(--serif);
  font-size:1.05rem;
  line-height:1.6;
  color:var(--text-soft);
  margin:0;
  max-width:60ch
}

/* .review-wall base + its @980 column drop live in theme.css (identical). */
.review-wall.is-few {
  column-count:initial;
  column-gap:0;
  display:flex;
  flex-wrap:wrap;
  gap:1.4rem;
  justify-content:center;
  align-items:flex-start
}

.review-wall.is-few .review-card {
  flex:0 1 480px;
  margin:0
}

/* Card internals (.review-card / .review-shot / .review-pol / .review-quote / .review-source) are shared with
   the reviews page and live in theme.css — do NOT redefine them here, or the tour-page cards
   drift from the reviews page (this block used to hold a stale copy of the pre-redesign markup). */
.review-all {
  margin-top:2.4rem;
  margin-bottom:2rem;
  text-align:center
}

.review-all-btn {
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.85rem 1.8rem;
  background:transparent;
  color:var(--text);
  font-family:var(--sans);
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  border:2px solid var(--text);
  transition:all .25s;
  cursor:pointer;
  text-decoration:none
}

.review-all-btn:hover {
  background:var(--text);
  color:var(--bg)
}

@media(max-width:680px) {
  /* Mobile: reviews scroll sideways like the home page. */
  .review-wall,.review-wall.is-few {
    column-count:initial;
    column-gap:0;
    display:flex;
    flex-wrap:nowrap;
    align-items:flex-start;
    justify-content:flex-start;
    gap:1rem;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    margin-left:-1.2rem;
    margin-right:-1.2rem;
    padding:0 1.2rem 1rem;
    scroll-padding-left:1.2rem
  }
  .review-wall::-webkit-scrollbar {
    display:none
  }
  .review-wall .review-card,.review-wall.is-few .review-card {
    flex:0 0 85%;
    min-width:260px;
    max-width:340px;
    margin:0;
    scroll-snap-align:start;
    transform:none!important
  }
}

/* ─── PHOTO REPORTS ─── */
.reports-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:.9rem;
  grid-auto-rows:200px;
  grid-auto-flow:dense;
  margin-top:1.6rem
}

.reports-grid.is-few {
  display:flex;
  flex-wrap:wrap;
  grid-auto-rows:auto
}

.reports-grid.is-few .report {
  flex:1 1 280px;
  height:280px
}

.report {
  position:relative;
  overflow:hidden;
  cursor:pointer;
  background:var(--text)
}

.report img {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .55s,filter .35s
}

.report:hover img {
  transform:scale(1.05)
}

.report-grad {
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(44,64,67,0) 45%,rgba(44,64,67,.8) 100%);
  transition:opacity .3s;
  pointer-events:none
}

.report-video {
  position:absolute;
  top:.7rem;
  left:.7rem;
  width:34px;
  height:34px;
  border-radius:50%;
  background:rgba(44,64,67,.55);
  backdrop-filter:blur(6px);
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:.72rem;
  line-height:1;
  padding-left:2px
}

.report-info {
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:.95rem 1rem 1rem;
  color:#fff;
  line-height:1.3
}

.report-info .date {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(255,255,255,.78);
  font-weight:700;
  margin-bottom:.35rem
}

.report-info .title {
  font-family:var(--serif);
  font-size:.95rem;
  line-height:1.25;
  font-weight:700;
  color:#fff
}

.report.span-2 {
  grid-column:span 2;
  grid-row:span 2
}

.report.span-2 .report-info .title {
  font-size:1.25rem
}

.report.tall {
  grid-row:span 2
}

.report.is-hidden {
  display:none
}

.reports-more {
  margin-top:1.8rem;
  text-align:center
}

.reports-more-btn {
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  padding:.85rem 1.8rem;
  background:transparent;
  color:var(--text);
  font-family:var(--sans);
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  border:2px solid var(--text);
  transition:all .25s;
  cursor:pointer
}

.reports-more-btn:hover {
  background:var(--text);
  color:var(--bg)
}

.reports-more-btn .count {
  opacity:.55;
  font-weight:600
}

@media(max-width:980px) {
  .reports-grid {
    grid-template-columns:repeat(3,1fr);
    grid-auto-rows:170px
  }
  .report.span-2 {
    grid-column:span 2
  }
}

@media(max-width:680px) {
  .reports-grid {
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:150px
  }
  .report.span-2 {
    grid-column:span 2;
    grid-row:auto
  }
  .report.tall {
    grid-row:auto
  }
  .report.span-2 .report-info .title {
    font-size:1.05rem
  }
  .reports-grid.is-few .report {
    height:200px;
    flex-basis:140px
  }
}

/* ─── TAGS ─── */
.tags {
  display:flex;
  flex-wrap:wrap;
  gap:.4rem;
  margin-top:1.5rem
}

.tag {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:700;
  padding:.45rem 1rem;
  color:#fff;
  background:var(--text)
}

/* ─── CTA STRIP ─── */
.cta-strip {
  position:relative;
  min-height:340px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:4.5rem 3rem;
  color:#fff;
  overflow:hidden;
  margin-top:3rem;
  margin-bottom:2rem
}

.cta-strip__bg {
  position:absolute;
  inset:0;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
  filter:brightness(.35) saturate(.7)
}

.cta-strip::before {
  content:'';
  position:absolute;
  inset:0;
  background:rgba(44,64,67,.3);
  z-index:1
}

.cta-strip__content {
  position:relative;
  z-index:2
}

.cta-strip h3 {
  font-family:var(--sans);
  font-weight:600;
  font-size:2rem;
  margin-bottom:.5rem;
  line-height:1.2;
  color:#fff
}

.cta-strip p {
  font-family:var(--serif);
  font-style:normal;
  font-size:1.1rem;
  margin-bottom:1.5rem;
  color:rgba(255,255,255,.8)
}

.cta-strip__actions {
  display:flex;
  gap:.8rem;
  justify-content:center;
  flex-wrap:wrap
}

.cta-strip .btn {
  border-color:#fff;
  color:#fff
}

.cta-strip .btn-primary {
  background:var(--accent);
  color:var(--text);
  border-color:var(--accent)
}

.cta-strip .btn-primary:hover {
  background:transparent;
  color:var(--accent);
  border-color:var(--accent)
}

.cta-strip .btn-ghost {
  background:transparent;
  color:#fff;
  border-color:rgba(255,255,255,.4)
}

.cta-strip .btn-ghost:hover {
  background:#fff;
  color:var(--text);
  border-color:#fff
}

/* Mobile: buttons stack and share the same width. */
@media(max-width:560px) {
  .cta-strip__actions {
    flex-direction:column;
    align-items:stretch;
    gap:.7rem;
    width:100%;
    max-width:300px;
    margin:0 auto
  }
  .cta-strip__actions .btn {
    width:100%;
    justify-content:center
  }
}

/* ─── RELATED ─── */
.related {
  background:var(--text);
  margin-bottom:0;
  color:var(--bg);
  padding:5rem 3rem
}

.related h2 {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.85rem;
  margin-bottom:.4rem;
  color:#fff;
  max-width:1180px;
  margin-left:auto;
  margin-right:auto
}

.related__eyebrow {
  max-width:1180px;
  margin-left:auto;
  margin-right:auto;
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:.9rem;
  display:flex;
  align-items:center;
  gap:.7rem
}

.related__eyebrow::before {
  content:'';
  display:inline-block;
  width:24px;
  height:1px;
  background:var(--accent)
}

.related__grid {
  max-width:1180px;
  margin:2.5rem auto 0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.2rem
}

.rcard {
  display:flex;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.07);
  overflow:hidden;
  cursor:pointer;
  transition:transform .3s,box-shadow .3s,border-color .3s;
  text-decoration:none;
  color:inherit
}

.rcard:hover {
  transform:translateY(-3px);
  box-shadow:0 12px 32px rgba(44,64,67,.4);
  border-color:rgba(255,204,0,.25)
}

.rcard .rimg {
  flex:0 0 140px;
  overflow:hidden
}

.rcard .rimg img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .5s;
  display:block
}

.rcard:hover .rimg img {
  transform:scale(1.06)
}

.rcard .rinfo {
  flex:1;
  min-width:0;
  padding:1rem 1.2rem;
  display:flex;
  flex-direction:column;
  justify-content:space-between
}

.rcard .rreg {
  font-family:var(--sans);
  font-size:.58rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--accent);
  margin-bottom:.35rem;
  font-weight:700
}

.rcard h4 {
  font-family:var(--serif);
  font-size:1rem;
  color:#fff;
  margin-bottom:.4rem;
  font-weight:700;
  line-height:1.25
}

.rcard .rdesc {
  font-family:var(--serif);
  font-size:.85rem;
  color:#C0B69A;
  line-height:1.55
}

.rcard .rmeta {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  margin-top:.8rem;
  padding-top:.65rem;
  border-top:1px solid rgba(255,255,255,.1);
  gap:.7rem
}

.rcard .rmeta-l {
  font-family:var(--sans);
  font-size:.62rem;
  color:#AAB2AD;
  line-height:1.5
}

.rcard .rmeta-l span {
  display:block
}

.rcard .rprice {
  font-family:var(--sans);
  font-size:.85rem;
  font-weight:700;
  color:var(--accent);
  white-space:nowrap
}

@media(max-width:980px) {
  .related__grid {
    grid-template-columns:1fr 1fr
  }
  .related {
    padding:3rem 1.2rem
  }
}

@media(max-width:780px) {
  .related__grid {
    grid-template-columns:1fr
  }
}

/* ─── LIGHTBOX ─── */
.lightbox {
  position:fixed;
  inset:0;
  background:rgba(44,64,67,.92);
  display:none;
  align-items:center;
  justify-content:center;
  z-index:9500;
  padding:2rem;
  cursor:zoom-out;
  backdrop-filter:blur(8px);
  overflow:hidden;
  overscroll-behavior:contain;
  touch-action:none
}

body.lb-open {
  overflow:hidden
}

.lightbox.on {
  display:flex
}

.lightbox__track {
  display:flex;
  width:100%;
  height:100%;
  flex:none;
  align-items:center;
  will-change:transform
}

.lightbox__slide {
  flex:0 0 100%;
  width:100%;
  height:100%;
  box-sizing:border-box;
  padding:0 clamp(.5rem,3vw,2rem);
  display:flex;
  align-items:center;
  justify-content:center
}

.lightbox__img {
  max-width:min(1200px,100%);
  max-height:90vh;
  width:auto;
  height:auto;
  object-fit:contain;
  cursor:default;
  box-shadow:0 30px 80px rgba(44,64,67,.5);
  -webkit-user-select:none;
  user-select:none;
  -webkit-user-drag:none
}

.lightbox__close {
  position:fixed;
  top:1.5rem;
  right:1.5rem;
  width:44px;
  height:44px;
  border-radius:50%;
  background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.2);
  color:#fff;
  font-size:1.5rem;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .25s;
  line-height:1;
  padding-bottom:2px;
  z-index:9502
}

.lightbox__close:hover {
  background:rgba(255,255,255,.2)
}

.lightbox__nav {
  position:fixed;
  top:50%;
  transform:translateY(-50%);
  width:54px;
  height:54px;
  border-radius:50%;
  background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.2);
  color:#fff;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .25s;
  z-index:9502
}

.lightbox__nav:hover {
  background:rgba(255,255,255,.2)
}

.lightbox__prev {
  left:1.5rem
}

.lightbox__next {
  right:1.5rem
}

.lightbox__counter {
  position:fixed;
  bottom:1.4rem;
  left:50%;
  transform:translateX(-50%);
  font-family:var(--sans);
  font-size:.7rem;
  letter-spacing:.12em;
  color:rgba(255,255,255,.7);
  background:rgba(44,64,67,.35);
  padding:.4rem .9rem;
  border-radius:30px;
  z-index:9502
}

@media(max-width:560px) {
  .lightbox__prev {
    left:.6rem
  }
  .lightbox__next {
    right:.6rem
  }
  .lightbox__nav {
    width:44px;
    height:44px
  }
}

/* ─── ROUTE MAP (MapLibre) ─── */
.route-map__wrap {
  margin-top:1.5rem;
  margin-bottom:2rem;
  background:var(--bg-alt);
  padding:1.5rem;
  border:1px solid var(--text);
  position:relative
}

.route-map__grid {
  display:grid;
  grid-template-columns:1.5fr 1fr;
  gap:2rem;
  align-items:stretch;
  position:relative;
  z-index:2
}

.route-map__frame {
  position:relative;
  border:1px solid var(--text);
  background:#DDD5BE;
  overflow:hidden;
  min-height:520px
}

.route-map__frame::after {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  box-shadow:inset 0 0 0 6px rgba(232,224,207,.4),inset 0 0 80px rgba(70,50,20,.25);
  mix-blend-mode:multiply
}

.route-map__canvas {
  width:100%;
  height:520px;
  display:block
}

.route-map__canvas .maplibregl-canvas {
  filter:sepia(.45) saturate(.85) contrast(1.05) brightness(.96)
}

.route-map__canvas .maplibregl-ctrl-bottom-right,.route-map__canvas .maplibregl-ctrl-bottom-left {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.04em
}

.route-map__corner {
  position:absolute;
  z-index:5;
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--text);
  font-weight:700;
  background:rgba(244,239,225,.92);
  padding:.45rem .7rem;
  border:1px solid var(--text);
  pointer-events:none;
  line-height:1
}

.route-map__corner.tl {
  top:.7rem;
  left:.7rem
}

.route-map__corner.tl2 {
  top:2.5rem;
  left:.7rem;
  color:var(--accent-strong)
}

.route-map__status {
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:repeating-linear-gradient(45deg,#DDD5BE 0 14px,#D4C9AD 14px 28px);
  color:var(--text);
  font-family:var(--sans);
  font-size:.7rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:700;
  text-align:center;
  padding:2rem;
  z-index:4
}

.route-map__status .ttl {
  font-family:var(--sans);
  font-size:1.85rem;
  letter-spacing:-.01em;
  text-transform:none;
  font-weight:600;
  margin-bottom:.6rem;
  color:var(--text)
}

.route-map__status .body {
  font-family:var(--serif);
  font-size:.95rem;
  line-height:1.55;
  letter-spacing:0;
  text-transform:none;
  color:var(--text-soft);
  max-width:42ch;
  font-weight:400;
  margin-bottom:1rem
}

.route-map__status code {
  font-family:'SF Mono','Menlo',monospace;
  font-size:.78rem;
  background:#fff;
  padding:.15rem .45rem;
  border:1px solid var(--text);
  letter-spacing:0;
  text-transform:none;
  color:var(--text)
}

.route-map__status .btn {
  margin-top:.4rem;
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:700;
  padding:.7rem 1.2rem;
  background:var(--text);
  color:var(--accent);
  border:none;
  cursor:pointer
}

.route-map__status .btn:hover {
  background:var(--accent-strong);
  color:var(--text)
}

.route-map__marker-anchor {
  width:26px;
  height:26px;
  display:block;
  cursor:pointer
}

.route-map__marker {
  width:100%;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:var(--sans);
  font-weight:600;
  font-size:11px;
  color:var(--text);
  background:#fff;
  border:1.6px solid var(--text);
  border-radius:50%;
  box-shadow:0 2px 5px rgba(44,64,67,.22);
  transition:background-color .2s,transform .2s,box-shadow .2s;
  will-change:transform
}

.route-map__marker-anchor:hover .route-map__marker,.route-map__marker.is-active {
  background:var(--accent);
  transform:scale(1.15)
}

.route-map__marker-anchor .lbl {
  position:absolute;
  top:calc(100% + 4px);
  left:50%;
  transform:translateX(-50%);
  font-family:var(--sans);
  font-size:9px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--text);
  background:rgba(244,239,225,.95);
  padding:.15rem .4rem;
  border:1px solid var(--text);
  white-space:nowrap;
  pointer-events:none;
  z-index:1
}

.route-map__marker-anchor.lbl-above .lbl {
  top:auto;
  bottom:calc(100% + 4px)
}

.route-map__marker-anchor.lbl-hidden .lbl {
  display:none
}

.route-map__marker-anchor.lbl-hidden:hover .lbl {
  display:block;
  z-index:3
}

.route-map__info {
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid var(--text);
  position:relative;
  overflow:hidden
}

.route-map__info-close-bar {
  display:none
}

.route-map__info-head {
  padding:1rem 1.2rem;
  background:var(--text);
  color:var(--bg);
  display:flex;
  justify-content:space-between;
  align-items:center
}

.route-map__info-head .lbl {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:700
}

.route-map__info-head .num {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.4rem;
  color:#fff;
  line-height:1
}

.route-map__info-body {
  padding:1.2rem;
  flex:1;
  display:flex;
  flex-direction:column
}

.route-map__info-region {
  font-family:var(--sans);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--accent-strong);
  font-weight:700;
  margin-bottom:.4rem
}

.route-map__info-title {
  font-family:var(--sans);
  font-weight:600;
  font-size:1.25rem;
  line-height:1.2;
  margin-bottom:.6rem
}

.route-map__info-date {
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:600;
  margin-bottom:.9rem
}

.route-map__info-text {
  font-family:var(--serif);
  font-size:.95rem;
  line-height:1.55;
  color:var(--text-soft);
  margin-bottom:1rem;
  flex:1
}

.route-map__info-stats {
  display:flex;
  gap:1.5rem;
  padding-top:.9rem;
  border-top:1px solid rgba(44,64,67,.12);
  font-family:var(--sans);
  font-size:.6rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:600;
  flex-wrap:wrap
}

.route-map__info-stats strong {
  display:block;
  font-family:var(--serif);
  font-size:1.15rem;
  color:var(--text);
  font-weight:700;
  letter-spacing:0;
  text-transform:none;
  margin-bottom:.1rem
}

.route-map__legend {
  display:flex;
  flex-wrap:wrap;
  gap:1.2rem;
  margin-top:1.2rem;
  padding-top:1rem;
  border-top:1px solid rgba(44,64,67,.18);
  font-family:var(--sans);
  font-size:.62rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--text-muted);
  font-weight:600;
  position:relative;
  z-index:2
}

.route-map__legend .lg {
  display:flex;
  align-items:center;
  gap:.5rem
}

.route-map__legend .lg .sw {
  display:inline-block;
  width:24px;
  height:2px
}

.route-map__legend .lg .sw.air {
  background:var(--accent-strong)
}

.route-map__legend .lg .sw.ground {
  background:var(--text);
  opacity:.5
}

.route-map__legend .lg .dot {
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:50%;
  background:#fff;
  border:2px solid var(--text)
}

.route-map__backdrop {
  display:none
}

/* Prev/next point arrows in the panel header — shown on every viewport. On desktop
   they page through points beside the static panel; on mobile (in the sheet header)
   they double as a swipe hint. They dim out on the first/last point. */
.route-map__info-nav {
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 34px;
  width:34px;
  height:34px;
  padding:0;
  background:transparent;
  border:1px solid rgba(244,239,225,.5);
  border-radius:50%;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:opacity .2s
}
.route-map__info-nav::before {
  content:'';
  width:8px;
  height:8px;
  border:solid var(--accent);
  border-width:0 2px 2px 0
}
.route-map__info-nav.prev::before {
  transform:rotate(135deg);
  margin-left:3px
}
.route-map__info-nav.next::before {
  transform:rotate(-45deg);
  margin-right:3px
}
.route-map__info-nav:disabled {
  opacity:.25;
  cursor:default
}

@media(max-width:980px) {
  .route-map__grid {
    grid-template-columns:1fr
  }
  /* The point panel becomes a bottom sheet over the map (variant A).
     Hidden by default — slides up from the bottom when a point is tapped. */
  /* Keep visibility until the transform animation ends (.28s delay), otherwise the
     sheet vanishes instantly on close instead of sliding down. */
  /* Fixed-height sheet (45% of the screen). The panel itself does not scroll —
     for long descriptions only .route-map__info-text below scrolls. */
  .route-map__info {
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1000;
    height:45vh;
    overflow:visible;
    -webkit-overflow-scrolling:touch;
    border:none;
    box-shadow:0 -10px 34px rgba(44,64,67,.3);
    transform:translateY(110%);
    transition:transform .28s ease,visibility 0s linear .28s;
    visibility:hidden;
    touch-action:pan-y
  }
  /* min-height:0 — otherwise flex children stop the text from shrinking and scrolling.
     Compact the header/title/date and body padding so the description fits at least
     2 lines within the sheet's fixed height. */
  .route-map__info-head {
    padding:.7rem 1.2rem
  }
  .route-map__info-body {
    min-height:0;
    overflow:hidden;
    padding:.9rem 1.2rem .9rem
  }
  .route-map__info-region {
    margin-bottom:.25rem
  }
  .route-map__info-title {
    font-size:1.1rem;
    margin-bottom:.35rem
  }
  .route-map__info-date {
    margin-bottom:.5rem
  }
  /* overflow-y:scroll + a visible styled scrollbar so the user can tell the text
     is scrollable (the auto-scrollbar is hidden on mobile). */
  .route-map__info-text {
    flex:1;
    min-height:0;
    margin-bottom:.7rem;
    overflow-y:scroll;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    scrollbar-color:var(--accent-strong) rgba(44,64,67,.12)
  }
  .route-map__info-text::-webkit-scrollbar {
    width:6px;
    -webkit-appearance:none
  }
  .route-map__info-text::-webkit-scrollbar-track {
    background:rgba(44,64,67,.12);
    border-radius:99px
  }
  .route-map__info-text::-webkit-scrollbar-thumb {
    background:var(--accent-strong);
    border-radius:99px
  }
  .route-map__info.is-open {
    transform:translateY(0);
    transition:transform .28s ease,visibility 0s;
    visibility:visible
  }
  /* Close tab — a child of the sheet (so it animates with it), but absolutely pinned to
     the sheet's top-right corner and pushed ABOVE the top edge (bottom:100%), like a
     browser tab. The sheet's overflow is visible so it isn't clipped; to the left of it
     there is only the map. */
  .route-map__info-close-bar {
    display:flex;
    align-items:flex-start;
    position:absolute;
    right:0;
    bottom:100%;
    z-index:2;
    width:fit-content;
    padding:0;
    background:transparent
  }
  .route-map__info-close {
    display:flex;
    align-items:center;
    justify-content:center;
    width:auto;
    height:1.9rem;
    padding:0 .8rem 0 1.3rem;
    color:var(--accent);
    background:var(--text);
    border:none;
    cursor:pointer;
    clip-path:polygon(0.85rem 0, 100% 0, 100% 100%, 0 100%);
    -webkit-tap-highlight-color:transparent
  }
  /* The backdrop is transparent and click-through (pointer-events:none): the map
     below stays visible and clickable (tapping a marker switches the point, tapping
     empty map closes the sheet via map.on('click')). body{overflow:hidden} locks background scroll. */
  .route-map__backdrop {
    display:block;
    position:fixed;
    inset:0;
    z-index:999;
    background:transparent;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .28s ease
  }
  .route-map__backdrop.is-open {
    opacity:1;
    visibility:visible
  }
  /* While the sheet is open, lock the rest of the content's scroll and hide the
     «back to top» button so it doesn't overlap the panel. */
  body.route-map--sheet-open {
    overflow:hidden
  }
  body.route-map--sheet-open .to-top {
    opacity:0;
    visibility:hidden;
    pointer-events:none
  }
  /* Point stats (duration · from previous point · transport type) — compact on a
     single row: smaller font/padding, no column wrapping. */
  .route-map__info-stats {
    gap:.6rem;
    flex-wrap:nowrap;
    font-size:.48rem;
    letter-spacing:.04em
  }
  .route-map__info-stats > div {
    flex:1 1 0;
    min-width:0
  }
  .route-map__info-stats strong {
    font-size:.85rem;
    margin-bottom:.15rem
  }
  /* ── Route tags — above the map (mobile) ──
     On mobile the map frame becomes a flex column: the tags (route/year and
     days·stops) move into a header strip above the canvas instead of overlaying the map. */
  .route-map__frame {
    display:flex;
    flex-direction:column
  }
  .route-map__tags {
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:.4rem;
    padding:.5rem .7rem;
    background:rgba(244,239,225,.96);
    border-bottom:1px solid var(--text);
    position:relative;
    z-index:6
  }
  .route-map__corner {
    position:static;
    top:auto;
    left:auto
  }
  /* ── Full-screen map while the sheet is open ──
     The map fills the space between the fixed price strip (--map-top) and the sheet
     at the bottom; the tag strip stays on top and the canvas stretches to fill the rest. */
  body.route-map--sheet-open .route-map__frame {
    position:fixed;
    left:0;
    right:0;
    top:var(--map-top,56px);
    bottom:0;
    z-index:5;
    min-height:0;
    border:none;
    border-radius:0
  }
  body.route-map--sheet-open .route-map__frame::after {
    display:none
  }
  body.route-map--sheet-open .route-map__canvas {
    height:auto;
    flex:1 1 auto;
    min-height:0
  }
}

.tour-tail {
  height:4rem
}

