@font-face {
  font-family: 'Guide Serif';
  font-style: normal;
  font-display: swap;
  font-weight: 300 700;
  src: url('/field-guide/serif.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Guide Serif';
  font-style: normal;
  font-display: swap;
  font-weight: 300 700;
  src: url('/field-guide/serif-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Guide Serif';
  font-style: normal;
  font-display: swap;
  font-weight: 300 700;
  src: url('/field-guide/serif-cyrillic.woff2') format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face {
  font-family: 'Guide Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url('/field-guide/sans.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Guide Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url('/field-guide/sans-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Guide Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url('/field-guide/sans-cyrillic.woff2') format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
.fg {
  --paper: #f4f2ed;
  --surface: #ffffff;
  --ink: #222222;
  --muted: #646464;
  --line: #d6d4cf;
  --control-line: #777777;
  --accent: #2454d4;
  --accent-soft: #edf2ff;
  --action: #2454d4;
  --action-hover: #1c43ac;
  --action-ink: #fff;
  --warm: #2454d4;
  --warning: #85460f;
  --warning-surface: #f5e2d4;
  --boat: #006d76;
  --empty: #eceae5;
  --focus: #2454d4;
  background: var(--paper);
  color: var(--ink);
  font: 17px/1.6 "Guide Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Arial, sans-serif;
  min-height: 100dvh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  padding-left: env(safe-area-inset-left, 0px);
  padding-right: env(safe-area-inset-right, 0px);
}
.fg[data-theme="dark"] {
  --paper: #171717;
  --surface: #222222;
  --ink: #f2f0eb;
  --muted: #bdbbb6;
  --line: #555555;
  --control-line: #888888;
  --accent: #8caeff;
  --accent-soft: #2d3445;
  --action: #8caeff;
  --action-hover: #aac3ff;
  --action-ink: #171717;
  --warm: #8caeff;
  --warning: #ffbe83;
  --warning-surface: #34312c;
  --boat: #83d2d8;
  --empty: #2a2a2a;
  --focus: #8caeff;
}
.fg button,
.fg select,
.fg a,
.fg summary {
  font: inherit;
}
.fg button,
.fg select,
.fg summary {
  min-height: 44px;
  border: 1px solid var(--control-line);
  border-radius: 8px;
  padding: 9px 13px;
  background-color: var(--surface);
  color: var(--ink);
}
.fg button,
.fg select,
.fg summary {
  cursor: pointer;
}
.fg button:disabled {
  opacity: 0.5;
  cursor: default;
}
.fg a {
  color: var(--accent);
  text-underline-offset: 4px;
}
.fg-event-link {display:inline-flex;min-height:44px;align-items:center;margin-top:14px;padding:9px 13px;border:1px solid var(--accent);border-radius:8px;text-decoration:none;font-weight:700}
.fg :is(button, select, a, summary):focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}
.fg h1,
.fg h2 {
  font-family: "Guide Serif", Georgia, serif;
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.025em;
  overflow-wrap: break-word;
}
.fg h1 {
  font-size: clamp(36px, 4vw, 56px);
  margin: 16px 0;
}
.fg h2 {
  font-size: clamp(27px, 2.7vw, 34px);
  margin: 12px 0;
}
.fg h3 {
  font-size: 18px;
  margin: 23px 0 8px;
}
.fg p {
  margin: 13px 0;
}
.fg-header {
  position: relative;
  z-index: 5;
  min-height: 64px;
  flex-shrink: 0;
  padding: 8px clamp(12px, 2vw, 24px);
  display: flex;
  align-items: center;
  gap: 20px;
  border-bottom: 1px solid var(--line);
  background: var(--surface);
}
.fg-icon { width:24px; height:24px; flex:none; vertical-align:middle; fill:none; }
.fg-sheet-controls,.fg-sheet-story { display:none; }
.fg-bundled-notice { font-size:13px; line-height:1.5; color:var(--muted); }
/* Native disclosures keep keyboard behavior; their content overlays the map. */
.fg-map-options { position:relative; min-width:0; flex:none; }
.fg-map-options > summary { display:flex; list-style:none; width:44px; padding:9px; }
.fg-map-options summary::-webkit-details-marker { display:none; }
.fg-map-options > summary > span { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.fg-map-option-actions {
  position:absolute; z-index:6; top:calc(100% + 6px); right:0;
  display:grid; gap:6px; width:min(270px,calc(100vw - 24px)); padding:10px;
  border:1px solid var(--control-line); border-radius:10px; background:var(--surface);
  box-shadow:0 8px 24px #17171726;
}
.fg-map-options:not([open]) .fg-map-option-actions { display:none; }
.fg-map-option-actions > button { width:100%; justify-content:flex-start; text-align:start; }
.fg .fg-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 0 1 auto;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  font-family: "Guide Serif", Georgia, serif;
  line-height: 1.05;
}
.fg-brand-mark {
  width: 44px;
  height: 44px;
  flex: none;
}
.fg-brand-name {
  display: block;
  font-size: clamp(21px, 2vw, 29px);
  white-space: nowrap;
}
.fg-brand-name i {
  color: inherit;
}
.fg-brand-name strong {
  color: inherit;
}
.fg-brand small {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font: 10px/1.3 "Guide Sans", Arial, sans-serif;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.fg-header-actions,
.fg-desktop-preferences {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.fg-header-actions {
  margin-left: auto;
}
.fg .fg-back {
  width: 44px;
  flex: none;
  padding: 0;
  font-size: 23px;
  line-height: 1;
}
.fg-route-switch {
  width: clamp(155px, 18vw, 220px);
  min-width: 0;
}
.fg-language-control,
.fg-theme-control {
  display: grid;
  gap: 2px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
}
.fg-language-control select {
  max-width: 132px;
}
.fg-theme-control select {
  max-width: 115px;
}
/* A single preference disclosure is shared by desktop, mobile and previews. */
.fg-mobile-settings { display:block; position:relative; flex:none; }
.fg-mobile-settings > summary { display:flex; align-items:center; gap:7px; list-style:none; font-size:14px; }
.fg-mobile-settings > summary::-webkit-details-marker { display:none; }
.fg-mobile-settings[open] > summary { border-color:var(--accent); }
.fg-settings-panel {
  position:absolute; z-index:12; top:calc(100% + 8px); right:0;
  display:grid; gap:13px; width:min(280px,calc(100vw - 24px)); padding:17px;
  max-height:calc(var(--fg-viewport-height,100dvh) - 80px - env(safe-area-inset-bottom,0px));
  overflow:auto; border:1px solid var(--control-line); border-radius:10px;
  background:var(--surface); box-shadow:0 12px 30px #17171730;
}
.fg-settings-panel label { display:grid; gap:5px; color:var(--muted); font-size:13px; }
.fg-settings-panel select { width:100%; max-width:none; font-size:16px; }
.fg-select-wrap { position:relative; display:block; min-width:0; }
.fg-select-wrap select { appearance:none; width:100%; padding-inline-end:38px; }
.fg-select-wrap > .fg-icon { position:absolute; right:11px; top:50%; transform:translateY(-50%); width:18px; height:18px; pointer-events:none; }
.fg-disclosure-chevron { width:18px; height:18px; pointer-events:none; }
.fg-mobile-settings[open] > summary .fg-disclosure-chevron { transform:rotate(180deg); }
.fg-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }

.fg-body {
  min-height: 0;
  flex: 1;
  display: grid;
  grid-template-columns: minmax(340px, 440px) minmax(0, 1fr);
}
.fg[data-view="walk"] .fg-body {
  grid-template-columns: minmax(340px, 440px) minmax(0, 1fr);
}
.fg-editorial {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  padding: clamp(24px, 3vw, 44px);
  scroll-behavior: smooth;
}
.fg-intro {
  max-width: 550px;
  padding: 0 0 38px;
}
.fg-intro h1 {
  font-size: clamp(44px, 5vw, 70px);
  text-wrap: balance;
}
.fg-intro p {
  max-width: 38ch;
  font-size: 17px;
}
.fg-kicker {
  color: var(--accent);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.5;
  text-transform: uppercase;
}
.fg-map-shell {
  --paper: #f4f2ed;
  --surface: #ffffff;
  --ink: #222222;
  --muted: #646464;
  --line: #d6d4cf;
  --control-line: #777777;
  --accent: #2454d4;
  --focus: #2454d4;
  position: relative;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  background: #f8f1e6;
  color: var(--ink);
  color-scheme:light;
}
/* Map controls float above the canvas and never subtract map height. */
.fg-map-tools {
  position: absolute;
  z-index: 4;
  inset: 12px 12px auto auto;
  display: flex;
  align-items: flex-start;
  gap: 6px;
  max-width: calc(100% - 24px);
  padding: 0;
  border: 0;
  background: transparent;
  pointer-events: none;
}
.fg-map-tools > * { pointer-events:auto; }
.fg-map-tools :is(button,summary) {
  min-width:44px;
  min-height:44px;
  font-size:13px;
  line-height:1.25;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  box-shadow:0 2px 8px #17171716;
}
.fg-map-tools > button { max-width:175px; }
.fg-map {
  position:relative;
  grid-row:1;
  min-height:0;
}
.fg-map-status {
  position: absolute;
  z-index: 2;
  bottom: 24px;
  left: 16px;
  right: 16px;
  margin: 0;
  padding: 12px 16px;
  border: 1px solid var(--control-line);
  border-radius: 8px;
  background: var(--paper);
  font-size: 13px;
}
.fg-map-status[hidden] {
  display: none;
}
.fg-map-status button {
  margin-left: 12px;
}
.fg-route-card {
  border-top: 1px solid var(--line);
  padding: 26px 0 34px;
  margin: 0;
}
.fg-route-card p {
  font-size: 14px;
}
.fg-route-card dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin: 22px 0;
  font-size: 12px;
}
.fg-route-card dt {
  color: var(--muted);
  margin-bottom: 4px;
}
.fg-route-card dd {
  margin: 0;
  font-weight: 600;
  overflow-wrap: break-word;
}
.fg-photo {
  margin: 0 0 22px;
}
.fg-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.fg-photo figcaption {
  margin-top: 6px;
  color: var(--muted);
  font-size: 14px;
}
.fg-intro > .fg-photo img {
  height: 190px;
  aspect-ratio: auto;
}
.fg-photo-missing {
  margin-bottom: 22px;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
}
.fg-cover-empty {
  height: 190px;
  margin: 0 0 25px;
  background: var(--empty);
  border-radius: 8px;
}
.fg .fg-primary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  width: 100%;
  min-height: 50px;
  padding: 13px 17px;
  border: 1px solid var(--action);
  border-radius: 8px;
  background: var(--action);
  color: var(--action-ink);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}
.fg .fg-primary:hover {
  background: var(--action-hover);
  border-color: var(--action-hover);
}
.fg .fg-story-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-height: 48px;
  margin: 0 0 18px;
  padding: 12px 14px;
  border: 1px solid var(--accent);
  border-radius: 8px;
  background: var(--accent-soft);
  color: var(--accent);
  font: 600 14px / 1.4 "Guide Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  text-align: left;
  white-space: normal;
}
.fg .fg-story-button:hover { background: var(--surface); }
.fg .fg-story-button svg { flex-shrink: 0; }
.fg .fg-text-link {
  display: inline-block;
  min-height: 44px;
  padding: 9px 0;
  border: 0;
  background: transparent;
  color: var(--accent);
  font-size: 13px;
  text-decoration: underline;
  text-underline-offset: 5px;
}
.fg-panel-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 16px;
}
.fg-panel-head button {
  flex: none;
  font-size: 12px;
}
.fg-stop-copy h1 {
  font-size: clamp(32px, 3.6vw, 48px);
}
.fg-muted {
  color: var(--muted);
  font-size: 12px;
}
.fg-walk-actions {
  display: grid;
  gap: 10px;
  margin: 24px 0 16px;
}
.fg-walk-actions > a:not(.fg-primary) {
  min-height: 44px;
  display: grid;
  place-items: center;
  font-size: 13px;
  text-align: center;
}
.fg-progress {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
}
.fg .fg-progress button {
  min-width: 44px;
  border: 0;
  background: transparent;
}
.fg-stop-list {
  list-style: none;
  padding: 0;
}
.fg-stop-list li {
  border-bottom: 1px solid var(--line);
}
.fg-stop-list button {
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 14px 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
}
.fg-stop-list button[aria-current="step"] {
  border-left: 5px solid var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
  font-weight: 700;
}
.fg-stop-list span {
  min-width: 28px;
}
.fg-pin-anchor {
  width: 0;
  height: 0;
}
.fg .fg-pin-anchor .fg-pin {
  position: absolute;
  left: 0;
  top: 0;
  transform: translate(-50%, -50%);
}
.fg .fg-pin {
  min-width: 43px;
  min-height: 43px;
  padding: 3px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: #2454d4;
  box-shadow: 0 2px 8px #0004;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}
.fg .fg-pin.selected {
  outline: 3px solid #222222;
  outline-offset: 2px;
}
.fg .fg-pin-boat {
  background: #275c94;
}
.fg-transfer {
  list-style: none;
  margin: 28px 0;
  padding: 0;
  border-left: 2px dashed var(--boat);
}
.fg-transfer li {
  margin: 0 0 22px;
  padding-left: 20px;
}
.fg-transfer span {
  color: var(--boat);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.09em;
}
.fg-transfer h2 {
  font-size: 24px;
  margin: 6px 0;
}
.fg-transfer p {
  margin: 4px 0;
}
.fg-dialog {
  width: min(720px, calc(100vw - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)));
  max-height: calc(100dvh - 24px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  overflow: auto;
  padding: clamp(20px, 3vw, 38px);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
  color: var(--ink);
  font: inherit;
}
.fg-dialog::backdrop {
  background: #171717ad;
}
.fg-dialog h1 {
  font-size: clamp(34px, 4vw, 55px);
  text-wrap: balance;
}
.fg-dialog h2 {
  font-size: clamp(27px, 3vw, 36px);
  text-wrap: balance;
}
.fg-dialog .fg-close {
  display: block;
  position:sticky;
  top:0;
  z-index:3;
  margin-bottom: 24px;
}
.fg-dialog article {
  padding: 5px 0 19px;
  border-top: 1px solid var(--line);
}
.fg-place-list {
  display: grid;
  gap: 10px;
  margin-top: 24px;
}
.fg .fg-place-list button {
  width: 100%;
  text-align: left;
  border-color: var(--line);
  background: var(--paper);
  font-weight: 650;
}
.fg .fg-place-list button:hover {
  border-color: var(--accent);
}
.fg-dialog small {
  color: var(--muted);
}
.fg-loading {
  min-height: 100vh;
  padding: 45px;
  background: #f4f2ed;
  color: #222222;
  font: 18px/1.6 Arial, sans-serif;
}
@media (prefers-color-scheme: dark) {
  .fg-loading {
    background: #171717;
    color: #f4f2ed;
  }
}
.fg-loading button {
  margin-right: 12px;
  padding: 12px 18px;
  min-height:48px;
  font:inherit;
}
.fg-loading { padding:max(24px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(24px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px)); }
.fg-loading-actions { display:flex; gap:10px; flex-wrap:wrap; }
.fg-offline-banner {
  flex-shrink: 0;
  margin: 0 !important;
  padding: 7px 24px;
  background: var(--warning-surface);
  color: var(--warning);
  font-size: 12px;
}
@media (max-width: 767px) {
  .fg-header {
    min-height: 66px;
    padding: 9px 14px;
    gap: 8px;
  }
  .fg-brand-mark {
    width: 42px;
    height: 42px;
  }
  .fg-brand-name {
    font-size: clamp(18px, 2.8vw, 22px);
  }
  .fg-brand small {
    display: none;
  }
  .fg-desktop-preferences {
    display: none;
  }
  .fg-mobile-settings {
    display: block;
    position: relative;
    flex: none;
  }
  .fg-mobile-settings summary {
    display: flex;
    align-items: center;
    list-style: none;
    white-space: nowrap;
    font-size: 13px;
  }
  .fg-mobile-settings summary::-webkit-details-marker {
    display: none;
  }
  .fg[data-view="walk"] .fg-brand {
    display: none;
  }
  .fg[data-view="walk"] .fg-header-actions {
    width: 100%;
    gap: 8px;
  }
  .fg[data-view="walk"] .fg-route-switch {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    max-width: none;
  }
  .fg-body,
  .fg[data-view="walk"] .fg-body {
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  .fg[data-view="explore"] .fg-body {
    display: block;
    overflow: auto;
  }
  .fg[data-view="explore"] .fg-map-shell {
    display: none;
  }
  .fg[data-view="explore"] .fg-editorial {
    overflow: visible;
  }
  .fg-editorial {
    padding: 24px 20px 32px;
  }
  .fg-intro h1 {
    font-size: clamp(40px, 8.5vw, 60px);
  }
  .fg[data-view="walk"] .fg-map-shell {
    order: -1;
    flex: 1 1 auto;
    min-height: 0;
  }
  .fg[data-view="walk"] .fg-editorial {
    flex: 0 1 46%;
    min-height: 0;
    max-height: 46%;
    overflow: auto;
    padding: 18px 20px 25px;
    border-top: 1px solid var(--line);
    background:var(--surface);
    padding-top:0;
    overscroll-behavior:contain;
  }
  .fg-sheet-controls { position:sticky; top:0; z-index:4; display:flex; align-items:center; gap:6px; min-height:56px; padding:6px 0; background:var(--surface); border-bottom:1px solid var(--line); }
  .fg-sheet-controls > span { flex:1; min-width:0; font-size:13px; line-height:1.3; overflow-wrap:anywhere; }
  .fg-sheet-controls button { min-width:44px; padding:0; font-size:22px; }
  .fg-sheet-controls button[aria-pressed="true"] { color:var(--accent); border-color:var(--accent); background:var(--accent-soft); }
  .fg-sheet-content { padding-top:12px; min-width:0; }
  .fg[data-view="walk"][data-sheet="collapsed"] .fg-editorial { flex:0 1 auto; max-height:38%; }
  .fg[data-sheet="collapsed"] .fg-sheet-content > :is(.fg-photo,.fg-photo-error,.fg-panel-head),
  .fg[data-sheet="collapsed"] .fg-stop-copy > :is(p,.fg-text-link),
  .fg[data-sheet="collapsed"] .fg-walk-actions > :not(.fg-primary) { display:none; }
  .fg[data-sheet="collapsed"] .fg-stop-copy h1 { font-size:24px; margin:6px 0; }
  .fg[data-sheet="collapsed"] .fg-walk-actions { margin:10px 0; }
  .fg[data-sheet="collapsed"] .fg-sheet-content { padding-top:4px; }
  .fg[data-sheet="collapsed"] .fg-walk-actions:has([data-action="start"]) > .fg-primary { display:none; }
  .fg[data-sheet="collapsed"] .fg-walk-actions > [data-action="start"] { display:block; width:100%; background:var(--action); color:var(--action-ink); border-color:var(--action); }
  .fg[data-view="walk"][data-sheet="expanded"] .fg-map-shell { display:none; }
  .fg[data-view="walk"][data-sheet="expanded"] .fg-editorial { flex:1 1 auto; max-height:none; }
  .fg[data-sheet="expanded"] .fg-sheet-story { display:block; }
  .fg-sheet-story article { border-top:1px solid var(--line); }
  .fg-sheet-story small { color:var(--muted); font-size:14px; }
  .fg[data-sheet="expanded"] .fg-stop-copy > p { display:none; }
  .fg-map-status { max-height:45%; overflow:auto; inset-inline:10px; bottom:24px; }
  .fg-map-status button { margin:6px 0 0; }
  .fg[data-view="explore"] .fg-editorial { padding-bottom:max(32px,env(safe-area-inset-bottom,0px)); }
  .fg-settings-close { width:100%; }
  .fg :is(button,select,summary) { overflow-wrap:anywhere; }
  .fg .fg-settings-panel select { font-size:16px; }
  .fg[data-sheet="expanded"] .fg-sheet-content { max-width:650px; margin-inline:auto; }
  .fg-map-status {
    bottom: 20px;
    font-size: 12px;
  }
  .fg[data-view="walk"] .fg-photo img {
    height: 140px;
    aspect-ratio: 16 / 9;
  }
  .fg-stop-copy h1 {
    font-size: clamp(30px, 6vw, 40px);
  }
  .fg-dialog h1 {
    font-size: clamp(32px, 7vw, 46px);
  }
  .fg-route-card .fg-photo img {
    aspect-ratio: 16 / 9;
  }
}
@media (max-width: 420px) {
  .fg-header {
    padding-inline: 10px;
  }
  .fg-brand {
    gap: 7px;
  }
  .fg-brand-mark {
    width: 36px;
    height: 36px;
  }
  .fg-brand-name {
    font-size: 18px;
  }
  .fg-intro > .fg-photo img,
  .fg-cover-empty {
    height: 150px;
  }
  .fg-intro p {
    font-size: 15px;
  }
  .fg-route-card dl {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .fg[data-view="walk"] .fg-editorial {
    padding-inline: 16px;
  }
  .fg-dialog {
    width: calc(100vw - 16px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));
    padding: 19px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .fg * {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
}

/* Gallery and map share one guide; a single native dialog owns modal focus. */
.fg[data-view="walk"] .fg-dialog .fg-photo-missing { display:block; font-size:14px; }
.fg-photo-full img { width:auto; max-width:100%; margin-inline:auto; aspect-ratio: auto; height: auto; max-height: 62dvh; object-fit: contain; }
.fg-photo-cover img { aspect-ratio: 4 / 3; object-fit: cover; }
/* Retired stop-photo styles do not impose size containment on editorial panels. */
.fg-stop-preview {
  --fg-stop-preview-height: min(240px, max(44px, calc(33cqh - 28px)));
  margin-bottom: 14px;
}
.fg .fg-stop-preview-open,
.fg-stop-preview > .fg-photo-error {
  display: grid;
  place-items: center;
  width: 100%;
  height: var(--fg-stop-preview-height);
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: var(--empty);
}
.fg .fg-stop-preview-open { cursor: zoom-in; }
.fg[data-view="walk"] .fg-stop-preview img {
  width: 100%;
  height: var(--fg-stop-preview-height);
  min-width: 0;
  min-height: 0;
  max-height: var(--fg-stop-preview-height);
  aspect-ratio: auto;
  object-fit: contain;
  object-position: center !important;
}
.fg-stop-preview > .fg-photo-error {
  align-content: center;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  overflow: auto;
  padding: 2px 6px;
}
.fg-stop-preview > .fg-photo-error .fg-photo-missing { margin: 0; padding: 0; }
.fg-stop-preview > .fg-photo-error button { min-height: 44px; padding: 6px 12px; }
.fg .fg-open-photo { display:block; width:100%; padding:0; border:0; border-radius:0; background:transparent; text-align:left; }
.fg-gallery-stage { min-width:0; touch-action:pan-y; }
.fg-gallery .fg-photo { margin:0; }
.fg-gallery-controls { display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; margin:12px 0; font-size:14px; }
.fg-gallery-controls button { min-width:44px; }
.fg-thumbnails { display:flex; gap:9px; overflow-x:auto; padding:5px 3px 10px; }
.fg .fg-thumbnails button { width:80px; flex:none; padding:3px; border:2px solid transparent; background:transparent; border-radius:0; }
.fg .fg-thumbnails button[aria-pressed="true"] { border-color:var(--accent); }
.fg-thumbnails img { height:72px; aspect-ratio:1; object-fit:cover; }
.fg-reference-note { color:var(--muted); font-size:14px; line-height:1.5; }
.fg-dialog.fg-lightbox { width:min(1080px,calc(100vw - 20px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px))); max-height:calc(100dvh - 20px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)); padding:16px 24px; }
.fg-dialog.fg-lightbox h1 { font-size:24px; margin:10px 0; }
.fg-dialog.fg-lightbox .fg-close { margin-bottom:10px; }
.fg-lightbox .fg-photo-full img { max-height:65dvh; }
.fg-lightbox .fg-thumbnails { justify-content:center; }
.fg-photo-zoomed .fg-gallery-stage { max-height:68dvh; overflow:auto; touch-action:pan-x pan-y; }
.fg-photo-zoomed .fg-photo-full img { width:200%; max-width:none; max-height:none; }
.fg-photo-zoomed .fg-open-photo { overflow:visible; }
.fg .fg-gallery-link { display:block; }
.fg-photo-error { padding-block:12px; }
.fg .fg-stop-list .fg-list-gallery { padding:6px 10px 12px 52px; color:var(--accent); font-size:14px; }
.fg-location-controls { display:flex; align-items:flex-start; flex-wrap:nowrap; gap:6px; min-width:0; position:relative; }
.fg-location-controls > button { min-width:0; max-width:180px; }
.fg-location-controls:empty { display:none; }
.fg-location-copy { display:block; flex:none; position:relative; font-size:12px; color:var(--muted); line-height:1.4; }
.fg-location-copy > summary { width:44px; padding:9px; list-style:none; }
.fg-location-copy > summary::-webkit-details-marker { display:none; }
.fg-location-copy > p,.fg-location-copy > .fg-privacy-panel {
  position:absolute; z-index:6; right:0; top:calc(100% + 6px);
  width:min(280px,calc(100vw - 24px)); max-height:45dvh; overflow:auto;
  margin:0; padding:14px; text-align:start; font-size:13px; line-height:1.5;
  border:1px solid var(--control-line); border-radius:10px; background:var(--surface);
  box-shadow:0 8px 24px #17171726;
}
.fg-location-dot { width:18px; height:18px; background:#2454d4; border:3px solid #fff; border-radius:50%; box-shadow:0 0 0 1px #2454d4; }
.fg[data-location="stale"] .fg-location-dot { background:#777; box-shadow:0 0 0 1px #777; }
@media (max-width:767px) {
  .fg[data-view="walk"] .fg-dialog .fg-photo-full img { width:auto; max-width:100%; height:auto; aspect-ratio:auto; max-height:55dvh; object-fit:contain; }
  .fg[data-view="walk"] .fg-thumbnails .fg-photo img { width:100%; height:72px; aspect-ratio:1; object-fit:cover; }
  .fg-dialog { padding-bottom:max(20px,env(safe-area-inset-bottom)); }
  .fg-dialog.fg-lightbox { padding:14px; padding-bottom:max(14px,env(safe-area-inset-bottom,0px)); }
  .fg[data-view="walk"] .fg-dialog.fg-photo-zoomed .fg-photo-full img { width:200%; max-width:none; max-height:none; height:auto; }
  .fg-lightbox .fg-thumbnails { justify-content:flex-start; }
  .fg-header { padding-top:max(9px,env(safe-area-inset-top)); }
  .fg[data-view="walk"] .fg-editorial { padding-bottom:max(25px,env(safe-area-inset-bottom)); }
}
@media (min-width:600px) and (max-height:550px) and (orientation:landscape) {
  .fg-body,.fg[data-view="walk"] .fg-body { display:grid; grid-template-columns:minmax(230px,40%) minmax(0,1fr); }
  .fg[data-view="walk"] .fg-map-shell { order:0; min-height:0; }
  .fg[data-view="walk"] .fg-editorial { max-height:none; height:auto; }
  .fg-dialog.fg-lightbox { padding:10px 16px; padding-bottom:max(10px,env(safe-area-inset-bottom,0px)); }
  .fg[data-view="walk"] .fg-map-shell { grid-column:1; grid-row:1; display:grid; }
  .fg[data-view="walk"] .fg-editorial { grid-column:2; grid-row:1; max-height:none; border-top:0; border-left:1px solid var(--line); }
  .fg[data-view="walk"][data-sheet="expanded"] .fg-map-shell { display:none; }
  .fg[data-view="walk"][data-sheet="expanded"] .fg-editorial { grid-column:1 / -1; }
  .fg[data-view="walk"][data-sheet="collapsed"] .fg-editorial { max-height:none; }
  .fg[data-view="walk"] .fg-body { grid-template-columns:minmax(230px,50%) minmax(0,1fr); }
}

/* Optional measurement is independent of location permission and guide navigation. */
.fg-measurement { max-width: 100%; min-width: 0; font: 13px/1.45 var(--sans,Arial,sans-serif); color: var(--ink); }
.fg-measurement > label { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; padding: 7px 0; }
.fg .fg-measurement input[type="checkbox"] { width: 20px; height: 20px; min-height: 20px; flex: 0 0 20px; margin: 2px 0 0; accent-color: #315dd7; }
.fg-measurement details { max-width: 300px; }
.fg-measurement summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; text-decoration: underline; text-underline-offset: 3px; }
.fg-measurement details p { white-space: normal; overflow-wrap: anywhere; margin: 4px 0 12px; }
.fg-desktop-preferences [data-measurement-preference] { max-width: 230px; }
.fg-source-note { font: 12px/1.5 var(--sans,Arial,sans-serif); border-left: 3px solid #315dd7; padding-left: 10px; color: var(--muted); }
.fg-vignette { margin: 20px 0; text-align: center; }
.fg-vignette img { display: block; width: auto; max-width: 100%; height: auto; max-height: 240px; margin: 0 auto; object-fit: contain; }

/* Story hierarchy uses readable paragraphs and quiet, expandable evidence. */
.fg-place-story { margin-block:16px; font-size:16px; line-height:1.55; }
.fg-place-story h2,.fg-place-story h3 { font-family:"Guide Sans",Arial,sans-serif; font-size:14px; font-weight:700; line-height:1.45; letter-spacing:0; margin:0 0 6px; }
.fg-place-story p { margin:0 0 12px; }
.fg-interesting-detail { border-left:3px solid var(--accent); padding:8px 12px; background:var(--accent-soft); border-radius:0 6px 6px 0; }
.fg-interesting-detail p { margin:0; }
.fg-story-sources,.fg-photo-ideas { margin:14px 0; }
.fg-story-sources summary { border:0; padding:8px 0; color:var(--accent); background:transparent; font-size:14px; }
.fg-story-sources ul { margin:4px 0; padding-left:20px; font-size:14px; line-height:1.5; }
.fg-story-sources li { margin:10px 0; overflow-wrap:anywhere; }
.fg-story-sources small { display:block; font-size:12px; color:var(--muted); }
.fg-route-guidance { line-height:1.55; }
.fg-vignette { max-width:280px; margin:18px auto; }
.fg-vignette img { max-height:240px; }
.fg-photo-ideas { clear:both; }
.fg[data-sheet="collapsed"] .fg-stop-copy > :is(.fg-stop-preview,.fg-place-story,.fg-story-sources) { display:none; }
.fg-dialog:not(.fg-lightbox) .fg-gallery-stage { background:var(--empty); border-radius:6px; }
.fg-dialog:not(.fg-lightbox) .fg-gallery .fg-photo-full img { width:100%; height:auto; max-height:min(260px,33dvh); object-fit:contain; object-position:center !important; }

/* Private compact previews spend their height on one meaningful map. The
   explicit flag cannot alter the public guide or reduce type with CSS zoom. */
.fg[data-compact-preview="true"] { min-height:0; overflow:hidden; }
.fg[data-compact-preview="true"] .fg-header { min-height:44px; padding:0 4px; gap:4px; border-bottom:1px solid var(--line); }
.fg[data-compact-preview="true"] .fg-header-actions { flex:1; width:auto; min-width:0; gap:4px; display:flex; flex-wrap:nowrap; }
.fg[data-compact-preview="true"] .fg-brand { flex:0 0 36px; min-width:36px; min-height:44px; padding:4px; }
.fg[data-compact-preview="true"] .fg-brand-name,.fg[data-compact-preview="true"] .fg-back,.fg[data-compact-preview="true"] .fg-desktop-preferences { display:none; }
.fg[data-compact-preview="true"] .fg-brand-mark { width:28px; }
.fg[data-compact-preview="true"] .fg-route-switch { min-width:0; width:100%; flex:1; padding:4px; font-size:14px; }
.fg[data-compact-preview="true"] .fg-mobile-settings { display:block; flex:none; }
.fg[data-compact-preview="true"] .fg-mobile-settings summary,.fg[data-compact-preview="true"] .fg-preview-panel-toggle { padding:4px 7px; font-size:14px; white-space:nowrap; }
.fg[data-compact-preview="true"] .fg-settings-panel { z-index:20; max-height:calc(100dvh - 48px); overflow:auto; }
.fg[data-compact-preview="true"] .fg-body { position:relative; flex:1; min-height:0; display:block; }
.fg[data-compact-preview="true"] .fg-map-shell { display:block !important; position:absolute; inset:0; min-height:0; width:100%; height:100%; }
.fg[data-compact-preview="true"] .fg-map { position:absolute; inset:0; min-height:0; }
.fg[data-compact-preview="true"] .fg-map-tools { position:absolute; right:6px; top:6px; left:auto; z-index:3; display:flex; gap:4px; width:auto; padding:0; background:transparent; }
.fg[data-compact-preview="true"] .fg-map-options { width:auto; max-width:min(280px,calc(100vw - 16px)); background:var(--surface); border-radius:8px; }
.fg[data-compact-preview="true"] .fg-map-options > summary { min-height:44px; padding:6px 10px; font-size:14px; }
.fg[data-compact-preview="true"] .fg-map-option-actions { padding:6px; }
.fg[data-compact-preview="true"] .fg-map-status:empty { display:none; }
.fg[data-compact-preview="true"] .fg-map-status:not(:empty) { position:absolute; bottom:20px; left:6px; right:6px; z-index:4; max-height:45%; overflow:auto; }
.fg[data-compact-preview="true"] .fg-editorial { position:absolute; inset:0; z-index:5; width:100%; height:100%; max-height:none; min-height:0; overflow:auto; padding:12px 16px 24px; border:0; background:var(--surface); container-type:normal; }
.fg[data-compact-preview="true"] .fg-editorial[hidden] { display:none; }
.fg[data-compact-preview="true"] .fg-sheet-controls { display:none; }
.fg[data-compact-preview="true"] .fg-sheet-story { display:block; }
.fg[data-compact-preview="true"] .fg-editorial h1 { font-size:28px; }
.fg[data-compact-preview="true"] .fg-stop-preview { --fg-stop-preview-height:min(180px,33dvh); }
@media(max-width:600px) { .fg-vignette img { max-height: 180px; } }

/* Manual walking: one persistent action, independent map/inspection views. */
.fg { min-height:0; height:var(--fg-viewport-height,100dvh); }
.fg-view-tabs { display:flex; gap:8px; padding:8px clamp(14px,2vw,24px); border-bottom:1px solid var(--line); background:var(--surface); flex:0 0 auto; }
.fg-view-tabs[hidden],.fg-walking-dock[hidden] { display:none; }
.fg-view-tabs button { flex:1; min-width:0; min-height:44px; max-width:180px; font-size:14px; }
.fg-view-tabs button[aria-pressed="true"] { color:var(--action-ink); background:var(--action); border-color:var(--action); font-weight:700; }
.fg-walking-dock { flex:0 0 auto; display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,1fr); align-items:center; gap:14px; padding:12px clamp(16px,2vw,28px) max(12px,env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); background:var(--surface); position:relative; z-index:7; }
.fg-walking-target { min-width:0; }
.fg-walking-target h2 { margin:3px 0 0; font:600 clamp(17px,2vw,22px)/1.25 "Guide Sans",Arial,sans-serif; overflow-wrap:anywhere; }
.fg-dock-actions { min-width:0; }
.fg-dock-actions > .fg-primary { width:100%; min-height:48px; padding:10px 14px; white-space:normal; line-height:1.25; }
.fg-dock-secondary { display:flex; flex-wrap:wrap; align-items:center; gap:0 12px; margin-top:4px; }
.fg-dock-secondary > :is(a,button) { display:flex; align-items:center; min-height:44px; font-size:12px; line-height:1.2; padding:4px 0; border:0; background:transparent; color:var(--ink); text-align:start; }
.fg-dock-secondary a { flex:1 1 160px; text-decoration:underline; text-underline-offset:3px; }
.fg-dock-secondary .fg-icon { width:16px; height:16px; margin-inline:3px; }
.fg-duration { font-size:14px; line-height:1.5; margin:18px 0; }
.fg-duration small { display:block; margin-top:5px; color:var(--muted); }
.fg-compact-empty { display:block !important; margin:10px 0; padding:10px 12px; border-left:2px solid var(--line); font-size:13px; line-height:1.35; background:var(--empty); }
.fg-photo-kind { font-size:12px; font-weight:600; margin:10px 0 3px; }
.fg-photo-stop-select { display:grid; gap:8px; font-size:14px; margin:12px 0; }
.fg-photo-stop-select select { width:100%; min-width:0; font-size:16px; }
.fg-stop-list li { flex-wrap:wrap; }
.fg-stop-list small { display:block; margin-top:3px; font-size:12px; color:var(--muted); }
.fg-stop-list .fg-list-resume { margin:0 0 10px 45px; width:calc(100% - 45px); min-height:44px; font-size:12px; font-weight:400; padding:5px 8px; text-decoration:underline; }
.fg-dialog-target { position:sticky; top:-1px; margin:0 -4px 8px; padding:8px 4px; background:var(--surface); border-bottom:1px solid var(--line); color:var(--muted); font-size:13px; z-index:2; }
.fg .fg-pin-inspected { background:#fffaf2; color:#203b38; border:3px dashed #203b38; box-shadow:0 2px 7px #0002; }
.fg-sheet-handle { touch-action:none; display:grid; place-items:center; flex:0 0 44px; }
.fg-sheet-handle span { width:22px; height:4px; border-radius:4px; background:var(--muted); }
.fg-sheet-controls button small { display:block; font-size:10px; line-height:1.1; padding:1px 3px; }
.fg-map-legend i { display:inline-block; width:7px; height:7px; border:1px solid currentColor; border-radius:50%; background:currentColor; }
.fg-map-legend .fg-legend-inspected { background:transparent; }
.fg-map-legend { position:absolute; top:calc(100% + 6px); right:0; max-width:260px; font-size:11px; line-height:1.3; padding:3px 8px; color:#203b38; background:#fffaf2; border:1px solid #b9beb9; border-radius:4px; pointer-events:none; }
.fg-transfer li[aria-current="step"] { border-inline-start:3px solid var(--action); padding-inline-start:12px; }
@media(max-width:767px) {
  .fg-view-tabs { gap:6px; padding:6px max(12px,env(safe-area-inset-left,0px)) 6px max(12px,env(safe-area-inset-right,0px)); }
  .fg-view-tabs button { max-width:none; font-size:13px; padding:5px; }
  .fg-walking-dock { grid-template-columns:minmax(0,1fr); gap:6px; padding:8px 14px max(8px,env(safe-area-inset-bottom,0px)); }
  .fg-walking-target h2 { font-size:17px; }
  .fg-walking-target .fg-kicker { font-size:10px; }
  .fg-dock-actions > .fg-primary { min-height:46px; font-size:14px; }
  .fg-dock-secondary { gap:0 12px; margin:0; }
  .fg-dock-secondary > :is(a,button) { font-size:11px; }
  .fg-dock-secondary a { flex:1 1 120px; }
  .fg[data-view="walk"][data-panel="map"] .fg-editorial { flex:0 1 34%; max-height:34%; padding-inline:14px; }
  .fg[data-view="walk"][data-panel="map"][data-sheet="collapsed"] .fg-editorial { flex:0 0 54px; max-height:54px; }
  .fg[data-view="walk"][data-panel="map"][data-sheet="collapsed"] .fg-sheet-content { display:none; }
  .fg[data-view="walk"][data-panel="map"][data-sheet="expanded"] .fg-editorial { flex:1 1 auto; max-height:none; }
  .fg[data-view="walk"][data-panel="stops"] .fg-map-shell,.fg[data-view="walk"][data-panel="photos"] .fg-map-shell { display:none; }
  .fg[data-view="walk"][data-panel="stops"] .fg-editorial,.fg[data-view="walk"][data-panel="photos"] .fg-editorial { flex:1 1 auto; max-height:none; padding-inline:16px; }
  .fg[data-panel="stops"] .fg-sheet-controls,.fg[data-panel="photos"] .fg-sheet-controls { display:none; }
  .fg-sheet-controls { height:52px; min-height:52px; gap:3px; padding:4px 0; }
  .fg-sheet-controls button { line-height:1; }
  .fg-sheet-controls button .fg-icon { width:18px; height:18px; }
  .fg-sheet-controls > [role="status"] { font-size:11px; }
  .fg-sheet-controls button { flex:0 0 48px; min-height:44px; font-size:16px; }
  .fg-sheet-controls button small { font-size:9px; }
  .fg-stop-copy h1 { font-size:clamp(24px,7vw,34px); margin:8px 0 12px; }
  .fg-stop-preview { --fg-stop-preview-height:min(150px,22dvh); }
  .fg[data-sheet="expanded"] .fg-stop-copy > .fg-compact-empty { display:block; }
  .fg[data-compact-preview="true"] .fg-walking-dock { padding:6px 10px; }
  .fg[data-compact-preview="true"] .fg-dock-secondary { display:none; }
}
@media(max-height:600px) and (max-width:767px) {
  .fg-walking-dock { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; padding-top:6px; }
  .fg-walking-target h2 { font-size:14px; }
  .fg-dock-secondary { display:none; }
  .fg[data-view="walk"][data-panel="map"] .fg-body { display:block; position:relative; }
  .fg[data-view="walk"][data-panel="map"] .fg-map-shell { display:grid; height:100%; }
  .fg[data-view="walk"][data-panel="map"] .fg-editorial { position:absolute; right:8px; bottom:8px; z-index:4; width:min(270px,48%); max-height:48%; border:1px solid var(--line); border-radius:6px; }
  .fg[data-view="walk"][data-panel="map"][data-sheet="expanded"] .fg-editorial { inset:0; width:100%; max-height:none; }
  .fg[data-view="walk"][data-panel="map"][data-sheet="expanded"] .fg-map-shell { display:none; }
  .fg-sheet-controls > [role="status"] { display:none; }
  .fg-sheet-controls button { flex:1; }
}

/* The editor’s compact preview keeps its map visible while details are closed. */
.fg[data-compact-preview="true"] .fg-map-shell { display:block !important; }

/* Main Walk presentation: the desktop map fills the area below the header. Keeping
   route visibility separate from this flag preserves the editor's Full preview. */
.fg[data-main-focus="true"] {
  display:grid;
  grid-template-columns:320px minmax(0,1fr);
  grid-template-rows:64px auto minmax(0,1fr) auto;
  overflow:hidden;
}
.fg[data-main-focus="true"] .fg-header {
  grid-column:1 / -1; grid-row:1; height:64px; min-height:64px; padding-block:8px;
}
.fg[data-main-focus="true"] .fg-brand { display:flex; }
.fg[data-main-focus="true"] .fg-header-actions { width:auto; margin-left:auto; }
.fg[data-main-focus="true"] .fg-body { display:contents; }
.fg[data-main-focus="true"] .fg-view-tabs {
  grid-column:1; grid-row:2; padding:10px 12px; gap:6px; border-right:1px solid var(--line);
}
.fg[data-main-focus="true"] .fg-view-tabs button { min-width:0; padding:6px; font-size:12px; }
.fg[data-main-focus="true"] .fg-editorial {
  grid-column:1; grid-row:3; padding:20px; border-right:1px solid var(--line);
  background:var(--surface); overflow:auto; min-height:0; max-height:none;
}
.fg[data-main-focus="true"] .fg-map-shell {
  grid-column:2; grid-row:2 / 5; display:grid; min-height:0; min-width:0; height:auto;
}
.fg[data-main-focus="true"] .fg-walking-dock {
  grid-column:1; grid-row:4; display:grid; grid-template-columns:minmax(0,1fr);
  gap:8px; padding:12px 18px max(12px,env(safe-area-inset-bottom,0px));
  border-right:1px solid var(--line);
}
.fg[data-main-focus="true"] .fg-walking-dock[hidden] { display:none; }
.fg[data-main-focus="true"] .fg-walking-target h2 { font-size:17px; }
.fg[data-main-focus="true"] .fg-dock-secondary { column-gap:12px; }
.fg[data-main-focus="true"] .fg-dock-secondary > :is(a,button) { font-size:12px; }
.fg[data-main-focus="true"] .fg-dock-secondary a { flex-basis:100%; }
.fg[data-main-focus="true"] .fg-stop-copy h1 { font-size:32px; }
.fg[data-main-focus="true"] .fg-panel-head { margin-bottom:12px; }
.fg[data-main-focus="true"] .fg-stop-preview { --fg-stop-preview-height:min(180px,26dvh); }
.fg-main-summary { min-width:0; }
.fg-main-summary h1 { font-size:40px; margin:8px 0 14px; }
.fg-main-summary > p { font-size:14px; }
.fg-main-summary dl { display:grid; gap:13px; margin:20px 0; font-size:13px; }
.fg-main-summary dl > div { min-width:0; }
.fg-main-summary dt { color:var(--muted); font-size:12px; }
.fg-main-summary dd { margin:2px 0 0; font-weight:600; overflow-wrap:anywhere; }
.fg-main-summary .fg-duration { margin:18px 0; font-size:13px; }
.fg-main-summary .fg-primary { margin-top:18px; }
.fg-main-summary .fg-bundled-notice { margin-top:14px; font-size:12px; }
.fg-legacy-route-notice { padding:10px 12px; border-left:3px solid var(--accent); border-radius:4px; background:var(--accent-soft); font-size:13px; }

@media (max-width:767px) {
  .fg[data-main-focus="true"] {
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:56px minmax(0,1fr) auto auto auto;
  }
  .fg[data-main-focus="true"] .fg-header { height:56px; min-height:56px; padding:6px 10px; gap:8px; }
  .fg[data-main-focus="true"] .fg-brand { gap:7px; }
  .fg[data-main-focus="true"] .fg-brand-mark { width:34px; height:34px; }
  .fg[data-main-focus="true"] .fg-brand-name { font-size:18px; }
  .fg[data-main-focus="true"] .fg-header-actions { gap:6px; }
  .fg[data-main-focus="true"] .fg-preferences > summary { min-height:44px; max-width:145px; padding:8px; font-size:13px; white-space:normal; }
  .fg[data-main-focus="true"] .fg-settings-panel { max-height:calc(var(--fg-viewport-height,100dvh) - 74px); }
  .fg[data-main-focus="true"] .fg-map-shell { grid-column:1; grid-row:2; display:grid; height:auto; }
  .fg[data-main-focus="true"] .fg-view-tabs {
    grid-column:1; grid-row:3; position:relative; z-index:4; padding:6px 12px;
    border:1px solid var(--line); border-radius:16px 16px 0 0; box-shadow:0 -4px 20px #17171714;
  }
  .fg[data-main-focus="true"] .fg-view-tabs button { font-size:13px; }
  .fg[data-main-focus="true"] .fg-editorial {
    grid-column:1; grid-row:4; position:relative; inset:auto; z-index:4;
    width:auto; height:auto; max-height:min(36dvh,310px); padding:0 14px 14px;
    flex:none; border:0; border-bottom:1px solid var(--line); border-radius:0;
  }
  .fg[data-main-focus="true"][data-view="explore"][data-sheet="collapsed"] .fg-editorial { max-height:min(34dvh,285px); }
  .fg[data-main-focus="true"][data-view="explore"][data-sheet="standard"] .fg-editorial { max-height:min(46dvh,400px); }
  .fg[data-main-focus="true"][data-view="explore"][data-sheet="expanded"] .fg-editorial { max-height:min(70dvh,650px); }
  /* Use a viewport bound: the old percentage bound sized an auto grid row
     from its unbounded content, leaving a blank gap after removing photos. */
  .fg[data-main-focus="true"][data-view="walk"][data-panel="map"][data-sheet="standard"] .fg-editorial { max-height:min(36dvh,310px); }
  .fg[data-main-focus="true"] .fg-editorial { scroll-padding-top:64px; }
  .fg[data-main-focus="true"][data-view="walk"][data-panel="map"][data-sheet="collapsed"] .fg-editorial { max-height:52px; height:52px; }
  .fg[data-main-focus="true"][data-view="walk"][data-panel="map"][data-sheet="collapsed"] .fg-sheet-content { display:none; }
  .fg[data-main-focus="true"][data-view="walk"][data-panel="map"][data-sheet="expanded"] .fg-editorial,
  .fg[data-main-focus="true"][data-panel="stops"] .fg-editorial,
  .fg[data-main-focus="true"][data-panel="photos"] .fg-editorial { max-height:min(54dvh,520px); padding-bottom:18px; }
  .fg[data-main-focus="true"][data-sheet="expanded"] .fg-map-shell,
  .fg[data-main-focus="true"][data-panel="stops"] .fg-map-shell,
  .fg[data-main-focus="true"][data-panel="photos"] .fg-map-shell { display:grid; }
  .fg[data-main-focus="true"] .fg-walking-dock {
    grid-column:1; grid-row:5; z-index:5; gap:6px;
    padding:8px 14px max(8px,env(safe-area-inset-bottom,0px)); border:0;
  }
  .fg[data-main-focus="true"] .fg-walking-target h2 { font-size:16px; }
  .fg[data-main-focus="true"] .fg-dock-secondary { gap:0 12px; }
  .fg[data-main-focus="true"] .fg-dock-secondary a { flex:1 1 120px; }
  .fg[data-main-focus="true"] .fg-dock-secondary > :is(a,button) { font-size:11px; }
  .fg[data-main-focus="true"] .fg-stop-copy h1 { font-size:28px; }
  .fg[data-main-focus="true"] .fg-stop-preview { --fg-stop-preview-height:min(160px,24dvh); }
  .fg-main-summary h1 { font-size:30px; margin:8px 0; }
  .fg-main-summary dl { grid-template-columns:1fr 1fr; gap:10px; margin:12px 0; }
  .fg-main-summary .fg-duration { margin:12px 0; }
  .fg-main-summary .fg-primary { margin-top:12px; }
  .fg-map-tools { inset:8px 8px auto auto; max-width:calc(100% - 16px); gap:4px; }
  .fg-map-tools :is(button,summary) { font-size:12px; padding:7px; }
  .fg-map-tools > button { max-width:130px; }
  .fg-location-controls { gap:4px; }
  .fg-location-controls > button { max-width:115px; }
  .fg-map-options > summary,.fg-location-copy > summary { width:44px; padding:10px; }
  .fg-map-options .fg-map-option-actions { right:0; left:auto; grid-template-columns:1fr; }
  .fg-map-legend { max-width:210px; font-size:10px; }
  .fg-map-status { bottom:24px; max-height:40%; }
}
@media (max-width:767px) and (max-height:550px) {
  .fg[data-main-focus="true"] .fg-view-tabs { padding:4px 10px; }
  .fg[data-main-focus="true"] .fg-editorial { max-height:28dvh; }
  .fg[data-main-focus="true"][data-view="explore"] .fg-editorial { max-height:38dvh; }
  .fg[data-main-focus="true"] .fg-walking-dock { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; padding-top:6px; }
  .fg[data-main-focus="true"] .fg-dock-secondary { display:none; }
  .fg[data-main-focus="true"] .fg-walking-target h2 { font-size:14px; }
  .fg[data-main-focus="true"] .fg-sheet-controls > [role="status"] { display:none; }
  .fg[data-main-focus="true"] .fg-sheet-controls button { flex:1; }
  .fg[data-main-focus="true"][data-sheet="expanded"] .fg-editorial { max-height:45dvh; }
}

@media (min-width:600px) and (max-width:767px) and (max-height:550px) {
  .fg[data-main-focus="true"][data-view="explore"] .fg-main-summary { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); column-gap:18px; }
  .fg[data-main-focus="true"] .fg-main-summary > .fg-kicker { grid-column:1; grid-row:1; }
  .fg[data-main-focus="true"] .fg-main-summary > h1 { grid-column:1; grid-row:2; font-size:25px; }
  .fg[data-main-focus="true"] .fg-main-summary > .fg-primary { grid-column:2; grid-row:1 / 3; align-self:center; margin:0; }
  .fg[data-main-focus="true"] .fg-main-summary > :is(dl,p) { grid-column:1 / -1; }
}
@media (min-width:768px) {
  .fg[data-main-focus="true"][data-sheet="collapsed"] .fg-stop-copy > :is(.fg-stop-preview,.fg-place-story,.fg-story-sources) { display:block; }
}

.fg-photo-changes { display:block; margin-top:6px; line-height:1.4; }

/* The five existing ideas stay in their original order behind a native disclosure. */
.fg-photo-ideas > summary { display:flex; align-items:center; gap:12px; width:100%; min-height:64px; padding:14px; border:2px solid var(--accent); border-radius:12px; background:var(--surface); color:var(--ink); list-style:none; cursor:pointer; }
.fg-photo-ideas > summary::-webkit-details-marker { display:none; }
.fg-photo-ideas > summary > span { flex:1; min-width:0; }
.fg-photo-ideas > summary strong { display:block; font-size:17px; line-height:1.35; font-weight:650; }
.fg-photo-ideas > summary small { display:block; margin-top:5px; font-size:13px; line-height:1.45; color:var(--muted); }
.fg-photo-ideas > summary > .fg-icon { flex-shrink:0; color:var(--accent); }
.fg-photo-ideas[open] > summary > .fg-icon:last-child { transform:rotate(180deg); }
.fg-photo-ideas > summary:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
.fg-photo-ideas > article { padding:8px 2px; }

/* Keep Korean words together; use strict CJK punctuation and balanced Japanese headings. */
.fg:lang(ko) :is(p,h1,h2,h3,button,summary,label,figcaption,li,small,strong,span) { word-break:keep-all; overflow-wrap:break-word; }
.fg:lang(zh),.fg:lang(ja) { line-break:strict; }
.fg:lang(ja) .fg-photo-ideas > summary strong { text-wrap:balance; }

/* One native attribution disclosure; preserve every provider credit/link.
   The global 44px summary rule formerly repeated MapLibre's 24px background. */
.fg .maplibregl-ctrl-bottom-right { max-width:100%; }
.fg .maplibregl-ctrl-attrib.maplibregl-compact { box-sizing:border-box; width:44px; min-height:44px; margin:6px; padding:0; border-radius:22px; background:#fff; color:#172a2a; box-shadow:0 1px 5px #0002; }
.fg .maplibregl-ctrl-attrib.maplibregl-compact-show { width:auto; max-width:calc(100% - 12px); min-height:44px; padding:8px 48px 8px 12px; border-radius:12px; }
.fg .maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button { width:44px; height:44px; min-height:44px; padding:0; border:0; border-radius:50%; background-color:transparent; background-repeat:no-repeat; background-position:center; background-size:24px; }
.fg .maplibregl-ctrl-attrib-inner { max-height:100px; overflow:auto; font:11px/1.4 Arial,sans-serif; white-space:normal; overflow-wrap:anywhere; }
.fg .maplibregl-ctrl-attrib-inner a { color:#172a2a; }
.fg-endpoint-anchor { width:0; height:0; z-index:2; }
.fg-endpoint-dot { position:absolute; width:10px; height:10px; left:-5px; top:-5px; border:2px solid #fff; border-radius:50%; background:#2454d4; box-shadow:0 0 0 1px #172a2a; }
.fg .fg-endpoint-label { position:absolute; left:0; display:flex; align-items:center; gap:5px; width:max-content; max-width:125px; min-height:44px; padding:6px 9px; border:2px solid #2454d4; background:#fff; color:#172a2a; box-shadow:0 1px 5px #0002; font-size:12px; font-weight:700; line-height:1.2; white-space:nowrap; }
.fg-endpoint-start .fg-endpoint-label { top:0; left:28px; transform:translateY(-50%); }
.fg-endpoint-finish .fg-endpoint-label { top:0; left:-28px; transform:translate(-100%,-50%); }
.fg-endpoint-label::before { content:""; position:absolute; top:calc(50% - 1px); width:26px; height:2px; background:#2454d4; pointer-events:none; }
.fg-endpoint-start .fg-endpoint-label::before { right:100%; }
.fg-endpoint-finish .fg-endpoint-label::before { left:100%; }
.fg-endpoint-anchor[data-active="true"] .fg-endpoint-dot { display:none; }
.fg-endpoint-anchor[data-active="true"] .fg-endpoint-label::before { width:5px; }
.fg-endpoint-label .fg-icon { width:16px; height:16px; flex:none; }
.fg .fg-direct-ideas { margin-top:16px; }
.fg .fg-direct-ideas > h2 { display:flex; gap:10px; align-items:flex-start; font:650 18px/1.35 "Guide Sans",Arial,sans-serif; }
.fg-direct-ideas > h2 .fg-icon { flex:none; margin-top:2px; }
.fg[data-panel="photos"] .fg-ideas-panel > h1 { font-size:24px; margin:6px 0; }
@media(max-width:767px) { .fg-view-tabs { gap:5px; } .fg-view-tabs button { padding:7px 4px; font-size:12px; line-height:1.2; } }

/* The ideas tab is a reading view. Give it the available phone space instead
   of squeezing the map and its floating controls above five expanded ideas. */
@media(max-width:767px) {
  .fg[data-main-focus="true"][data-panel="photos"] { grid-template-rows:56px auto minmax(0,1fr) auto; }
  .fg[data-main-focus="true"][data-panel="photos"] .fg-map-shell { display:none; }
  .fg[data-main-focus="true"][data-panel="photos"] .fg-view-tabs { grid-row:2; }
  .fg[data-main-focus="true"][data-panel="photos"] .fg-editorial { grid-row:3; height:100%; max-height:none; padding-top:14px; }
  .fg[data-main-focus="true"][data-panel="photos"] .fg-walking-dock { grid-row:4; }
}
