:root {
  color-scheme: light;
  --bg: #f4f0e7;
  --paper: #fffdf8;
  --ink: #18211c;
  --muted: #626a64;
  --line: #d9d4c9;
  --green: #0f3024;
  --green-2: #24493b;
  --rust: #b95234;
  --rust-deep: #9d3f26;
  --sand: #e7c79c;
  --sage: #c3d1ca;
  --shadow: 0 18px 50px rgba(15, 48, 36, .11);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif; background: var(--bg); color: var(--ink); }
body { margin: 0; line-height: 1.58; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
main.wrap { flex: 1 0 auto; margin-block: 0; }
a { color: inherit; }
img { display: block; width: 100%; height: auto; }
picture.responsive-image { display: block; width: 100%; }
.home-hero__bg picture.responsive-image, .featured-walk__media picture.responsive-image { height: 100%; }
button, input { font: inherit; }
:focus-visible { outline: 3px solid var(--sand); outline-offset: 3px; }
.site-header { position: relative; z-index: 20; background: var(--green); color: #fff; }
.site-header__inner, .wrap { width: min(1180px, calc(100% - 40px)); margin: auto; }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; min-height: 72px; gap: 24px; }
.brand { display: inline-flex; align-items: center; gap: 10px; white-space: nowrap; font-family: Georgia, serif; font-size: 21px; font-weight: 700; text-decoration: none; }
.brand__mark { width: 34px; height: 34px; flex: 0 0 34px; object-fit: contain; }
.primary-nav { display: flex; align-items: center; gap: 24px; font-size: 14px; }
.primary-nav > a { color: rgba(255,255,255,.82); text-decoration: none; }
.primary-nav > a:hover { color: #fff; }
.lang-switch { position: relative; flex: 0 0 auto; }
.lang-switch__toggle { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 58px; min-height: 46px; padding: 0 17px; border: 1px solid rgba(255,255,255,.34); border-radius: 999px; color: #fff; font-size: 16px; transition: background .16s ease, color .16s ease, border-color .16s ease; font-weight: 700; letter-spacing: .05em; cursor: pointer; list-style: none; -webkit-user-select: none; user-select: none; }
.lang-switch__toggle::-webkit-details-marker { display: none; }
.lang-switch__toggle:hover, .lang-switch[open] .lang-switch__toggle { border-color: var(--sand); background: var(--sand); color: var(--green); }
.lang-switch__chevron { width: 12px; height: 8px; flex: 0 0 12px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: transform .16s ease; }
.lang-switch[open] .lang-switch__chevron { transform: rotate(180deg); }
.lang-switch__menu { position: absolute; right: 0; top: calc(100% + 10px); z-index: 30; min-width: 238px; margin: 0; padding: 9px; list-style: none; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); }
.lang-switch__item { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 12px 15px; border-radius: 12px; color: var(--ink); font-size: 17px; line-height: 1.3; text-decoration: none; white-space: nowrap; }
.lang-switch__code { color: var(--muted); font-size: 12px; font-weight: 700; letter-spacing: .1em; }
a.lang-switch__item:hover { background: var(--sage); }
.lang-switch__item[aria-current] { background: var(--sand); color: var(--green); font-weight: 700; }
.lang-switch__item[aria-current] .lang-switch__code { color: var(--rust-deep); }
.lang-slot { position: relative; display: inline-flex; align-items: center; }
.lang-hint { position: absolute; right: 0; top: calc(100% + 13px); z-index: 25; width: max-content; max-width: min(452px, 88vw); }
.lang-hint::before { content: ""; position: absolute; right: 22px; top: -7px; width: 13px; height: 13px; background: var(--paper); border-left: 1px solid var(--line); border-top: 1px solid var(--line); border-radius: 2px 0 0 0; transform: rotate(45deg); }
.lang-hint__row { position: relative; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px 13px; margin: 0; padding: 15px 44px 15px 17px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); color: var(--ink); font-size: 17px; line-height: 1.4; text-align: left; }
.lang-hint__globe { width: 23px; height: 23px; flex: 0 0 23px; fill: none; stroke: var(--green); stroke-width: 1.4; }
.lang-hint__text { min-width: 0; }
.lang-hint__go { display: inline-flex; align-items: center; min-height: 38px; padding: 0 16px; border-radius: 999px; background: var(--green); color: #fff; font-size: 15px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.lang-hint__go:hover { background: var(--green-2); }
.lang-hint__close { position: absolute; right: 7px; top: 7px; width: 29px; height: 29px; padding: 0; border: 0; border-radius: 9px; background: none; color: var(--muted); font-size: 20px; line-height: 1; cursor: pointer; }
.lang-hint__close:hover { background: var(--bg); color: var(--ink); }
.lang-switch[open] ~ .lang-hint { display: none; }
.site-header .nav-cta { min-height: 42px; padding: 0 17px; display: inline-flex; align-items: center; border-radius: 999px; background: var(--sand); color: var(--green); font-weight: 800; }
.site-header button.nav-cta { border: 0; cursor: pointer; }
.breadcrumbs { display: flex; gap: 8px; flex-wrap: wrap; color: var(--muted); font-size: 14px; margin: 24px 0; }
.hero { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(280px,.85fr); gap: 30px; align-items: center; margin: 32px 0 44px; }
.hero--text { grid-template-columns: 1fr; }
.guide-hero { grid-template-columns: minmax(330px,.8fr) minmax(520px,1.2fr); gap: clamp(34px,5vw,64px); margin-bottom: 56px; }
.guide-hero h1 { font-size: clamp(42px,5.2vw,68px); }
.guide-hero .hero-media { box-shadow: var(--shadow); }
.guide-hero .hero-media img { aspect-ratio: 3/2; object-fit: cover; }
.stop-hero { grid-template-columns: minmax(330px,.78fr) minmax(0,1.22fr); grid-template-areas: "copy media"; gap: clamp(38px,5vw,64px); align-items: center; margin: 38px 0 34px; }
.stop-hero.hero--text { grid-template-columns: minmax(0,760px); grid-template-areas: "copy"; }
.stop-hero__copy { grid-area: copy; min-width: 0; }
.stop-hero__heading { grid-area: heading; min-width: 0; }
.stop-hero__summary { grid-area: summary; min-width: 0; margin-top: 28px; }
.stop-hero h1 { max-width: 760px; margin-bottom: 0; font-size: clamp(48px,5.3vw,66px); text-wrap: balance; }
.stop-hero__summary .lead { margin: 0 0 16px; font-size: clamp(18px,1.75vw,21px); line-height: 1.5; }
.stop-hero__meta { display: flex; flex-wrap: wrap; gap: 9px; }
.stop-hero__meta .pill { max-width: 100%; }
.stop-hero .hero-media { grid-area: media; width: 100%; margin-top: 0; box-shadow: var(--shadow); }
.stop-hero .hero-media img { aspect-ratio: 3/2; object-fit: cover; }
.eyebrow { color: var(--rust-deep); font-size: 12px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.hero h1 { font-family: Georgia, serif; font-size: clamp(40px,7vw,76px); line-height: .98; letter-spacing: -.025em; margin: 12px 0 18px; }
.lead { font-size: clamp(18px,2.4vw,24px); color: #42483f; max-width: 760px; }
.hero-media, .card, .panel, .story { background: var(--paper); border: 1px solid var(--line); border-radius: 20px; overflow: hidden; }
.hero-media { margin: 0; }
.hero-media img { aspect-ratio: 3/2; object-fit: cover; }
.credit { padding: 8px 12px; color: var(--muted); font-size: 12px; }
.meta-row { display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0; }
.pill { display: inline-block; border: 1px solid var(--line); border-radius: 999px; padding: 6px 11px; background: var(--paper); font-size: 14px; }
.flag { display: inline-block; width: 21px; height: 21px; border-radius: 50%; vertical-align: -5px; box-shadow: 0 0 0 1px rgba(15,48,36,.12); }
.pill--country { display: inline-flex; align-items: center; gap: 8px; }
.pill--country .flag { vertical-align: baseline; box-shadow: 0 0 0 1px rgba(15,48,36,.1); }
.eyebrow--flag { display: inline-flex; align-items: center; gap: 9px; }
.eyebrow--flag .flag { width: 26px; height: 26px; vertical-align: baseline; }
.section { margin: 56px 0; }
.section h2, .home-section h2 { font-family: Georgia, serif; font-size: clamp(28px,4vw,44px); line-height: 1.08; letter-spacing: -.018em; margin: 0 0 18px; }
.grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.card { text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.card:hover { transform: translateY(-3px); box-shadow: 0 14px 35px rgba(15,48,36,.1); }
.card img { aspect-ratio: 16/10; object-fit: cover; }
.card-media--empty { aspect-ratio: 16/10; display: grid; place-items: center; background: linear-gradient(135deg,var(--green),#183227); }
.card-media--empty span { font-family: Georgia,serif; font-size: 52px; line-height: 1; color: var(--sand); }
.card__body { padding: 18px; }
.card h2, .card h3 { font-family: Georgia,serif; font-size: 24px; line-height: 1.12; margin: 0 0 9px; }
.muted { color: var(--muted); }
.panel, .story { padding: clamp(20px,4vw,38px); }
.story { max-width: 820px; }
.story p { font-size: 18px; margin: 0 0 1.15em; }
.route-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.route-list a { display: grid; grid-template-columns: 44px 1fr auto; gap: 14px; align-items: start; text-decoration: none; background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 16px; }
.route-number { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--green); color: #fff; font-weight: 800; }
.route-list h3 { margin: 0 0 4px; font-size: 18px; }
.guide-experience { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(410px,.88fr); grid-template-areas: "story map" "story plan"; gap: 28px; align-items: start; margin: 56px 0; }
.guide-experience--no-map { grid-template-areas: "story plan"; }
.guide-story { grid-area: story; width: 100%; max-width: none; margin: 0; }
.guide-map-panel { grid-area: map; }
.guide-plan { grid-area: plan; min-width: 0; }
.guide-plan h2 { font-family: Georgia,serif; font-size: clamp(28px,3.2vw,38px); line-height: 1.08; letter-spacing: -.018em; margin: 0 0 18px; }
.guide-plan .route-list { gap: 10px; }
.guide-plan .route-list a { grid-template-columns: 40px minmax(0,1fr) auto; gap: 11px; padding: 14px; }
.guide-plan .route-number { width: 34px; height: 34px; }
.guide-plan .route-list h3 { font-size: 16px; line-height: 1.25; }
.guide-plan .route-list .muted { display: block; font-size: 13px; line-height: 1.38; }
.guide-plan .route-list time { padding-top: 3px; white-space: nowrap; font-size: 13px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding: 0 20px; border: 0; border-radius: 999px; background: var(--green); color: #fff; font: inherit; font-weight: 800; text-decoration: none; cursor: pointer; transition: transform .16s ease, background .16s ease; }
.button:hover { transform: translateY(-1px); }
.button--primary { background: var(--rust); }
.button--primary:hover { background: var(--rust-deep); }
.button--secondary { border: 1px solid rgba(15,48,36,.25); background: transparent; color: var(--green); }
.goal-note { display: none; margin-top: 12px; color: var(--muted); }
.goal-note.is-visible { display: block; }
.facts { white-space: pre-line; }
.deep-dive { border-left: 4px solid var(--rust); padding-left: 20px; margin-top: 28px; }
.deep-dive h3 { font-family: Georgia,serif; font-size: 27px; }
.next-links { display: flex; justify-content: space-between; gap: 16px; margin: 36px 0; }

/* Home: catalog-first surface — иммерсивный герой + ритм секций. */
.home-hero { position: relative; margin-inline: calc(50% - 50vw); padding: 46px 0 4px; }
.home-hero--photo { display: flex; align-items: center; min-height: min(76vh,640px); padding: 84px 0; overflow: hidden; background: var(--green); isolation: isolate; }
.home-hero__bg { position: absolute; inset: 0; z-index: -1; }
.home-hero__bg img { width: 100%; height: 100%; object-fit: cover; }
.home-hero__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(102deg, rgba(8,24,17,.93) 0%, rgba(8,24,17,.76) 40%, rgba(8,24,17,.36) 76%, rgba(8,24,17,.16) 100%), linear-gradient(0deg, rgba(8,24,17,.62), rgba(8,24,17,0) 52%); }
.home-hero__credit { position: absolute; right: 12px; bottom: 10px; padding: 4px 8px; border-radius: 7px; background: rgba(8,24,17,.5); color: rgba(255,255,255,.66); font-size: 11px; }
.home-hero__credit a { color: inherit; text-decoration: none; }
.home-hero__inner { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.home-hero--photo .eyebrow { color: var(--sand); }
.home-hero h1 { max-width: 1040px; margin: 14px 0 18px; font-family: Georgia,serif; font-size: clamp(38px,4.6vw,62px); line-height: 1.05; letter-spacing: -.03em; text-wrap: balance; }
.home-hero--photo h1 { max-width: 840px; color: #fff; text-shadow: 0 2px 30px rgba(0,0,0,.32); }
.home-hero .lead { max-width: 760px; margin: 0 0 26px; font-size: clamp(17px,1.9vw,20px); line-height: 1.55; }
.home-hero--photo .lead { max-width: 600px; color: rgba(255,255,255,.9); }
.home-hero--photo .city-search { max-width: 680px; }
.home-hero--photo .search-status { color: var(--sand); }
.proof-strip { display: flex; flex-wrap: wrap; gap: 0; list-style: none; margin: 0; padding: 0; color: var(--muted); font-size: 14px; }
.proof-strip li { display: flex; align-items: center; }
.proof-strip li + li::before { content: "·"; padding: 0 10px; color: var(--rust); font-weight: 900; }
.home-hero--photo .proof-strip { color: rgba(255,255,255,.82); }
.home-hero--photo .proof-strip li + li::before { color: var(--sand); }
.popular-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 18px; }
.popular-chips > span { color: var(--muted); font-size: 14px; }
.popular-chips .pill { text-decoration: none; transition: background .16s ease, border-color .16s ease; }
.home-hero--photo .popular-chips > span { color: rgba(255,255,255,.72); }
.home-hero--photo .popular-chips .pill { border-color: rgba(255,255,255,.34); background: rgba(255,255,255,.1); color: #fff; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.home-hero--photo .popular-chips .pill:hover { background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.5); }
.route-path-halo { fill: none; stroke: rgba(255,255,255,.95); stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; }
.route-path-line { fill: none; stroke: var(--map-accent,var(--rust)); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.route-marker { fill: var(--green); stroke: #fff; stroke-width: 2.5; }
.walk-map-shell { position: relative; min-width: 0; }
.map-viewport { position: relative; width: 100%; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: #ece9df; isolation: isolate; }
.walk-map { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; margin: 0; overflow: hidden; background: #ece9df; transition: opacity .22s ease, visibility .22s ease; }
.walk-map img { display: block; width: 100%; height: 100%; }
.walk-map svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.walk-map-credit { position: absolute; right: 8px; bottom: 7px; padding: 3px 6px; border-radius: 5px; background: rgba(255,253,248,.9); color: #59615b; font-size: 9px; }
.map-live { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; opacity: 0; outline: 0; transition: opacity .22s ease; }
.map-viewport > .map-live.maplibregl-map { position: absolute; inset: 0; width: 100%; height: 100%; }
.map-viewport.is-live .map-live { opacity: 1; }
.map-viewport.is-live .walk-map { opacity: 0; visibility: hidden; }
.map-loading { position: absolute; z-index: 4; inset: 0; display: flex; align-items: center; justify-content: center; gap: 10px; background: rgba(244,239,231,.72); color: var(--green); font-size: 13px; font-weight: 800; pointer-events: none; backdrop-filter: blur(2px); }
.map-loading[hidden] { display: none; }
.map-loading > span { width: 18px; height: 18px; border: 2px solid rgba(15,48,36,.2); border-top-color: var(--map-accent,var(--rust)); border-radius: 50%; animation: map-spin .8s linear infinite; }
.map-live-credit { position: absolute; z-index: 4; left: 8px; bottom: 7px; max-width: calc(100% - 16px); padding: 3px 7px; border-radius: 999px; background: rgba(44,36,28,.72); color: rgba(255,255,255,.9); font-size: 9px; line-height: 1.4; opacity: 0; pointer-events: none; transition: opacity .18s ease; }
.map-viewport.is-live .map-live-credit { opacity: 1; }
.map-tools { position: absolute; z-index: 7; top: 10px; right: 10px; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.map-tool { min-height: 38px; display: inline-flex; align-items: center; gap: 7px; padding: 0 12px; border: 1px solid rgba(255,255,255,.2); border-radius: 999px; background: rgba(15,48,36,.92); color: #fff; font: inherit; font-size: 12px; font-weight: 800; cursor: pointer; box-shadow: 0 5px 18px rgba(0,0,0,.18); backdrop-filter: blur(8px); }
.map-tool:hover { background: rgba(10,36,26,.98); }
.map-tool svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.map-callout { position: absolute; z-index: 6; right: 12px; bottom: 12px; left: 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 13px; border: 1px solid rgba(15,48,36,.12); border-radius: 13px; background: rgba(255,253,248,.96); color: var(--ink); box-shadow: 0 8px 24px rgba(44,36,28,.2); backdrop-filter: blur(10px); }
.map-callout span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 800; }
.map-callout a { flex: 0 0 auto; color: var(--rust-deep); font-size: 12px; font-weight: 900; text-decoration: none; }
.maplibregl-map { font: 12px/20px system-ui,-apple-system,BlinkMacSystemFont,sans-serif; }
.maplibregl-control-container { display: none; }
.tg-map-marker { position: relative; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; padding: 0; border: 2px solid rgba(255,255,255,.94); border-radius: 999px; box-shadow: 0 4px 14px rgba(44,36,28,.28); cursor: pointer; outline: none; font: 800 13px/1 system-ui,-apple-system,BlinkMacSystemFont,sans-serif; }
.tg-map-marker::before { content: ""; position: absolute; z-index: -1; inset: -5px; width: 38px; height: 38px; border-radius: 999px; opacity: 0; }
.tg-map-marker--current { background: var(--tg-marker-accent); color: #fff; }
.tg-map-marker--current::before { background: var(--tg-marker-accent); opacity: .28; animation: tg-map-marker-pulse 1.3s ease-in-out infinite alternate; }
.tg-map-marker--completed { background: var(--tg-marker-deep); color: #fff; }
.tg-map-marker--future { border-color: rgba(58,48,38,.42); background: var(--tg-marker-soft); color: var(--tg-marker-ink); }
.tg-map-marker:focus-visible { box-shadow: 0 0 0 3px rgba(255,255,255,.86),0 4px 14px rgba(44,36,28,.28); }
.tg-user-puck { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(45,36,26,.24); border-radius: 50%; background: rgba(255,255,255,.94); box-shadow: 0 3px 12px rgba(44,36,28,.3); pointer-events: none; }
.tg-user-puck__core { width: 14px; height: 14px; border: 2px solid #fff; border-radius: 50%; background: var(--map-accent,var(--rust)); }
.route-marker-stop circle { fill: var(--green); stroke: #fff; stroke-width: 2.5; }
.route-marker-stop text { fill: #fff; font-size: 11px; font-weight: 800; font-family: Inter, system-ui, sans-serif; }
.route-marker-stop--muted { opacity: .55; }
.route-marker--active circle { fill: var(--rust); stroke: #fff; stroke-width: 2.5; }
.route-marker--active .route-marker-halo { fill: none; stroke: var(--rust); stroke-width: 2; opacity: .5; }
.route-marker--active text { fill: #fff; font-size: 11px; font-weight: 900; font-family: Inter,system-ui,sans-serif; }
[hidden] { display: none !important; }
.map-panel { padding: 16px; border: 1px solid var(--line); border-radius: 22px; background: var(--paper); box-shadow: 0 12px 34px rgba(15,48,36,.08); }
.map-panel__header { display: flex; justify-content: space-between; gap: 18px; align-items: end; padding: 3px 3px 14px; }
.map-panel__header h2 { margin: 2px 0 0; font-family: Georgia,serif; font-size: clamp(27px,3vw,34px); line-height: 1.08; }
.map-panel__header p { margin: 0; color: var(--muted); font-size: 13px; }
.map-panel__meta { white-space: nowrap; color: var(--rust-deep); font-size: 13px; font-weight: 800; }
.map-dialog { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; overflow: hidden; border: 0; background: #0a241a; color: #fff; }
.map-dialog::backdrop { background: rgba(4,16,11,.88); }
.map-dialog__inner { position: relative; min-width: 0; height: 100%; display: grid; grid-template-rows: auto minmax(0,1fr); padding: 16px; }
.map-dialog__bar { width: 100%; min-width: 0; min-height: 52px; display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.map-dialog__bar strong { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: Georgia,serif; font-size: 20px; }
.map-dialog__actions { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; }
.map-dialog__close, .map-dialog__fit { flex: 0 0 auto; min-height: 40px; padding: 0 15px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; background: rgba(255,255,255,.08); color: #fff; font: inherit; font-weight: 800; cursor: pointer; }
.map-dialog__fit { border-color: var(--sand); background: var(--sand); color: var(--green); }
.map-dialog__stage { width: 100%; max-width: 100%; min-width: 0; min-height: 0; display: grid; place-items: center; overflow: hidden; }
.map-dialog .map-viewport { width: 100%; height: 100%; aspect-ratio: auto !important; border-color: rgba(255,255,255,.22); border-radius: 12px; box-shadow: 0 24px 70px rgba(0,0,0,.4); }
.map-dialog__controls { position: absolute; z-index: 10; right: 28px; bottom: 28px; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; pointer-events: none; }
.map-dialog__control { min-height: 44px; padding: 0 15px; border: 1px solid rgba(15,48,36,.14); border-radius: 999px; background: rgba(255,253,248,.96); color: var(--green); font: inherit; font-size: 13px; font-weight: 900; cursor: pointer; box-shadow: 0 8px 22px rgba(0,0,0,.2); pointer-events: auto; }
.map-dialog__control:disabled { opacity: .5; cursor: not-allowed; }
.map-dialog__status { max-width: 260px; padding: 8px 11px; border-radius: 11px; background: rgba(255,253,248,.96); color: var(--rust-deep); font-size: 12px; font-weight: 800; box-shadow: 0 8px 20px rgba(0,0,0,.18); }
.map-dialog__nav { position: absolute; z-index: 10; top: 84px; left: 28px; width: min(420px,calc(100% - 120px)); display: grid; gap: 3px; padding: 13px 16px; border: 1px solid rgba(15,48,36,.14); border-radius: 15px; background: rgba(255,253,248,.97); color: var(--ink); box-shadow: 0 9px 28px rgba(0,0,0,.2); backdrop-filter: blur(10px); }
.map-dialog__nav > span { color: var(--green); font-size: 11px; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.map-dialog__nav > span.is-warning { color: #b43d27; }
.map-dialog__nav strong { font-size: 15px; line-height: 1.3; }
.map-dialog__nav small { color: var(--muted); font-size: 12px; }
body.map-is-open { overflow: hidden; }
body.journey-dialog-open { overflow: hidden; }

.journey-hero-actions, .route-toolkit__actions, .stop-utility-actions, .stop-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.journey-hero-actions { margin-top: 24px; }
.journey-action { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 0 15px; border: 1px solid rgba(15,48,36,.18); border-radius: 999px; background: var(--paper); color: var(--green); font: inherit; font-size: 13px; font-weight: 900; text-decoration: none; cursor: pointer; transition: transform .15s ease,background .15s ease,color .15s ease; }
.journey-action:hover { transform: translateY(-1px); }
.journey-action svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.journey-action--primary { border-color: var(--rust); background: var(--rust); color: #fff; }
.journey-action.is-selected { border-color: var(--green); background: var(--green); color: #fff; }
.journey-action.is-busy { opacity: .75; }
.pwa-install-card { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 28px; align-items: center; margin: -10px 0 50px; padding: clamp(22px,3.5vw,34px); overflow: hidden; border-radius: 24px; background: var(--green); color: #fff; box-shadow: var(--shadow); }
.pwa-install-card__copy { display: grid; grid-template-columns: 54px minmax(0,1fr); gap: 18px; align-items: center; }
.pwa-install-card__icon { width: 54px; height: 54px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.18); border-radius: 17px; background: rgba(255,255,255,.08); color: var(--sand); }
.pwa-install-card__icon svg { width: 29px; height: 29px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.pwa-install-card .section-kicker { color: var(--sand); }
.pwa-install-card h2 { margin: 0 0 5px; font-family: Georgia,serif; font-size: clamp(25px,3vw,34px); line-height: 1.08; }
.pwa-install-card p:not(.section-kicker) { margin: 0; color: rgba(255,255,255,.74); }
.pwa-install-card .journey-action { min-width: 210px; border-color: var(--sand); background: var(--sand); color: var(--green); }
.pwa-install-dialog { width: min(720px,calc(100% - 28px)); max-width: none; max-height: calc(100dvh - 28px); padding: 0; overflow-y: auto; border: 0; border-radius: 26px; background: transparent; color: var(--ink); }
.pwa-install-dialog::backdrop { background: rgba(4,16,11,.78); backdrop-filter: blur(5px); }
.pwa-install-dialog__card { position: relative; padding: clamp(24px,5vw,42px); border-radius: 26px; background: var(--paper); box-shadow: 0 24px 80px rgba(0,0,0,.35); }
.pwa-install-dialog__close { position: absolute; top: 16px; right: 16px; width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: #fff; color: var(--green); font-size: 23px; line-height: 1; cursor: pointer; }
.pwa-install-dialog h2 { max-width: 560px; margin: 7px 46px 8px 0; font-family: Georgia,serif; font-size: clamp(30px,5vw,43px); line-height: 1.05; }
.pwa-install-dialog__lead { max-width: 590px; margin: 0; color: var(--muted); }
.pwa-install-steps { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 26px 0 20px; }
.pwa-install-step { padding: 19px; border: 1px solid var(--line); border-radius: 18px; background: #f8f5ee; }
.pwa-install-step.is-current { border-color: var(--rust); box-shadow: 0 0 0 2px rgba(185,82,52,.09); }
.pwa-install-step strong { display: block; margin-bottom: 8px; color: var(--green); font-size: 15px; }
.pwa-install-step ol { margin: 0; padding-left: 20px; color: var(--muted); font-size: 14px; }
.pwa-install-step li + li { margin-top: 6px; }
.pwa-install-benefits { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 22px; }
.pwa-install-benefits span { padding: 6px 10px; border-radius: 999px; background: #e9eee9; color: var(--green); font-size: 12px; font-weight: 800; }
.pwa-install-dialog__actions { display: flex; flex-wrap: wrap; gap: 9px; }
.pwa-install-dialog__actions .journey-action--primary { min-width: 210px; }
.guide-progress { max-width: 520px; display: flex; align-items: center; gap: 12px; margin-top: 17px; color: var(--muted); font-size: 12px; font-weight: 800; }
.guide-progress > div { flex: 1; height: 5px; overflow: hidden; border-radius: 999px; background: #ded8ce; }
.guide-progress i { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--rust); transition: width .24s ease; }
.guide-plan__head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; }
.guide-plan__head a { color: var(--rust-deep); font-size: 13px; font-weight: 900; text-decoration: none; }
.route-list li.is-passed a { border-color: rgba(15,48,36,.2); background: #f2f5ef; }
.route-list li.is-passed .route-number { background: var(--green-2); }
.route-list li.is-current a { border-color: var(--rust); box-shadow: 0 0 0 2px rgba(185,82,52,.1); }
.route-list li.is-current .route-number { background: var(--rust); }
.route-fit { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 30px; }
.route-fit > div { padding: 17px; border: 1px solid var(--line); border-radius: 15px; background: #f8f5ee; }
.route-fit strong { color: var(--rust-deep); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
.route-fit p { margin: 7px 0 0; font-size: 15px; }
.route-practical { margin-top: 24px; border-top: 1px solid var(--line); }
.route-practical summary { min-height: 50px; display: flex; align-items: center; color: var(--green); font-weight: 900; cursor: pointer; }
.route-practical h3 { margin: 22px 0 5px; font-family: Georgia,serif; font-size: 21px; }
.route-toolkit { display: grid; grid-template-columns: minmax(0,.8fr) minmax(420px,1.2fr); gap: 36px; align-items: center; margin: 56px 0; padding: clamp(24px,4vw,42px); border: 1px solid var(--line); border-radius: 24px; background: var(--paper); box-shadow: var(--shadow); }
.route-toolkit h2 { margin: 0 0 7px; font-family: Georgia,serif; font-size: clamp(27px,3vw,38px); line-height: 1.1; }
.route-toolkit p { margin: 0; color: var(--muted); }
.route-toolkit .pwa-install-help { margin-top: 14px; font-size: 13px; }
.route-toolkit__actions { justify-content: flex-end; }
.rating-panel { margin: 48px 0; padding: 28px; border-radius: 22px; background: var(--green); color: #fff; }
.rating-panel h2 { margin: 0; font-family: Georgia,serif; font-size: 30px; }
.rating-panel p { margin: 5px 0 15px; color: rgba(255,255,255,.72); }
.rating-stars { display: flex; gap: 6px; }
.rating-stars button { border: 0; background: transparent; color: rgba(255,255,255,.3); font-size: 32px; cursor: pointer; }
.rating-stars button.is-selected { color: var(--sand); }
.guide-closing-actions { display: flex; align-items: center; justify-content: center; gap: 15px; margin: 42px 0; }
.text-action { min-height: 42px; padding: 0 12px; border: 0; background: transparent; color: var(--muted); font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
.mobile-route-dock, .stop-page-dock { display: none; }

.stop-local-name { margin: 10px 0 0; color: var(--muted); font-size: 16px; }
.stop-progress-strip { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 0 0 22px; padding: 0 4px; }
.stop-progress-strip > div { display: flex; align-items: center; gap: 7px; }
.stop-progress-strip > div > span { width: 22px; height: 7px; display: grid; place-items: center; overflow: hidden; border-radius: 999px; background: #d8d3c9; color: transparent; transition: width .18s ease,background .18s ease; }
.stop-progress-strip > div > span.is-passed { width: 27px; background: var(--green-2); }
.stop-progress-strip > div > span.is-current { width: 34px; background: var(--rust); }
.stop-progress-strip i { font-size: 0; }
.stop-progress-strip p { margin: 0; color: var(--muted); font-size: 12px; font-weight: 800; }
.stop-story__header { display: flex; align-items: center; justify-content: space-between; gap: 22px; margin: 34px 0 22px; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.stop-story > .stop-story__header:first-child { margin-top: 0; }
.stop-story__header h2 { margin: 0; font-family: Georgia,serif; font-size: clamp(29px,3vw,36px); line-height: 1.08; letter-spacing: -.018em; }
.reading-toolbar { display: flex; flex: 0 0 auto; align-items: center; justify-content: flex-end; gap: 6px; }
.reading-toolbar span { margin-right: 5px; color: var(--muted); font-size: 12px; font-weight: 800; }
.reading-toolbar button, .reading-preferences button { min-width: 38px; min-height: 34px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--green); font: inherit; font-weight: 900; cursor: pointer; }
.reading-toolbar button.is-selected, .reading-preferences button.is-selected { border-color: var(--green); background: var(--green); color: #fff; }
[data-reading-size="s"] [data-reader-text] p, [data-reading-size="s"] [data-reader-text] li { font-size: 16px; line-height: 1.58; }
[data-reading-size="m"] [data-reader-text] p, [data-reading-size="m"] [data-reader-text] li { font-size: 18px; line-height: 1.62; }
[data-reading-size="l"] [data-reader-text] p, [data-reading-size="l"] [data-reader-text] li { font-size: 21px; line-height: 1.66; }
.stop-practical-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin: 28px 0 14px; }
.stop-practical-grid > div { min-height: 96px; padding: 14px; border: 1px solid var(--line); border-radius: 15px; background: #f8f5ee; }
.stop-practical-grid span { display: block; margin-bottom: 8px; color: var(--muted); font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.stop-practical-grid strong { font-size: 14px; line-height: 1.3; }
.stop-actions { margin: 0 0 20px; }
.stop-look-now { margin: 0; padding: 24px; border-radius: 18px; background: #f4eee3; }
.stop-look-now h2, .stop-visit-details h2, .stop-next-move h2 { margin: 0 0 14px; font-family: Georgia,serif; font-size: clamp(27px,3vw,34px); line-height: 1.1; letter-spacing: -.016em; }
.stop-look-now ul { margin: 0; padding-left: 22px; }
.stop-look-now li + li { margin-top: 7px; }
.stop-visit-details { margin-top: 36px; padding-top: 30px; border-top: 1px solid var(--line); }
.stop-visit-details > p { margin-top: 22px; }
.stop-next-move { margin-top: 38px; padding: 25px; border-radius: 18px; background: var(--green); color: #fff; }
.stop-next-move h2 { color: #fff; }
.stop-next-move p { margin-bottom: 0; color: rgba(255,255,255,.82); }
.hours-card { display: grid; gap: 11px; margin: 22px 0; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: #f8f5ee; }
.hours-card p, .hours-card small { margin: 0; color: var(--muted); font-size: 13px; }
.hours-card__status { display: flex; align-items: center; gap: 8px; color: var(--green); }
.hours-card__status span { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.hours-card details summary { cursor: pointer; color: var(--green); font-size: 13px; font-weight: 900; }
.hours-week { display: grid; gap: 5px; margin-top: 10px; }
.hours-week > div { display: flex; justify-content: space-between; gap: 20px; font-size: 13px; }
.content-section { margin-top: 34px; }
.deep-dive-group { margin-top: 34px; }
.deep-dive { margin: 9px 0; padding: 0; border: 1px solid var(--line); border-left: 4px solid var(--rust); border-radius: 14px; background: #fff; }
.deep-dive summary { min-height: 54px; display: flex; align-items: center; padding: 0 16px; color: var(--green); font-family: Georgia,serif; font-size: 20px; font-weight: 700; cursor: pointer; }
.deep-dive > p { padding: 0 17px 17px; }
.source-note { margin-top: 34px !important; padding-top: 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px !important; }
.source-feedback { display: inline-flex; margin-top: 14px; color: var(--rust-deep); font-size: 13px; font-weight: 800; text-decoration: none; }
.source-feedback:hover { text-decoration: underline; }
.finish-dialog { width: min(480px,calc(100% - 28px)); max-width: none; padding: 0; border: 0; border-radius: 24px; background: transparent; }
.finish-dialog::backdrop { background: rgba(4,16,11,.78); backdrop-filter: blur(4px); }
.finish-card { padding: 30px; border-radius: 24px; background: var(--paper); text-align: center; box-shadow: 0 24px 80px rgba(0,0,0,.35); }
.finish-card h2 { margin: 7px 0 8px; font-family: Georgia,serif; font-size: 34px; }
.finish-card > p:not(.section-kicker) { color: var(--muted); }
.finish-card > div { display: grid; gap: 8px; margin: 22px 0 10px; }
.finish-medal { width: 58px; height: 58px; display: grid; place-items: center; margin: 0 auto 16px; border-radius: 50%; background: var(--green); color: #fff; font-size: 28px; font-weight: 900; }
.journey-toast { position: fixed; z-index: 100; right: 20px; bottom: 20px; max-width: min(380px,calc(100% - 40px)); padding: 12px 16px; border-radius: 13px; background: var(--green); color: #fff; font-size: 13px; font-weight: 800; box-shadow: 0 12px 34px rgba(0,0,0,.23); }

.personal-hero { margin-bottom: 34px; }
.personal-tabs { display: flex; gap: 8px; margin-top: 24px; }
.personal-tabs a { padding: 9px 13px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--green); font-size: 13px; font-weight: 900; text-decoration: none; }
.personal-tabs a.is-active { border-color: var(--green); background: var(--green); color: #fff; }
.personal-section { margin: 42px 0; }
.personal-section h2 { font-family: Georgia,serif; font-size: 32px; }
.personal-list { display: grid; gap: 10px; }
.personal-item { display: flex; align-items: center; gap: 10px; padding: 13px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.personal-item__link { min-width: 0; flex: 1; display: grid; color: inherit; text-decoration: none; }
.personal-item__link small { color: var(--rust-deep); font-weight: 900; text-transform: uppercase; }
.personal-item__link strong { overflow: hidden; text-overflow: ellipsis; font-family: Georgia,serif; font-size: 20px; }
.personal-item__link span { color: var(--muted); font-size: 13px; }
.personal-item__actions { display: flex; gap: 5px; }
.personal-item__button { min-height: 38px; padding: 0 10px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--green); font: inherit; font-size: 12px; font-weight: 900; cursor: pointer; }
.personal-empty { padding: 30px; border: 1px dashed var(--line); border-radius: 18px; text-align: center; }
.personal-empty h3 { margin: 0; font-family: Georgia,serif; font-size: 25px; }
.reading-preferences > div { display: flex; gap: 8px; }

@keyframes map-spin { to { transform: rotate(360deg); } }
@keyframes tg-map-marker-pulse { from { opacity: .28; transform: scale(1); } to { opacity: 0; transform: scale(1.58); } }

.audio-player { position: sticky; top: 12px; z-index: 12; display: grid; grid-template-columns: 58px minmax(0,1fr); gap: 15px; align-items: center; margin: 0 0 24px; padding: 15px 18px; border: 1px solid rgba(15,48,36,.24); border-radius: 20px; background: rgba(255,253,248,.96); box-shadow: 0 14px 38px rgba(15,48,36,.14); backdrop-filter: blur(12px); }
.audio-player__play { width: 54px; height: 54px; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--rust); color: #fff; font: inherit; font-size: 22px; cursor: pointer; box-shadow: 0 8px 20px rgba(185,82,52,.25); }
.audio-player__main { min-width: 0; }
.audio-player__heading { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin-bottom: 8px; }
.audio-player__heading small { display: block; color: var(--rust-deep); font-size: 11px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.audio-player__heading strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audio-player__tools { display: flex; align-items: center; gap: 7px; }
.audio-player__tool { min-width: 42px; min-height: 34px; padding: 0 9px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--green); font: inherit; font-size: 12px; font-weight: 800; cursor: pointer; }
.audio-player__timeline { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: center; }
.audio-player__range { width: 100%; height: 4px; margin: 0; accent-color: var(--rust); cursor: pointer; }
.audio-player__time { min-width: 76px; color: var(--muted); font-variant-numeric: tabular-nums; font-size: 12px; text-align: right; }
.audio-player.is-unavailable { position: static; opacity: .72; }
.audio-player.is-unavailable .audio-player__play, .audio-player.is-unavailable .audio-player__tool, .audio-player.is-unavailable .audio-player__range { cursor: not-allowed; }
.audio-player--asset { grid-template-columns: 1fr; }
.audio-asset__header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.audio-asset__header small { display: block; color: var(--rust-deep); font-size: 11px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.audio-asset__header strong { display: block; }
.audio-player--asset audio { width: 100%; }
.audio-rate-row { display: flex; flex-wrap: wrap; gap: 7px; }
.audio-rate-row button { min-width: 48px; min-height: 34px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--green); font: inherit; font-size: 12px; font-weight: 900; cursor: pointer; }
.audio-rate-row button.is-selected { border-color: var(--rust); background: var(--rust); color: #fff; }

.stop-experience { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,360px); grid-template-areas: "main rail"; gap: 32px; align-items: start; }
.stop-experience--single { grid-template-columns: minmax(0,820px); grid-template-areas: "main"; }
.stop-main-column { grid-area: main; min-width: 0; }
.stop-story { width: 100%; max-width: none; }
.stop-route-rail { grid-area: rail; position: sticky; top: 118px; }
.stop-next-links { width: calc(100% - 392px); }
.stop-next-links--single { width: min(820px,100%); }
.stop-editorial-footer { width: calc(100% - 392px); margin: 24px 0 0; padding: 0 4px; }
.stop-experience--single + .stop-editorial-footer { width: min(820px,100%); }
.stop-editorial-footer .source-note { margin-top: 0 !important; }
.stop-footer-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 16px; }
.stop-footer-actions .journey-action { min-height: 40px; padding: 0 12px; }
.stop-route-progress { height: 5px; margin: 3px 3px 14px; overflow: hidden; border-radius: 999px; background: #e5e0d6; }
.stop-route-progress span { display: block; height: 100%; border-radius: inherit; background: var(--rust); }
.stop-route-next { margin-top: 14px; padding: 15px 3px 2px; border-top: 1px solid var(--line); }
.stop-route-next span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.stop-route-next a { color: var(--green); font-weight: 900; text-decoration: none; }
.home-section { margin: 88px 0; scroll-margin-top: 24px; }
.section-heading { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 28px; }
.section-heading > div { max-width: 920px; }
.section-heading p { margin: 0; color: var(--muted); font-size: 18px; }
.section-kicker { margin: 0 0 8px; color: var(--rust-deep); font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.featured-walk { display: grid; grid-template-columns: minmax(320px,.82fr) minmax(0,1.18fr); overflow: hidden; border: 1px solid var(--line); border-radius: 28px; background: var(--paper); box-shadow: var(--shadow); }
.featured-walk__media { position: relative; min-height: 100%; margin: 0; background: var(--green); }
.featured-walk__media img { width: 100%; height: 100%; min-height: 610px; object-fit: cover; }
.featured-walk__media figcaption { position: absolute; left: 12px; bottom: 12px; max-width: calc(100% - 24px); padding: 6px 9px; border-radius: 7px; background: rgba(15,48,36,.92); color: rgba(255,255,255,.86); font-size: 11px; }
.featured-walk__media a { text-decoration: none; }
.featured-walk__copy { padding: clamp(26px,4vw,52px); }
.featured-walk__copy h3 { margin: 9px 0 10px; font-family: Georgia,serif; font-size: clamp(30px,3.5vw,46px); line-height: 1.06; letter-spacing: -.02em; }
.featured-walk__copy .route-thesis { margin: 0; color: #42483f; font-size: 18px; }
.sample-stop { margin: 28px 0 0; padding-top: 24px; border-top: 1px solid var(--line); }
.sample-stop__label { color: var(--rust); font-size: 12px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.sample-stop h4 { margin: 7px 0 10px; font-family: Georgia,serif; font-size: 25px; line-height: 1.18; }
.sample-stop__preview { font-size: 17px; }
.sample-details { margin-top: 16px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.sample-details summary { min-height: 48px; display: flex; align-items: center; cursor: pointer; color: var(--green); font-weight: 800; }
.sample-details summary::after { content: "+"; margin-left: auto; font-size: 23px; font-weight: 400; }
.sample-details[open] summary::after { content: "−"; }
.sample-details__body { padding: 0 0 20px; }
.sample-details__body p { font-size: 16px; }
.sample-details__body h5 { margin: 20px 0 8px; font-family: Georgia,serif; font-size: 20px; }
.sample-details__body ul { padding-left: 20px; }
.walk-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.how-steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; margin: 0 0 40px; padding: 0; list-style: none; counter-reset: home-step; }
.how-steps li { position: relative; padding: 24px 22px 22px; border: 1px solid var(--line); border-radius: 20px; background: rgba(255,253,248,.75); counter-increment: home-step; }
.how-steps li::before { content: counter(home-step); display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 16px; border-radius: 50%; background: var(--green); color: var(--sand); font-family: Georgia,serif; font-weight: 700; }
.how-steps strong { display: block; margin-bottom: 7px; font-family: Georgia,serif; font-size: 20px; line-height: 1.2; }
.how-steps span { color: var(--muted); font-size: 15px; }
.how-steps a { color: var(--green); font-weight: 700; }
.trust-strip { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); gap: 40px; align-items: start; padding: clamp(28px,5vw,52px); border-radius: 28px; background: var(--green); color: #fff; }
.trust-strip h2 { color: #fff; }
.trust-strip > div > p { color: rgba(255,255,255,.75); font-size: 17px; }
.trust-strip__points { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.trust-point { padding: 16px 18px; border: 1px solid rgba(255,255,255,.16); border-radius: 16px; background: rgba(255,255,255,.045); }
.trust-point strong { display: block; color: var(--sand); }
.trust-point span { color: rgba(255,255,255,.76); font-size: 14px; }
.trust-strip__link { display: inline-block; margin-top: 18px; color: var(--sand); font-weight: 800; }
.editorial-method-link { margin: 18px 0 0; color: var(--muted); font-size: 14px; }
.editorial-method-link a { color: var(--green); font-weight: 800; }
.method-page { width: min(900px,100%); margin: 28px auto 0; }
.method-hero { padding: clamp(30px,6vw,64px); border-radius: 28px; background: var(--green); color: #fff; }
.method-hero .eyebrow { color: var(--sand); }
.method-hero h1 { max-width: 780px; color: #fff; }
.method-hero .lead { max-width: 760px; color: rgba(255,255,255,.8); }
.method-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; margin: 34px 0; }
.method-card { padding: 26px; border: 1px solid var(--line); border-radius: 20px; background: var(--paper); }
.method-card h2 { margin: 0 0 10px; font-size: 25px; }
.method-card p { margin: 0; color: var(--muted); }
.method-note { margin: 16px 0; padding: clamp(24px,4vw,38px); border-radius: 22px; background: #efe9df; }
.method-note h2 { margin-top: 0; }
.method-note p { max-width: 760px; }
.method-correction { margin-top: 34px; padding: clamp(26px,4vw,42px); border-radius: 22px; background: var(--rust-deep); color: #fff; }
.method-correction h2 { margin-top: 0; color: #fff; }
.method-correction p { max-width: 760px; color: rgba(255,255,255,.82); }
.method-correction .button { margin-top: 8px; background: var(--sand); color: var(--green); }
.city-search { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 8px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); box-shadow: 0 12px 32px rgba(15,48,36,.08); }
.city-search input { min-width: 0; min-height: 50px; padding: 0 15px; border: 0; background: transparent; color: var(--ink); font-size: 16px; outline: 0; }
.search-status { min-height: 22px; margin: 9px 0 0; color: var(--rust-deep); font-size: 14px; }
.home-city-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 18px; }
.home-city-card { position: relative; }
.home-city-card:hover { box-shadow: 0 20px 46px rgba(15,48,36,.17); }
.home-city-card .hero-media { border: 0; border-radius: 0; background: none; }
.home-city-card .hero-media img { transition: transform .5s ease; }
.home-city-card:hover .hero-media img { transform: scale(1.06); }
.home-city-card .card__body { min-height: 0; padding: 16px 18px 20px; }
.home-city-card h3 { font-size: 22px; margin-bottom: 6px; }
.home-city-card .muted { font-size: 14px; line-height: 1.4; }
.home-city-card .city-count { position: absolute; top: 12px; left: 12px; z-index: 2; margin: 0; padding: 6px 11px; border-radius: 999px; background: var(--rust); color: #fff; font-size: 12px; font-weight: 800; box-shadow: 0 8px 20px rgba(8,24,17,.28); }
.home-city-card .credit { padding: 6px 12px 0; font-size: 11px; }
.country-directory__links { display: flex; flex-wrap: wrap; gap: 8px; }
.country-directory__links .pill { text-decoration: none; }
.city-entry-summary { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 0; }
.city-entry-summary span { padding: 7px 12px; border: 1px solid var(--line); border-radius: 999px; background: rgba(255,253,248,.74); color: var(--green); font-size: 13px; font-weight: 900; }
.city-entry-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.city-routes { scroll-margin-top: 24px; }
.city-routes .grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.city-map-teaser { padding: clamp(24px,4vw,42px); border-radius: 28px; background: var(--green); color: #fff; box-shadow: var(--shadow); }
.city-map-teaser__heading { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 24px; align-items: end; margin-bottom: 20px; }
.city-map-teaser__heading .eyebrow { color: var(--sand); }
.city-map-teaser__heading h2 { margin: 7px 0 8px; color: #fff; }
.city-map-teaser__heading p { max-width: 720px; margin: 0; color: rgba(255,255,255,.76); }
.city-map-teaser .city-places__total { background: rgba(255,255,255,.12); color: #fff; }
.city-map-teaser .city-places__map { min-height: 360px; border-color: rgba(255,255,255,.16); box-shadow: none; }
.city-map-teaser__footer { display: flex; justify-content: space-between; gap: 22px; align-items: center; margin-top: 18px; }
.city-map-teaser__footer > div { min-width: 0; display: grid; gap: 2px; }
.city-map-teaser__footer span { color: rgba(255,255,255,.64); font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.city-map-teaser__footer strong { overflow: hidden; color: #fff; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; }
.city-attractions-hero { margin-bottom: 28px; }
.city-route-bridge { display: flex; justify-content: space-between; gap: 28px; align-items: center; margin: 0 0 46px; padding: clamp(22px,3vw,32px); border: 1px solid rgba(15,48,36,.14); border-radius: 22px; background: var(--paper); box-shadow: 0 12px 34px rgba(15,48,36,.07); }
.city-route-bridge h2 { margin: 5px 0 7px; font-family: Georgia,serif; font-size: clamp(24px,3vw,34px); line-height: 1.1; }
.city-route-bridge p { max-width: 760px; margin: 0; color: var(--muted); }
.city-route-bridge .button { flex: 0 0 auto; }
.city-places { scroll-margin-top: 24px; }
.city-places__heading { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 24px; align-items: end; margin-bottom: 20px; }
.city-places__heading h2 { margin-bottom: 8px; }
.city-places__heading p { max-width: 760px; margin: 0; color: var(--muted); }
.city-places__total { min-width: 76px; padding: 12px 17px; border-radius: 999px; background: #f0e2d7; color: var(--rust-deep); font-size: 20px; font-weight: 900; text-align: center; }
.city-places__controls { display: grid; gap: 10px; margin-bottom: 18px; }
.city-places__control-row { display: flex; flex-wrap: wrap; gap: 8px; }
.city-places__chip { min-height: 42px; padding: 0 16px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--ink); font: inherit; font-size: 14px; font-weight: 800; cursor: pointer; transition: background .16s ease,color .16s ease,border-color .16s ease,transform .16s ease; }
.city-places__chip:hover { transform: translateY(-1px); border-color: rgba(15,48,36,.28); }
.city-places__chip[aria-pressed="true"] { border-color: var(--rust); background: var(--rust); color: #fff; }
.city-places__stage { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(280px,.75fr); gap: 18px; align-items: stretch; }
.city-places__map { position: relative; min-height: 520px; overflow: hidden; border: 1px solid var(--line); border-radius: 22px; background: #ece9df; box-shadow: 0 14px 38px rgba(15,48,36,.1); isolation: isolate; }
.city-places__map-live { position: absolute; z-index: 2; inset: 0; opacity: 0; transition: opacity .2s ease; }
.city-places__map > .city-places__map-live.maplibregl-map { position: absolute; inset: 0; width: 100%; height: 100%; }
.city-places__map.is-live .city-places__map-live { opacity: 1; }
.city-places__map-fallback { position: absolute; z-index: 1; inset: 0; display: grid; place-items: center; padding: 28px; background: radial-gradient(circle at 32% 30%,#f8f4eb 0,#e5e8df 56%,#d7e2dc 100%); color: var(--green); text-align: center; }
.city-places__map.is-live .city-places__map-fallback { opacity: 0; visibility: hidden; }
.city-places__map-fallback span { max-width: 320px; font-weight: 800; }
.city-places__map-count { position: absolute; z-index: 5; top: 14px; left: 50%; transform: translateX(-50%); min-width: max-content; padding: 8px 14px; border: 1px solid rgba(15,48,36,.1); border-radius: 999px; background: rgba(255,253,248,.94); color: var(--ink); font-size: 13px; font-weight: 900; box-shadow: 0 7px 20px rgba(44,36,28,.14); pointer-events: none; }
.city-places__map-credit { position: absolute; z-index: 5; bottom: 8px; left: 8px; padding: 3px 7px; border-radius: 999px; background: rgba(44,36,28,.72); color: rgba(255,255,255,.92); font-size: 9px; pointer-events: none; }
.city-places__selected { min-width: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--line); border-radius: 22px; background: var(--paper); box-shadow: 0 14px 38px rgba(15,48,36,.08); }
.city-places__selected-media { position: relative; margin: 0; aspect-ratio: 4/3; overflow: hidden; background: #f2eee6; }
.city-places__selected-media img { width: 100%; height: 100%; object-fit: cover; }
.city-places__selected-credit { position: absolute; right: 8px; bottom: 8px; left: 8px; padding: 5px 8px; border-radius: 9px; background: rgba(8,36,26,.86); color: #fff; font-size: 10px; line-height: 1.35; }
.city-places__selected-credit a { color: inherit; }
.city-places__selected-fallback { aspect-ratio: 4/3; display: grid; place-items: center; padding: 26px; background: linear-gradient(145deg,#f6f1e8,#e8e1d6); color: var(--rust-deep); text-align: center; }
.city-places__selected-pin { display: grid; place-items: center; width: 76px; height: 76px; margin: 0 auto 13px; border: 2px solid currentColor; border-radius: 50%; font-family: Georgia,serif; font-size: 38px; }
.city-places__selected-fallback span:last-child { display: block; color: var(--muted); font-size: 12px; }
.city-places__selected-body { display: flex; flex: 1; flex-direction: column; padding: 22px; }
.city-places__selected-kicker { color: var(--rust-deep); font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.city-places__selected h3 { margin: 7px 0 6px; font-family: Georgia,serif; font-size: clamp(25px,3vw,34px); line-height: 1.06; }
.city-places__selected-local { margin: 0; color: var(--muted); font-size: 14px; }
.city-places__selected-story { margin: 15px 0 0; color: var(--ink); font-size: 15px; line-height: 1.55; }
.city-places__selected-meta { display: flex; flex-wrap: wrap; gap: 7px; margin: 15px 0 21px; }
.city-places__selected-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.city-places__selected-actions .button { min-height: 42px; padding: 0 14px; font-size: 13px; }
.city-places__selected-actions .button--secondary { border: 1px solid var(--line); background: transparent; color: var(--green); }
.city-places__list-head { display: flex; justify-content: space-between; gap: 18px; align-items: end; margin: 34px 0 14px; }
.city-places__list-head h3 { margin: 0; font-family: Georgia,serif; font-size: 28px; }
.city-places__list-head span { color: var(--muted); font-size: 13px; }
.city-places__list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.city-places__item-button { width: 100%; min-height: 82px; display: grid; grid-template-columns: 13px minmax(0,1fr); gap: 12px; align-items: start; padding: 15px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,253,248,.78); color: var(--ink); font: inherit; text-align: left; cursor: pointer; }
.city-places__item-button:hover,.city-places__item-button[aria-current="true"] { border-color: rgba(180,81,58,.56); background: var(--paper); box-shadow: 0 8px 22px rgba(15,48,36,.08); }
.city-places__dot { width: 11px; height: 11px; margin-top: 5px; border: 2px solid #fff; border-radius: 50%; background: var(--place-color,var(--rust)); box-shadow: 0 0 0 1px rgba(44,36,28,.18); }
.city-places__item-copy { min-width: 0; display: grid; gap: 4px; }
.city-places__item-copy strong { font-size: 15px; line-height: 1.28; }
.city-places__item-copy small { color: var(--muted); font-size: 12px; line-height: 1.3; }
.city-places__item-route { display: block; padding: 8px 15px 2px 40px; color: var(--rust-deep); font-size: 12px; font-weight: 800; line-height: 1.35; text-decoration: none; }
.city-places__item-route:hover { text-decoration: underline; }
.city-places__item-story { margin: 5px 15px 2px 40px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.city-places__more { display: block; margin: 18px auto 0; }
.site-footer { margin-top: 70px; padding: 40px 0; background: #0a241a; color: rgba(255,255,255,.68); font-size: 14px; }
.site-footer__inner { display: flex; justify-content: space-between; gap: 30px; align-items: end; }
.site-footer strong { display: block; margin-bottom: 5px; color: #fff; font-family: Georgia,serif; font-size: 20px; }
.site-footer nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 18px; }
.site-footer a { color: rgba(255,255,255,.78); }

@media (max-width: 980px) {
  .guide-hero { grid-template-columns: 1fr; }
  .guide-hero .hero-media { width: 100%; }
  .home-city-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .how-steps { grid-template-columns: 1fr; }
  .featured-walk { grid-template-columns: .85fr 1.15fr; }
  .city-places__stage { grid-template-columns: 1fr; }
  .city-places__selected { display: grid; grid-template-columns: minmax(240px,.8fr) minmax(0,1.2fr); }
  .city-places__selected-media,.city-places__selected-fallback { aspect-ratio: auto; min-height: 300px; }
  .city-places__list { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 1099px) {
  .guide-experience { grid-template-columns: 1fr; grid-template-areas: "map" "story" "plan"; gap: 34px; }
  .guide-experience--no-map { grid-template-areas: "story" "plan"; }
  .guide-story { max-width: 820px; }
  .route-toolkit { grid-template-columns: 1fr; }
  .route-toolkit__actions { justify-content: flex-start; }
}
@media (max-width: 899px) {
  .stop-experience { grid-template-columns: 1fr; grid-template-areas: "main" "rail"; gap: 28px; }
  .stop-route-rail { position: static; }
  .stop-next-links, .stop-editorial-footer { width: 100%; }
}
@media (max-width: 800px) {
  .site-header__inner, .wrap { width: min(100% - 28px,1180px); }
  .site-header__inner { min-height: 64px; }
  .primary-nav > a:not(.nav-cta) { display: none; }
  .method-grid { grid-template-columns: 1fr; }
  .primary-nav { gap: 12px; }
  .lang-switch__menu { min-width: 198px; }
  .lang-hint__row { grid-template-columns: auto 1fr; }
  .lang-hint__go { grid-column: 2; justify-self: start; }
  .site-header .nav-cta { min-height: 40px; padding: 0 14px; }
  .hero { grid-template-columns: 1fr; }
  .guide-hero { gap: 25px; margin-bottom: 34px; }
  .guide-hero h1 { font-size: clamp(39px,11vw,54px); }
  .guide-hero .hero-media { order: 2; }
  .stop-hero, .stop-hero.hero--text { grid-template-columns: 1fr; grid-template-areas: "copy" "media"; gap: 22px; margin: 30px 0 26px; }
  .stop-hero h1 { font-size: clamp(42px,12vw,56px); }
  .stop-hero__summary { margin-top: 20px; padding: 0; }
  .stop-hero__summary .lead { margin-bottom: 13px; }
  .stop-hero .hero-media { margin-top: 0; }
  .map-panel { padding: 11px; border-radius: 18px; }
  .map-panel__header { align-items: start; padding: 4px 3px 11px; }
  .map-panel__header h2 { font-size: 27px; }
  .map-panel__meta { padding-top: 4px; }
  .map-tool { min-height: 36px; padding: 0 10px; }
  .audio-player { top: 8px; grid-template-columns: 50px minmax(0,1fr); gap: 11px; padding: 12px; border-radius: 17px; }
  .audio-player__play { width: 48px; height: 48px; }
  .audio-player__heading { margin-bottom: 6px; }
  .audio-player__heading strong { font-size: 14px; }
  .audio-player__timeline { gap: 8px; }
  .audio-player__time { min-width: 68px; }
  .map-dialog__inner { padding: 10px; }
  .map-dialog__controls { right: 20px; bottom: 20px; }
  .map-dialog__nav { top: 72px; left: 20px; width: calc(100% - 92px); }
  .grid { grid-template-columns: 1fr; }
  .home-hero { padding: 32px 0 2px; }
  .home-hero--photo { min-height: 0; padding: 56px 0 60px; }
  .home-hero h1 { font-size: clamp(34px,9vw,50px); }
  .home-section { margin: 68px 0; }
  .section-heading { display: block; }
  .featured-walk, .trust-strip { grid-template-columns: 1fr; }
  .featured-walk__media img { min-height: 360px; max-height: 480px; }
  .route-list a { grid-template-columns: 40px 1fr; }
  .route-list time { grid-column: 2; }
  .guide-plan .route-list a { grid-template-columns: 40px minmax(0,1fr); }
  .guide-plan .route-list time { grid-column: 2; padding-top: 0; }
  .next-links { flex-direction: column; }
  main:has(.stop-page-dock) .stop-next-links { display: none; }
  .route-fit { grid-template-columns: 1fr; }
  .guide-plan__head { display: block; }
  .guide-plan__head a { display: inline-block; margin: -8px 0 17px; }
  .route-toolkit { gap: 22px; margin: 38px 0; padding: 22px; }
  .route-toolkit__actions .journey-action { width: 100%; }
  .pwa-install-card { grid-template-columns: 1fr; gap: 20px; margin: -4px 0 38px; }
  .pwa-install-card .journey-action { width: 100%; }
  .pwa-install-steps { grid-template-columns: 1fr; }
  .pwa-install-dialog[data-current-platform="ios"] [data-install-platform="android"], .pwa-install-dialog[data-current-platform="android"] [data-install-platform="ios"] { display: none; }
  .pwa-install-dialog__actions .journey-action { width: 100%; }
  .guide-closing-actions { display: none; }
  .mobile-route-dock { position: fixed; z-index: 40; right: 12px; bottom: 12px; left: 12px; display: block; padding: 8px; border: 1px solid rgba(15,48,36,.15); border-radius: 999px; background: rgba(255,253,248,.95); box-shadow: 0 12px 34px rgba(0,0,0,.2); backdrop-filter: blur(12px); }
  .mobile-route-dock .journey-action { width: 100%; }
  body:has(.mobile-route-dock), body:has(.stop-page-dock) { padding-bottom: 82px; }
  .stop-page-dock { position: fixed; z-index: 45; right: 10px; bottom: 10px; left: 10px; display: grid; grid-template-columns: 44px minmax(0,1fr) auto; gap: 9px; align-items: center; padding: 8px; border: 1px solid rgba(15,48,36,.15); border-radius: 18px; background: rgba(255,253,248,.96); box-shadow: 0 12px 34px rgba(0,0,0,.23); backdrop-filter: blur(12px); }
  .stop-page-dock > button { min-height: 44px; padding: 0 13px; border: 0; border-radius: 13px; background: var(--green); color: #fff; font: inherit; font-weight: 900; }
  .stop-page-dock > button:first-child { padding: 0; background: #ebe5da; color: var(--green); font-size: 20px; }
  .stop-page-dock > div { min-width: 0; display: grid; }
  .stop-page-dock span { color: var(--muted); font-size: 10px; font-weight: 800; text-transform: uppercase; }
  .stop-page-dock strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
  .stop-progress-strip { margin-top: 0; }
  .personal-item { align-items: stretch; flex-direction: column; }
  .personal-item__actions { justify-content: flex-end; }
  .site-footer__inner { display: block; }
  .site-footer nav { justify-content: flex-start; margin-top: 22px; }
  .city-routes .grid { grid-template-columns: 1fr; }
  .city-map-teaser__heading { grid-template-columns: 1fr; gap: 13px; }
  .city-map-teaser .city-places__map { min-height: 300px; }
  .city-map-teaser__footer, .city-route-bridge { align-items: stretch; flex-direction: column; }
  .city-map-teaser__footer .button, .city-route-bridge .button { width: 100%; }
  .city-places__heading { grid-template-columns: 1fr; gap: 13px; }
  .city-places__total { width: fit-content; }
  .city-places__map { min-height: 430px; }
  .city-places__selected { display: flex; }
  .city-places__selected-media,.city-places__selected-fallback { min-height: 0; aspect-ratio: 16/10; }
  .city-places__list { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .brand { font-size: 18px; gap: 8px; }
  .brand__mark { width: 30px; height: 30px; flex-basis: 30px; }
  .site-header .nav-cta { font-size: 13px; }
  .home-hero h1 { font-size: 34px; }
  .proof-strip { display: grid; gap: 5px; }
  .proof-strip li + li::before { content: ""; padding: 0; }
  .featured-walk__copy { padding: 25px 21px 28px; }
  .featured-walk__copy h3 { font-size: 32px; }
  .featured-walk__media img { min-height: 300px; }
  .home-city-grid { grid-template-columns: 1fr; }
  .city-search { grid-template-columns: 1fr; }
  .city-search .button { width: 100%; }
  .map-tool span { display: none; }
  .map-callout { align-items: flex-start; flex-direction: column; gap: 3px; }
  .map-dialog__bar strong { font-size: 17px; }
  .audio-player__heading small { display: none; }
  .audio-player__tool[data-reader-restart] { display: none; }
  .breadcrumbs--stop { flex-wrap: nowrap; overflow: hidden; }
  .breadcrumbs--stop > * { display: none; }
  .breadcrumbs--stop > :nth-last-child(-n+3) { display: inline; }
  .breadcrumbs--stop > a:nth-last-child(3) { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .breadcrumbs--stop > span:last-child { flex: 0 0 auto; white-space: nowrap; }
  .stop-look-now { padding: 21px; }
  .stop-story__header { gap: 12px; }
  .stop-story__header h2 { font-size: 26px; white-space: nowrap; }
  .reading-toolbar > span { display: none; }
  .reading-toolbar button { min-width: 32px; min-height: 32px; }
  .stop-practical-grid { grid-template-columns: 1fr; }
  .stop-practical-grid > div { min-height: 0; }
  .stop-actions .journey-action { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .map-loading > span, .tg-map-marker--current::before { animation: none; }
}
