
:root {
  --ink: #292923;
  --paper: #fffaf2;
  --muted: #655e51;
  --line: #ded4c6;
  --accent: #9a4d24;
  --accent-light: #e8bd8b;
  --brand-serif: Georgia, Cambria, "Times New Roman", Times, serif;
  --brand-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", Arial, sans-serif;
  --max-width: 1240px;
  --wrap-pad: clamp(16px, 3vw, 32px);
  --type-base: 18px;
  --type-base-mobile: 17px;
  --lh: 1.6;
  --radius: 8px;
  --shadow: 0 2px 6px rgba(0,0,0,0.08);
  --focus-ring: 0 0 0 3px #579bca, 0 0 0 5px #fff;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--brand-sans);
  font-size: var(--type-base);
  line-height: var(--lh);
  color: var(--ink);
  background: var(--paper);
}

/* Utilities */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

[hidden] { display: none !important; }

.text-link {
  color: var(--accent);
  font-weight: 600;
  text-decoration: underline;
}

.eyebrow {
  display: block;
  font-size: 0.85em;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--muted);
  text-transform: uppercase;
  margin-bottom: 0.4em;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5ch;
  padding: 0.85em 1.2em;
  background: var(--accent);
  color: #fff;
  border-radius: var(--radius);
  text-decoration: none;
  font-weight: 600;
  border: none;
  cursor: pointer;
  font-size: 1em;
  line-height: 1.2;
  transition: background 0.2s ease;
}
.button:hover { background: #0c4b58; }
.button:active { transform: translateY(1px); }
.button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.wrap {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 var(--wrap-pad);
}

/* Typography overrides */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--brand-serif);
  margin: 1.2em 0 0.6em;
  line-height: 1.25;
  font-weight: 600;
  color: var(--ink);
}
h1 { font-size: clamp(2rem, 4.5vw, 4rem); }
h2 { font-size: clamp(1.6rem, 2.4vw, 2.4rem); }
h3 { font-size: clamp(1.25rem, 1.8vw, 1.6rem); }
h4 { font-size: 1.15rem; }

p { margin: 0 0 1em; max-width: 65ch; }

a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
a:hover { color: #0c4b58; }
a:focus { outline: none; box-shadow: var(--focus-ring); border-radius: 4px; }

/* Skip link */
.skip-link {
  position: absolute;
  top: -40px; left: 0;
  background: var(--ink);
  color: #fff;
  padding: 0.75em 1.2em;
  z-index: 9999;
  text-decoration: none;
  font-weight: 600;
}
.skip-link:focus { top: 0; }

/* Preview bar */
.preview-bar {
  background: #000;
  color: #aaa;
  font-size: 0.85rem;
  text-align: center;
  padding: 0.4em 0;
  position: static;
  top: auto;
}

/* Header & Nav */
.site-header {
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  position: static;
  top: auto;
}
.header-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 72px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  text-decoration: none;
  color: var(--ink);
}
.brand img { width: 52px; height: 52px; }
.brand span {
  font-family: var(--brand-serif);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.brand strong {
  display: block;
  font-size: 0.95em;
  line-height: 1;
}

.menu-toggle {
  background: none;
  border: none;
  font-size: 1.25rem;
  color: var(--ink);
  padding: 0.5rem;
  cursor: pointer;
}
.menu-toggle:focus { outline: none; box-shadow: var(--focus-ring); border-radius: 8px; }

#primary-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  align-items: center;
  font-weight: 500;
}
#primary-nav a {
  text-decoration: none;
  color: var(--ink);
  position: relative;
}
#primary-nav a::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  width: 0; height: 2px;
  background: var(--accent);
  transition: width 0.2s ease;
}
#primary-nav a:hover::after { width: 100%; }

/* JS: Desktop always visible, Mobile conditional */
@media (min-width: 761px) {
  #primary-nav {
    display: flex !important;
  }
  .menu-toggle { display: none; }
}
@media (max-width: 760px) {
  /* JS off: nav always visible */
  #primary-nav {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
    width: 100%;
    padding: 1rem 0;
  }
  /* JS on: menu-toggle controls visibility with sibling selector */
  .js .menu-toggle[aria-expanded="true"] + #primary-nav {
    display: flex;
  }
  .js .menu-toggle[aria-expanded="false"] + #primary-nav {
    display: none;
  }
  .js #primary-nav {
    display: none;
  }

}

