/* Shared visitor typography and controls. Load after the legacy page layers.
   Only presentation: no new content source, no admin or mini-program styles.
   !important is limited to roles previously locked by legacy mobile rules. */
body.outing-site {
  --visitor-body-size: 16px;
  --visitor-copy-size: 15px;
  --visitor-meta-size: 13px;
  --visitor-action: var(--outing-green);
  --visitor-action-soft: var(--outing-soft);
  --visitor-action-border: var(--outing-control-line);
  --visitor-radius: 6px;
  font-size: var(--visitor-body-size);
  line-height: 1.8;
}
html body.outing-site :is(button, input, select, textarea) { font-family: var(--outing-body); }
html body.outing-site :is(input, select, textarea) { font-size: 16px; line-height: 1.6; }
html body.outing-site small { font-size: var(--visitor-meta-size) !important; line-height: 1.7; }
html body.outing-site :is(.eyebrow, .status-badge, .site-search-result-meta, .v2-route-verification, [data-route-mode-description], .guide-filter-status, .footer-identity span, .footer-legal, .footer-legal a, .footer-legal span) {
  font-size: var(--visitor-meta-size) !important; line-height: 1.7;
}
html body.outing-site :is(.template-hero-copy > p:not(.eyebrow), .section-heading > p:not(.eyebrow), .guide-section-heading > p:not(.eyebrow), .site-search-result-copy > span:not(.site-search-result-meta)) {
  font-size: var(--visitor-copy-size) !important; line-height: 1.85 !important;
}
html body.outing-site :is(.section-heading h2, .food-journey-heading h2, .site-search-group > h2) {
  font-size: 24px !important; line-height: 1.5 !important; letter-spacing: 0;
}
html body.outing-site :is(.maintained-detail-copy p, .food-reading-prose p, .food-reading-prose li, .article-body p, .article-body li, .guide-practical-row p) {
  font-size: var(--visitor-body-size); line-height: 1.9; max-width: 70ch; overflow-wrap: anywhere;
}
html body.outing-site :is(.food-reading-card p, .food-destination-shortcut-main p, .travel-practical-list p, .travel-spot-overview > p, .guide-departure > p) {
  font-size: var(--visitor-copy-size); line-height: 1.85;
}
html body.outing-site :is(.guide-place-copy strong, .site-search-result-copy strong, .outing-stop-main strong) { font-size: 17px; line-height: 1.6; }
html body.outing-site :is(.outing-stop-main small, .guide-route-link small, .food-journey-route small) { font-size: 14px !important; line-height: 1.75; }
html body.outing-site :is(.food-journey-card strong, .food-journey-route strong) { font-size: 17px !important; line-height: 1.6; }
html body.outing-site .food-journey-card span { font-size: var(--visitor-meta-size) !important; line-height: 1.7; }

/* Legacy directories must be as readable as the new neighborhood guide. */
html body.outing-site :is(
  .discover-route-copy p, .travel-route-chooser-card p, .local-weekend-scenario-card p,
  .section-heading > div > p:not(.eyebrow), .food-place-shortcut-body p, .food-guide-card p,
  .more-link-copy > span, .travel-sub-attraction-card p, .travel-route-food-moment p,
  .link-directory-card p, .card-copy p, .travel-hub-route-option p,
  .travel-food-context-line, .travel-hub-time-step p, .travel-place-detail-body p,
  .travel-detail-facts li, .route-departure-checklist strong
) { font-size: var(--visitor-copy-size) !important; line-height: 1.85 !important; overflow-wrap: anywhere; }
html body.outing-site :is(.outing-plan-body p, .route-map-note, .link-directory-note, .more-review-note, .travel-food-timing-hints > span) {
  font-size: 14px !important; line-height: 1.85 !important;
}
html body.outing-site :is(.template-content .section-heading .eyebrow, .mobile-directory-group-summary .eyebrow) {
  font-size: var(--visitor-meta-size) !important; line-height: 1.7;
}
html body.outing-site :is(
  .discover-place-meta, .discover-route-label, .discover-route-stops > span,
  .discover-route-food-preview strong, .discover-route-food-preview b,
  .travel-route-chooser-head > span, .travel-destination-quick-main > span,
  .travel-destination-quick-route > span, .travel-destination-quick-food b,
  .horizontal-scroll-cue > span, .horizontal-scroll-cue > strong,
  .travel-food-bridge-body > span, .travel-food-bridge-line b, .card-media > span, .card-copy > span,
  .local-weekend-scenario-card > div > span, .travel-food-mini-row > b,
  .local-weekend-food-cue > span, .local-weekend-point-meta > span, .local-weekend-point-meta > strong,
  .travel-chip-row > span, .local-weekend-route-preview > span, .local-weekend-food-preview > span,
  .outing-scroll-hint, .food-destination-shortcut-main > span, .food-place-shortcut-line > b,
  .food-place-shortcut-body > span, .food-guide-card > div > span,
  .more-scenario-entry > strong, .stored-route-list > a > span, .guide-filter-count,
  .outing-stop > span, .outing-transfer > span, .travel-spot-road-attractions > span,
  .travel-route-food-moment > span, .route-departure-checklist span, .v2-route-verification > span,
  .travel-spot-facts span, .travel-spot-access > span, .travel-spot-road-attractions b,
  .travel-spot-route-lines article > span, .travel-spot-route-lines li span, .travel-detail-sibling-nav span,
  .travel-sub-attraction-card > div > span, .v2-food-route-list > a > span, .food-travel-fields article > span,
  .food-detail-chip-row > span, .food-group-switch-list span, .link-directory-card > span,
  .site-search-suggestions > span, .travel-hub-route-option > div > span,
  .travel-route-stop-strip span, .travel-hub-route-food-preview b, .travel-food-decision-group > span,
  .travel-food-timing-hints b, .travel-weekend-shortcut span, .travel-hub-step-index,
  .travel-hub-step-points > span, .travel-hub-time-food > span, .travel-related-hub-main > span,
  .travel-related-hub-food b, .travel-place-detail-body > span
) { font-size: var(--visitor-meta-size) !important; line-height: 1.7; }

