.contact-page {
  overflow: clip;
}

.contact-page .contact-masthead {
  background: var(--colour-cobalt-primary);
  color: var(--colour-ivory-canvas);
  padding-block: clamp(var(--space-9), 10vw, var(--space-10));
}

.contact-page .contact-masthead__grid,
.contact-page .contact-room__grid,
.contact-page .contact-message__grid,
.contact-page .contact-form-section__grid,
.contact-page .contact-arrival__grid,
.contact-page .contact-closing__grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--space-5);
}

.contact-page .contact-masthead__copy {
  grid-column: 1 / span 7;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
}

.contact-page .contact-masthead__copy > * { margin: 0; }
.contact-page .contact-masthead h1 { color: var(--colour-ivory-canvas); font-size: clamp(4rem, 7vw, 5.5rem); line-height: 1.02; max-width: 16ch; }
.contact-page .contact-masthead__lead { font-size: var(--text-lead); line-height: var(--line-height-lead); max-width: 56ch; }
.contact-page .contact-masthead__actions,
.contact-page .contact-arrival__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.contact-page .contact-masthead__actions > *, .contact-page .contact-arrival__actions > * { min-width: 0; }
.contact-page .contact-masthead__helper { color: rgb(255 248 234 / 80%); font-size: var(--text-utility); }
.contact-page .contact-masthead__motif { grid-column: 8 / span 5; min-width: 0; position: relative; min-height: 16rem; }
.contact-page .contact-masthead__motif span { position: absolute; display: block; border: 2px solid var(--colour-ivory-canvas); }
.contact-page .contact-masthead__motif span:first-child { width: 10rem; height: 10rem; right: 8%; top: 8%; transform: rotate(45deg); }
.contact-page .contact-masthead__motif span:last-child { width: 4rem; height: 4rem; right: 0; bottom: 10%; background: var(--colour-cherry-accent); border-color: var(--colour-cherry-accent); }

.contact-page .contact-direct__intro { width: min(100%, 62ch); margin-bottom: var(--space-7); }
.contact-page .contact-direct__panels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.contact-page .contact-detail { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); padding: var(--space-5); border: var(--border); background: var(--colour-ivory-paper); }
.contact-page .contact-detail > * { margin: 0; }
.contact-page .contact-detail--call { border-top: var(--rule-cobalt); }
.contact-page .contact-detail--email { border-top: 2px solid var(--colour-timber-mid); }
.contact-page .contact-detail--visit { border-top: var(--rule-cobalt); }
.contact-page .contact-detail__label { color: var(--colour-cobalt-primary); font-size: var(--text-meta); font-weight: 700; letter-spacing: .1em; line-height: 1.2; text-transform: uppercase; }
.contact-page .contact-detail h3 { font-size: var(--text-card-heading); }
.contact-page .contact-detail__link { color: var(--colour-cobalt-deep); font-size: clamp(1.35rem, 2.3vw, 1.9rem); font-weight: 700; line-height: 1.2; overflow-wrap: anywhere; }
.contact-page .contact-detail__link--email { font-size: clamp(1.1rem, 1.8vw, 1.55rem); }
.contact-page .contact-detail p:not(.contact-detail__label) { max-width: 38ch; }
.contact-page .contact-detail address { color: var(--colour-cobalt-deep); font-family: var(--font-heading); font-size: 1.2rem; font-style: normal; line-height: 1.25; letter-spacing: -.03em; }

.contact-page .contact-pathways__intro { width: min(100%, 60ch); margin-bottom: var(--space-7); }
.contact-page .contact-pathways__list { border-top: var(--border); }
.contact-page .contact-pathway { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--space-5); min-width: 0; padding-block: var(--space-5); border-bottom: var(--border); }
.contact-page .contact-pathway__number { grid-column: 1 / span 2; min-width: 0; color: var(--colour-cobalt-primary); font-family: var(--font-heading); font-size: 3rem; letter-spacing: -.06em; line-height: 1; }
.contact-page .contact-pathway__number--cherry { color: var(--colour-cherry-accent); }
.contact-page .contact-pathway__title { grid-column: 3 / span 3; min-width: 0; }
.contact-page .contact-pathway__detail { grid-column: 6 / span 5; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); }
.contact-page .contact-pathway__title > *, .contact-page .contact-pathway__detail > * { margin: 0; }
.contact-page .contact-pathway h3 { font-size: clamp(1.45rem, 2.4vw, 2rem); }
.contact-page .contact-pathway__detail p { max-width: 42ch; }
.contact-page .contact-pathway__event-label { color: var(--colour-cherry-accent); font-size: var(--text-meta); font-weight: 700; letter-spacing: .1em; line-height: 1.2; text-transform: uppercase; margin-bottom: var(--space-2); }