.nav-cta {
  margin-left: auto;
  padding: 0.65em 1em;
  background: var(--paper);
  border: 2px solid var(--accent);
  color: var(--accent);
  border-radius: var(--radius);
  text-decoration: none;
  font-weight: 600;
  white-space: nowrap;
}
.nav-cta:hover { background: var(--accent); color: #fff; }

/* Hero */
.hero {
  position: relative;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
}
.hero-image {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: 35% 60%;
  z-index: 0;
}
.hero-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(16,25,20,.68), rgba(16,25,20,.15)), linear-gradient(180deg,rgba(16,25,20,.65),rgba(16,25,20,.3)55%,transparent 85%);
  z-index: 1;
}
.hero-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  min-height: 720px;
  padding-top: 56px;
  padding-bottom: 80px;
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  position: relative;
  z-index: 2;
}
.hero-copy {
  padding: 0;
}
.hero-copy p.eyebrow {
  margin-top: 0;
  opacity: 0.9;
  color: var(--accent-light);
}
.hero-copy h1 {
  color: #fff;
  margin-top: 0.3em;
  max-width: 17ch;
  font-size: clamp(2.625rem, 4.5vw, 4rem);
}
.hero-intro {
  font-size: clamp(1rem, 1.4vw, 1.2rem);
  max-width: 46ch;
  margin-bottom: 1.4em;
  line-height: 1.6;
}
.hero-action { margin-top: 1em; }
.hero-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6em;
  margin-top: 1.2em;
}
.hero-tags span {
  background: rgba(0,0,0,0.35);
  padding: 0.4em 0.75em;
  border-radius: 999px;
  font-size: 0.85rem;
  font-weight: 500;
}
.hero-footnote {
  position: absolute;
  bottom: 1rem;
  font-size: 0.85rem;
  opacity: 0.7;
  right: var(--wrap-pad);
  text-align: right;
  z-index: 2;
}

/* Desktop: editorial-only hero */
.hero-editorial .hero-inner {
  min-height: 430px;
  grid-template-columns: 1fr;
}
.hero-editorial .hero-copy h1 { font-size: clamp(2rem, 3.5vw, 3.6rem); }

/* Hero: Mobile */
@media (max-width: 760px) {
  .hero-inner {
    grid-template-columns: 1fr;
    min-height: auto;
    gap: 24px;
    padding-bottom: 24px;
  }
  .hero-copy {
    order: 1;
    min-height: 540px;
    padding-top: clamp(24px, 6vh, 64px);
    padding-bottom: 0;
  }
  .quote-form {
    order: 2;
    margin-top: 0;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
  }
  .hero-footnote {
    position: static;
    margin-top: 1em;
    text-align: left;
  }
}

/* Quote Form */
.quote-form {
  background: #fff;
  padding: 1.5rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  margin-top: 0;
  color: var(--ink);
  font-size: var(--type-base);
  line-height: var(--lh);
}
.quote-form fieldset {
  border: none;
  padding: 0;
  margin: 0;
}
.quote-form fieldset[hidden] { display: none !important; }
.quote-form fieldset:disabled {
  opacity: 0.6;
}
.quote-form .field {
  margin-bottom: 1rem;
}
.quote-form label {
  display: block;
  font-weight: 600;
  margin-bottom: 0.35em;
  font-size: 0.95rem;
}
.quote-form input, .quote-form select, .quote-form textarea {
  width: 100%;
  padding: 0.75em 0.9em;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
  font-size: 1rem;
  color: var(--ink);
  font-family: var(--brand-sans);
  transition: border-color 0.2s, box-shadow 0.2s;
}
.quote-form input:focus, .quote-form select:focus, .quote-form textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(154,77,36,0.15);
}
.quote-form input[aria-invalid="true"],
.quote-form select[aria-invalid="true"] {
  border-color: #b91c1c;
  background: #fff8f8;
}
.field-error {
  color: #b91c1c;
  font-size: 0.9rem;
  margin-top: 0.25em;
  min-height: 0;
}
.quote-form .button {
  width: 100%;
}
.step-hint {
  font-size: 0.9rem;
  color: var(--muted);
  margin: 0.5em 0 0;
  font-style: italic;
}
.form-progress {
  font-size: 0.9rem;
  margin-bottom: 1rem;
}
.form-status {
  padding: 0.6em 0;
  margin: 1em 0 0;
  font-weight: 600;
  min-height: 0;
}
.form-status:empty { display: none; }
.form-note {
  font-size: 0.85rem;
  color: var(--muted);
  margin-top: 1.2em;
}
.form-note a {
  color: inherit;
  text-decoration: underline;
}

/* Forms: Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .quote-form input, .quote-form select, .quote-form textarea {
    transition: none;
  }
}

/* On-page Sidebar */
.on-page {
  background: #fff;
  border-radius: var(--radius);
  padding: 1.25rem;
  box-shadow: var(--shadow);
  font-size: 0.95rem;
  align-self: start;
}
.on-page nav {
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}
.on-page nav a {
  text-decoration: none;
  color: var(--ink);
  padding: 0.35em 0;
}
.on-page nav a:hover { color: var(--accent); }

