:root {
  --paper: #f4efe5;
  --paper-deep: #e8decf;
  --ink: #18251e;
  --ink-muted: #526057;
  --brick: #ae402d;
  --brick-dark: #812d23;
  --sun: #e4a82c;
  --line: rgba(24, 37, 30, 0.2);
  --serif: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  --sans: Avenir Next, Avenir, Inter, Helvetica Neue, Helvetica, Arial, sans-serif;
  --shadow: 0 20px 50px rgba(59, 44, 24, 0.13);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); }
a { color: inherit; text-underline-offset: 0.18em; }
button { font: inherit; }

.skip-link { position: fixed; z-index: 20; left: 1rem; top: -5rem; padding: .75rem 1rem; background: var(--ink); color: var(--paper); transition: top .2s; }
.skip-link:focus { top: 1rem; }
.site-header { position: sticky; z-index: 10; top: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; min-height: 78px; padding: 0 5.5vw; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--paper) 91%, transparent); backdrop-filter: blur(16px); }
.wordmark, .footer-brand { font-family: var(--serif); font-size: 1.55rem; font-weight: 800; letter-spacing: -.08em; text-decoration: none; }
.wordmark span, .footer-brand span { color: var(--brick); font-size: .72em; margin-left: .07em; letter-spacing: -.04em; }
.site-header nav { display: flex; gap: clamp(1rem, 3vw, 2.75rem); font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; }
.site-header nav a { text-decoration: none; }
.site-header nav a:hover, .header-action:hover { color: var(--brick); }
.header-action { justify-self: end; color: var(--brick); font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }

