/* ------------------------------------------------------------------------- *
 * Homepage-only sections.
 * ------------------------------------------------------------------------- */

/* --- Hero ---------------------------------------------------------------- */

.home-hero {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: clamp(20px, 3vw, 44px) var(--gutter) clamp(40px, 5vw, 72px);
}
.home-hero h1 {
  font-size: clamp(42px, 6vw, 74px);
  line-height: 0.98;
  letter-spacing: -0.022em;
  color: var(--green);
}
.home-hero h1 em { font-style: normal; color: var(--terracotta); }
.home-hero .standfirst { max-width: 50ch; }

.from-prices {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 30px;
  padding-top: 20px;
  font-size: 15px;
  color: var(--ink-3);
}
.from-prices strong {
  font-family: var(--body);
  font-weight: 400;
  letter-spacing: 0.03em;
  font-size: 19px;
  color: var(--green);
}

/* --- Good-to-know strip -------------------------------------------------- */

.highlights {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(190px, 100%), 1fr));
  gap: 26px 40px;
}
.highlight { display: flex; flex-direction: column; gap: 5px; }
.highlight__title { font-family: var(--display); font-size: 21px; color: var(--green); }
.highlight__text { font-size: 15px; color: var(--ink-3); }

/* --- Where to stay ------------------------------------------------------- */

.stay-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
  margin-bottom: 48px;
}
.stay-head__copy { display: flex; flex-direction: column; gap: 14px; max-width: 620px; }
.stay-head__copy h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.stay-head__copy p { margin: 0; color: var(--ink-2); max-width: 50ch; }
.stay-head__link { font-size: 19px; letter-spacing: 0.03em; color: var(--terracotta); }

.stay-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(272px, 100%), 1fr));
  gap: clamp(28px, 3vw, 44px);
}
.stay-card { display: flex; flex-direction: column; gap: 18px; }
.stay-card__photo {
  aspect-ratio: 4 / 5;
  border-radius: var(--r-photo);
  overflow: hidden;
  background: var(--mid);
}
.stay-card__photo img { width: 100%; height: 100%; object-fit: cover; }
.stay-card__body { display: flex; flex-direction: column; gap: 9px; }
.stay-card h3 { font-family: var(--display); font-weight: 400; font-size: 27px; color: var(--green); }
.stay-card h3 a { color: inherit; }
.stay-card h3 a:hover { color: var(--terracotta); }
.stay-card p { margin: 0; font-size: 15.5px; color: var(--ink-2); }
.stay-card__foot { display: flex; align-items: baseline; gap: 10px; padding-top: 6px; }
.stay-card__fact { font-size: 14px; color: var(--ink-3); }
.stay-card__rule { flex: 1; border-bottom: var(--dotted-light); }
.stay-card__price { font-family: var(--display); font-weight: 600; font-size: 26px; color: var(--terracotta); }

/* --- The river ----------------------------------------------------------- */

.river-teaser {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--section-y) var(--gutter);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: clamp(36px, 5vw, 72px);
  align-items: center;
}
.river-teaser h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.river-teaser__media { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.river-teaser__wide {
  grid-column: 1 / -1;
  aspect-ratio: 16 / 10;
  width: 100%;
  object-fit: cover;
  border-radius: var(--r-panel);
}
.river-teaser__circle {
  aspect-ratio: 1 / 1;
  width: 100%;
  object-fit: cover;
  border-radius: var(--r-pill);
}

/* --- Prices -------------------------------------------------------------- */

.prices-inner {
  max-width: var(--wrap-long);
  margin: 0 auto;
  padding: var(--section-y) var(--gutter);
}
.prices-head { display: flex; flex-direction: column; gap: 14px; margin-bottom: 42px; max-width: 620px; }
.prices-head h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.prices-head p { margin: 0; color: var(--ink-2); }

.price-row { display: flex; align-items: baseline; gap: 14px; }
.price-row__name { font-family: var(--display); font-size: 24px; color: var(--green); }
.price-row__qualifier { font-size: 14px; color: var(--ink-3); }
.price-row__rule { flex: 1; border-bottom: var(--dotted-light); }
.price-row__figures {
  display: flex;
  gap: 20px;
  letter-spacing: 0.03em;
  font-size: 20px;
  color: var(--terracotta);
}
.price-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  padding-top: 22px;
  border-top: 1.5px solid rgba(154, 65, 35, 0.25);
  font-size: 14.5px;
  color: var(--ink-3);
}
.price-legend strong { font-weight: 400; letter-spacing: 0.03em; color: var(--green); }
.prices-inner > .note { margin-top: 16px; }