.contact-page .contact-room { background: var(--colour-cobalt-deep); color: var(--colour-ivory-canvas); }
.contact-page .contact-room__media { grid-column: 1 / span 7; min-width: 0; width: 100%; height: 100%; min-height: 32rem; border: 0; border-radius: 0; }
.contact-page .contact-room__media img { width: 100%; height: 100%; object-fit: cover; object-position: 40% center; }
.contact-page .contact-room__copy { grid-column: 8 / span 5; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6); padding: var(--space-6); background: var(--colour-cobalt-primary); }
.contact-page .contact-room__intro { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); }
.contact-page .contact-room__intro > * { margin: 0; }
.contact-page .contact-room h2, .contact-page .contact-room h3 { color: var(--colour-ivory-canvas); }
.contact-page .contact-room h2 { font-size: clamp(2rem, 3.5vw, 3rem); max-width: 14ch; }
.contact-page .contact-room__intro p { max-width: 38ch; }
.contact-page .contact-room__clarification { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); padding: var(--space-5); background: var(--colour-timber-dark); }
.contact-page .contact-room__clarification > * { margin: 0; }
.contact-page .contact-room__clarification h3 { font-size: 1.5rem; }
.contact-page .contact-room__clarification p { max-width: 48ch; }

.contact-page .contact-message__intro { grid-column: 1 / span 5; min-width: 0; }
.contact-page .contact-message__intro p { max-width: 55ch; }
.contact-page .contact-message__blocks { grid-column: 6 / span 7; min-width: 0; display: flex; flex-direction: column; gap: var(--space-5); }
.contact-page .contact-message__block { min-width: 0; width: calc(100% - var(--space-6)); display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); padding: var(--space-5); border: var(--border); border-left: var(--rule-cobalt); background: var(--colour-ivory-paper); }
.contact-page .contact-message__block > * { margin: 0; }
.contact-page .contact-message__block--two { width: calc(100% - var(--space-8)); margin-left: var(--space-6); border-left-color: var(--colour-timber-mid); }
.contact-page .contact-message__block--three { margin-left: var(--space-8); border-left-color: var(--colour-cherry-accent); }
.contact-page .contact-message__block p { max-width: 40ch; }
.contact-page .contact-checklist { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.contact-page .contact-checklist li { position: relative; padding-left: var(--space-4); }
.contact-page .contact-checklist li::before { position: absolute; left: 0; top: .55em; width: .5rem; height: .5rem; background: var(--colour-cobalt-primary); content: ""; }

.contact-page .contact-form-section__intro { grid-column: 1 / span 4; min-width: 0; }
.contact-page .contact-form-section__intro p { max-width: 52ch; }
.contact-page .contact-enquiry-form { grid-column: 5 / span 8; min-width: 0; display: flex; flex-direction: column; gap: var(--space-5); padding: var(--space-6); border: var(--border); border-left: var(--rule-cobalt); background: var(--colour-ivory-paper); }
.contact-page .contact-form__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.contact-page .contact-form__field { grid-column: 1 / -1; min-width: 0; display: flex; flex-direction: column; align-items: stretch; gap: var(--space-2); }
.contact-page .contact-form__field--half { grid-column: span 1; }
.contact-page .contact-form__field label, .contact-page .contact-form__field small, .contact-page .contact-form__field p { margin: 0; }
.contact-page .contact-form__optional { color: var(--colour-muted); font-weight: 400; }
.contact-page .contact-form__field small { color: var(--colour-muted); font-size: var(--text-utility); line-height: 1.4; }
.contact-page .contact-form__field [aria-invalid="true"] { border: 2px solid var(--colour-cherry-accent); }
.contact-page .contact-form__error { min-height: 1.4em; color: #a91e30; font-size: var(--text-utility); font-weight: 700; line-height: 1.4; }
.contact-page .contact-form__note { max-width: 60ch; padding: var(--space-4); border: var(--border-timber); background: rgb(121 80 58 / 8%); font-size: var(--text-utility); line-height: 1.5; }
.contact-page .contact-form__submit-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4); }
.contact-page .contact-form__submit-row > * { min-width: 0; }
.contact-page .contact-form__submit-row .button { min-height: 3rem; }
.contact-page .contact-form__status { margin: 0; font-weight: 700; }

