:root {
  --green:#1E3D2E;
  --cream:#F6F0E2;
  --ink:#111111;
  --white:#FFFFFF;
  --ochre:#C0872E;
  --serif:"Libre Baskerville", Georgia, "Times New Roman", serif;
  --sans:"Work Sans", "Segoe UI", Arial, sans-serif;
  --radius:10px;
  --max:76rem;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body { margin:0; background:var(--cream); color:var(--ink); font-family:var(--sans); line-height:1.55; }
img { display:block; max-width:100%; height:auto; }
a { color:var(--green); text-underline-offset:.18em; text-decoration-thickness:.08em; }
a:hover { text-decoration-thickness:.13em; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline:3px solid var(--green); outline-offset:3px; border-radius:4px;
}
button, input, select { font:inherit; }
.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; }
.skip-link { position:absolute; top:-5rem; left:1rem; z-index:1000; background:var(--white); border:2px solid var(--green); padding:.75rem 1rem; }
.skip-link:focus { top:1rem; }
.container { width:min(100% - 2rem,var(--max)); margin-inline:auto; }

.site-header { border-bottom:1px solid rgba(30,61,46,.18); background:rgba(246,240,226,.97); }
.header-inner { min-height:4.7rem; display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:.5rem .65rem; row-gap:.4rem; padding:.5rem 0; }
.brand, .footer-brand { display:inline-flex; min-height:44px; align-items:center; flex:0 0 auto; }
.brand img { width:15.25rem; }
.header-actions { display:flex; align-items:center; justify-content:flex-end; gap:.5rem .8rem; min-width:0; }
.site-nav { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:.2rem .7rem; }
.site-nav a { display:inline-flex; align-items:center; min-height:44px; font-size:.86rem; font-weight:600; }

.image-fade { position:relative; overflow:hidden; background:var(--cream); }
.image-fade picture { display:block; width:100%; height:100%; }
.image-fade::before,
.image-fade::after { content:""; position:absolute; z-index:1; pointer-events:none; }
.image-fade::before {
  inset:0 auto 0 0; width:8%;
  background:linear-gradient(90deg,var(--cream) 0%,rgba(246,240,226,.75) 35%,rgba(246,240,226,0) 100%);
}
.image-fade::after {
  inset:auto 0 0 0; height:24%;
  background:linear-gradient(0deg,var(--cream) 0%,rgba(246,240,226,.68) 28%,rgba(246,240,226,0) 100%);
}
.env-orientation { margin:0; height:14rem; }
.env-orientation picture, .env-orientation img { width:100%; height:100%; }
.env-orientation img { object-fit:cover; object-position:center 62%; }

.hero { padding:2.4rem 0 2.15rem; }
.eyebrow { margin:0 0 .6rem; color:var(--green); text-transform:uppercase; letter-spacing:.11em; font-size:.72rem; }
.eyebrow::after { content:""; display:block; width:2.25rem; margin-top:.5rem; border-top:2px solid var(--ochre); }
h1,h2 { font-family:var(--serif); font-weight:400; color:var(--green); }
h1 { max-width:17ch; margin:0; font-size:clamp(2rem,8vw,4.2rem); line-height:1.04; letter-spacing:-.025em; }
h2 { margin:0; font-size:clamp(1.55rem,5vw,2.6rem); line-height:1.17; }
h3 { margin:0; color:var(--green); font-size:1.05rem; line-height:1.28; font-weight:550; }
.lede { max-width:48rem; font-size:1.04rem; margin:1rem 0 .45rem; }
.scope { color:var(--green); font-size:.9rem; }

.journey-grid { display:grid; grid-template-columns:1fr; gap:.65rem; margin-top:1.3rem; }
.journey-grid a {
  display:grid; grid-template-columns:2rem 1fr; gap:.1rem .65rem; min-height:84px;
  padding:.85rem; background:var(--white); border:1px solid rgba(30,61,46,.18); border-radius:var(--radius);
  text-decoration:none;
}
.journey-grid span { grid-row:1 / span 2; color:var(--green); font-family:var(--serif); font-size:1rem; font-weight:700; }
.journey-grid strong { font-family:var(--serif); font-size:1.08rem; font-weight:400; }
.journey-grid small { color:var(--ink); font-size:.84rem; }

