:root {
  --sign: #0F5B3E;
  --sign-deep: #0A4430;
  --stone: #F2B705;
  --white: #FFFFFF;
  --ink: #22282B;
  --mist: #E9EEEC;
  --muted: #56615C;
  --signal: #C8102E;
  --measure: 66ch;
  font-family: "Overpass", system-ui, sans-serif;
  color: var(--ink);
  background: var(--white);
}
* { box-sizing: border-box; }
body { margin: 0; font-size: 1.0625rem; line-height: 1.6; }
a { color: var(--sign); text-underline-offset: 0.18em; }
a:focus-visible, button:focus-visible { outline: 3px solid var(--stone); outline-offset: 3px; border-radius: 4px; }
img, svg { display: block; max-width: 100%; }

.wrap { width: min(1120px, 100% - 32px); margin-inline: auto; }

/* Top bar reads like the top strip of a highway sign. */
.bar { background: var(--sign); color: var(--white); }
.bar .wrap { display: flex; align-items: center; justify-content: space-between; min-height: 64px; gap: 16px; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--white); text-decoration: none; font-weight: 800; font-size: 1.35rem; letter-spacing: -0.01em; }
.brand svg { width: 22px; height: 28px; }
.bar nav { display: flex; gap: 20px; font-size: 0.95rem; }
.bar nav a { color: var(--white); text-decoration: none; opacity: 0.88; }
.bar nav a:hover { opacity: 1; text-decoration: underline; }

/* Hero: the sign panel and the milestone. */
.hero { background: var(--sign); color: var(--white); padding: 56px 0 0; overflow: hidden; }
.hero .wrap { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 48px; align-items: end; }
.hero h1 { font-size: clamp(2.6rem, 6.2vw, 4.9rem); line-height: 0.98; letter-spacing: -0.025em; font-weight: 900; margin: 0 0 24px; max-width: 13ch; }
.hero p.lede { font-size: 1.25rem; line-height: 1.5; max-width: 40ch; margin: 0 0 32px; color: #DCEBE4; }
.hero .cta { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 56px; }
.btn { display: inline-flex; align-items: center; min-height: 52px; padding: 0 22px; border-radius: 10px; font-weight: 800; font-size: 1.05rem; text-decoration: none; border: 2px solid var(--white); }
.btn.primary { background: var(--stone); border-color: var(--stone); color: var(--ink); }
.btn.ghost { color: var(--white); }
.btn[aria-disabled="true"] { cursor: default; }

.milestone { justify-self: center; width: min(320px, 80vw); }
.milestone text { font-family: "Overpass", sans-serif; }

/* The road: before, on the road, after. A real sequence, so it gets a line and stops. */
.road { padding: 88px 0 40px; }
.road h2, .section h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1.1; letter-spacing: -0.015em; margin: 0 0 12px; font-weight: 900; max-width: 22ch; }
.road > .wrap > p { color: var(--muted); max-width: 52ch; margin: 0 0 56px; }
.stops { list-style: none; margin: 0; padding: 0 0 0 44px; position: relative; max-width: 780px; }
.stops::before { content: ""; position: absolute; left: 13px; top: 6px; bottom: 6px; width: 6px; border-radius: 3px; background: repeating-linear-gradient(var(--ink) 0 22px, transparent 22px 34px); opacity: 0.85; }
.stops li { position: relative; padding-bottom: 48px; }
.stops li::before { content: ""; position: absolute; left: -40px; top: 4px; width: 26px; height: 26px; border-radius: 50%; background: var(--stone); border: 5px solid var(--ink); }
.stops h3 { margin: 0 0 6px; font-size: 1.45rem; font-weight: 800; }
.stops .when { display: block; font-size: 0.95rem; color: var(--sign); font-weight: 700; margin-bottom: 4px; }
.stops p { margin: 0; max-width: 58ch; }

.section { padding: 64px 0; }
.section.mist { background: var(--mist); }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
.split p { max-width: 52ch; }
.price { border-left: 6px solid var(--stone); padding: 4px 0 4px 20px; margin: 0 0 20px; }
.price strong { display: block; font-size: 1.3rem; }
.safety { border-left: 6px solid var(--signal); padding: 4px 0 4px 20px; }

footer { background: var(--ink); color: #C9D2CE; padding: 40px 0 56px; font-size: 0.95rem; }
footer .wrap { display: flex; flex-wrap: wrap; gap: 16px 40px; justify-content: space-between; }
footer a { color: var(--white); }
footer nav { display: flex; flex-wrap: wrap; gap: 8px 22px; }

/* Long-form legal and help pages. */
.doc { padding: 56px 0 80px; }
.doc .wrap > * { max-width: var(--measure); }
.doc h1 { font-size: clamp(2rem, 4vw, 2.8rem); line-height: 1.1; margin: 0 0 8px; font-weight: 900; letter-spacing: -0.015em; }
.doc .updated { color: var(--muted); margin: 0 0 40px; }
.doc h2 { font-size: 1.4rem; margin: 40px 0 8px; font-weight: 800; }
.doc h3 { font-size: 1.1rem; margin: 24px 0 4px; }
.doc li { margin-bottom: 6px; }
.doc table { border-collapse: collapse; width: 100%; max-width: 760px; font-size: 0.97rem; }
.doc th, .doc td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid #CBD5D0; }
.doc th { background: var(--mist); }
.note { background: var(--mist); border-left: 6px solid var(--sign); padding: 14px 18px; }

.join-card { background: var(--sign); color: var(--white); border-radius: 18px; padding: 32px; max-width: 520px; }
.join-card .code { font-size: clamp(2.4rem, 9vw, 3.6rem); font-weight: 900; letter-spacing: 0.12em; margin: 8px 0 20px; }

@media (max-width: 820px) {
  .hero .wrap, .split { grid-template-columns: 1fr; }
  .hero .wrap { gap: 0; }
  .hero .cta { margin-bottom: 32px; }
  .milestone { width: 170px; justify-self: start; }
  .bar nav { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}

/* The convoy: three riders and the sweep travel the lane once when the page opens. */
.convoy { width: 100%; height: auto; margin-top: 8px; }
.rider { offset-path: path("M0 90 C 200 30, 380 110, 600 70 S 1000 20, 1200 60"); offset-distance: 0%; animation: ride 6s cubic-bezier(.35,.05,.25,1) 0.4s 1 forwards; }
.r1 { --end: 78%; }
.r2 { --end: 74%; }
.r3 { --end: 70%; }
.sweep { --end: 64%; }
@keyframes ride { to { offset-distance: var(--end); } }
@media (prefers-reduced-motion: reduce) {
  .r1 { offset-distance: 78%; } .r2 { offset-distance: 74%; } .r3 { offset-distance: 70%; } .sweep { offset-distance: 64%; }
}
