/* IsItCrowded — clean utility calendars */
:root {
  --bg: #f5f7fa;
  --bg-elevated: #ffffff;
  --ink: #15202b;
  --ink-muted: #5b6b7c;
  --ink-faint: #6b7a8a;
  --border: #d7dee8;
  --border-strong: #b4c0d0;
  --accent: #0d6e7a;
  --accent-hover: #0a5560;
  --accent-soft: #e6f4f6;
  --accent-ink: #074850;
  --focus: #2563eb;
  --shadow: 0 1px 2px rgba(21, 32, 43, 0.05), 0 4px 14px rgba(21, 32, 43, 0.06);
  --radius: 12px;
  --radius-sm: 8px;
  --font: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --max: 1080px;
  --header-h: 64px;
  --tier-soft: #2f9e6b;
  --tier-soft-bg: #e6f7ef;
  --tier-mod: #2f7fd1;
  --tier-mod-bg: #e8f2fc;
  --tier-busy: #c47a12;
  --tier-busy-bg: #fff4e5;
  --tier-peak: #c23b2e;
  --tier-peak-bg: #fdecea;
  --tier-closed: #6b7280;
  --tier-closed-bg: #eef1f4;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; }
a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--accent-hover); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }

.skip-link {
  position: absolute; left: -9999px; top: 0;
  background: var(--ink); color: #fff; padding: 0.75rem 1rem; z-index: 100;
}
.skip-link:focus { left: 0.5rem; top: 0.5rem; }

.site-header {
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 40;
}
.site-header__inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0.75rem 1.25rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  min-height: var(--header-h);
}
.logo {
  display: inline-flex; align-items: center; gap: 0.55rem;
  font-weight: 750; font-size: 1.12rem; color: var(--ink);
  text-decoration: none; letter-spacing: -0.02em;
}
.logo:hover { color: var(--accent); }
.logo__img {
  width: auto; height: 72px; border-radius: 10px;
  display: block; flex: none;
}
.nav { display: flex; flex-wrap: wrap; gap: 0.35rem 1rem; align-items: center; }
.nav a {
  color: var(--ink-muted); text-decoration: none;
  font-size: 0.92rem; font-weight: 500;
}
.nav a:hover, .nav a[aria-current="page"] { color: var(--accent); }

.site-footer {
  margin-top: 3rem;
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  padding: 2rem 1.25rem 5.5rem;
}
.site-footer__inner { max-width: var(--max); margin: 0 auto; }
.footer-links, .footer-meta { color: var(--ink-muted); font-size: 0.9rem; }

.wrap { max-width: var(--max); margin: 0 auto; padding: 1.25rem 1.25rem 2rem; }
.breadcrumb { font-size: 0.88rem; color: var(--ink-muted); margin: 0 0 1rem; }
.breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.breadcrumb a { color: var(--ink-muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--accent); }

.hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(160deg, #0d6e7a 0%, #0a4f5c 55%, #163a4a 100%);
  color: #fff;
  padding: 2.25rem 1.25rem 2.5rem;
}
/* Full-bleed faded illustration behind the hero copy */
.hero__media {
  position: absolute; inset: 0; z-index: 0;
  margin: 0; max-width: none;
  pointer-events: none;
}
.hero__media img {
  display: block; width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  opacity: 0.32;
  border-radius: 0; box-shadow: none;
}
/* Teal wash over the illustration so white text stays readable */
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(100deg, rgba(13,110,122,0.90) 0%, rgba(10,79,92,0.72) 50%, rgba(22,58,74,0.45) 100%);
  pointer-events: none;
}
.hero__inner { position: relative; z-index: 2; max-width: var(--max); margin: 0 auto; }
/* Split hero: quick-check widget leads on the left, site info sits to the side */
.hero__inner--split {
  display: grid; gap: 3rem; align-items: start;
  grid-template-columns: minmax(19rem, 30rem) minmax(0, 1fr);
}
.hero__inner--split .hero-utility { margin: 0; }
.hero-utility__title {
  grid-column: 1 / -1; margin: 0;
  font-size: 1.2rem; letter-spacing: -0.01em; color: #fff;
}
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px;
  margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
@media (max-width: 880px) {
  .hero__inner--split { grid-template-columns: 1fr; }
}
@media (min-width: 881px) {
  /* Line the widget's left edge up with the "Plan Around the Crowds" heading below */
  .hero__inner--split .hero-utility { margin-left: 1.25rem; }
}
.hero h1 {
  margin: 0 0 0.6rem; font-size: clamp(1.65rem, 4vw, 2.25rem);
  letter-spacing: -0.03em; line-height: 1.2;
}
.hero p { margin: 0; max-width: 42rem; color: rgba(255,255,255,0.9); font-size: 1.05rem; }
.hero__note { margin-top: 0.85rem !important; font-size: 0.92rem !important; color: rgba(255,255,255,0.75) !important; }

.card-grid {
  display: grid; gap: 1rem;
  grid-template-columns: 1fr;
  margin: 1.5rem 0;
}
@media (min-width: 640px) { .card-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .card-grid { grid-template-columns: 1fr 1fr 1fr; } }

.park-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.15rem 1.2rem 1.25rem;
  box-shadow: var(--shadow);
  text-decoration: none; color: inherit;
  display: flex; flex-direction: column; gap: 0.35rem;
  transition: border-color 0.15s, transform 0.15s;
}
.park-card:hover { border-color: var(--accent); transform: translateY(-1px); color: inherit; }
.park-card h2 { margin: 0; font-size: 1.1rem; color: var(--accent-ink); }
.park-card__loc { font-size: 0.82rem; font-weight: 600; color: var(--accent); text-transform: uppercase; letter-spacing: 0.04em; }
.park-card p { margin: 0.25rem 0 0; color: var(--ink-muted); font-size: 0.95rem; flex: 1; }
.park-card__cta { margin-top: 0.6rem; font-weight: 600; font-size: 0.92rem; color: var(--accent); }
.park-card__img {
  width: calc(100% + 2.4rem);
  margin: -1.15rem -1.2rem 0;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: var(--radius) var(--radius) 0 0;
  display: block;
  background: var(--bg);
}

.prose { max-width: 46rem; }
.prose h1 { margin: 0 0 0.75rem; letter-spacing: -0.02em; }
.prose h2 { margin: 1.75rem 0 0.55rem; font-size: 1.25rem; }
.prose p, .prose li { color: var(--ink); }
.prose .muted, .muted { color: var(--ink-muted); }
.small { font-size: 0.88rem; }
.legal code { font-family: var(--mono); font-size: 0.9em; }