/* --- Round about --------------------------------------------------------- */

.nearby-teaser {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: clamp(40px, 5vw, 72px) var(--gutter) var(--section-y);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: clamp(36px, 5vw, 64px);
}
.nearby-teaser h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.nearby-blurbs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr));
  gap: 28px;
  padding-top: 4px;
}
.nearby-blurb { display: flex; flex-direction: column; gap: 6px; }
.nearby-blurb__name { font-family: var(--display); font-size: 22px; color: var(--green); }
.nearby-blurb__text { font-size: 15px; color: var(--ink-2); }
.nearby-teaser__media { display: flex; flex-direction: column; gap: 20px; }
.nearby-teaser__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-panel-lg);
}

/* --- Reviews ------------------------------------------------------------- */

.reviews { background: var(--ochre); }
.reviews__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: clamp(52px, 6vw, 88px) var(--gutter);
}
.reviews__eyebrow { font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--on-ochre-2); }
.reviews__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(272px, 100%), 1fr));
  gap: clamp(24px, 3vw, 40px);
  margin-top: 32px;
}
.reviews blockquote { margin: 0; display: flex; flex-direction: column; gap: 16px; }
.reviews blockquote p {
  margin: 0;
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(21px, 2vw, 26px);
  line-height: 1.32;
  color: var(--on-ochre-3);
}
.reviews blockquote footer { font-size: 14px; color: var(--on-ochre-3); }
.reviews__inner > .note { margin-top: 26px; }

/* --- Finding us ---------------------------------------------------------- */

.finding {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--section-y) var(--gutter);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: clamp(36px, 5vw, 64px);
}
.finding h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.finding__address {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-top: 16px;
  font-size: 17px;
  color: var(--green);
}
.finding__post { letter-spacing: 0.06em; color: var(--terracotta); }
.finding__media { display: flex; flex-direction: column; gap: 20px; }
.map-frame {
  aspect-ratio: 4 / 3;
  border-radius: var(--r-panel-lg);
  overflow: hidden;
  background: var(--mid);
}
.map-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.times {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr));
  gap: 20px;
  font-size: 15px;
}

/* --- Enquiry ------------------------------------------------------------- */

.enquire-inner {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: var(--section-y) var(--gutter);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: clamp(36px, 5vw, 64px);
  align-items: start;
}
.enquire-inner h2 { font-size: clamp(32px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.015em; }
.enquire-inner .prose { max-width: 46ch; }

.form-panel {
  background: var(--ground);
  border-radius: var(--r-panel-lg);
  padding: clamp(24px, 3vw, 38px);
}
.enquiry-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr));
  gap: 20px;
}
.enquiry-form label { display: flex; flex-direction: column; gap: 7px; }
.enquiry-form label span { font-size: 17px; color: var(--ink-3); }
.enquiry-form .full { grid-column: 1 / -1; }
.enquiry-form input,
.enquiry-form select,
.enquiry-form textarea {
  padding: 14px 16px;
  background: var(--panel);
  border: 1.5px solid rgba(110, 90, 69, 0.3);
  border-radius: var(--r-pill);
  font-size: 16px;
  color: var(--ink);
  width: 100%;
}
.enquiry-form textarea { border-radius: var(--r-panel); resize: vertical; }
.enquiry-form__submit {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}
.enquiry-form__submit .btn { background: var(--terracotta); color: var(--cream); border-color: transparent; }
.enquiry-form__submit .btn:hover { background: var(--green); color: var(--cream); }
.enquiry-form__note { font-size: 14px; color: var(--ink-3); }
.enquiry-form__error {
  grid-column: 1 / -1;
  margin: 0;
  padding: 14px 18px;
  border-radius: var(--r-panel);
  background: rgba(154, 65, 35, 0.12);
  border: 1.5px solid rgba(154, 65, 35, 0.4);
  color: var(--terracotta);
  font-size: 15px;
}
.enquiry-form__error[hidden] { display: none; }
/* Honeypot — kept out of the layout and out of the a11y tree. */
.enquiry-form__trap {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.enquiry-thanks {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 24px 0;
  align-items: flex-start;
}
.enquiry-thanks[hidden] { display: none; }
.enquiry-thanks__heading {
  margin: 0;
  font-family: var(--display);
  font-weight: 600;
  font-size: 28px;
  line-height: 1.28;
  color: var(--green);
}
.enquiry-thanks p { margin: 0; color: var(--ink-2); font-size: 15.5px; }