.section { border-top:1px solid rgba(30,61,46,.17); padding:2.6rem 0 3rem; }
.section-heading { max-width:50rem; margin-bottom:1.35rem; }
.section-heading > p:last-child { margin:.6rem 0 0; }
.guide-grid, .transit-grid, .source-grid { display:grid; gap:.8rem; }
.guide-grid article, .transit-grid article {
  background:var(--white); border:1px solid rgba(30,61,46,.18); border-radius:var(--radius); padding:1rem;
}
.guide-grid article p { margin:.5rem 0 0; }
.step { color:var(--green); font-family:var(--serif); font-weight:700; margin:0 0 .4rem!important; }
.boundary, .record-note { border-top:1px solid rgba(30,61,46,.14); padding-top:.65rem; font-size:.9rem; }

.directory-tools { margin-bottom:.75rem; }
.directory-tools label { display:block; color:var(--green); font-weight:650; margin-bottom:.35rem; }
#directory-search {
  width:100%; min-height:48px; padding:.62rem .78rem; border-radius:7px; border:1px solid rgba(30,61,46,.32); background:var(--white);
}
.result-status { color:var(--green); font-size:.84rem; margin:.7rem 0 1rem; }

.map-directory-layout { display:grid; gap:.8rem; }
.map-pane { min-width:0; }
.map-canvas {
  background:rgba(255,255,255,.55); border:1px solid rgba(30,61,46,.22); border-radius:var(--radius); overflow:hidden;
}
.map-canvas.is-enhanced { min-height:16rem; }
.map-fallback { margin:0; padding:1rem; }
.map-canvas.is-enhanced .map-fallback { display:none; }
.map-caption { font-size:.8rem; color:var(--green); margin-top:.45rem; }

.directory-pane { display:flex; flex-direction:column; gap:.55rem; min-width:0; }
.category-group {
  background:var(--white); border:1px solid rgba(30,61,46,.18); border-radius:var(--radius); overflow:hidden;
}
.category-group[hidden] { display:none; }
.category-toggle {
  list-style:none; display:flex; align-items:center; gap:.55rem; min-height:52px; padding:.75rem .9rem;
  cursor:pointer; color:var(--green); font-weight:650;
}
.category-toggle::-webkit-details-marker { display:none; }
.category-toggle .chevron {
  width:.55rem; height:.55rem; border-right:2px solid var(--green); border-bottom:2px solid var(--green);
  transform:rotate(-45deg); transition:transform .15s ease; flex:0 0 auto;
}
.category-group[open] > .category-toggle .chevron { transform:rotate(45deg); }
.category-toggle .category-name { flex:1 1 auto; }
.category-toggle .category-count {
  color:var(--green); font-size:.78rem; font-weight:600; background:rgba(30,61,46,.08); border-radius:999px; padding:.15rem .6rem;
}
.category-panel { border-top:1px solid rgba(30,61,46,.13); }

.provider-row, .branch-row { border-top:1px solid rgba(30,61,46,.1); }
.provider-row[hidden], .branch-row[hidden] { display:none; }
.category-panel > .provider-row:first-child { border-top:0; }
.branch-list > .branch-row:first-child { border-top:0; }
.provider-summary, .branch-summary {
  list-style:none; display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .6rem; min-height:48px;
  padding:.6rem .9rem; cursor:pointer;
}
.provider-summary::-webkit-details-marker, .branch-summary::-webkit-details-marker { display:none; }
.provider-name, .branch-name { font-weight:600; color:var(--ink); }
.provider-row--group > .provider-summary .provider-name { font-weight:650; }
.provider-meta { font-size:.78rem; color:var(--green); }
.mapped-badge { margin-left:.3rem; font-size:.85em; }
.branch-number {
  display:inline-flex; align-items:center; justify-content:center; width:1.4rem; height:1.4rem; border-radius:50%;
  border:1px solid var(--green); color:var(--green); font-size:.72rem; font-weight:700; flex:0 0 auto;
}
.branch-list { padding-left:.9rem; border-top:1px solid rgba(30,61,46,.1); }