.hero { display: grid; grid-template-columns: minmax(280px, .86fr) minmax(420px, 1.14fr); align-items: stretch; min-height: 0; border-bottom: 1px solid var(--line); }
.hero-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(4rem, 7vw, 6rem) clamp(5vw, 8vw, 9rem); }
.eyebrow { display: flex; align-items: center; gap: .55rem; margin: 0 0 1.25rem; color: var(--brick); font-size: .67rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.eyebrow span { display: inline-block; width: 1.35rem; height: 1px; background: currentColor; }
h1, h2 { margin: 0; font-family: var(--serif); font-size: clamp(3.8rem, 7vw, 7.25rem); font-weight: 500; letter-spacing: -.078em; line-height: .84; }
h1 em, h2 em { color: var(--brick); font-weight: 400; }
.hero-intro { max-width: 34rem; margin: 2.3rem 0 2rem; color: var(--ink-muted); font-family: var(--serif); font-size: clamp(1.08rem, 1.5vw, 1.35rem); line-height: 1.45; }
.trip-stats { display: flex; gap: 0; max-width: 32rem; margin: 0 0 2.4rem; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.trip-stats div { flex: 1; padding: 1rem .7rem 1rem 0; border-right: 1px solid var(--line); }
.trip-stats div + div { padding-left: .7rem; }
.trip-stats div:last-child { border: 0; }
.trip-stats dt { color: var(--ink-muted); font-size: .58rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.trip-stats dd { margin: .22rem 0 0; font-family: var(--serif); font-size: 1.2rem; font-weight: 700; }
.ink-button { align-self: flex-start; display: inline-flex; gap: 1.2rem; align-items: center; padding: 1rem 1.25rem; background: var(--ink); color: var(--paper); font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-decoration: none; text-transform: uppercase; transition: transform .2s, background .2s; }
.ink-button:hover { background: var(--brick); transform: translateY(-2px); }
.ink-button span { color: var(--sun); font-size: 1.25rem; }

.hero-map { position: relative; display: grid; place-items: center; align-self: center; height: 300px; min-height: 0; margin: 2rem 3vw 2rem 0; overflow: hidden; padding: 1.25rem; background-color: var(--paper-deep); background-image: radial-gradient(rgba(24,37,30,.16) .8px, transparent .8px); background-size: 10px 10px; }
.hero-map::after { position: absolute; inset: 1.5rem; border: 1px solid rgba(24,37,30,.23); content: ''; pointer-events: none; }
#route-map { width: min(100%, 680px); position: relative; z-index: 1; color: var(--ink); }
.geo-map-shell { width: min(100%, 680px); height: 260px; overflow: hidden; border: 2px solid var(--ink); background: #d4ded8; box-shadow: 8px 8px 0 rgba(24,37,30,.13); }
#geo-map { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; background: transparent; }
.geo-map-shell { position: relative; }
#geo-map-svg { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; background: #d7e0dc; }
.geo-map-shell.map-local #geo-map { display: none; }
.geo-map-shell.map-leaflet #geo-map-svg { opacity: .18; }
.map-status { position: absolute; z-index: 4; top: .65rem; left: .7rem; max-width: 18rem; padding: .35rem .5rem; background: rgba(244,239,229,.9); color: var(--ink-muted); font-size: .57rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.local-map-grid { fill: none; stroke: rgba(24,37,30,.16); stroke-width: 1; stroke-dasharray: 3 8; }
.local-map-sea { fill: #c4d7d2; }
.local-map-route { fill: none; stroke: var(--brick); stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 2 16; }
.local-map-route--booking { fill: none; stroke: var(--sun); stroke-width: 5; stroke-dasharray: 2 9; }
.local-map-point { fill: var(--paper); stroke: var(--brick); stroke-width: 5; }
.local-map-point--booking { fill: var(--sun); stroke: var(--ink); stroke-width: 4; }
.local-map-number { fill: var(--brick); font-family: var(--sans); font-size: 17px; font-weight: 800; text-anchor: middle; dominant-baseline: middle; }
.local-map-label { fill: var(--ink); font-family: var(--sans); font-size: 19px; font-weight: 800; letter-spacing: .3px; }
.local-map-coord { fill: var(--ink-muted); font-family: var(--sans); font-size: 13px; letter-spacing: 1.1px; text-transform: uppercase; }
.leaflet-container { z-index: 1; font-family: var(--sans); background: #d7e0dc; }
.leaflet-control-attribution { font-size: 9px; }
.leaflet-control-scale-line { border-color: var(--ink); color: var(--ink); background: rgba(244,239,229,.8); font-size: 9px; }
.leaflet-tooltip { border: 1px solid var(--ink); border-radius: 0; box-shadow: 4px 4px 0 rgba(24,37,30,.16); color: var(--ink); font-family: var(--sans); font-size: 12px; }
.leaflet-tooltip strong { color: var(--brick); font-family: var(--serif); font-size: 15px; letter-spacing: -.03em; }
.map-attribution { position: absolute; z-index: 3; right: 2.6rem; bottom: 2.3rem; max-width: 26rem; margin: 0; color: var(--ink-muted); font-size: .54rem; font-weight: 700; letter-spacing: .04em; text-align: right; text-transform: uppercase; }
.map-land { fill: #dfd0b8; stroke: var(--ink); stroke-width: 2; }
.map-topo { fill: none; stroke: #ad9679; stroke-width: 1.1; opacity: .8; }
.map-topo--two { transform: translateY(8px); }
.map-sea { fill: none; stroke: #5a8583; stroke-width: 2.4; opacity: .8; }
.map-region { fill: var(--ink); font-family: var(--sans); font-size: 19px; font-weight: 800; letter-spacing: 5px; opacity: .64; }
.map-region--sea { fill: #3f6f70; font-size: 15px; }
.map-region--faint { opacity: .28; }
.route-line { fill: none; stroke: var(--brick); stroke-width: 5; stroke-dasharray: 2 12; stroke-linecap: round; }
.route-line--legend { stroke-width: 3; }
.map-stop circle { fill: var(--paper); stroke: var(--brick); stroke-width: 4; }
.map-stop text { fill: var(--ink); font-family: var(--sans); font-size: 15px; font-weight: 800; letter-spacing: .5px; }
.map-stop .number { fill: var(--brick); font-size: 10px; letter-spacing: 0; }
.map-legend text { fill: var(--ink-muted); font-family: var(--sans); font-size: 13px; letter-spacing: 1.5px; text-transform: uppercase; }
.map-corner { position: absolute; z-index: 2; color: var(--ink-muted); font-size: .57rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.map-corner--top { top: 2.3rem; right: 2.6rem; }.map-corner--bottom { bottom: 2.3rem; left: 2.6rem; }

.route-strip { display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding: 1.15rem 5.5vw; background: var(--brick); color: #fff5e9; font-size: .62rem; font-weight: 700; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; }
.route-strip p { margin: 0; }.route-strip span { color: var(--sun); }

.timeline-section { padding: clamp(5rem, 9vw, 9rem) 5.5vw; overflow: hidden; }.section-heading { max-width: 44rem; }.section-heading h2 { font-size: clamp(3rem, 5.6vw, 5.8rem); }.timeline-scroll { display: grid; grid-template-columns: repeat(9, minmax(160px, 1fr)); gap: 0; min-width: 1040px; margin-top: 4.8rem; border-top: 1px solid var(--ink); }
.timeline-item { position: relative; display: flex; min-height: 195px; flex-direction: column; padding: 1.4rem 1.05rem 1rem 0; border-right: 1px solid var(--line); color: inherit; text-decoration: none; }.timeline-item + .timeline-item { padding-left: 1.05rem; }.timeline-item::before { position: absolute; top: -6px; left: -1px; width: 11px; height: 11px; border: 2px solid var(--brick); border-radius: 50%; background: var(--paper); content: ''; }.timeline-item + .timeline-item::before { left: 1rem; }
.timeline-item:last-child { border-right: 0; }.timeline-date { color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.timeline-item h3 { margin: .5rem 0; font-family: var(--serif); font-size: 1.65rem; letter-spacing: -.06em; line-height: .9; }.timeline-item p { margin: auto 0 0; color: var(--ink-muted); font-size: .66rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }.timeline-item:hover h3 { color: var(--brick); }

.journey-planner { padding: clamp(5rem, 9vw, 9rem) 5.5vw; background: var(--paper-deep); }
.planner-heading { display: grid; grid-template-columns: .8fr 1.2fr; gap: 7vw; align-items: end; }
.planner-lead { max-width: 34rem; margin: 0; color: var(--ink-muted); font-family: var(--serif); font-size: clamp(1.3rem, 2.3vw, 2.1rem); line-height: 1.15; }
.car-window { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1.2rem; align-items: center; margin-top: 3rem; padding: 1.2rem 1.4rem; background: var(--ink); color: var(--paper); }
.car-window > div { display: grid; gap: .3rem; }
.car-window strong { font-family: var(--serif); font-size: 1.25rem; }
.car-window small { color: #c4d0c6; font-size: .73rem; }
.car-arrow { color: var(--sun); font-size: 1.8rem; }
.planner-label, .journey-option-kicker { display: block; color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.car-window .planner-label { color: var(--sun); }
.planner-summary { display: flex; justify-content: space-between; gap: 2rem; align-items: end; margin-top: 1px; padding: 1.25rem 1.4rem; background: #d8e1d7; }
.planner-summary-main { display: grid; gap: .4rem; }
.planner-summary strong { font-family: var(--serif); font-size: 1.5rem; letter-spacing: -.04em; }
.planner-summary p { margin: 0; color: var(--ink-muted); font-size: .8rem; }
.journey-program { margin-top: 3rem; border-top: 1px solid var(--ink); }
.journey-day { padding: 2rem 0 2.5rem; border-bottom: 1px solid var(--line); scroll-margin-top: 100px; }
.journey-day-header { display: grid; grid-template-columns: .85fr 1.15fr; gap: 3rem; align-items: start; }
.journey-date { margin: 0 0 .35rem; color: var(--brick); font-size: .63rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.journey-day h3 { margin: 0; font-family: var(--serif); font-size: clamp(1.8rem, 3vw, 3.3rem); letter-spacing: -.06em; line-height: .95; }
.journey-base { margin: .7rem 0 0; color: var(--ink-muted); font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.journey-fixed { margin: 0; padding-left: 1rem; border-left: 3px solid var(--brick); color: var(--ink-muted); font-size: .85rem; line-height: 1.5; }
.journey-selected { display: grid; gap: .45rem; margin-top: 1.5rem; padding: 1.2rem 1.3rem; background: var(--paper); border: 1px solid var(--line); }
.journey-selected strong { font-family: var(--serif); font-size: 1.4rem; letter-spacing: -.04em; }
.journey-selected p { margin: 0; color: var(--ink-muted); font-size: .82rem; line-height: 1.45; }
.journey-selected ul { display: flex; flex-wrap: wrap; gap: .45rem .8rem; margin: .3rem 0 0; padding: 0; list-style: none; }
.journey-selected li { padding: .3rem .5rem; border: 1px solid rgba(24,37,30,.25); color: var(--ink); font-size: .62rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.route-sequence { display: grid; gap: .35rem; margin: .55rem 0 .3rem; }
.route-step { display: grid; grid-template-columns: 1.45rem 1fr; gap: .6rem; align-items: start; padding: .48rem .55rem; border-left: 3px solid var(--brick); background: var(--paper-deep); }
.route-step-index { display: grid; place-items: center; width: 1.2rem; height: 1.2rem; border: 1px solid var(--brick); border-radius: 50%; color: var(--brick); font-size: .56rem; font-weight: 800; }
.route-step-kind { display: block; margin-bottom: .08rem; color: var(--brick); font-size: .56rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.route-step-link { color: var(--ink); font-family: var(--serif); font-size: 1rem; letter-spacing: -.02em; text-decoration: none; }
.route-step-link:hover, .place-title-link:hover { color: var(--brick); }
.place-title-link { color: inherit; text-decoration: none; }
.journey-option-copy strong .journey-option-title-link { display: inline; margin-top: 0; color: inherit; font-family: inherit; font-size: inherit; letter-spacing: inherit; text-decoration: none; }
.journey-option-copy strong .journey-option-title-link:hover { color: var(--brick); }
.journey-option.is-selected .journey-option-copy strong .journey-option-title-link:hover { color: var(--sun); }
.journey-detail { max-width: 55rem; color: var(--ink) !important; font-family: var(--serif); font-size: 1rem !important; }
.journey-route-map-wrap { margin-top: .65rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.journey-route-map-label { margin: 0 0 .45rem; color: var(--brick) !important; font-size: .58rem !important; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.journey-route-map { width: 100%; height: auto; min-height: 128px; overflow: hidden; border: 1px solid rgba(24,37,30,.26); background: #dbe9ec; }
.route-mini-paper { fill: #e5e8df; }
.route-mini-sea { fill: #d9e9ed; opacity: .9; }
.route-mini-land { fill: #d5dfd4; stroke: #8d9d8e; stroke-width: 1.2; stroke-linejoin: round; }
.route-mini-grid { fill: none; stroke: rgba(24,37,30,.15); stroke-width: 1; stroke-dasharray: 2 6; }
.route-mini-road { fill: none; stroke: #9ca99e; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; opacity: .82; }
.route-mini-road-label { fill: #6c7c70; font-family: var(--sans); font-size: 7px; font-weight: 800; letter-spacing: .08em; paint-order: stroke; stroke: #e5e8df; stroke-width: 3px; text-anchor: middle; }
.route-mini-context circle { fill: var(--ink); opacity: .58; }
.route-mini-context text { fill: var(--ink-muted); font-family: var(--sans); font-size: 6.5px; font-weight: 700; letter-spacing: .02em; paint-order: stroke; stroke: var(--paper); stroke-width: 2.5px; text-anchor: middle; }
.route-mini-stop, .route-mini-context, .route-mini-road-label { cursor: pointer; text-decoration: none; }
.route-mini-line-halo { fill: none; stroke: var(--paper); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; opacity: .88; }
.route-mini-line { fill: none; stroke: var(--brick); stroke-width: 3.8; stroke-linecap: round; stroke-linejoin: round; }
.route-mini-stop circle { fill: var(--paper); stroke: var(--brick); stroke-width: 2.4; }
.route-mini-number { fill: var(--brick); font-family: var(--sans); font-size: 7px; font-weight: 800; text-anchor: middle; dominant-baseline: middle; }
.route-mini-label { fill: var(--ink); font-family: var(--sans); font-size: 7.5px; font-weight: 800; paint-order: stroke; stroke: var(--paper); stroke-width: 3.5px; stroke-linejoin: round; }
.route-mini-ui { fill: var(--ink); font-family: var(--sans); font-size: 7px; font-weight: 800; letter-spacing: .08em; }
.route-mini-north { fill: none; stroke: var(--ink); stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.route-mini-scale { stroke: var(--ink); stroke-width: 2; }
.route-mini-scale-text { font-size: 7px; font-weight: 700; letter-spacing: .02em; }
.journey-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1px; margin: 1.3rem 0 0; padding: 0; border: 1px solid var(--line); background: var(--line); }
.journey-options legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.journey-option { display: block; min-height: 190px; padding: 1rem; background: var(--paper); cursor: pointer; }
.journey-option input { position: absolute; opacity: 0; }
.journey-option-copy { display: grid; gap: .35rem; height: 100%; }
.journey-option-copy strong { font-family: var(--serif); font-size: 1.15rem; letter-spacing: -.03em; }
.journey-option-copy small { color: var(--ink-muted); font-size: .68rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.journey-option-copy em { color: var(--ink-muted); font-size: .78rem; font-style: normal; line-height: 1.4; }
.journey-option-copy a { margin-top: auto; color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .07em; text-decoration: none; text-transform: uppercase; }
.journey-option.is-recommended { border-top: 3px solid var(--brick); }
.journey-option.is-selected { background: var(--ink); color: var(--paper); }
.journey-option.is-selected .journey-option-kicker, .journey-option.is-selected .journey-option-copy small, .journey-option.is-selected .journey-option-copy em { color: #c4d0c6; }
.journey-option.is-selected .journey-option-copy a { color: var(--sun); }

.editorial-note { display: grid; grid-template-columns: .22fr 1fr .55fr; gap: 2rem; align-items: end; padding: clamp(3.8rem, 7vw, 7rem) 10vw; background: var(--ink); color: var(--paper); }.note-mark { align-self: start; margin: -.2em 0 0; color: var(--sun); font-family: var(--serif); font-size: 7rem; line-height: .7; }.editorial-note > p:nth-child(2) { max-width: 44rem; margin: 0; font-family: var(--serif); font-size: clamp(1.6rem, 3.1vw, 3rem); letter-spacing: -.05em; line-height: 1.05; }.editorial-note span { color: #becab9; font-size: .65rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }

.stages-section { padding: 0 5.5vw; }.stage { display: grid; grid-template-columns: minmax(220px, .68fr) minmax(0, 1.36fr); gap: clamp(2rem, 5vw, 6rem); padding: clamp(5rem, 9vw, 8rem) 0; border-bottom: 1px solid var(--line); scroll-margin-top: 78px; }.stage:first-child { padding-top: 7rem; }.stage-meta { align-self: start; position: sticky; top: 110px; }.stage-index { display: flex; align-items: center; gap: 1rem; color: var(--brick); font-size: .63rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }.stage-index::after { width: 3rem; height: 1px; background: currentColor; content: ''; }.stage-title { margin: 1.15rem 0 1rem; font-family: var(--serif); font-size: clamp(3rem, 5vw, 5.5rem); letter-spacing: -.08em; line-height: .82; }.stage-region { margin: 0; color: var(--ink-muted); font-size: .64rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }.hotel-stamp { display: inline-flex; align-items: center; gap: .5rem; margin-top: 1.65rem; padding: .55rem .7rem; border: 1px solid var(--brick); color: var(--brick); font-size: .61rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; transform: rotate(-1.5deg); }.hotel-stamp svg { width: .9rem; height: .9rem; }
.stage-content { min-width: 0; }.stage-intro { max-width: 48rem; margin: 0 0 2.2rem; font-family: var(--serif); font-size: clamp(1.25rem, 2.25vw, 2rem); letter-spacing: -.037em; line-height: 1.23; }.stage-mini-map { display: grid; grid-template-columns: 1fr; gap: .65rem; align-items: stretch; min-height: 150px; padding: 1rem 1.25rem; border-left: 4px solid var(--brick); background: var(--paper-deep); }.stage-mini-map p { margin: 0; color: var(--ink-muted); font-size: .67rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.stage-mini-map .journey-route-map-wrap { margin-top: 0; padding-top: 0; border-top: 0; }.stage-mini-map .journey-route-map-label { display: none; }.stage-mini-map svg { width: 100%; height: auto; min-height: 128px; }.mini-route { fill: none; stroke: var(--brick); stroke-width: 3; stroke-dasharray: 2 7; stroke-linecap: round; }.mini-land { fill: none; stroke: var(--ink); stroke-width: 1.4; }.mini-dot { fill: var(--paper); stroke: var(--brick); stroke-width: 3; }
.booking-card { display: grid; grid-template-columns: 2.2rem 1fr; gap: .8rem; align-items: start; margin-top: 1.4rem; padding: 1.1rem 1.2rem; border: 1px solid var(--brick); background: #f7e7d7; box-shadow: 6px 6px 0 rgba(174,64,45,.12); }.booking-pin { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--brick); color: var(--sun); }.booking-pin svg { width: 1.1rem; height: 1.1rem; }.booking-kicker { margin: 0 0 .35rem; color: var(--brick); font-size: .59rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }.booking-card h4 { margin: 0 0 .15rem; font-family: var(--serif); font-size: 1.4rem; letter-spacing: -.045em; }.booking-card p:not(.booking-kicker) { margin: 0; color: var(--ink); font-size: .74rem; font-weight: 700; }.booking-card small { display: block; margin-top: .6rem; color: var(--ink-muted); font-size: .78rem; line-height: 1.45; }
.content-label { margin: 3rem 0 1rem; color: var(--brick); font-size: .63rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }.must-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }.must-item { min-height: 170px; padding: 1.2rem; background: var(--paper); }.must-icon { width: 1.4rem; height: 1.4rem; color: var(--brick); }.must-item h4 { margin: 1rem 0 .45rem; font-family: var(--serif); font-size: 1.25rem; letter-spacing: -.04em; }.must-item p { margin: 0; color: var(--ink-muted); font-size: .82rem; line-height: 1.48; }.suggestion-link { display: inline-block; margin-top: .9rem; color: var(--brick); font-size: .61rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }.suggestion-link:hover { color: var(--ink); }
.activity-list { margin: 0; border-top: 1px solid var(--line); }.activity { display: grid; grid-template-columns: 6.6rem 1fr; gap: 1rem; padding: 1.15rem 0; border-bottom: 1px solid var(--line); }.activity time { color: var(--brick); font-size: .61rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }.activity h4 { margin: 0 0 .35rem; font-family: var(--serif); font-size: 1.34rem; letter-spacing: -.04em; }.activity p { margin: 0; color: var(--ink-muted); font-size: .89rem; line-height: 1.5; }.activity .suggestion-link { margin-top: .55rem; }
.stage-bottom { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-top: 2.2rem; background: var(--line); border: 1px solid var(--line); }.detour, .road-note { padding: 1.3rem; background: var(--paper-deep); }.stage-bottom h4 { display: flex; gap: .4rem; align-items: center; margin: 0 0 .7rem; color: var(--brick); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; }.stage-bottom h4 svg { width: 1rem; height: 1rem; }.stage-bottom p { margin: 0; color: var(--ink-muted); font-size: .82rem; line-height: 1.48; }.detour strong { display: block; margin-bottom: .3rem; color: var(--ink); font-family: var(--serif); font-size: 1.25rem; letter-spacing: -.04em; }.detour > .suggestion-link { margin-top: .5rem; }.road-note { background: #e5e8df; }.road-note h4 { color: var(--ink); }.food-row { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: 1rem; }.food-row span, .food-row a { padding: .33rem .52rem; border: 1px solid rgba(24,37,30,.35); color: inherit; font-size: .6rem; font-weight: 700; letter-spacing: .07em; text-decoration: none; text-transform: uppercase; }.food-row a:hover { border-color: var(--brick); color: var(--brick); }.detour-stops { display: grid; gap: .85rem; margin-top: 1.1rem; }.detour-stop { display: grid; grid-template-columns: 1.35rem 1fr; gap: .65rem; align-items: start; padding-top: .75rem; border-top: 1px solid rgba(24,37,30,.18); }.detour-stop-index { display: grid; place-items: center; width: 1.2rem; height: 1.2rem; border: 1px solid var(--brick); border-radius: 50%; color: var(--brick); font-size: .55rem; font-weight: 800; }.detour-stop h5, .food-item h5 { margin: 0 0 .25rem; color: var(--ink); font-family: var(--serif); font-size: 1rem; letter-spacing: -.03em; }.detour-stop p, .food-item p { margin: 0; color: var(--ink-muted); font-size: .75rem; line-height: 1.45; }.detour-stop a, .food-item a { display: inline-block; margin-top: .45rem; color: var(--brick); font-size: .58rem; font-weight: 800; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; }.food-list { display: grid; gap: .9rem; margin-top: 1.1rem; }.food-item { padding-top: .75rem; border-top: 1px solid rgba(24,37,30,.18); }

.basics { display: grid; grid-template-columns: .8fr 1.2fr; gap: 7vw; padding: clamp(5rem, 9vw, 8.5rem) 5.5vw; background: var(--brick); color: #fff8eb; }.section-heading--light .eyebrow { color: var(--sun); }.section-heading--light h2 em { color: var(--sun); }.practical-grid { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid rgba(255,255,255,.35); border-left: 1px solid rgba(255,255,255,.35); }.practical-item { min-height: 190px; padding: 1.5rem; border-right: 1px solid rgba(255,255,255,.35); border-bottom: 1px solid rgba(255,255,255,.35); }.practical-item svg { width: 1.85rem; height: 1.85rem; color: var(--sun); }.practical-item h3 { margin: 1.5rem 0 .45rem; font-family: var(--serif); font-size: 1.55rem; letter-spacing: -.05em; }.practical-item p { margin: 0; color: rgba(255,255,255,.82); font-size: .86rem; line-height: 1.5; }
.practical-guide { display: grid; grid-template-columns: .72fr 1.28fr; gap: 7vw; padding: clamp(5rem, 9vw, 8.5rem) 5.5vw; background: #e6dfd3; }.guide-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; align-self: start; background: var(--line); border: 1px solid var(--line); }.guide-card { min-height: 260px; padding: 1.35rem; background: var(--paper); }.guide-card-kicker { margin: 0 0 .8rem; color: var(--brick); font-size: .66rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.guide-card > p:not(.guide-card-kicker) { margin: 0; color: var(--ink-muted); font-size: .82rem; line-height: 1.55; }.guide-card a, .safety-card > a { display: inline-block; margin-top: 1.2rem; color: var(--ink); font-size: .63rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }.safety-card { grid-column: 1 / -1; display: grid; grid-template-columns: .62fr 1.38fr; gap: 2rem; margin-top: 1.3rem; padding: 1.4rem; border-top: 3px solid var(--ink); background: #d8e1d7; }.safety-card p { margin: 0; }.safety-lead { color: var(--ink-muted); font-family: var(--serif); font-size: 1.2rem; line-height: 1.18; }.safety-card ul { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem 1.5rem; margin: 0; padding: 0; list-style: none; }.safety-card li { display: grid; grid-template-columns: 1.15rem 1fr; gap: .5rem; color: var(--ink-muted); font-size: .78rem; line-height: 1.45; }.safety-card li svg { width: 1rem; height: 1rem; color: var(--brick); }.safety-card > a { grid-column: 2; margin-top: -.4rem; }.caution { display: grid; grid-template-columns: 1.4rem 1fr; gap: .6rem; align-items: start; margin: 1rem 0 0; padding: .9rem 1rem; border-left: 3px solid var(--sun); background: #f0e8d9; }.caution svg { width: 1.1rem; height: 1.1rem; color: var(--brick); }.caution p { margin: 0; color: var(--ink-muted); font-size: .78rem; line-height: 1.45; }

.checklist-section { display: grid; grid-template-columns: .8fr 1.2fr; gap: 7vw; align-items: start; padding: clamp(5rem, 9vw, 8.5rem) 13vw; }.checklist-section h2 { font-size: clamp(3.2rem, 5vw, 5rem); }.checklist-section > div > p:not(.eyebrow) { max-width: 22rem; margin: 1.5rem 0; color: var(--ink-muted); font-family: var(--serif); font-size: 1.08rem; line-height: 1.4; }.text-button { padding: 0; border: 0; border-bottom: 1px solid var(--brick); background: none; color: var(--brick); cursor: pointer; font-size: .65rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.checklist-card { padding: .75rem 1.4rem; background: var(--paper-deep); box-shadow: var(--shadow); }.check-item { display: flex; gap: .8rem; align-items: center; min-height: 58px; border-bottom: 1px solid rgba(24,37,30,.18); cursor: pointer; }.check-item:last-child { border-bottom: 0; }.check-item input { width: 1.15rem; height: 1.15rem; accent-color: var(--brick); }.check-item span { font-family: var(--serif); font-size: 1.15rem; letter-spacing: -.025em; }.check-item input:checked + span { color: var(--ink-muted); text-decoration: line-through; }

.site-footer { display: grid; grid-template-columns: .5fr 1.25fr .55fr; gap: 4vw; padding: 3.8rem 5.5vw; background: #d9cfbe; }.footer-label { margin: 0 0 .6rem; color: var(--brick); font-size: .62rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }.site-footer p:not(.footer-label):not(.footer-small) { max-width: 46rem; margin: 0; color: var(--ink-muted); font-size: .78rem; line-height: 1.55; }.source-list { display: flex; flex-wrap: wrap; gap: .35rem 1rem; margin: 1rem 0 0; padding: 0; list-style: none; }.source-list a { color: var(--ink); font-size: .65rem; font-weight: 700; }.footer-small { justify-self: end; margin: 0; color: var(--ink-muted); font-size: .65rem; font-weight: 700; letter-spacing: .1em; line-height: 1.5; text-align: right; text-transform: uppercase; }

.check-item label { display: flex; flex: 1; gap: .8rem; align-items: center; min-height: 58px; cursor: pointer; }.check-item input { flex: 0 0 auto; }.checklist-link { flex: 0 0 auto; color: var(--brick); font-size: .59rem; font-weight: 800; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; }.checklist-link:hover { color: var(--ink); }

svg { display: block; }.icon { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 900px) { .site-header { padding: 0 1.5rem; grid-template-columns: 1fr auto; }.site-header nav { display: none; }.hero { grid-template-columns: 1fr; min-height: 0; }.hero-copy { min-height: 0; padding: 4.5rem 8vw 3rem; }.hero-map { align-self: stretch; height: 300px; min-height: 0; margin: 0; }.route-strip { padding: 1rem 1.5rem; }.route-strip p:last-child { display: none; }.timeline-section { padding: 5rem 8vw; }.timeline-scroll { overflow: visible; }.planner-heading, .journey-day-header { grid-template-columns: 1fr; gap: 1.5rem; }.journey-planner { padding: 5rem 8vw; }.planner-summary { align-items: flex-start; flex-direction: column; }.editorial-note { grid-template-columns: .15fr 1fr; padding: 4rem 8vw; }.editorial-note span { grid-column: 2; }.stage { grid-template-columns: 1fr; gap: 2.5rem; }.stage-meta { position: static; }.stage-title { font-size: 4rem; }.basics, .practical-guide, .checklist-section { grid-template-columns: 1fr; gap: 3rem; }.practical-guide { padding: 5rem 8vw; }.safety-card { grid-template-columns: 1fr; }.safety-card > a { grid-column: 1; }.checklist-section { padding: 5rem 8vw; }.site-footer { grid-template-columns: 1fr 2fr; }.footer-small { display: none; } }
@media (max-width: 600px) { .site-header { min-height: 63px; }.header-action { font-size: .6rem; }.hero-copy { min-height: 0; padding: 4rem 8vw 3rem; }.hero-map { height: 250px; min-height: 0; padding: 1rem .2rem; }.hero-map::after { inset: .8rem; }.geo-map-shell { height: 220px; min-height: 0; }.map-attribution { right: 1.4rem; bottom: 1.35rem; max-width: 15rem; font-size: .47rem; }.map-corner { display: none; }.route-strip { justify-content: center; text-align: center; }.route-strip span { display: none; }.timeline-section { padding-right: 0; }.timeline-scroll { overflow-x: auto; padding-right: 8vw; scrollbar-width: none; }.timeline-scroll::-webkit-scrollbar { display: none; }.car-window { grid-template-columns: 1fr; }.car-arrow { justify-self: start; transform: rotate(90deg); }.journey-options { grid-template-columns: 1fr; }.planner-summary strong { font-size: 1.2rem; }.editorial-note { gap: 1rem; }.note-mark { font-size: 5rem; }.must-grid { grid-template-columns: 1fr; }.must-item { min-height: 0; }.activity { grid-template-columns: 1fr; gap: .35rem; }.stage-bottom { grid-template-columns: 1fr; }.basics { padding: 4.5rem 8vw; }.practical-grid, .guide-cards { grid-template-columns: 1fr; }.practical-item { min-height: 0; }.safety-card ul { grid-template-columns: 1fr; }.site-footer { grid-template-columns: 1fr; padding: 3rem 8vw; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; }.ink-button { transition: none; } }

.climate-card { display: grid; gap: 1rem; margin-top: 1.4rem; padding: 1.2rem 1.25rem; border: 1px solid var(--line); border-top: 3px solid var(--sun); background: #f0e8d9; }.climate-card-head { display: grid; grid-template-columns: 2.2rem 1fr; gap: .75rem; align-items: start; }.climate-icon { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--sun); color: var(--ink); }.climate-icon svg { width: 1.15rem; height: 1.15rem; }.climate-card .content-label { margin: 0 0 .35rem; }.climate-card h4 { margin: 0; color: var(--ink); font-family: var(--serif); font-size: 1.25rem; letter-spacing: -.04em; line-height: 1.05; }.climate-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; border: 1px solid rgba(24,37,30,.18); background: rgba(24,37,30,.18); }.climate-metrics span { display: grid; gap: .2rem; padding: .7rem .75rem; background: var(--paper); }.climate-metrics strong { color: var(--brick); font-family: var(--serif); font-size: 1.1rem; letter-spacing: -.03em; }.climate-metrics small { color: var(--ink-muted); font-size: .56rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }.climate-note, .climate-clothing { margin: 0; color: var(--ink-muted); font-size: .8rem; line-height: 1.48; }.climate-clothing { padding-top: .8rem; border-top: 1px solid rgba(24,37,30,.18); }.climate-clothing strong { color: var(--ink); }.climate-source { justify-self: start; color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .07em; text-decoration: none; text-transform: uppercase; }.climate-source:hover { color: var(--ink); }
@media (max-width: 600px) { .climate-metrics { grid-template-columns: 1fr 1fr; }.climate-metrics span:last-child { grid-column: 1 / -1; } }

.climate-guide { padding: clamp(5rem, 9vw, 8.5rem) 5.5vw; background: #dbe5de; }.climate-guide-heading { display: grid; grid-template-columns: .72fr 1.28fr; gap: 7vw; align-items: end; }.climate-guide-lead { max-width: 44rem; }.climate-guide-lead p { margin: 0; color: var(--ink-muted); font-family: var(--serif); font-size: clamp(1.1rem, 1.7vw, 1.45rem); line-height: 1.35; }.climate-guide-lead p + p { margin-top: 1rem; color: var(--ink); font-family: var(--sans); font-size: .82rem; line-height: 1.5; }.climate-portal-link { display: inline-block; margin-top: 1.4rem; color: var(--brick); font-size: .65rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }.climate-forecast-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: 3rem; background: var(--line); border: 1px solid var(--line); }.climate-forecast-stop { display: grid; gap: .65rem; min-height: 215px; padding: 1.15rem; background: var(--paper); }.climate-forecast-stop > p { margin: 0; color: var(--brick); font-size: .59rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.climate-forecast-stop h3 { margin: 0; font-family: var(--serif); font-size: 1.5rem; letter-spacing: -.04em; }.climate-forecast-stop h3 a { text-decoration: none; }.climate-forecast-stop > span { color: var(--ink-muted); font-size: .76rem; line-height: 1.45; }.weather-link { justify-self: start; display: inline-flex; gap: .45rem; align-items: center; margin-top: auto; padding: .55rem .65rem; border: 1px solid var(--brick); color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; transition: background .2s, color .2s; }.weather-link:hover { background: var(--brick); color: var(--paper); }.weather-link svg { width: .85rem; height: .85rem; }.weather-note { margin: 0; color: var(--ink-muted); font-size: .72rem; line-height: 1.4; }.climate-card .weather-link { margin-top: -.25rem; }.climate-card .climate-source { margin-top: -.4rem; }

.packing-plan { padding: clamp(5rem, 9vw, 8.5rem) 5.5vw; background: #e7e0d3; }.packing-plan-heading { display: grid; grid-template-columns: .72fr 1.28fr; gap: 7vw; align-items: end; }.packing-lead { max-width: 44rem; }.packing-lead p { margin: 0; color: var(--ink-muted); font-family: var(--serif); font-size: clamp(1.1rem, 1.7vw, 1.45rem); line-height: 1.35; }.packing-lead p + p { margin-top: 1rem; padding-left: 1rem; border-left: 3px solid var(--sun); color: var(--ink); font-family: var(--sans); font-size: .82rem; line-height: 1.5; }.packing-categories { display: grid; grid-template-columns: repeat(auto-fit, minmax(235px, 1fr)); gap: 1px; margin-top: 3rem; background: var(--line); border: 1px solid var(--line); }.packing-category { position: relative; min-height: 315px; padding: 1.25rem; background: var(--paper); }.packing-index { color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .1em; }.packing-category h3 { max-width: 15rem; margin: 1rem 0 .55rem; font-family: var(--serif); font-size: 1.45rem; letter-spacing: -.04em; line-height: 1; }.packing-category > p { margin: 0; color: var(--ink-muted); font-size: .77rem; line-height: 1.45; }.packing-category ul { display: grid; gap: .55rem; margin: 1.1rem 0 0; padding: 0; list-style: none; }.packing-category li { display: grid; grid-template-columns: 1rem 1fr; gap: .45rem; color: var(--ink-muted); font-size: .73rem; line-height: 1.38; }.packing-category li svg { width: .9rem; height: .9rem; color: var(--brick); }.laundry-plan { display: grid; grid-template-columns: .65fr 1.35fr; gap: 2rem; margin-top: 3rem; padding: 1.4rem; border-top: 3px solid var(--ink); background: #d4ded8; }.laundry-plan-heading h3 { margin: 0; font-family: var(--serif); font-size: clamp(2rem, 3.5vw, 3.3rem); font-weight: 500; letter-spacing: -.065em; line-height: .87; }.laundry-plan-heading h3 em { color: var(--brick); font-weight: 400; }.laundry-stops { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; align-self: start; background: rgba(24,37,30,.18); border: 1px solid rgba(24,37,30,.18); }.laundry-stop { padding: 1.1rem; background: var(--paper); }.laundry-date { margin: 0; color: var(--brick); font-size: .59rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }.laundry-stop h4 { margin: .7rem 0 .45rem; font-family: var(--serif); font-size: 1.3rem; letter-spacing: -.04em; }.laundry-stop h4 a { text-decoration: none; }.laundry-hotel { display: flex; gap: .35rem; align-items: center; margin: 0 0 .75rem; color: var(--ink); font-size: .64rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }.laundry-hotel svg { width: .9rem; height: .9rem; color: var(--brick); }.laundry-stop > p:not(.laundry-date):not(.laundry-hotel):not(.laundry-backup) { margin: 0; color: var(--ink-muted); font-size: .77rem; line-height: 1.48; }.laundry-link { display: inline-block; margin-top: 1rem; color: var(--brick); font-size: .6rem; font-weight: 800; letter-spacing: .07em; text-decoration: none; text-transform: uppercase; }.laundry-backup { margin: .9rem 0 0; padding-top: .8rem; border-top: 1px solid var(--line); color: var(--ink-muted); font-size: .72rem; line-height: 1.42; }.laundry-backup strong { color: var(--ink); }

@media (max-width: 900px) { .climate-guide-heading, .packing-plan-heading, .laundry-plan { grid-template-columns: 1fr; gap: 2.5rem; }.climate-forecast-list { grid-template-columns: repeat(2, 1fr); }.laundry-plan { padding: 1.2rem; } }
@media (max-width: 600px) { .climate-guide, .packing-plan { padding: 4.5rem 8vw; }.climate-forecast-list, .laundry-stops { grid-template-columns: 1fr; }.packing-categories { grid-template-columns: 1fr; }.climate-forecast-stop { min-height: 0; }.packing-category { min-height: 0; } }