/* Page Layout */
.content-layout {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: clamp(32px, 6vw, 64px);
  padding-top: 64px;
  padding-bottom: 64px;
}

.page-copy {
  max-width: 65ch;
}

.answer { scroll-margin-top: 24px; }
.section-heading {
  display: flex;
  align-items: center;
  gap: 0.75em;
  margin-bottom: 0.8em;
}
.section-number {
  font-family: var(--brand-serif);
  font-size: 1.75rem;
  color: var(--accent-light);
  font-weight: 700;
  line-height: 1;
}

/* Lists & Steps */
ul.items, ol.items {
  list-style: none;
  padding: 0;
  margin: 0 0 1.2em;
  display: grid;
  gap: 0.75em;
}
.items li {
  padding-left: 1.5em;
  position: relative;
}
ul.items li::before {
  content: "•";
  position: absolute;
  left: 0.2em;
  color: var(--accent);
  font-weight: bold;
  font-size: 1.2em;
}
ol.steps { counter-reset: step; }
ol.steps li {
  counter-increment: step;
}
ol.steps li::before {
  content: counter(step);
  position: absolute;
  left: 0;
  font-weight: 600;
  color: var(--accent);
}

/* Tables */
.table-wrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  margin: 1.2em 0;
}
.table-wrap table {
  width: 100%;
  min-width: 480px;
  border-collapse: collapse;
  font-size: 0.95rem;
}
.table-wrap th, .table-wrap td {
  padding: 0.75em 1em;
  text-align: left;
  border-bottom: 1px solid var(--line);
}
.table-wrap th {
  background: var(--paper);
  font-weight: 700;
}

/* Body Photo */
.body-photo {
  margin: 2.5em 0;
  text-align: center;
}
.body-photo img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius);
}
.body-photo figcaption {
  margin-top: 0.6em;
  font-size: 0.9rem;
  color: var(--muted);
}

/* FAQ */
.faq { margin-top: 3em; }
.faq details {
  border-bottom: 1px solid var(--line);
  padding: 0.8em 0;
}
.faq summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 1.05rem;
  padding-left: 1em;
  position: relative;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+";
  position: absolute;
  left: 0;
  font-size: 1.2em;
}
.faq details[open] summary::after { content: "−"; }

/* Route Grid & Cards */
.route-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(16px, 3vw, 24px);
  margin-top: 1.8em;
}
@media (min-width: 700px) {
  .route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .route-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 699px) {
  .route-grid { grid-template-columns: 1fr; }
}

.route-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--radius);
  text-decoration: none;
  color: inherit;
  background: #fff;
  box-shadow: var(--shadow);
  transition: transform 0.2s, box-shadow 0.2s;
}
.route-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.12);
}
.route-card img {
  height: 220px;
  object-fit: cover;
  width: 100%;
}
.route-card-copy {
  padding: 1em;
  flex-grow: 1;
  display: flex;
  flex-direction: column;
}
.route-card h3 {
  margin-top: 0;
  font-size: 1.15rem;
}
.route-card p {
  margin-top: 0.4em;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.5;
}
.text-link {
  margin-top: auto;
  align-self: flex-start;
}