.panel {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.15rem 1.2rem;
  box-shadow: var(--shadow);
  margin: 1rem 0 1.5rem;
}

.cal-toolbar {
  display: flex; align-items: center; justify-content: space-between; gap: 0.75rem;
  margin-bottom: 0.85rem; flex-wrap: wrap;
}
.cal-toolbar h2 { margin: 0; font-size: 1.25rem; }
.cal-nav { display: flex; gap: 0.5rem; }
.btn {
  appearance: none; border: 1px solid var(--border-strong);
  background: var(--bg-elevated); color: var(--ink);
  border-radius: var(--radius-sm); padding: 0.45rem 0.85rem;
  font: inherit; font-weight: 600; font-size: 0.92rem; cursor: pointer;
}
.btn:hover { border-color: var(--accent); color: var(--accent); }
.btn:disabled { opacity: 0.45; cursor: not-allowed; }
.btn--primary {
  background: var(--accent); color: #fff; border-color: var(--accent);
}
.btn--primary:hover { background: var(--accent-hover); color: #fff; }

.crowd-legend {
  list-style: none; margin: 0 0 1rem; padding: 0;
  display: flex; flex-wrap: wrap; gap: 0.65rem 1.1rem;
  font-size: 0.9rem; color: var(--ink-muted);
}
.crowd-legend .swatch {
  display: inline-block; width: 0.85rem; height: 0.85rem;
  border-radius: 4px; margin-right: 0.35rem; vertical-align: -1px;
  border: 1px solid rgba(0,0,0,0.08);
}
.swatch.tier-soft, .pill.tier-soft, .cal-day.tier-soft { --t: var(--tier-soft); --tb: var(--tier-soft-bg); }
.swatch.tier-moderate, .pill.tier-moderate, .cal-day.tier-moderate { --t: var(--tier-mod); --tb: var(--tier-mod-bg); }
.swatch.tier-busy, .pill.tier-busy, .cal-day.tier-busy { --t: var(--tier-busy); --tb: var(--tier-busy-bg); }
.swatch.tier-peak, .pill.tier-peak, .cal-day.tier-peak { --t: var(--tier-peak); --tb: var(--tier-peak-bg); }
.swatch.tier-closed, .pill.tier-closed, .cal-day.cal-day--closed { --t: var(--tier-closed); --tb: var(--tier-closed-bg); }
.swatch { background: var(--t); }

.cal-dow {
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0.35rem; margin-bottom: 0.35rem;
}
.cal-dow__cell {
  text-align: center; font-size: 0.75rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.04em; color: var(--ink-faint);
  padding: 0.25rem;
}
.cal-days {
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0.55rem;
}
.cal-day {
  appearance: none; border: 1px solid transparent;
  background: var(--tb, #eee); color: var(--ink);
  border-radius: var(--radius-sm);
  min-height: 5rem; min-width: 0; padding: 0.6rem 0.25rem;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.15rem; cursor: pointer; font: inherit;
  transition: box-shadow 0.12s, border-color 0.12s;
}
.cal-day--empty { background: transparent; min-height: 5rem; pointer-events: none; }
.cal-day:hover { border-color: var(--t); box-shadow: 0 0 0 2px color-mix(in srgb, var(--t) 25%, transparent); }
.cal-day.is-today { outline: 2px solid var(--accent); outline-offset: 1px; }
.cal-day.is-selected { border-color: var(--ink); box-shadow: 0 0 0 2px rgba(21,32,43,0.15); }
.cal-day__num { font-weight: 700; font-size: 1.3rem; line-height: 1.1; }
.cal-day__tier { font-size: 0.8rem; font-weight: 700; color: var(--t); text-transform: uppercase; letter-spacing: 0.02em; line-height: 1.25; text-align: center; max-width: 100%; }
@media (max-width: 480px) {
  .cal-day { min-height: 3.6rem; padding: 0.35rem 0.1rem; }
  .cal-day--empty { min-height: 3.6rem; }
  .cal-day__num { font-size: 1.05rem; }
  .cal-day__tier { font-size: 0.58rem; letter-spacing: 0; }
}

.pill {
  display: inline-block; padding: 0.15rem 0.5rem; border-radius: 999px;
  background: var(--tb); color: var(--t); font-weight: 700; font-size: 0.82rem;
}

.day-detail { margin-top: 1rem; }
.day-detail__date { margin: 0 0 0.35rem; font-weight: 700; }
.day-detail__tier { margin: 0 0 0.5rem; }

.best-strip {
  background: var(--accent-soft);
  border: 1px solid #c5e4e8;
  border-radius: var(--radius);
  padding: 1rem 1.1rem;
  margin: 1.25rem 0;
}
.best-strip h2 { margin: 0 0 0.25rem; font-size: 1.05rem; }
.best-strip ul { list-style: none; margin: 0.65rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; }
.best-strip li { font-size: 0.92rem; color: var(--ink-muted); }

.compare-grid {
  display: grid; gap: 1rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .compare-grid { grid-template-columns: 1fr 1fr; } }
.compare-grid > div {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 1rem;
}
.compare-controls {
  display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem; align-items: end; margin-bottom: 1rem;
}
.compare-controls label { display: flex; flex-direction: column; gap: 0.3rem; font-weight: 600; font-size: 0.88rem; }
.compare-controls select {
  font: inherit; padding: 0.45rem 0.6rem; border-radius: var(--radius-sm);
  border: 1px solid var(--border-strong); min-width: 12rem; background: #fff;
}

.guide-list { padding-left: 1.2rem; }
.guide-list li { margin: 0.4rem 0; }
.related { margin: 2rem 0 1rem; }
.related-list { padding-left: 1.2rem; color: var(--ink-muted); }
.related-list a { font-weight: 600; }

.faq details {
  background: var(--bg-elevated); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 0.75rem 1rem; margin: 0.5rem 0;
}
.faq summary { cursor: pointer; font-weight: 600; }

/* Ads */
.ad-slot {
  max-width: var(--max); margin: 0.75rem auto; padding: 0 1.25rem;
}
.ad-slot--header { margin-top: 0.5rem; }
.ad-label {
  display: block; font-size: 0.7rem; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--ink-faint); margin-bottom: 0.25rem;
}
.ad-placeholder {
  background: repeating-linear-gradient(-45deg, #eef2f6, #eef2f6 8px, #e6ebf1 8px, #e6ebf1 16px);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  color: var(--ink-faint); font-size: 0.78rem;
  display: grid; place-items: center; text-align: center; padding: 0.75rem;
}
.ad-placeholder--leaderboard { min-height: 90px; }
.ad-placeholder--rectangle { min-height: 250px; }
.ad-placeholder--inline { min-height: 100px; }
.ad-placeholder--sticky { min-height: 50px; }
.ad-slot--incontent { margin: 1.5rem auto; }

.ad-sticky {
  display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
  padding: 0.4rem 0.75rem calc(0.4rem + env(safe-area-inset-bottom));
  background: rgba(255,255,255,0.96);
  border-top: 1px solid var(--border);
  backdrop-filter: blur(8px);
}
.ad-sticky:not([hidden]) { display: block; }
@media (min-width: 769px) { .ad-sticky { display: none !important; } }
.ad-sticky__close {
  position: absolute; right: 0.5rem; top: 0.35rem;
  border: none; background: var(--bg); color: var(--ink-muted);
  width: 2rem; height: 2rem; border-radius: 6px; cursor: pointer; font-size: 1.2rem; z-index: 2;
}
.ad-sticky .ad-slot { margin: 0; padding: 0 2rem 0 0; max-width: none; }

@media print {
  .site-header, .site-footer, .ad-slot, .ad-sticky, .nav, .skip-link { display: none !important; }
}

/* —— Affiliate gear guides —— */
.disclosure-banner {
  background: var(--accent-soft, #e6f4f6);
  border: 1px solid var(--border, #d7dee8);
  border-radius: var(--radius-sm, 8px);
  padding: 0.75rem 1rem;
  font-size: 0.92rem;
  margin: 1rem 0 1.25rem;
}
.affiliate-line { font-size: 0.85rem; color: var(--ink-muted, #5b6b7c); }
.product-list { display: flex; flex-direction: column; gap: 1rem; margin: 1.25rem 0 2rem; }
.product-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.85rem 1rem;
  background: var(--bg-elevated, #fff);
  border: 1px solid var(--border, #d7dee8);
  border-radius: var(--radius, 12px);
  padding: 1rem 1.1rem;
  box-shadow: var(--shadow, 0 1px 2px rgba(0,0,0,.05));
}
.product-card__rank {
  width: 2rem; height: 2rem; border-radius: 999px;
  background: var(--accent, #0d6e7a); color: #fff;
  display: grid; place-items: center; font-weight: 700; font-size: 0.9rem;
}
.product-card__notes { margin: 0.35rem 0 0.75rem; padding-left: 1.1rem; color: var(--ink-muted, #5b6b7c); }
.product-card__cta-row { margin: 0.5rem 0 0.25rem; }
/* Amazon gear product photos */
.product-card__body { min-width: 0; }
.product-card__body::after { content: ""; display: block; clear: both; }
.product-card__imglink { float: right; margin: 0.1rem 0 0.75rem 1rem; }
.product-card__img {
  display: block; width: 132px; height: 132px; object-fit: contain;
  background: #fff; border: 1px solid var(--border, #d7dee8); border-radius: 10px;
}
@media (max-width: 560px) {
  .product-card__img { width: 104px; height: 104px; }
  .product-card__imglink { margin-bottom: 0.5rem; }
}
.btn--primary, .btn.btn--primary {
  display: inline-block;
  background: var(--accent, #0d6e7a); color: #fff !important;
  border: 1px solid var(--accent, #0d6e7a);
  border-radius: var(--radius-sm, 8px);
  padding: 0.55rem 1rem; font-weight: 700; text-decoration: none;
}
.btn--primary:hover { background: var(--accent-hover, #0a5560); color: #fff !important; }
.gear-strip {
  background: #fff8e8; border: 1px solid #f0d9a8; border-radius: 12px;
  padding: 1rem 1.15rem; margin: 1.25rem 0;
}
.gear-strip h2 { margin: 0 0 0.35rem; font-size: 1.05rem; }
.gear-strip ul { margin: 0.5rem 0 0; padding-left: 1.1rem; }
.gear-picks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.75rem; margin: 0.75rem 0 0.25rem; }
.gear-pick { background: #fff; border: 1px solid #f0d9a8; border-radius: 10px; padding: 0.6rem; text-align: center; }
.gear-pick img { width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: 6px; }
.gear-pick h3 { font-size: 0.85rem; margin: 0.45rem 0 0.15rem; line-height: 1.25; }
.gear-pick p { margin: 0 0 0.5rem; }
.gear-pick .btn { font-size: 0.85rem; padding: 0.4rem 0.7rem; }
.gear-guides { columns: 2; }
@media (max-width: 640px) { .gear-picks { grid-template-columns: repeat(2, 1fr); } }

/* In-flow guide list (e.g. under Current weather on wait-times pages) */
.wait-guides { margin-top: 1rem; }
.wait-guides ul { list-style: none; margin: 0.75rem 0 0; padding: 0; columns: 2; column-gap: 2.5rem; }
.wait-guides li { break-inside: avoid; margin: 0 0 0.45rem; }
.wait-guides li a { text-decoration: none; }
.wait-guides li a:hover { text-decoration: underline; }
@media (max-width: 640px) { .wait-guides ul { columns: 1; } }

/* Gutter guide rails (very wide screens only) */
.gutter-rail { display: none; }
@media (min-width: 1600px) {
  .gutter-rail {
    display: block;
    position: absolute;
    top: var(--rail-top, 150px);
    width: 232px;
    max-height: calc(100vh - var(--rail-top, 150px) - 24px);
    overflow-y: auto;
    z-index: 40;
    background: var(--bg-elevated, #fff);
    border: 1px solid var(--border, #c9d4d6);
    border-radius: var(--radius, 12px);
    padding: 0.95rem 1.05rem;
    box-shadow: var(--shadow);
  }
  .gutter-rail--left { left: max(12px, calc((100vw - 1080px)/2 - 250px)); }
  .gutter-rail--right { right: max(12px, calc((100vw - 1080px)/2 - 250px)); }
  .gutter-rail .eyebrow { margin: 0; }
  .gutter-rail ul { margin: 0.55rem 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 0.45rem; }
  .gutter-rail li { font-size: 0.88rem; line-height: 1.35; }
  .gutter-rail__more { margin-top: 0.3rem; font-weight: 700; }
}
.eyebrow { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent, #0d6e7a); margin: 0 0 0.35rem; }

/* Today estimate pages */
.today-panel { padding: 1.25rem 1.35rem; }
.today-tier { margin: 0.35rem 0 0.75rem; }
.today-tier .pill { font-size: 1.35rem; padding: 0.45rem 0.9rem; }
.today-current { margin-left: 0.9rem; font-size: 1.05rem; font-weight: 700; white-space: nowrap; }
.today-current .pill { font-size: 1.35rem; padding: 0.45rem 0.9rem; }
.today-why { font-size: 1.05rem; margin: 0 0 0.75rem; max-width: 42rem; }
/* Short-answer summary blocks (GEO: direct answers for AI citation) */
.short-answer {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-left: 4px solid var(--accent, #0d6e7a);
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 0.7rem 1rem;
  margin: 0.9rem 0;
  max-width: 46rem;
  font-size: 1.02rem;
}
.small { font-size: 0.9rem; }
.btn { display: inline-block; padding: 0.45rem 0.85rem; border-radius: 8px; border: 1px solid var(--border, #c9d4d6); background: #fff; color: var(--ink, #1a2b2e); text-decoration: none; font-weight: 600; font-size: 0.95rem; cursor: pointer; }
.btn:hover { border-color: var(--accent, #0d6e7a); color: var(--accent-ink, #0a4a52); }

/* —— Live wait times (Queue-Times.com via Worker) —— */
.wait-attr {
  margin: 1rem 0 0;
  padding: 0.75rem 1rem;
  background: var(--accent-soft, #e6f4f6);
  border: 1px solid var(--border, #d7dee8);
  border-radius: var(--radius-sm, 8px);
  font-weight: 600;
  font-size: 0.95rem;
}
.wait-attr a { font-weight: 750; }
.wait-toolbar {
  display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem;
  align-items: center; justify-content: space-between;
  margin: 0 0 1rem;
}
.wait-meta { margin: 0; color: var(--ink-muted, #5b6b7c); font-size: 0.95rem; }
.wait-sort { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.wait-land { margin: 1.25rem 0; }
.wait-land h2 { margin: 0 0 0.5rem; font-size: 1.15rem; }
.wait-list {
  list-style: none; margin: 0; padding: 0;
  border: 1px solid var(--border, #d7dee8);
  border-radius: 12px; overflow: hidden; background: #fff;
}
.wait-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 0.65rem 1rem;
  align-items: center;
  padding: 0.65rem 0.9rem;
  border-bottom: 1px solid var(--border, #d7dee8);
}
.wait-row:last-child { border-bottom: none; }
.wait-row--closed { opacity: 0.72; }
.wait-name { font-weight: 600; }
.wait-status {
  font-size: 0.78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.wait-status--open { color: #2f9e6b; }
.wait-status--closed { color: var(--ink-faint, #8a97a8); }
.wait-mins {
  min-width: 4.5rem; text-align: right; font-weight: 750;
  font-variant-numeric: tabular-nums;
  padding: 0.2rem 0.45rem; border-radius: 6px;
}
.wait--low { background: #e6f7ef; color: #1f7a4d; }
.wait--mid { background: #e8f2fc; color: #1a5fa8; }
.wait--high { background: #fff4e5; color: #9a5b0a; }
.wait--peak { background: #fdecea; color: #a3281f; }
.wait--na { background: #f1f4f8; color: var(--ink-faint, #8a97a8); }
.wait-empty { padding: 1.1rem 1.25rem; }
.wait-summary {
  background: #fff; border: 1px solid var(--border, #d7dee8);
  border-radius: 12px; padding: 1rem 1.15rem; margin: 1rem 0;
}
.wait-summary__stats {
  list-style: none; margin: 0 0 0.5rem; padding: 0;
  display: flex; flex-wrap: wrap; gap: 0.75rem 1.35rem;
}
.wait-summary__stats li { font-size: 0.98rem; color: var(--ink-muted, #5b6b7c); }
.wait-summary__stats strong { color: var(--ink, #15202b); }
.wait-summary--empty p { margin: 0 0 0.5rem; }
@media (max-width: 560px) {
  .wait-row {
    grid-template-columns: 1fr auto;
    grid-template-areas: "name mins" "status mins";
  }
  .wait-name { grid-area: name; }
  .wait-status { grid-area: status; }
  .wait-mins { grid-area: mins; align-self: center; }
}

/* Destination honesty banner (Vegas etc.) */
.notice--destination {
  margin: 1rem 0;
  padding: 0.85rem 1rem;
  border-radius: 10px;
  border: 1px solid #e2c56b;
  background: #fff8e1;
  color: #3d3420;
}
.notice--destination p { margin: 0; }

/* At a glance strip on park hubs */
.at-a-glance { margin: 1rem 0 1.25rem; }
.at-a-glance__list {
  list-style: none;
  margin: 0.5rem 0;
  padding: 0;
  display: grid;
  gap: 0.45rem;
}
.at-a-glance__list .pill { margin-right: 0.35rem; }

/* Pre-rendered calendar cells (crawler-visible) */
.cal-grid--prerender .cal-dow-row,
.cal-grid--prerender .cal-cells {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.35rem;
}
.cal-grid--prerender .cal-dow {
  text-align: center;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ink-muted, #5b6b7c);
}
.cal-grid--prerender .cal-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 3.8rem;
  min-width: 0;
  border-radius: 8px;
  border: 1px solid var(--border, #d7dee8);
  background: #fff;
  font: inherit;
  cursor: pointer;
  padding: 0.25rem;
}
.cal-grid--prerender .cal-cell--empty { visibility: hidden; }
.cal-grid--prerender .cal-cell__day { font-weight: 700; font-size: 1.3rem; }
.cal-grid--prerender .cal-cell__tier { font-size: 0.85rem; opacity: 0.9; }

.wait-attr strong a { text-decoration: underline; }

.table-wrap { overflow-x: auto; margin: 1rem 0; }
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
  background: #fff;
}
.data-table th, .data-table td {
  border: 1px solid var(--border, #d7dee8);
  padding: 0.45rem 0.55rem;
  text-align: left;
}
.data-table th { background: #f3f7f8; }


/* —— Quality feedback: outlook, podium, compare modes —— */
.hero-explainer {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.15rem 1.25rem;
  margin: 1rem 0 1.5rem;
}
.hero-explainer h2 { margin: 0 0 0.4rem; font-size: 1.2rem; }
.hero-explainer p { margin: 0 0 0.75rem; color: var(--ink-muted); }
.hero-explainer__ctas { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.best-strip--major {
  padding: 1.25rem 1.35rem;
  margin: 1.5rem 0;
  border-width: 2px;
  border-color: #9fd0d8;
  background: linear-gradient(180deg, #eef8fa 0%, var(--accent-soft) 100%);
}
.best-strip--major h2 { font-size: 1.25rem; }
.best-podium {
  list-style: none; margin: 1rem 0 0.5rem; padding: 0;
  display: grid; gap: 0.65rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .best-podium { grid-template-columns: repeat(3, 1fr); }
}
.best-podium__item {
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 0.75rem 0.85rem;
  display: flex; flex-direction: column; gap: 0.25rem;
}
.best-podium__item--1 { border-color: #0d6e7a; box-shadow: 0 0 0 1px rgba(13,110,122,0.15); }
.best-podium__place { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--ink-muted); }
.best-strip__more { list-style: none; margin: 0.75rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; }
.best-strip__weekend, .best-strip__avoid { margin-top: 1rem; padding-top: 0.75rem; border-top: 1px dashed #c5e4e8; }
.best-strip__weekend h3, .best-strip__avoid h3 { margin: 0 0 0.35rem; font-size: 0.95rem; }
.best-strip__avoid ul { list-style: none; margin: 0.35rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; }

.day-detail__factors { margin: 0.65rem 0; padding-left: 1.1rem; }
.day-detail__factors li { margin: 0.25rem 0; font-size: 0.92rem; color: var(--ink-muted); }
.day-detail__factors strong { color: var(--ink); }

.week-outlook {
  margin: 1.25rem 0 0;
  padding: 1rem 1.1rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}
.week-outlook h2 { margin: 0 0 0.25rem; font-size: 1.1rem; }
.week-outlook__callouts {
  display: flex; flex-wrap: wrap; gap: 0.75rem 1.5rem;
  margin: 0.75rem 0;
}
.week-outlook__callouts p { margin: 0; }
.alt-day-callout {
  background: #e8f5e9;
  border: 1px solid #a5d6a7;
  border-radius: var(--radius-sm);
  padding: 0.6rem 0.8rem;
  margin: 0 0 0.75rem;
}
.what-this-means {
  margin: 1.25rem 0 0;
  padding: 1rem 1.1rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}
.what-this-means h2 { margin: 0 0 0.75rem; font-size: 1.1rem; }
.what-this-means dl { margin: 0; }
.what-this-means dt { font-weight: 600; margin: 0.6rem 0 0.15rem; }
.what-this-means dt:first-of-type { margin-top: 0; }
.what-this-means dd { margin: 0 0 0.5rem; }
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.week-outlook__table, .compare-day-table {
  width: 100%; border-collapse: collapse; font-size: 0.9rem;
}
.week-outlook__table th, .week-outlook__table td,
.compare-day-table th, .compare-day-table td {
  text-align: left; padding: 0.45rem 0.55rem;
  border-bottom: 1px solid var(--border); vertical-align: top;
}
.week-outlook__table th, .compare-day-table th { font-size: 0.8rem; color: var(--ink-muted); }

.tier-counts {
  list-style: none; margin: 0.5rem 0 0.75rem; padding: 0;
  display: flex; flex-wrap: wrap; gap: 0.4rem 0.75rem;
}
.tier-counts li { font-size: 0.88rem; }

.compare-mode-tabs {
  display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem;
}
.compare-mode-tabs .btn.is-active {
  background: var(--accent, #0d6e7a); color: #fff; border-color: transparent;
}
.compare-controls input[type="date"],
.compare-controls input[type="month"] {
  font: inherit; padding: 0.45rem 0.6rem; border-radius: var(--radius-sm);
  border: 1px solid var(--border-strong); background: #fff;
}

.park-editorial {
  margin: 1.75rem 0;
  padding: 1.15rem 1.25rem;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.park-editorial h2 { margin-top: 0; }
.subtitle {
  display: block; font-size: 1rem; font-weight: 500;
  color: var(--ink-muted); margin-top: 0.25rem;
}


/* Softest-day windows + hub week strip + accuracy metrics */
.week-strip { margin-top: 0.85rem; }
.week-strip__title { font-size: 0.95rem; margin: 0 0 0.4rem; }
.week-strip__list {
  display: flex; flex-wrap: wrap; gap: 0.45rem;
  list-style: none; padding: 0; margin: 0;
}
.week-strip__day {
  display: flex; flex-direction: column; align-items: center;
  min-width: 3.1rem; padding: 0.35rem 0.4rem;
  background: var(--panel, #f4f8f9); border-radius: 8px;
}
.softest-windows { margin: 1rem 0 1.25rem; }
.softest-windows h3 { margin-top: 0; }
.softest-windows__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: 0.75rem;
}
.softest-windows__grid h4 { margin: 0 0 0.35rem; font-size: 0.9rem; }
.softest-windows__grid ul { margin: 0; padding-left: 1.1rem; }
.at-a-glance__links { margin: 0.65rem 0 0; }
.metrics-grid { margin: 1.25rem 0 1.5rem; }
.metrics-grid__cards {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.85rem;
}
.metrics-card {
  border: 1px solid var(--border, #d5e4e7);
  border-radius: 10px; padding: 0.85rem 1rem;
  background: var(--panel, #f7fbfc);
}
.metrics-card h3 { margin: 0 0 0.45rem; font-size: 1rem; }
.metrics-card__list { margin: 0; padding-left: 1.1rem; }
.hero-utility {
  display: grid; gap: 0.85rem;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  margin: 1rem 0 0.25rem;
  padding: 1rem 1.1rem;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.28);
}
.hero-utility label { display: block; font-weight: 600; margin-bottom: 0.3rem; }
.hero-utility select, .hero-utility input {
  width: 100%; max-width: 22rem; padding: 0.45rem 0.55rem;
  border-radius: 8px; border: 1px solid #b7ced2; background: #fff;
}
.hero-utility__quick { display: flex; flex-wrap: wrap; gap: 0.55rem; align-items: center; }
.hero-utility__quick .pill { font-size: 0.95rem; }
.dest-filter-wrap { margin: 0.5rem 0 0.85rem; }

/* ---- 2026-09-26 quick-win improvements ---- */
/* Hide ad slots until the owner pastes a real AdSense ad unit (<ins>) into them */
.ad-slot:not(:has(ins, iframe)) { display: none; }
/* Best-time-to-visit blocks */
.best-time h2 { margin-top: 0; }
.best-time p { margin: 0.5rem 0; }
/* Ticket affiliate CTA */
.ticket-cta h2 { margin-top: 0; }
.ticket-cta .btn { margin: 0.25rem 0.5rem 0.25rem 0; }
/* Homepage hero media */
/* Methodology figure */
.method-figure { margin: 1.5rem 0; }
.method-figure img { display: block; width: 100%; height: auto; border-radius: var(--radius); box-shadow: var(--shadow); }
.method-figure figcaption { color: var(--ink-muted); font-size: 0.9rem; margin-top: 0.5rem; }

/* 24-park coverage note */
.coverage-note {
  margin: 0.25rem 0 1.25rem;
  padding: 0.8rem 1rem;
  border-left: 4px solid var(--accent);
  background: var(--accent-soft);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.coverage-note p { margin: 0; }

/* 7-day weather strip */
.wx-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.5rem;
  margin: 1rem 0 0.25rem;
}
.wx-day {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 0.55rem 0.25rem;
  text-align: center;
  font-size: 0.85rem;
  line-height: 1.35;
}
.wx-day__dow { font-weight: 700; }
.wx-day__icon { font-size: 1.45rem; line-height: 1.25; }
.wx-day__cond { color: var(--ink-muted); font-size: 0.78rem; min-height: 2.1em; }
.wx-day__temp { font-weight: 600; }
.wx-day__pop { color: var(--accent-ink); font-size: 0.8rem; }
.wx-tip {
  background: #fff8e1;
  border: 1px solid #ecd27a;
  border-radius: var(--radius-sm);
  padding: 0.6rem 0.8rem;
  margin: 0.75rem 0 0.25rem;
}
.wx-src { margin-top: 0.75rem; }
@media (max-width: 700px) {
  .wx-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Homepage 24-park kicker — specificity beats .hero p (white text on dark hero) */
.hero p.hero__kicker {
  display: inline-block;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--accent-ink);
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: 999px;
  padding: 0.3rem 0.85rem;
  margin: 0 0 0.6rem;
}

/* Wait-times layout: live waits + current-weather side widget */
.wait-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 1.25rem;
  align-items: start;
  margin: 1.25rem 0;
}
@media (max-width: 960px) {
  .wait-layout { grid-template-columns: 1fr; }
}
.weather-now { position: sticky; top: 1rem; }
@media (max-width: 960px) {
  .weather-now { position: static; }
}
.wx-now__park { color: var(--ink-muted); margin: -0.4rem 0 0.6rem; font-size: 0.95rem; }
.wx-now__hero { display: flex; align-items: center; gap: 0.75rem; margin: 0.25rem 0; }
.wx-now__icon { font-size: 2.5rem; line-height: 1; }
.wx-now__temp { font-size: 2.6rem; font-weight: 800; letter-spacing: -0.02em; }
.wx-now__cond { font-weight: 600; margin: 0 0 0.6rem; }
.wx-now__meta {
  list-style: none; padding: 0; margin: 0 0 0.75rem;
  display: grid; grid-template-columns: 1fr 1fr; gap: 0.35rem 0.75rem;
  font-size: 0.92rem;
}
.wx-now__meta li strong {
  display: block; font-size: 0.72rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--ink-muted); font-weight: 600;
}
.wx-now__tip { font-size: 0.9rem; margin: 0; }

/* ---- Contact form ---- */
.contact-form { max-width: 34rem; margin: 1.25rem 0; }
.contact-form p { margin: 0 0 0.9rem; }
.contact-form label { display: block; font-weight: 700; margin-bottom: 0.3rem; }
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form select,
.contact-form textarea {
  font: inherit; width: 100%; padding: 0.55rem 0.65rem;
  border: 1px solid var(--border-strong, #c9c2b4); border-radius: var(--radius-sm, 8px);
  background: #fff; color: inherit;
}
.contact-form textarea { resize: vertical; }
.contact-form__status { font-weight: 600; }

/* ---- Homepage plan tabs ---- */
.home-tabs__list { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 1rem 0 0; }
.home-tabs__list .btn { cursor: pointer; font: inherit; }
.home-tabs__panel { margin-top: 1.25rem; }
.home-tabs__panel[hidden] { display: none; }

/* ---- Mini compare (homepage compare tab) ---- */
.mini-compare__controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 0.75rem; margin-bottom: 1rem; }
.mc-scope { display: flex; gap: 0.5rem; align-items: end; }
.mc-scope .btn { flex: 1; }
.mini-compare__controls label { display: block; font-weight: 700; margin-bottom: 0.3rem; }
.mini-compare__controls select,
.mini-compare__controls input { font: inherit; width: 100%; padding: 0.55rem 0.65rem; border: 1px solid var(--border-strong); border-radius: var(--radius-sm, 8px); background: #fff; color: inherit; }
.mc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
.mc-card { border: 1px solid var(--border); border-radius: var(--radius, 12px); padding: 0.9rem 1rem; background: #fff; }
.mc-card h3 { margin: 0 0 0.5rem; font-size: 1.05rem; }
.mc-card p { margin: 0.35rem 0; }
.mc-avg .pill { margin-left: 0.35rem; }
.mc-counts { color: var(--muted, #5b6472); font-size: 0.92rem; }
.mc-verdict { font-weight: 700; margin-top: 0.9rem; }
@media (max-width: 600px) { .mc-grid { grid-template-columns: 1fr; } }

/* Park page guides sidebar */
.park-layout { display: grid; gap: 1.75rem; }
.park-main { min-width: 0; }
.park-sidebar { display: flex; flex-direction: column; gap: 1.1rem; min-width: 0; }
.park-sidebar .gear-strip { margin: 0; }
.sidebar-card {
  background: var(--bg-elevated); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1.05rem 1.15rem; box-shadow: var(--shadow);
}
.sidebar-card h2 { margin: 0 0 0.4rem; font-size: 1.05rem; color: var(--accent-ink); }
.sidebar-card ul { margin: 0.65rem 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 0.42rem; }
.sidebar-card li { font-size: 0.93rem; line-height: 1.35; }
.sidebar-card--featured { border: 2px solid var(--accent); }
.sidebar-card--featured .eyebrow { margin-bottom: 0.2rem; }
.sidebar-featured { margin: 0.35rem 0 0; font-size: 0.98rem; }
.sidebar-all { margin: 0; font-size: 0.93rem; font-weight: 600; }
/* Compact guides strip: visible near the top of park pages only on narrow
   screens, where the full sidebar stacks below all main content. */
.mobile-guides { display: none; }
@media (max-width: 959px) {
  .mobile-guides {
    display: block;
    background: var(--bg-elevated); border: 2px solid var(--accent);
    border-radius: var(--radius); padding: 0.9rem 1.05rem; box-shadow: var(--shadow);
    margin: 0 0 1.25rem;
  }
  .mobile-guides .eyebrow { margin-bottom: 0.15rem; }
  .mobile-guides p { margin: 0.3rem 0; }
  .mobile-guides__featured { font-size: 1rem; }
  .mobile-guides__all { font-size: 0.9rem; font-weight: 600; }
}
@media (min-width: 960px) {
  .park-layout { grid-template-columns: minmax(0, 1fr) 300px; align-items: start; }
}

/* ---- "When should you go?" widget (homepage) ---- */
.wtg-form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: flex-end;
  margin: 0.9rem 0 1.1rem;
}
.wtg-field { display: flex; flex-direction: column; gap: 0.25rem; }
.wtg-field label { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-muted, #5b6b7c); }
.wtg-field select {
  font: inherit;
  padding: 0.55rem 0.7rem;
  border: 1px solid #cfd8e3;
  border-radius: 0.5rem;
  background: #fff;
  min-width: 11rem;
}
.wtg-go {
  font: inherit;
  font-weight: 700;
  padding: 0.6rem 1.2rem;
  border: 0;
  border-radius: 0.5rem;
  background: var(--accent, #0d6e7a);
  color: #fff;
  cursor: pointer;
}
.wtg-go:hover { filter: brightness(1.08); }
.wtg-summary { font-weight: 700; margin: 0 0 0.5rem; }
.wtg-list { list-style: none; margin: 0 0 0.75rem; padding: 0; display: grid; gap: 0.4rem; }
.wtg-list li {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  padding: 0.5rem 0.7rem;
  background: #f7fafc;
  border: 1px solid #e6edf3;
  border-radius: 0.5rem;
}
ol.wtg-list { counter-reset: wtg; }
ol.wtg-list .wtg-rank {
  font-weight: 800;
  color: var(--accent, #0d6e7a);
  min-width: 1.25rem;
}
.wtg-park { font-weight: 700; }
.wtg-best { margin-left: auto; display: flex; align-items: center; gap: 0.45rem; }
.wtg-note { font-size: 0.85rem; }
.wtg-empty { font-weight: 600; }

/* Known closures section */
.wait-closures-section { margin: 1.5rem 0; padding: 1rem 1.25rem; }
.wait-closures-section h2 { margin: 0 0 0.25rem; font-size: 1.15rem; }
.wait-closures-list { list-style: none; margin: 0.75rem 0 0; padding: 0; }
.wait-closure { display: flex; flex-wrap: wrap; gap: 0.25rem 0.75rem; align-items: baseline; padding: 0.6rem 0; border-top: 1px solid #e5e9ea; }
.wait-closure:first-child { border-top: 0; }
.wait-closure__name { font-weight: 700; flex: 1 1 100%; }
.wait-closure__reason { color: #5a6b72; font-size: 0.88rem; }
.wait-closure__reopen { margin-left: auto; font-size: 0.88rem; font-weight: 600; color: #0d6e7a; }

/* ============================================================
   Mobile polish pass (2026-10-14)
   Everything in this section lives inside max-width media
   queries — desktop rendering above these widths is unchanged.
   ============================================================ */

/* Overflow safety net for small screens. `clip` (unlike `hidden`)
   does not create a scroll container, so the sticky site header
   keeps working. Unsupported browsers simply ignore the value. */
@media (max-width: 880px) {
  body { overflow-x: clip; }

  /* — Header: logo shrinks, nav becomes a one-row scroll strip — */
  .site-header__inner {
    flex-wrap: wrap;
    padding: 0.5rem 0.9rem 0.6rem;
    gap: 0.35rem 0.75rem;
    min-height: 0;
  }
  .logo { font-size: 1.02rem; }
  .logo__img { height: 44px; border-radius: 8px; }
  .nav {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    width: 100%;
    gap: 0.15rem;
    padding: 0.1rem 0 0.2rem;
  }
  .nav::-webkit-scrollbar { display: none; }
  .nav a {
    flex: 0 0 auto;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0.45rem 0.55rem;
  }

  /* — Homepage plan tabs: one scrollable row, no wrap — */
  .home-tabs__list {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 0.2rem;
  }
  .home-tabs__list::-webkit-scrollbar { display: none; }
  .home-tabs__list .btn {
    flex: 0 0 auto;
    white-space: nowrap;
    min-height: 44px;
  }

  /* — Data tables: static .data-table markup is never wrapped in
       .table-wrap, so make the table itself the scroll box — */
  .data-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }
}

@media (max-width: 640px) {
  /* — Breathing room: narrower gutters on small screens — */
  .wrap { padding: 1rem 0.9rem 1.75rem; }
  .ad-slot { padding: 0 0.9rem; }
  .site-footer { padding: 1.75rem 0.9rem 5.5rem; }
  .hero { padding: 1.75rem 1rem 2rem; }
  .hero__inner--split { gap: 1.75rem; }
  .panel { padding: 1rem 1.05rem; }
  .today-panel { padding: 1.1rem 1.05rem; }

  /* — Quick Crowd Check: full-width select, stacked tap targets — */
  .hero-utility { padding: 0.95rem 1rem; gap: 0.75rem; }
  .hero-utility select {
    max-width: none;
    min-height: 44px;
    padding: 0.55rem 0.6rem;
  }
  .hero-utility__quick {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
  }
  .hero-utility .btn {
    display: block;
    width: 100%;
    margin: 0.45rem 0 0 !important;
    padding: 0.65rem 1rem;
    text-align: center;
  }

  /* — Today estimate: let the big pill + "current" label wrap — */
  .today-tier .pill { font-size: 1.15rem; padding: 0.4rem 0.8rem; }
  .today-current {
    display: block;
    margin: 0.5rem 0 0;
    white-space: normal;
  }
  .today-current .pill { font-size: 1.15rem; padding: 0.4rem 0.8rem; }

  /* — Park pages: roomier stacked sidebar links / card lists — */
  .sidebar-card { padding: 0.95rem 1.05rem; }
  .sidebar-card li a { display: inline-block; padding: 0.18rem 0; }
  .at-a-glance__list { gap: 0.6rem; }
  .gear-guides { columns: 1; }

  /* — Compare / "when to go" controls: full-width fields — */
  .compare-controls label { flex: 1 1 9rem; }
  .compare-controls select { min-width: 0; width: 100%; min-height: 44px; }
  .wtg-field { flex: 1 1 9rem; }
  .wtg-field select { min-width: 0; width: 100%; min-height: 44px; }
  .wtg-go { min-height: 44px; width: 100%; }
  .wtg-best { margin-left: 0; }

  /* — Wait times chrome: bigger tap targets — */
  .wait-sort .btn { min-height: 40px; }
  .wait-attr { font-size: 0.9rem; }
}

@media (max-width: 560px) {
  /* — Crowd calendars: tighter gutters, readable tier labels.
       Overrides the older ≤480px block above (same specificity,
       later in the file) so labels stop shrinking to ~9px.
       The 17.5px root bump (Oct 16) made tier labels wide enough to
       force 1fr tracks past the panel — tracks are minmax(0,1fr) now,
       and the calendar panel gives up side padding so the labels fit. — */
  .panel[data-calendar] { padding-left: 0.5rem; padding-right: 0.5rem; }
  .cal-days { gap: 0.2rem; }
  .cal-dow { gap: 0.2rem; margin-bottom: 0.3rem; }
  .cal-dow__cell { font-size: 0.68rem; padding: 0.2rem 0; }
  .cal-day {
    min-height: 3.5rem;
    padding: 0.35rem 0.02rem;
    gap: 0.1rem;
  }
  .cal-day--empty { min-height: 3.5rem; }
  .cal-day__num { font-size: 1.05rem; }
  .cal-day__tier {
    /* px, not rem: the tier word must fit a ~44px track, and rem made
       it grow with the 17.5px root bump until labels collided. */
    font-size: 8.5px;
    letter-spacing: 0;
    line-height: 1.15;
  }
  .cal-grid--prerender .cal-dow-row,
  .cal-grid--prerender .cal-cells { gap: 0.2rem; }
  .cal-grid--prerender .cal-dow { font-size: 0.68rem; }
  .cal-grid--prerender .cal-cell {
    min-height: 3.5rem;
    padding: 0.2rem 0.08rem;
  }
  .cal-grid--prerender .cal-cell__day { font-size: 1.05rem; }
  .cal-grid--prerender .cal-cell__tier {
    font-size: 8.5px;
    line-height: 1.15;
  }
  .cal-toolbar h2 { font-size: 1.1rem; }
  .cal-nav .btn { min-height: 40px; }
  .crowd-legend { font-size: 0.85rem; gap: 0.5rem 0.85rem; }

  /* — Tables: tighter cells so more columns fit before scrolling — */
  .data-table { font-size: 0.88rem; }
  .data-table th, .data-table td { padding: 0.4rem 0.45rem; }
  .week-outlook__table, .compare-day-table { font-size: 0.86rem; }
  .week-outlook__table th, .week-outlook__table td,
  .compare-day-table th, .compare-day-table td { padding: 0.4rem 0.45rem; }

  /* — Live wait rows: long ride names wrap, badge never collides — */
  .wait-row { gap: 0.3rem 0.75rem; padding: 0.6rem 0.75rem; }
  .wait-name { min-width: 0; overflow-wrap: break-word; }
  .wait-mins { min-width: 3.6rem; }

  /* — Misc small-screen tightening — */
  .hero h1 { line-height: 1.15; }
  .week-strip__day { min-width: 2.8rem; }
  .best-strip, .best-strip--major { padding: 1rem 1.05rem; }
  .compare-mode-tabs .btn { min-height: 40px; }
}

/* ============================================================
   Mobile type scale-up (2026-10-16)
   Follow-up to the polish pass above: pages rendered at the
   correct phone width, but most UI text sat at 0.85–0.95rem
   (~14–15px), which reads small on a phone. Fix: raise the root
   font size on small screens so every rem-based size (text,
   padding, tap targets) scales up ~9.4%, plus targeted bumps
   for the smallest labels. All rules live inside max-width
   media queries — desktop rendering is unchanged.
   ============================================================ */

@media (max-width: 640px) {
  /* Root scale-up: 16px -> 17.5px. Layouts are fluid (1fr grids,
     wrapping flex), and the only fixed rem min-widths in play at
     this width (compare / when-to-go selects) are already
     overridden to min-width: 0 in the polish pass above. */
  html { font-size: 17.5px; }

  /* Hub week strip: keep its pixel footprint where it was before
     the root bump, so the 7 day chips wrap no more often than
     they already did — 2.55rem at the new root ≈ 2.8rem at 16px. */
  .week-strip__day { min-width: 2.55rem; }

  /* Smallest card text: park-card location eyebrow was 0.82rem
     (~13.1px). The root bump alone lands it at ~14.4px; nudge it
     over the readability floor. */
  .park-card__loc { font-size: 0.86rem; }
}

@media (max-width: 560px) {
  /* — Tables: they already scroll horizontally on mobile, so
       stop shrinking the text and let it be genuinely readable.
       Overrides the 0.88rem / 0.86rem shrinks in the block above
       (same specificity, later in the file). — */
  .data-table { font-size: 0.94rem; }
  .week-outlook__table, .compare-day-table { font-size: 0.92rem; }
  .week-outlook__table th, .compare-day-table th { font-size: 0.84rem; }

  /* — Calendar labels: the densest text on the site. A 7-across
       grid gives each cell only ~44px at phone widths, and the word
       CROWDED at 0.72rem (12.6px) measures ~64px wide — that mismatch
       is what burst the calendar out of its card on 2026-10-16.
       9.5px fixed is the size that actually fits the track. — */
  .cal-dow__cell { font-size: 0.72rem; }
  .cal-day__tier { font-size: 8.5px; }
  .cal-grid--prerender .cal-dow { font-size: 0.72rem; }
  .cal-grid--prerender .cal-cell__tier { font-size: 8.5px; }
  .crowd-legend { font-size: 0.92rem; }
}

@media (max-width: 400px) {
  /* Narrowest phones: one more notch down on calendar tier labels
     so "CROWDED" still fits its track. Lives after the scale-up
     block so it actually wins the cascade. */
  .cal-day__tier, .cal-grid--prerender .cal-cell__tier { font-size: 8px; }
}
