.field { display: grid; gap: .45rem; }
.field label, .field legend { color: var(--forest-950); font-size: .78rem; font-weight: 900; letter-spacing: .045em; text-transform: uppercase; }
.field input, .field select, .field textarea { background: var(--white); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--charcoal); min-height: 3.25rem; padding: .75rem 1rem; width: 100%; }
.field textarea { min-height: 9rem; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--forest-700); outline: 3px solid rgba(47,102,86,.16); }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--error); }
.field-error { color: var(--error); font-size: .82rem; font-weight: 700; }
.field-help { color: var(--muted); font-size: .8rem; }
.check, .radio { align-items: flex-start; display: flex; gap: .7rem; }
.check input, .radio input { accent-color: var(--forest-800); flex: 0 0 auto; height: 1.1rem; margin-top: .3rem; width: 1.1rem; }
.form-grid { display: grid; gap: 1.2rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-grid .span-2 { grid-column: 1 / -1; }
.error-summary { background: #fff2f0; border-left: 4px solid var(--error); border-radius: var(--radius-sm); color: var(--error); display: none; padding: 1rem; }
.error-summary.is-visible { display: block; }
.filter-layout { align-items: start; display: grid; gap: 2rem; grid-template-columns: 17rem 1fr; }
.filters { background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); padding: 1.25rem; position: sticky; top: 7.5rem; }
.filter-group { border: 0; border-top: 1px solid var(--border); margin: 1.2rem 0 0; padding: 1.2rem 0 0; }
.filter-group legend { color: var(--forest-950); font-size: .76rem; font-weight: 900; letter-spacing: .08em; margin-bottom: .75rem; text-transform: uppercase; }
.filter-group .check + .check { margin-top: .6rem; }
.results-toolbar {
  align-items: center;
  background: #f6f4ef;
  border: 1px solid rgba(28, 36, 33, .06);
  border-radius: .85rem;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  margin-bottom: 1.15rem;
  padding: .65rem .85rem;
}
.results-toolbar strong {
  color: var(--forest-900, #102820);
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: -.01em;
}
.results-toolbar__actions { align-items: center; display: flex; flex-wrap: wrap; gap: .55rem; justify-content: flex-end; }
.results-toolbar select {
  background: var(--white);
  border: 1px solid rgba(28, 36, 33, .12);
  border-radius: .55rem;
  font-size: .85rem;
  font-weight: 600;
  min-height: 2.4rem;
  padding: .4rem .75rem;
}
.view-toggle,
.cols-toggle {
  background: #fff;
  border: 1px solid rgba(28, 36, 33, .12);
  border-radius: .55rem;
  display: inline-flex;
  overflow: hidden;
}
.cols-toggle {
  align-items: center;
}
.cols-toggle.is-hidden { display: none; }
.cols-toggle__label {
  color: var(--muted);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .06em;
  padding: 0 .55rem 0 .7rem;
  text-transform: uppercase;
}
.view-toggle__btn {
  align-items: center;
  background: transparent;
  border: 0;
  color: var(--muted);
  cursor: pointer;
  display: inline-flex;
  font-size: .82rem;
  font-weight: 700;
  justify-content: center;
  min-height: 2.4rem;
  min-width: 2.4rem;
  padding: 0 .55rem;
}
.view-toggle__btn + .view-toggle__btn,
.cols-toggle .view-toggle__btn {
  border-left: 1px solid rgba(28, 36, 33, .1);
}
.view-toggle__btn.is-active {
  background: var(--forest-900, #102820);
  color: #fff;
}
.view-toggle__btn svg { fill: currentColor; }

.tour-results {
  display: grid;
  gap: 1.15rem;
}
.tour-results--grid.tour-results--cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.tour-results--grid.tour-results--cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.tour-results--list {
  gap: 1.25rem;
  grid-template-columns: 1fr;
}
.tour-results--list .tour-card {
  align-items: stretch;
  display: grid;
  grid-template-columns: 15.5rem minmax(0, 1fr);
  min-height: 12rem;
}
.tour-results--list .tour-card__media {
  min-height: 12rem;
  overflow: hidden;
  position: relative;
}
.tour-results--list .tour-card__media img,
.tour-results--list .tour-card__media .image-fallback {
  aspect-ratio: auto;
  height: 100%;
  left: 0;
  max-height: none;
  min-height: 12rem;
  object-fit: cover;
  position: absolute;
  top: 0;
  width: 100%;
}
.tour-results--list .tour-card__body {
  gap: .5rem;
  justify-content: center;
  padding: 1.15rem 1.35rem 1.2rem;
}
.tour-results--list .tour-card__title {
  font-size: clamp(1.25rem, 1.8vw, 1.5rem);
  letter-spacing: -.03em;
  max-width: 30ch;
}
.tour-results--list .tour-card__excerpt {
  -webkit-line-clamp: 3;
  font-size: .92rem;
  line-height: 1.5;
  max-width: 56ch;
}
.tour-results--list .tour-card__facts {
  display: grid;
  gap: .5rem 1rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  list-style: none;
  margin: .05rem 0 0;
  max-width: 34rem;
  padding: .7rem 0 0;
  border-top: 1px solid rgba(28, 36, 33, .08);
}
.tour-results--list .tour-card__facts li {
  display: grid;
  gap: .2rem;
}
.tour-results--list .tour-card__facts span {
  color: var(--muted);
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.tour-results--list .tour-card__facts strong {
  color: var(--forest-900, #102820);
  font-size: .9rem;
  font-weight: 650;
  font-weight: 600;
}
.tour-results--list .tour-card__footer {
  gap: .85rem 1.15rem;
  margin-top: .35rem;
  padding-top: .95rem;
}
.tour-results--list .tour-card__footer a {
  font-size: .78rem;
}
.tour-results--list .tour-card__cta + a {
  /* fuller labels in detailed list */
}
.tour-results--grid .tour-card__facts { display: none; }
.tour-results--grid .tour-card__excerpt { -webkit-line-clamp: 2; }
.tour-results--grid .tour-card__footer a:not(.tour-card__cta) {
  font-size: .7rem;
}

@media (max-width: 1100px) {
  .tour-results--grid.tour-results--cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tour-results--list .tour-card {
    grid-template-columns: minmax(11rem, 14rem) minmax(0, 1fr);
  }
  .tour-results--list .tour-card__facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 700px) {
  .cols-toggle { display: none; }
  .tour-results--grid.tour-results--cols-2,
  .tour-results--grid.tour-results--cols-3 { grid-template-columns: 1fr; }
  .tour-results--list .tour-card {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .tour-results--list .tour-card__media,
  .tour-results--list .tour-card__media img,
  .tour-results--list .tour-card__media .image-fallback {
    aspect-ratio: 16 / 9;
    height: auto;
    min-height: 0;
  }
  .tour-results--list .tour-card__facts { grid-template-columns: 1fr 1fr; }
}
.active-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.3rem; }
.mobile-filter-bar { background: var(--ivory); border-bottom: 1px solid var(--border); border-top: 1px solid var(--border); display: none; gap: .7rem; padding: .8rem var(--gutter); position: sticky; top: 4.7rem; z-index: 40; }
.filter-drawer { background: var(--ivory); bottom: 0; display: none; inset-inline: 0; max-height: 90vh; overflow: auto; padding: 1.25rem; position: fixed; transform: translateY(105%); transition: transform 260ms ease; z-index: 1200; }
.filter-drawer.is-open { transform: translateY(0); }
.filter-drawer__top { align-items: center; display: flex; justify-content: space-between; margin-bottom: 1rem; }
.empty-state { border: 1px dashed var(--sand-300); border-radius: var(--radius-lg); padding: 4rem 2rem; text-align: center; }
.empty-state h2 { font-size: 2.5rem; }
.empty-state p { color: var(--muted); margin: 1rem auto 1.5rem; max-width: 34rem; }
.pagination { align-items: center; display: flex; gap: .45rem; justify-content: center; list-style: none; margin: 3rem 0 0; padding: 0; }
.pagination button, .pagination a { align-items: center; background: var(--white); border: 1px solid var(--border); border-radius: 50%; display: flex; height: 2.7rem; justify-content: center; text-decoration: none; width: 2.7rem; }
.pagination .is-current { background: var(--forest-900); color: var(--white); }
.accordion { border-top: 1px solid var(--border); }
.accordion-item { border-bottom: 1px solid var(--border); }
.accordion-trigger { align-items: center; background: transparent; border: 0; color: var(--forest-950); display: flex; font-weight: 800; gap: 1rem; justify-content: space-between; padding: 1.25rem 0; text-align: left; width: 100%; }
.accordion-trigger::after { content: "+"; font-size: 1.5rem; font-weight: 400; }
.accordion-trigger[aria-expanded="true"]::after { content: "−"; }
.accordion-panel { color: var(--muted); padding: 0 0 1.4rem; }
.js .accordion-panel[hidden] { display: none; }
.timeline { display: grid; gap: 0; }
.timeline-item { border-left: 1px solid var(--sand-300); margin-left: .55rem; padding: 0 0 1.7rem 1.5rem; position: relative; }
.timeline-item::before { background: var(--ochre-600); border: 4px solid var(--ivory); border-radius: 50%; content: ""; height: 1rem; left: -.53rem; position: absolute; top: .25rem; width: 1rem; }
.timeline-item h4 { font-family: var(--font-body); font-size: .95rem; letter-spacing: .03em; }
.timeline-item p { color: var(--muted); margin-top: .4rem; }
.fact-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fact { border-bottom: 1px solid var(--border); padding: 1.2rem 1rem; }
.fact span { color: var(--muted); display: block; font-size: .7rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.fact strong { color: var(--forest-950); display: block; font-size: .95rem; margin-top: .3rem; }
.tour-detail { align-items: start; display: grid; gap: 4rem; grid-template-columns: minmax(0, 1fr) 20rem; }
.sticky-side { position: sticky; top: 8rem; }
.gallery { display: grid; gap: .7rem; grid-template-columns: 2fr 1fr; margin-top: 2rem; }
.gallery button { background: none; border: 0; border-radius: var(--radius); overflow: hidden; padding: 0; }
.gallery button:first-child { grid-row: span 2; }
.gallery img { height: 100%; object-fit: cover; width: 100%; }
.lightbox { align-items: center; background: rgba(5,14,10,.95); display: none; inset: 0; justify-content: center; padding: 2rem; position: fixed; z-index: 1500; }
.lightbox.is-open { display: flex; }
.lightbox img { max-height: 84vh; max-width: min(90vw, 75rem); object-fit: contain; }
.lightbox__close { color: var(--white); position: absolute; right: 1.5rem; top: 1.5rem; }
.quote-steps { display: grid; gap: .75rem; grid-template-columns: repeat(3, 1fr); margin-bottom: 2rem; }
.quote-step { border-top: 3px solid var(--border); color: var(--muted); font-size: .75rem; font-weight: 900; letter-spacing: .08em; padding-top: .75rem; text-transform: uppercase; }
.quote-step.is-active, .quote-step.is-complete { border-color: var(--ochre-600); color: var(--forest-900); }
.quote-panel { display: none; }
.quote-panel.is-active { display: block; }
.quote-actions { align-items: center; display: flex; gap: .8rem; justify-content: space-between; margin-top: 2rem; }
.notice { border-left: 4px solid var(--ochre-600); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; background: var(--sand-100); padding: 1.1rem 1.25rem; }
.pullquote { border-bottom: 1px solid var(--sand-300); border-top: 1px solid var(--sand-300); color: var(--forest-800); font-family: var(--font-display); font-size: clamp(1.8rem, 4vw, 2.8rem); line-height: 1.2; margin-block: 3rem; padding-block: 2rem; }
.tabs { border-bottom: 1px solid var(--border); display: flex; gap: 1.5rem; overflow-x: auto; }
.tab { background: none; border: 0; border-bottom: 3px solid transparent; color: var(--muted); font-weight: 800; padding: .8rem 0; white-space: nowrap; }
.tab.is-active { border-bottom-color: var(--ochre-600); color: var(--forest-950); }
.cookie-banner { background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); bottom: 1rem; box-shadow: var(--shadow); display: none; left: 1rem; max-width: 28rem; padding: 1.3rem; position: fixed; z-index: 1300; }
.cookie-banner.is-visible { display: block; }
.cookie-banner p { color: var(--muted); font-size: .88rem; }
.cookie-banner .cluster { margin-top: 1rem; }
.back-to-top { bottom: 1rem; opacity: 0; pointer-events: none; position: fixed; right: 1rem; transition: opacity var(--transition); z-index: 100; }
.back-to-top.is-visible { opacity: 1; pointer-events: auto; }
.reading-progress { background: rgba(198,106,43,.2); height: 3px; left: 0; position: fixed; top: 0; width: 100%; z-index: 1700; }
.reading-progress span { background: var(--ochre-600); display: block; height: 100%; transform: scaleX(0); transform-origin: left; width: 100%; }
.skeleton { animation: shimmer 1.5s infinite; background: linear-gradient(90deg, var(--sand-100), var(--white), var(--sand-100)); background-size: 200% 100%; border-radius: var(--radius-sm); }
@keyframes shimmer { to { background-position: -200% 0; } }