.contact-page .contact-arrival__address-band { background: var(--colour-timber-dark); color: var(--colour-ivory-canvas); padding-block: var(--space-8); }
.contact-page .contact-arrival__address-content { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); }
.contact-page .contact-arrival__address-content > * { margin: 0; }
.contact-page .contact-arrival__address-content h2 { color: var(--colour-ivory-canvas); font-size: clamp(2.25rem, 5vw, 4rem); max-width: 34ch; }
.contact-page .contact-arrival__address-content p { max-width: 52ch; }
.contact-page .contact-arrival__grid { padding-block: var(--space-8); }
.contact-page .contact-arrival__media { grid-column: 1 / span 6; min-width: 0; width: 100%; height: 30rem; border-radius: 0; }
.contact-page .contact-arrival__media img { width: 100%; height: 100%; object-fit: cover; object-position: center center; }
.contact-page .contact-arrival__copy { grid-column: 7 / span 6; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); padding: var(--space-6); background: var(--colour-cobalt-deep); color: var(--colour-ivory-canvas); }
.contact-page .contact-arrival__copy > * { margin: 0; }
.contact-page .contact-arrival__copy h3 { color: var(--colour-ivory-canvas); font-size: var(--text-card-heading); }
.contact-page .contact-arrival__copy p { max-width: 52ch; }
.contact-page .contact-arrival__copy .text-link { color: var(--colour-ivory-canvas); }

.contact-page .contact-closing { background: var(--colour-cobalt-primary); color: var(--colour-ivory-canvas); padding-block: clamp(var(--space-8), 8vw, var(--space-9)); }
.contact-page .contact-closing__copy { grid-column: 1 / span 7; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); }
.contact-page .contact-closing__copy > * { margin: 0; }
.contact-page .contact-closing h2 { color: var(--colour-ivory-canvas); font-size: clamp(2.25rem, 4vw, 3.5rem); max-width: 18ch; }
.contact-page .contact-closing__copy > p:not(.eyebrow) { max-width: 54ch; }
.contact-page .contact-closing__support { max-width: 42ch !important; }
.contact-page .contact-closing a { color: var(--colour-ivory-canvas); font-weight: 700; }
.contact-page .contact-closing__accent { grid-column: 8 / span 5; min-width: 0; position: relative; }
.contact-page .contact-closing__accent span { position: absolute; right: 8%; top: 20%; width: 10rem; border-top: 2px solid var(--colour-cherry-accent); transform: rotate(-35deg); }

.contact-page .text-link:hover { text-decoration-color: var(--colour-cherry-accent); text-decoration-thickness: .16em; }