/* One primary action, quieter secondary actions; selected filters are not CTAs. */
html body.outing-site :is(.primary-button, .secondary-button, .guide-filters button, .travel-filter-row button, .v2-route-mode-controls button, .outing-save-button, .outing-stop-toggle) {
  min-height: 44px !important; border-radius: var(--visitor-radius); font-size: 15px !important;
  line-height: 1.6; white-space: normal; text-align: center;
}
html body.outing-site .primary-button { color: #fff; background: var(--visitor-action); border-color: var(--visitor-action); box-shadow: none; }
html body.outing-site .secondary-button { color: var(--visitor-action); background: var(--outing-surface); border-color: var(--visitor-action-border); box-shadow: none; }
html body.outing-site :is(.travel-filter-row button, .v2-route-mode-controls button) { color: var(--outing-ink); background: var(--outing-surface); border-color: var(--visitor-action-border); }
html body.outing-site :is(.travel-filter-row button.is-active, .v2-route-mode-controls button[aria-pressed="true"]) {
  color: var(--visitor-action); background: var(--visitor-action-soft); border-color: var(--visitor-action); font-weight: 600;
}
html body.outing-site :is(.travel-filter-row button.is-active, .v2-route-mode-controls button[aria-pressed="true"])::before { content: "✓"; margin-right: 4px; }
html body.outing-site :is(.travel-detail-topbar a, .travel-detail-jump-row a, .guide-anchor-nav a, .food-reading-nav a, .footer-essential-links a) {
  min-height: 44px !important; font-size: 14px; line-height: 1.7;
}
html body.outing-site :is(
  .travel-finder-shortcuts a, .travel-route-chooser-actions a, .travel-destination-quick-route a,
  .travel-destination-quick-food-link, .travel-food-card-action, .local-weekend-scenario-points a,
  .local-weekend-food-preview > a, .food-journey-heading > a, .food-card-detail-link,
  .food-guide-subnav a, .travel-scenario-link-nav a, .route-map-actions a,
  .food-detail-chip-row > a, .travel-hub-route-option-actions a, .travel-route-food-link,
  .travel-route-plan-link, .travel-route-stop-strip a
) { display: inline-flex; align-items: center; min-height: 44px !important; font-size: 14px !important; line-height: 1.75; }
/* Photo stop cards are stacked media, not inline text buttons. Keep this shared
   exception in all route/guide levels so place names do not squeeze beside photos. */
html body.outing-site .travel-route-stop-strip a {
  display: grid; grid-template-columns: minmax(0, 1fr); align-content: start;
}
html body.outing-site :is(.travel-destination-more-fold, .local-weekend-more-fold, .travel-detail-more-fold, .travel-detail-facts, .food-sibling-more) > summary {
  min-height: 44px; font-size: 15px; line-height: 1.75;
}
html body.outing-site :is(.travel-destination-more-fold, .local-weekend-more-fold, .travel-detail-more-fold) > summary > span,
html body.outing-site .travel-detail-facts > strong,
html body.outing-site .travel-weekend-shortcut em { font-size: 14px !important; line-height: 1.75; }
html body.outing-site :is(a, button, summary, input, select, textarea):focus-visible {
  outline: 3px solid var(--outing-rust); outline-offset: 3px;
}
html body.outing-site .home-secondary-link { align-items: center; }
html body.outing-site .home-secondary-link > :first-child { align-self: center; }
html body.outing-site .mobile-tab-bar a { font-size: 12px !important; line-height: 1.4; }
html body.outing-site .site-footer .footer-legal a { display: inline-flex; align-items: center; min-height: 44px; }
html body.outing-site .travel-spot-route-lines li { font-size: 15px; line-height: 1.8; }
html body.outing-site :is(.travel-spot-route-lines .travel-attraction-name-link, .travel-spot-route-lines article > a, .travel-detail-sibling-links a) {
  display: inline-flex; align-items: center; min-height: 44px; font-size: 14px !important; line-height: 1.75;
}
body.outing-site .guide-practical-list { margin: 24px 0; }
body.outing-site .guide-practical-row { padding: 18px 0; border-top: 1px solid var(--outing-line); }
body.outing-site .guide-practical-row h3 { margin: 0 0 8px; font-size: 17px; line-height: 1.6; }
body.outing-site .guide-practical-row p { margin: 0; color: var(--outing-muted); }
body.outing-site .guide-practical-row.is-notice { margin-block: 8px; padding: 18px 16px; background: var(--outing-warm); border: 0; border-radius: 3px; }

/* Useful notices remain visible; provenance is optional reading, not a big card. */
body.outing-site .visitor-source-section { min-width: 0; padding-block: 22px; scroll-margin-top: 90px; }
body.outing-site .visitor-source-notice { margin: 0 0 14px; color: var(--outing-muted); font-size: 15px; line-height: 1.85; max-width: 70ch; }
body.outing-site .maintained-source-disclosure { padding: 0; border: 0; border-block: 1px solid var(--outing-line); border-radius: 0; background: transparent; box-shadow: none; }
body.outing-site .maintained-source-disclosure > summary {
  display: flex; align-items: center; gap: 12px; min-height: 52px; margin: 0; padding: 12px 0;
  color: var(--outing-green); font-size: 15px; line-height: 1.7; list-style: none; cursor: pointer;
}
body.outing-site .maintained-source-disclosure > summary::-webkit-details-marker { display: none; }
body.outing-site .maintained-source-disclosure > summary::after { content: "+"; margin-left: auto; font: 400 22px/1 var(--outing-body); }
body.outing-site .maintained-source-disclosure[open] > summary::after { content: "−"; }
body.outing-site .source-disclosure-hint { color: var(--outing-muted); font-size: 13px; }
body.outing-site .maintained-source-disclosure[open] .source-disclosure-hint { visibility: hidden; }
body.outing-site .maintained-detail-sources { gap: 0; padding: 0 0 12px; }
body.outing-site .maintained-detail-sources a {
  display: grid; gap: 4px; min-height: 44px; padding: 12px 0; border-top: 1px solid var(--outing-line);
  color: var(--outing-green); font-size: 15px; line-height: 1.8; text-decoration: underline; text-underline-offset: 3px;
}
body.outing-site .maintained-detail-sources a small { color: var(--outing-muted); text-decoration: none; overflow-wrap: anywhere; }
html body.outing-site :is(.maintained-media-credit, .food-v2-media-grid figcaption, .travel-spot-photo figcaption) { font-size: var(--visitor-meta-size) !important; line-height: 1.8; }
body.outing-site .maintained-media-credit a { text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 700px) {
  html body.outing-site.template-body .template-hero .template-hero-copy h1 { font-size: 30px !important; line-height: 1.45 !important; }
  body.outing-site .visitor-title-line { display: block; }
  html body.outing-site :is(.mobile-disclosure-summary, .travel-section-fold > summary) .section-heading h2 { font-size: 19px !important; }
  body.outing-site .travel-detail-actions { display: flex; flex-wrap: wrap; gap: 10px; }
  body.outing-site .travel-detail-actions > a { flex: 1 1 140px; }
  html body.outing-site.outing-route .outing-stop-main { grid-template-columns: 64px minmax(0, 1fr); gap: 10px; }
  html body.outing-site.outing-route .outing-stop-main > img { width: 64px; height: 76px; border-radius: 3px; }
  html body.outing-site .outing-stop-main small { -webkit-line-clamp: 3; }
}
@media (max-width: 360px) {
  body.outing-site .guide-filters { gap: 8px; }
  body.outing-site .guide-filters button { flex: 1 1 auto; padding-inline: 8px; }
}