.provider-row[data-map-selected="true"] > .provider-summary,
.branch-row[data-map-selected="true"] > .branch-summary {
  background:rgba(30,61,46,.08);
}
.provider-row[data-map-selected="true"], .branch-row[data-map-selected="true"] {
  box-shadow:inset 3px 0 0 var(--green);
}

.record-detail { padding:0 .9rem .9rem .9rem; }
.record-detail p { margin:.5rem 0 0; font-size:.9rem; }
.record-detail p:first-child { margin-top:.4rem; }
.record-location, .record-source { font-size:.88rem; }
.checked { color:var(--green); font-size:.76rem; }
.record-note { border-top:1px solid rgba(30,61,46,.14); padding-top:.6rem; font-size:.9rem; }
.record-pending { font-style:italic; color:rgba(17,17,17,.65); font-size:.85rem; }
.record-actions { display:flex; flex-wrap:wrap; gap:.5rem .8rem; margin-top:.65rem; }
.record-actions a { min-height:44px; display:inline-flex; align-items:center; }

.essentials-marker { background:transparent; border:0; }
.essentials-marker-dot {
  display:block; width:28px; height:28px; border:3px solid var(--green); border-radius:50%; background:var(--cream); box-shadow:0 0 0 3px rgba(255,255,255,.9);
}
.essentials-marker:focus .essentials-marker-dot { outline:3px solid var(--green); outline-offset:3px; }
.essentials-marker.is-selected .essentials-marker-dot {
  background:var(--green); box-shadow:0 0 0 4px rgba(30,61,46,.28), 0 0 0 3px rgba(255,255,255,.9);
}

.transit-grid article { min-width:0; }
.transit-grid article p { margin:.6rem 0 0; }
.transit-grid ul:not(.corridor-list) { columns:2; column-gap:1.4rem; padding-left:1.2rem; }
.corridor-list { list-style:none; padding:0; margin:.8rem 0; }
.corridor-list li { display:grid; grid-template-columns:1fr auto 1fr; gap:.45rem; align-items:center; padding:.45rem 0; border-bottom:1px solid rgba(30,61,46,.11); }
.corridor-list li strong { color:var(--green); }

.source-section { background:rgba(255,255,255,.34); }
.site-footer { background:var(--green); color:var(--cream); }
.footer-inner { padding:1.8rem 0 2.2rem; }
.footer-brand img { width:15.5rem; }
.site-footer a { color:var(--cream); }
.site-footer p { max-width:42rem; }

.leaflet-container { font-family:var(--sans); background:#e8e2d6; }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { color:var(--ink); }
.leaflet-control-attribution { font-size:.65rem; }

@media (max-width:43.99rem) {
  .header-inner { align-items:center; }
  .header-actions { min-width:0; }
  .site-nav { justify-content:flex-end; gap:.15rem .5rem; }
  .site-nav a { font-size:.8rem; }
  .env-orientation { height:12.5rem; }
  .transit-grid ul:not(.corridor-list) { columns:1; }
}
@media (min-width:44rem) {
  .container { width:min(100% - 3rem,var(--max)); }
  .brand img { width:18rem; }
  .footer-brand img { width:18.25rem; }
  .env-orientation { height:21rem; }
  .hero { padding:3rem 0 2.55rem; }
  .journey-grid, .guide-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .transit-grid { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); }
  .source-grid { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); }
}
@media (min-width:48rem) {
  .map-directory-layout { grid-template-columns:minmax(16rem,1fr) minmax(16rem,1.05fr); align-items:start; }
  .map-pane { position:sticky; top:1rem; }
  .map-canvas.is-enhanced { min-height:22rem; }
}
@media (min-width:64rem) {
  .brand img { width:20rem; }
  .footer-brand img { width:20.25rem; }
  .env-orientation { height:25rem; }
  .journey-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .guide-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .map-directory-layout { grid-template-columns:minmax(0,1.5fr) minmax(20rem,1fr); }
  .map-canvas.is-enhanced { min-height:32rem; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
}
