/* Shared finishing details: white surfaces, navy type and fine gold outlines. */
:root {
  --panel-radius: 3px;
  --panel-shadow: 0 8px 24px #142b4a0a;
}
.journal-page, .news-page { --journal-blue: #142b4a; }
.button { border-radius: var(--panel-radius); font-weight: 700; }
.text-link { font-weight: 600; }
.page-lead, .section-heading > p { font-size: 1rem; line-height: 1.8; }
.page-intro h1,
.fees-page-content h1,
.first-visit-page h1,
.home-intro-heading h1,
.team-intro-heading h1,
.news-content h2 { color: var(--navy-accent); }
.visit-practical, .fees-information, .journey-panel, .home-visit-hours {
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.page-next, .home-visit { border-top-width: 1px; }
footer, .policy-page footer { border-top: 1px solid var(--gold-line); }
.team-biography { background: #fff; border-top: 1px solid var(--gold-line); }
.team-bio-row + .team-bio-row { border-top: 1px solid var(--gold-line); }
.booking-page .journey-panel { border-color: var(--gold-line); }
.journey-panel .choice { border-radius: var(--panel-radius); }
.journey-panel .choice strong { color: var(--navy-accent); font-weight: 700; }
.journey-panel .choice:has(input:checked) {
  background: #fff;
  border-color: var(--green);
  box-shadow: inset 0 0 0 1px var(--green);
}
.journey-panel .choice:has(input:checked) strong { color: var(--green); }
.mobile-appointment-bar { border-top-color: var(--gold-line); }
.mobile-appointment-bar .mobile-directions { color: var(--navy-accent); font-weight: 600; }

/* First-visit steps retain their sequence, with matching framed panels. */
.first-visit-page .visit-layout .steps { gap: 20px; }
.first-visit-page .visit-layout .steps article {
  padding: 26px 26px 26px 76px;
  background: #fff;
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.first-visit-page .visit-layout .steps article > span {
  top: 27px;
  left: 24px;
  color: var(--gold);
  font-size: 2rem;
}
.first-visit-page .visit-layout .steps h3 { color: var(--navy-accent); font-size: 1.7rem; }
.first-visit-page .visit-layout .steps p { font-size: 1rem; line-height: 1.8; }

/* A clear newsletter invitation, using the same navy and gold as other cards. */
.news-page .newsletter-document {
  padding: 30px;
  background: var(--navy-accent);
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.news-page .newsletter-document:hover { background: #1b385b; }
.news-page .newsletter-document-icon,
.news-page .newsletter-document-label { color: var(--gold-accent); }
.news-page .newsletter-document-title { color: #fff; font-size: 1.65rem; font-weight: 400; }
.news-page .newsletter-document-action { color: #fff; font-weight: 600; line-height: 1.7; }
.news-page .newsletter-document-action > svg {
  width: 18px;
  height: 18px;
  margin-left: 6px;
  vertical-align: middle;
  color: var(--gold-accent);
}

/* Arrival cards share the fee and testimonial palette. */
.contact-page .arrival {
  background: #fff;
  border-top: 1px solid var(--gold-line);
  padding-block: clamp(40px, 5vw, 72px);
}
.contact-page .arrival > .section-heading { margin-bottom: 36px; }
.contact-page .arrival .arrival-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  align-items: start;
}
.contact-page .arrival .arrival-grid .travel-card {
  min-width: 0;
  padding: clamp(26px, 2.8vw, 38px);
  background: var(--panel-background);
  color: var(--panel-body);
  border: 1px solid var(--panel-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.contact-page .travel-card .number {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 28px;
  color: var(--panel-gold);
}
.travel-step-index { flex-shrink: 0; font: 400 2.8rem/1 var(--serif); letter-spacing: -.04em; }
.travel-step-label { font: 700 .75rem/1.5 var(--sans); letter-spacing: .1em; }
.travel-card .number::after { content: ''; flex: 1; min-width: 12px; height: 1px; background: var(--panel-line); }
.contact-page .arrival .travel-card h3 {
  margin-bottom: 20px;
  color: var(--panel-heading);
  font-size: clamp(1.8rem, 2.35vw, 2.15rem);
  line-height: 1.2;
}
.contact-page .arrival .travel-card p { margin-bottom: 22px; color: var(--panel-body); font-size: 1rem; line-height: 1.8; }
.contact-page .travel-card strong { color: var(--panel-heading); font-weight: 700; }
.contact-page .travel-card .arrival-detail { font-size: 1rem !important; }
.contact-page .travel-card .arrival-detail a { color: var(--panel-link); text-decoration-color: var(--panel-gold); }
.contact-page .travel-card .text-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  min-height: 52px;
  padding: 18px 0 0;
  border: 0;
  border-top: 1px solid var(--panel-line);
  color: var(--panel-link);
  font-size: .9375rem;
  font-weight: 600;
  line-height: 1.5;
}
.contact-page .travel-card .text-link:hover { text-decoration: underline; text-underline-offset: 4px; }
.contact-page .travel-card > :last-child { margin-bottom: 0; }
.contact-page .arrival .arrival-note {
  max-width: none;
  margin-top: 28px;
  padding: clamp(26px, 3vw, 38px);
  background: var(--navy-accent);
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
}
.contact-page .arrival-note h3 { color: #fff; font-size: 1.8rem; }
.contact-page .arrival-note p { max-width: 78ch; color: #fff; font-size: 1rem; line-height: 1.8; }
.contact-page .arrival-note .text-link { color: var(--gold-accent); border-color: var(--gold-accent); }

/* Patient information: strong introductions and readable, distinct sections. */
.policy-main {
  width: min(1180px, 86%);
  max-width: none;
  padding: clamp(36px, 5vw, 64px) 0 80px;
}
.policy-main .policy-hero {
  padding: clamp(28px, 4vw, 54px);
  background: var(--navy-accent);
  color: #fff;
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.policy-main .policy-hero .eyebrow { margin-bottom: 20px; color: var(--gold-accent); font-weight: 700; letter-spacing: .12em; }
.policy-main .policy-hero h1 {
  max-width: 22ch;
  margin: 0 0 24px;
  color: #fff;
  font-size: clamp(2rem, 5vw, 4.2rem);
  line-height: 1.12;
  overflow-wrap: break-word;
}
.policy-main .policy-hero .policy-intro {
  max-width: 65ch;
  margin: 0;
  padding: 0;
  border: 0;
  color: #fff;
  font-size: 1.0625rem;
  line-height: 1.8;
}
.policy-layout {
  display: grid;
  grid-template-columns: minmax(180px, .3fr) minmax(0, 1fr);
  gap: clamp(24px, 3vw, 40px);
  align-items: start;
  margin-top: 32px;
}
.policy-main .policy-contents {
  position: sticky;
  top: 140px;
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding: 24px;
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  background: #fff;
}
.policy-main .policy-contents h2 { margin: 0 0 12px; color: var(--navy-accent); font: 700 .75rem/1.6 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.policy-main .policy-contents a {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: 12px 0;
  color: var(--navy-accent);
  border-top: 1px solid #e7e2d7;
  font-size: .9375rem;
  font-weight: 600;
  line-height: 1.5;
  text-decoration: none;
}
.policy-main .policy-contents a:hover { text-decoration: underline; text-decoration-color: var(--gold); text-underline-offset: 4px; }
.policy-main .policy-content { min-width: 0; }
.policy-main .policy-content > section {
  margin: 0 0 24px;
  padding: clamp(24px, 3vw, 38px);
  background: #fff;
  border: 1px solid var(--gold-line);
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
  scroll-margin-top: 16px;
}
.policy-main .policy-section-index {
  display: block;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid #e7e2d7;
  color: var(--gold);
  font: 400 2rem/1 var(--serif);
}
.policy-main .policy-content h2 { margin: 0 0 20px; color: var(--navy-accent); font-size: clamp(1.7rem, 2.5vw, 2.1rem); line-height: 1.2; }
.policy-main .policy-content h3 { color: var(--navy-accent); font: 700 1.0625rem/1.5 var(--sans); }
.policy-main .policy-content :is(p, li, address) { color: #111; font-size: 1rem; line-height: 1.85; }
.policy-main .policy-content a:not(.button) { color: var(--navy-accent); text-decoration-color: var(--gold); text-underline-offset: 4px; }
.policy-main .policy-content > section > :last-child { margin-bottom: 0; }
.policy-main .policy-content li::marker { color: var(--gold); font-weight: 700; }
.policy-main .policy-date { font-size: .875rem; }
.policy-main .policy-content > .text-link { min-height: 44px; }
.policy-main .policy-related { margin: 38px 0 0; padding-top: 28px; border-top: 1px solid var(--gold-line); }
.policy-main .policy-related h2 { margin: 0 0 18px; font-size: 1.8rem; color: var(--navy-accent); }
.policy-related nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.policy-main .policy-related a { padding: 16px 18px; border: 1px solid var(--gold-line); border-radius: var(--panel-radius); color: var(--navy-accent); font-size: .9375rem; font-weight: 600; text-decoration: none; }
.policy-main .policy-related a:hover { text-decoration: underline; text-underline-offset: 4px; }
.policy-main .policy-related a[aria-current="page"] { background: var(--navy-accent); color: #fff; }

@media (max-width: 1050px) {
  .contact-page .arrival .arrival-grid { grid-template-columns: minmax(0, 1fr); }
  .contact-page .arrival .arrival-grid .travel-card { padding: 30px; }
  .policy-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .policy-main .policy-contents { position: static; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
  .policy-main .policy-contents h2 { grid-column: 1 / -1; }
}
@media (max-width: 650px) {
  .news-page .newsletter-document { padding: 26px 22px; }
  .policy-main { padding-bottom: 56px; }
  .policy-main .policy-hero { padding: 28px 24px; }
  .policy-main .policy-hero h1 { font-size: clamp(2rem, 8vw, 2.8rem); }
  .policy-main .policy-hero .eyebrow { font-size: .6875rem; }
  .policy-main .policy-hero .policy-intro { font-size: 1rem; }
  .policy-main .policy-contents { padding: 22px; column-gap: 18px; }
  .policy-main .policy-contents a { font-size: .875rem; }
  .policy-main .policy-content > section { padding: 26px 22px; }
  .policy-related nav { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 400px) {
  .contact-page .arrival .arrival-grid .travel-card { padding: 26px 22px; }
  .travel-step-label { letter-spacing: .06em; }
  .first-visit-page .visit-layout .steps article { padding: 24px 20px 24px 62px; }
  .first-visit-page .visit-layout .steps article > span { left: 18px; top: 25px; }
  .policy-main .policy-hero { padding-inline: 22px; }
}