@media (max-width: 64rem) {
  .contact-page .contact-masthead__grid,
  .contact-page .contact-room__grid,
  .contact-page .contact-message__grid,
  .contact-page .contact-form-section__grid,
  .contact-page .contact-arrival__grid,
  .contact-page .contact-closing__grid { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .contact-page .contact-masthead__copy { grid-column: 1 / span 6; }
  .contact-page .contact-masthead__motif { grid-column: 7 / span 2; }
  .contact-page .contact-direct__panels { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact-page .contact-detail--visit { grid-column: 1 / -1; }
  .contact-page .contact-pathway { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .contact-page .contact-pathway__number { grid-column: 1 / span 1; }
  .contact-page .contact-pathway__title { grid-column: 2 / span 3; }
  .contact-page .contact-pathway__detail { grid-column: 5 / span 4; }
  .contact-page .contact-room__media { grid-column: 1 / -1; min-height: 29rem; }
  .contact-page .contact-room__copy { grid-column: 1 / -1; }
  .contact-page .contact-message__intro { grid-column: 1 / -1; }
  .contact-page .contact-message__blocks { grid-column: 1 / -1; }
  .contact-page .contact-form-section__intro { grid-column: 1 / -1; }
  .contact-page .contact-enquiry-form { grid-column: 1 / -1; }
  .contact-page .contact-arrival__media { grid-column: 1 / -1; }
  .contact-page .contact-arrival__copy { grid-column: 1 / -1; }
  .contact-page .contact-closing__copy { grid-column: 1 / span 6; }
  .contact-page .contact-closing__accent { grid-column: 7 / span 2; }
}

@media (max-width: 45rem) {
  .contact-page .contact-masthead { padding-block: var(--space-8); }
  .contact-page .contact-masthead__grid,
  .contact-page .contact-room__grid,
  .contact-page .contact-message__grid,
  .contact-page .contact-form-section__grid,
  .contact-page .contact-arrival__grid,
  .contact-page .contact-closing__grid,
  .contact-page .contact-pathway { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
  .contact-page .contact-masthead__copy,
  .contact-page .contact-masthead__motif,
  .contact-page .contact-room__media,
  .contact-page .contact-room__copy,
  .contact-page .contact-message__intro,
  .contact-page .contact-message__blocks,
  .contact-page .contact-form-section__intro,
  .contact-page .contact-enquiry-form,
  .contact-page .contact-arrival__media,
  .contact-page .contact-arrival__copy,
  .contact-page .contact-closing__copy,
  .contact-page .contact-closing__accent,
  .contact-page .contact-pathway__number,
  .contact-page .contact-pathway__title,
  .contact-page .contact-pathway__detail { grid-column: 1; }
  .contact-page .contact-masthead h1 { font-size: clamp(2.9rem, 13vw, 3.65rem); }
  .contact-page .contact-masthead__motif,
  .contact-page .contact-closing__accent { display: none; }
  .contact-page .contact-masthead__actions { width: 100%; flex-direction: column; align-items: stretch; }
  .contact-page .contact-masthead__actions .button { width: 100%; min-height: 2.75rem; }
  .contact-page .contact-direct__panels { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
  .contact-page .contact-detail--visit { grid-column: auto; }
  .contact-page .contact-pathway { padding-block: var(--space-5); }
  .contact-page .contact-pathway__number { font-size: 2rem; }
  .contact-page .contact-pathway__detail p { max-width: none; }
  .contact-page .contact-room { padding-block: 0; }
  .contact-page .contact-room__media { min-height: 25rem; margin-inline: calc(50% - 50vw); width: 100vw; border-radius: 0; }
  .contact-page .contact-room__media img { object-position: 48% center; }
  .contact-page .contact-room__copy { margin-inline: calc(50% - 50vw); width: 100vw; padding: var(--space-6) var(--gutter); }
  .contact-page .contact-message__block,
  .contact-page .contact-message__block--two,
  .contact-page .contact-message__block--three { width: 100%; margin-left: 0; }
  .contact-page .contact-enquiry-form { padding: var(--space-4); }
  .contact-page .contact-form__fields { grid-template-columns: minmax(0, 1fr); }
  .contact-page .contact-form__field--half { grid-column: 1; }
  .contact-page .contact-form__submit-row { align-items: stretch; flex-direction: column; }
  .contact-page .contact-form__submit-row .button { width: 100%; }
  .contact-page .contact-arrival__address-band { padding-block: var(--space-7); }
  .contact-page .contact-arrival__address-content h2 { font-size: clamp(2rem, 10vw, 3rem); }
  .contact-page .contact-arrival__grid { padding-block: 0; }
  .contact-page .contact-arrival__media { height: 25rem; margin-inline: calc(50% - 50vw); width: 100vw; border-radius: 0; }
  .contact-page .contact-arrival__media img { object-position: 52% center; }
  .contact-page .contact-arrival__copy { margin-inline: calc(50% - 50vw); width: 100vw; padding: var(--space-6) var(--gutter); }
  .contact-page .contact-arrival__actions { width: 100%; flex-direction: column; align-items: stretch; }
  .contact-page .contact-arrival__actions .button { width: 100%; }
  .contact-page .contact-closing { padding-block: var(--space-7); }
}