/* Home-Projects (full-width strip) */
.home-projects {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin: 2em 0 3em;
}
@media (min-width: 1100px) {
  .home-projects {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 24px;
  }
}
@media (max-width: 1099px) {
  .home-projects { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 599px) {
  .home-projects { grid-template-columns: 1fr; }
}
.home-projects .route-card {
  background: var(--paper);
  box-shadow: none;
}
.home-projects .route-card img {
  height: 180px;
}

/* Map Section */
.map-section {
  margin: 2em 0 3em;
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
}
.map-heading {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: flex-end;
  justify-content: space-between;
  padding: 1.5rem var(--wrap-pad);
  background: #e8f2f7;
  border-bottom: 1px solid var(--line);
}
.map-heading h2 { margin: 0; }
.rr-real-map {
  margin: 0;
  display: block;
  width: 100%;
}
.map-placeholder {
  padding: 24px;
  text-align: center;
}
.map-placeholder h3 {
  margin-top: 0.6em;
  font-size: 1.25rem;
}
.map-placeholder button {
  margin-top: 0.8em;
}
.map-privacy {
  margin-top: 0.6em;
  font-size: 0.85rem;
  color: var(--muted);
}
.rr-real-map figcaption {
  padding: 1rem var(--wrap-pad) 1.2rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75em 1.5em;
  align-items: center;
  font-size: 0.9rem;
  color: var(--muted);
  border-top: 1px solid var(--line);
}
.rr-real-map figcaption a {
  text-decoration: none;
  font-weight: 600;
}

/* Next Step / Sticky Section */
.next-step {
  background: var(--paper);
  padding: 2rem var(--wrap-pad) 3rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
}
.next-step h2 {
  margin-top: 0;
}
.next-step a.button {
  flex-shrink: 0;
}

/* Value Strip (Home) */
.value-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  padding: 1.25rem var(--wrap-pad);
  background: #fff;
  border-radius: var(--radius);
  text-align: center;
  margin: 2.5em auto 0;
}
.value-strip div {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.value-strip span {
  font-family: var(--brand-serif);
  font-size: 1.8rem;
  color: var(--accent);
  margin-bottom: 0.4em;
}

/* Context Links */
.context-links {
  margin-top: 1.8em;
  padding-top: 1em;
  border-top: 1px solid var(--line);
}
.context-link {
  display: inline-block;
  margin-right: 1em;
  font-weight: 600;
}

/* Sources */
.sources {
  margin: 2.5em auto 1em;
}
.sources summary {
  font-weight: 600;
  cursor: pointer;
}
.sources ul {
  list-style: none;
  padding-left: 1.2em;
  margin-top: 0.5em;
}
.sources li { margin-bottom: 0.5em; }
.source-note {
  font-size: 0.85rem;
  margin-top: 0.8em;
}

/* Footer */
.site-footer {
  background: #132b42;
  color: #ccc;
  padding: 2.5rem var(--wrap-pad) 1.5rem;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr repeat(3, 1fr);
  gap: 2rem 2.5rem;
}
.footer-grid h2 {
  color: #fff;
  margin-top: 0;
  font-size: 1rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.footer-grid a {
  color: #ccc;
  text-decoration: none;
  margin-bottom: 0.35em;
  display: block;
}
.footer-grid a:hover { color: #fff; }
.footer-base {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid #26425a;
  font-size: 0.85rem;
  text-align: center;
}

/* Mobile Action (Sticky CTA) */
.mobile-action {
  position: fixed;
  left: 0; right: 0;
  bottom: 0;
  padding: 1rem;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  z-index: 800;
  border-top-left-radius: 12px;
  border-top-right-radius: 12px;
  transform: translateY(0);
  transition: opacity 0.3s ease, transform 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75ch;
}
@media (min-width: 761px) {
  .mobile-action { display: none !important; visibility: hidden; }
}

/* 404 Page Style */
.page-404 .page-copy {
  text-align: center;
}
.page-404 h1 {
  font-size: clamp(2rem, 6vw, 4.8rem);
  margin-bottom: 0;
  line-height: 1.1;
}
.page-404 .eyebrow { margin-top: 0; }

/* Legal pages (compact, readable) */
.page-legal .page-copy {
  font-size: 0.95rem;
}
.page-legal h1, .page-legal h2 {
  margin-top: 2em;
}
.page-legal h2 { margin-top: 2.5em; }
.page-legal p { margin: 0 0 1.2em; }

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Focus Visibility */
a:focus, button:focus, input:focus, select:focus, textarea:focus, summary:focus {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

/* Responsive adjustments */
@media (max-width: 760px) {
  .content-layout {
    grid-template-columns: 1fr;
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .on-page { display: none; }
  .next-step {
    flex-direction: column;
    text-align: center;
  }
  .next-step a.button {
    width: 100%;
    padding: 1em 0;
  }
  .footer-grid {
    grid-template-columns: 1fr 1fr;
  }
  .footer-grid > div:first-child { grid-column: span 2; }
}
@media (max-width: 390px) {
  .value-strip { grid-template-columns: 1fr; }
}

/* Source-based classes from renderer */
.official-link {
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
}
.official-link:hover { text-decoration: underline; }

/* Details summary arrow (no icons) */
details summary {
  cursor: pointer;
}
details summary::marker {
  content: "» ";
  color: var(--accent);
}

/* ItemText cards */
.items li strong { font-weight: 700; }
.items li strong + span { display: block; margin-top: 0.25em; color: var(--ink); }

/* Side note */
.side-note { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.side-note h3 { font-size: 0.95rem; margin-top: 0; }
.side-note .small-mark { display: inline-block; font-size: 1.1em; margin-right: 0.4em; }

/* Form step-back button */
.step-back {
  display: inline-block;
  margin-top: 0.75rem;
  color: var(--muted);
  background: none;
  border: none;
  font-size: 0.9rem;
  cursor: pointer;
  text-decoration: underline;
}
.step-back:focus { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Anchor scrolling */
section.answer { scroll-margin-top: 24px; }

/* Route section */
.route-section { margin-top: 2.5em; }
.route-section .section-title { margin-bottom: 1rem; }

/* Body photo */
.body-photo { margin-top: 3em; margin-bottom: 2em; }

/* Card spacing in home */
.home-projects .route-card { margin-bottom: 0; }

/* Form notes */
.notes { margin-top: 1rem; }
.notes summary { font-weight: 600; cursor: pointer; }
.notes summary::marker { content: "▶ "; color: var(--accent); }
.notes details[open] summary::marker { content: "▼ "; }

/* Map placeholder height for form overlay */
.map-placeholder { min-height: 300px; }

/* Iframe and map container */
.map-section iframe {
  display: block;
  width: 100%;
  height: 420px;
}

@media (max-width: 760px) {
  .map-section iframe { height: 320px; }
}

/* Responsive nav adjustments below 1000px */
@media (max-width: 999px) {
  .header-inner { gap: 0.5rem; }
  #primary-nav { gap: 0.75rem; font-size: 0.95rem; }
}

/* Home answer spacing */
.answer { margin-bottom: 3em; }
.page-home .answer:nth-child(2n) .section-content { background: #e7f0f5; padding: 28px; border-radius: var(--radius); }
.answer:last-child { margin-bottom: 0; }

/* Home layout overrides */
.page-home .content-layout { grid-template-columns: 1fr; }
.page-home .on-page { display: none; }
.page-home .page-copy { max-width: none; }
.page-home .route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1100px) { .page-home .route-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 1099px) { .page-home .route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) { .page-home .route-grid { grid-template-columns: 1fr; } }


.header-inner>*,.hero-inner>*,.content-layout>*,.footer-grid>*,.map-heading>*,.route-grid>*{min-width:0}
.hero-copy .eyebrow{color:#dbe7f0}.quote-form h2{font-size:28px;line-height:1.15;margin:8px 0 12px}.quote-form .eyebrow{color:var(--accent);font-size:12px}.form-intro{font-size:16px;margin-bottom:16px}.form-progress{color:var(--muted);font-size:13px}.field-error:empty{display:none}.form-note{margin-bottom:0}.form-status{font-size:15px}.quote-form .step-back{min-height:44px}.quote-form fieldset{min-width:0}
.hero-action:hover,.button:hover,.mobile-action:hover{color:#fff}.hero-editorial .hero-copy{max-width:800px}.hero-editorial .hero-copy h1{max-width:24ch}.hero-editorial .hero-tags{display:none}.hero-editorial .hero-footnote{display:none}
.section-heading h2{margin:0}.section-heading{align-items:flex-start;margin-bottom:24px}.section-number{font-size:22px;color:#2f6175;padding-top:5px}.section-content>p{max-width:65ch}.breadcrumbs{padding-top:24px;display:flex;flex-wrap:wrap;gap:10px;font-size:14px}.side-note p{font-size:14px}.side-note h3{line-height:1.4}.source-note{color:var(--muted)}
.items.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.items.cards li{background:#e7f0f5;border:1px solid var(--line);border-radius:8px;padding:22px}.items.cards li:before{content:none}.items.steps li{background:#edf4f8;border-left:3px solid var(--accent);padding:18px 20px 18px 48px}.items.steps li:before{left:20px;top:18px}.page-home .answer{margin-bottom:72px}.page-home .body-photo{max-width:900px;margin-inline:auto}.map-heading{gap:40px}.map-placeholder p{margin-inline:auto}.map-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center}.map-symbol{font-size:32px;color:var(--accent)}.map-section iframe{max-width:100%;border:0}.official-link{display:block;margin:12px 0}.footer-grid .brand{display:flex;color:#ffffff;margin-bottom:20px}.footer-grid .brand strong{color:#ffffff}.footer-grid p{font-size:15px}.mobile-action.is-concealed{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(100%)}.missing-page{padding-top:80px;padding-bottom:80px}.missing-page h1{max-width:20ch}
@media(min-width:761px) and (max-width:1000px){.hero-inner{grid-template-columns:minmax(0,1fr) 330px;gap:30px}.hero-copy h1{font-size:42px}.header-inner{padding-block:12px}.brand span{font-size:18px}}
@media(max-width:760px){body{font-size:17px;padding-bottom:64px}.hero{background:var(--paper)}.hero-image,.hero-shade{height:660px;bottom:auto}.hero-image{object-position:30% 60%}.hero-inner{padding-top:0;padding-bottom:32px;gap:0}.hero-copy{min-height:620px;padding:32px 4px 70px}.hero-copy h1{font-size:42px;line-height:1.12;max-width:16ch}.hero-intro{font-size:17px;line-height:1.6}.hero-action{margin-top:0}.hero-tags{gap:6px}.hero-tags span{font-size:12px}.quote-form{margin:0;color:var(--ink);padding:24px}.hero-footnote{display:none}.hero-editorial .hero-copy{min-height:440px;padding-bottom:48px}.hero-editorial .hero-inner{min-height:440px;padding-bottom:0}.hero-editorial .hero-image,.hero-editorial .hero-shade{height:100%}.header-inner{gap:8px;padding-block:12px}.menu-toggle{margin-left:auto;font-size:17px}.brand{gap:8px}.brand span{font-size:18px}.brand img{width:42px;height:42px}.nav-cta{margin-left:0}#primary-nav{flex-basis:100%}.map-heading{grid-template-columns:1fr;gap:20px}.items.cards{grid-template-columns:1fr}.page-home .answer{margin-bottom:48px}.value-strip{grid-template-columns:1fr;margin-top:0;border-radius:0;text-align:left}.value-strip div{flex-direction:row;gap:16px;align-items:center}.value-strip span{font-size:22px;margin:0}.footer-grid{gap:28px}.footer-grid a{font-size:15px}.section-number{font-size:18px}.section-heading{gap:12px}.page-home .answer:nth-child(2n) .section-content{padding:20px}.next-step{padding-top:40px}.sources{padding-bottom:24px}.content-layout{padding-top:40px}.table-wrap.cols-2 table{min-width:340px}}
@media(max-width:350px){.hero-copy h1{font-size:36px}.brand span{font-size:16px}.menu-toggle{padding:6px}.hero-copy{min-height:650px}.hero-image,.hero-shade{height:690px}.footer-grid{grid-template-columns:1fr}.footer-grid>div:first-child{grid-column:auto}}

@media(min-width:1000px){.page-home #price .section-content,.page-home #local .section-content{display:grid;grid-template-columns:1fr 1fr;gap:20px 48px}.page-home #price .context-links,.page-home #local .context-links{grid-column:1/-1;margin-top:0}.page-home #steps .items.steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.page-home #steps .items.steps li{padding:24px 22px 24px 48px}}
.table-hint{display:none}@media(max-width:760px){.table-hint{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}}

.planning-diagram{margin:0 0 44px}.planning-diagram img{width:100%;height:auto;border-radius:12px}.planning-diagram figcaption{font-size:14px;color:var(--muted);margin-top:12px;line-height:1.5}@media(max-width:600px){.planning-diagram{overflow-x:auto;padding-bottom:8px}.planning-diagram img{min-width:620px}.planning-diagram figcaption{min-width:0}}


.legal-header{padding-block:56px 32px}.legal-header h1{font-size:clamp(32px,4vw,52px);line-height:1.15;max-width:850px;margin:12px 0 20px}.legal-header>p:last-child{max-width:720px;font-size:18px;line-height:1.7}.page-legal .side-note{display:none}.page-legal .content-layout{padding-top:24px}.diagram-hint{display:none}.planning-diagram:focus-visible{outline:3px solid var(--accent);outline-offset:4px}@media(max-width:600px){.diagram-hint{display:block;font-size:14px;font-weight:700;color:var(--accent);margin:0 0 10px}.legal-header{padding-block:32px 12px}.page-legal{padding-bottom:0}}


:root {
  --ink: #132b42;
  --paper: #f4f8fb;
  --muted: #4d6c8a;
  --line: #dbe7f0;
  --accent: #12677a;
  --accent-light: #8fd0db;
  --brand-serif: Georgia, Cambria, "Times New Roman", Times, serif;
  --brand-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --radius: 14px;
}

/* Typography overrides */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--brand-sans);
  font-weight: 800;
}

h1 {
  font-size: clamp(2.375rem, 4.5vw, 3.875rem);
  line-height: 1.06;
  margin-bottom: 1rem;
}

@media (min-width: 1000px) and (max-width: 1100px) {
  h1 { font-size: 42px; }
}

@media (max-width: 760px) {
  h1 { font-size: 38px; line-height: 1.12; }
}

h2 { font-size: clamp(1.5rem, 2.2vw, 2.25rem); }
h3 { font-size: clamp(1.25rem, 1.8vw, 1.6rem); }

p { margin: 0 0 1em; }

a { color: var(--accent); }
a:hover { color: #0c4b58; }

/* Primary CTA & Buttons */
.button {
  background: var(--accent);
  color: #fff;
}
.button:hover {
  background: #0c4b58;
}
.button:active { transform: translateY(1px); }

.nav-cta {
  background: #fff;
  border-color: var(--accent);
  color: var(--accent);
}
.nav-cta:hover {
  background: var(--accent);
  color: #fff;
}

.mobile-action {
  background: var(--accent);
}

/* Form */
.quote-form {
  background: #fff;
}
.quote-form label {
  color: var(--ink);
}
.quote-form input:focus,
.quote-form select:focus,
.quote-form textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(18,103,122,0.15);
}

/* Cards */
.route-card {
  background: #fff;
  border-radius: var(--radius);
}
.route-card:hover {
  box-shadow: 0 6px 20px rgba(18,103,122,0.12);
}
.route-card h3 {
  color: var(--ink);
}
.route-card p {
  color: var(--muted);
}

/* Hero */
.hero-shade {
  background: linear-gradient(90deg, rgba(19,43,66,.72), rgba(19,43,66,.2)), linear-gradient(180deg,rgba(19,43,66,.68),rgba(19,43,66,.35)55%,transparent 85%);
}

.hero-copy .eyebrow { color: #dbe7f0; }

/* Sections */
.section-number {
  color: var(--accent);
}

ul.items li::before { color: var(--accent); }
ol.steps li::before { color: var(--accent); }

/* Home answer strip */
.page-home .answer:nth-child(2n) .section-content {
  background: #e8f2f7;
}

/* Value strip */
.value-strip span {
  color: var(--accent);
}

/* Footer */
.site-footer {
  background: #132b42;
  color: #c7d6e3;
}
.footer-grid h2 {
  color: #fff;
}
.footer-grid a:hover { color: #fff; }
.footer-base {
  border-top-color: #26425a;
}

/* Focus */
a:focus, button:focus, input:focus, select:focus, textarea:focus, summary:focus {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Specific overrides */
.header-inner { gap: 0.75rem; }
.brand span { font-size: 1.2rem; }
#primary-nav { gap: 1rem; font-weight: 500; }
.nav-cta { padding: 0.6em 1em; font-size: 0.95rem; }

/* Map */
.map-heading { background: #e8f2f7; }
.rr-real-map figcaption { border-top-color: var(--line); }
.map-placeholder { min-height: 300px; }

/* Responsive hero form on tablet */
@media (min-width: 761px) and (max-width: 1000px) {
  .hero-inner { grid-template-columns: minmax(0,1fr) 330px; }
  .hero-copy h1 { font-size: 42px; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Image selection */
.hero-image { object-position: 20% 55%; }
@media (max-width: 760px) {
  .hero-image { object-position: 20% 50%; }
}

:root{--brand-serif:var(--brand-sans)}
.brand span{font-family:var(--brand-sans);font-weight:800;letter-spacing:-.4px}.brand strong{font-weight:800}
.hero-copy h1{font-size:clamp(42px,4.5vw,62px);line-height:1.07;letter-spacing:-1.5px}.hero-editorial .hero-copy h1{font-size:clamp(34px,3.5vw,52px)}
.items.cards li{background:#e7f0f5;border-radius:14px}.items.steps li{background:#edf4f8}.quote-form{border-radius:16px;box-shadow:0 10px 35px rgba(19,43,66,.12)}.section-heading h2{letter-spacing:-.6px}.map-heading{padding:24px;border-radius:14px}.hero-image{object-position:30% 65%}
@media(min-width:761px)and(max-width:1100px){.hero-copy h1{font-size:42px;letter-spacing:-1px}.hero-editorial .hero-copy h1{font-size:40px}}
@media(max-width:760px){.hero-copy h1,.hero-editorial .hero-copy h1{font-size:38px;line-height:1.12;letter-spacing:-.8px}.hero-image{object-position:30% 65%}.brand span{font-size:18px}.map-heading{padding:20px}.hero-copy .eyebrow{font-size:12px}}
@media(max-width:350px){.hero-copy h1,.hero-editorial .hero-copy h1{font-size:34px}.brand span{font-size:16px}}

.table-hint[hidden]{display:none!important}

/* Concrete identity: warm stone, terracotta, angular restrained surfaces. */
:root{--ink:#302c27;--accent:#a44b2c;--paper:#fbf8f2;--line:#ddd5c9}body{background:#fbf8f2;color:#403b35;font-family:Arial,Helvetica,sans-serif}h1,h2,h3{font-family:Arial,Helvetica,sans-serif;color:#302c27;letter-spacing:-.035em}.site-header{background:#fbf8f2}.brand{color:#302c27}.brand strong{font-size:.89em}.button,.mobile-action{background:#a44b2c;color:#fff}.button:hover,.mobile-action:hover{background:#843a20}.nav-cta{color:#814026;border-color:#a44b2c}.quote-form{border-radius:8px;color:#403b35}.quote-form h2{color:#302c27}.quote-form .eyebrow,.eyebrow{color:#84402a}.hero-copy h1,.hero-copy .hero-intro{color:#fff}.hero-copy .eyebrow{color:#f2c3a8}.hero-shade{background:linear-gradient(90deg,rgba(35,29,24,.85) 0%,rgba(35,29,24,.53) 50%,rgba(35,29,24,.16) 100%)}.hero-tags span{background:rgba(30,25,20,.75);color:#fff}.hero-footnote{color:#fff}.route-card{border:1px solid #ddd5c9;border-radius:6px;box-shadow:none}.route-card:hover{border-color:#a44b2c}.context-link,.text-link,.context-links a{color:#8b3e25}.value-strip,.on-page,.answer-list .items li,.next-step,.map-section{background:#f0e9de}.on-page a{color:#4b453e}.section-number{color:#a44b2c}.section-heading{border-color:#ddd5c9}.next-step h2{color:#302c27}.site-footer{background:#302c27;color:#eee6da}.site-footer .brand,.site-footer h2,.site-footer a{color:#fff8ee}.side-note{border-top-color:#cbbba7}.field label{color:#403b35}.form-intro{color:#4f4940}.form-progress,.step-hint{color:#6a5b4d}.field input,.field select,.field textarea{border-color:#b7a995;color:#302c27}.field input:focus,.field select:focus,.field textarea:focus{outline-color:#a44b2c}.preview-bar{background:#302c27}.table-wrap th{color:#302c27}.table-wrap thead{background:#eee6d9}.source-note{color:#625447}.sources summary{color:#7c3b25}.form-note{color:#574e44}.form-note a{color:#7c3b25}.planning-diagram{background:#fff}.route-card img{aspect-ratio:3/2}.body-photo figcaption{color:#6a5b4d}.legal-header p{color:#51483f}@media(max-width:700px){.hero-copy{background:linear-gradient(0deg,rgba(35,29,24,.88),rgba(35,29,24,.58)),var(--hero-photo) center/cover}.hero-shade{background:none}}


.nav-cta:hover { background: var(--accent); color: #fff; }
.quote-form label { color: #403b35; font-weight: 700; }
.quote-form input:focus, .quote-form select:focus, .quote-form textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(164,75,44,0.15); outline: 2px solid var(--accent); outline-offset: 2px; }
.route-card p { color: var(--muted); }
.on-page nav a:hover { color: var(--accent); }
.site-footer a:hover { color: #fff; }
.table-wrap th { color: var(--ink); background: #eee6d9; }


:root{--muted:#6a5b4d}.hero-copy p.eyebrow{color:#f3c6a7}.map-heading,.page-home .answer:nth-child(2n) .section-content{background:#eee6d9}.items.steps li,.items.cards li{background:#f3ede3}.route-card p,.rr-real-map figcaption,.map-privacy{color:#625447}.footer-base{border-top-color:#55483d}.preview-bar{line-height:1.5;padding:8px 12px;color:#ded5c9}.step-back{color:#814026}
@media(max-width:760px){.hero .hero-image,.hero .hero-shade{display:none}.hero-inner{width:100%;max-width:none;padding-inline:0}.hero-copy{width:100%;padding:34px 20px 48px;background:linear-gradient(0deg,rgba(35,29,24,.84),rgba(35,29,24,.68)),var(--hero-photo) 35% 60%/cover}.hero-with-form .hero-copy{min-height:560px}.hero-editorial .hero-copy{min-height:420px;padding-bottom:48px}.hero-with-form .quote-form{margin:0 16px}.hero-editorial .hero-inner{min-height:0}.hero-tags{margin-bottom:0}}


.faq summary{list-style:none}.faq summary::marker{content:""}.faq summary::after{top:0}
.planning-diagram{overflow:visible;background:transparent}.diagram-scroll{overflow-x:auto;border-radius:12px}.diagram-scroll:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.planning-diagram figcaption{max-width:100%;overflow-wrap:anywhere}.guide-shortcuts{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 40px}.guide-shortcuts a{padding:12px 16px;background:#eee6d9;color:#74351e;border-radius:6px;font-weight:700;text-decoration:none}.guide-shortcuts a:hover{background:#e5d8c6}.guide-group{scroll-margin-top:28px;margin:44px 0 56px}.guide-group>h2{font-size:28px;line-height:1.2}.guide-directory .route-grid{margin-top:20px}
