/* Public sub-site (forecast, crowds, analytics). Loaded after theme.css. Mobile first. */

:root {
  --crowd-1: #D6F0F2;
  --crowd-2: #9ADDE3;
  --crowd-3: #4FB8C4;
  --crowd-4: #1F8A99;
  --crowd-5: #0E525C;
  --pub-border: #e6e9f2;
}

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-family);
  color: var(--text-primary);
  background: var(--disney-light-gray);
  overflow-wrap: break-word;
}

/* Brand strip */
.pub-brand {
  background: var(--disney-navy);
  color: #fff;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-sm);
  padding: 10px 16px;
}
.pub-brand a { color: #fff; text-decoration: none; }
.pub-brand-name { display: flex; align-items: center; gap: 10px; line-height: 1.2; }
.pub-brand-mark { width: 32px; height: 32px; display: block; }
.pub-brand-words { display: flex; flex-direction: column; }
.pub-brand-name strong { font-weight: 700; }
.pub-brand-sub { font-size: var(--font-size-xs); opacity: 0.7; }
.pub-brand-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  font-size: var(--font-size-sm);
}
.pub-signin {
  background: rgba(255, 255, 255, 0.9);
  color: var(--disney-navy) !important;
  border-radius: 50px;
  padding: 4px 12px;
  font-weight: 600;
}
.pub-avatar {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--disney-blue);
  color: #fff;
  font-size: var(--font-size-xs);
  font-weight: 700;
}
.pub-crown {
  position: absolute;
  top: -8px;
  right: -6px;
  color: var(--disney-gold);
  font-size: 0.8rem;
  line-height: 1;
}

/* Tab row */
.pub-tabs {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  display: flex;
  background: #fff;
  border-bottom: 1px solid var(--pub-border);
}
.pub-tabs a,
.pub-tabs .pub-tab {
  flex: 1 1 0;
  text-align: center;
  padding: 12px 4px;
  color: var(--text-secondary);
  text-decoration: none;
  font-weight: 600;
  font-size: var(--font-size-sm);
  border-bottom: 3px solid transparent;
}
.pub-tabs a.on {
  color: var(--disney-blue);
  border-bottom-color: var(--disney-blue);
}
.pub-tab-soon {
  color: var(--text-muted);
  text-decoration: none;
  cursor: default;
}

.pub-fresh {
  margin: 0;
  padding: 6px 16px;
  font-size: var(--font-size-xs);
  color: var(--text-muted);
}

/* Breadcrumb */
.pub-crumb {
  max-width: 1200px;
  margin: 0 auto;
  padding: var(--spacing-sm) 16px 0;
  font-size: var(--font-size-xs);
  color: var(--text-muted);
}
.pub-crumb a { color: var(--disney-blue); text-decoration: none; }
.pub-crumb-sep { margin: 0 2px; }

/* Page body */
.pub-main {
  max-width: 1040px;
  margin: 0 auto;
  padding: var(--spacing-md) 16px var(--spacing-xl);
}
.pub-cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--spacing-md);
}

/* The plain hero is the error page's (lib/pub/error.php). */
.pub-hero h1 {
  color: var(--disney-navy);
  font-size: 1.6rem;
  margin: 0 0 var(--spacing-sm);
}
.pub-sentence {
  font-size: 1rem;
  line-height: 1.5;
  max-width: 72ch;
}
.pub-stale { margin: 6px 0 0; font-size: .8rem; color: #8a92a6; }

/* Crowd level colours (the calendar legend swatches) */
.pub-level-1 { background: var(--crowd-1); color: var(--disney-navy); }
.pub-level-2 { background: var(--crowd-2); color: var(--disney-navy); }
.pub-level-3 { background: var(--crowd-3); color: var(--disney-navy); }
.pub-level-4 { background: var(--crowd-4); color: #fff; }
.pub-level-5 { background: var(--crowd-5); color: #fff; }

/* Footer */
.pub-footer {
  background: var(--disney-navy);
  color: #fff;
  text-align: center;
  padding: 40px 16px;
  font-size: var(--font-size-sm);
}
.pub-footer p { margin: 0 auto var(--spacing-sm); max-width: 72ch; color: rgba(255, 255, 255, 0.75); }
.pub-footer a { color: #fff; }
.pub-footer-copy { margin-top: var(--spacing-md) !important; }

/* Widgets and gates. Every widget is a white card with a title and an optional subtitle. */
.pub-widget { margin-top: 16px; padding: 18px 20px 16px; background: #fff; border-radius: 14px; box-shadow: 0 1px 2px rgba(18, 25, 74, .06), 0 8px 24px rgba(18, 25, 74, .05); }
.pub-widget-title { margin: 0 0 2px; font-size: 1.05rem; font-weight: 700; color: var(--disney-navy); }
.pub-widget-sub { margin: 0 0 12px; font-size: .86rem; color: var(--text-secondary); }
.pub-gate { position: relative; border-radius: var(--radius-md); overflow: hidden; }
.pub-gate-under { filter: blur(3px); opacity: .7; pointer-events: none; user-select: none; }
.pub-gate-over {
  position: absolute;
  inset: 12px 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: auto;
  max-width: 320px;
  height: fit-content;
  padding: 10px;
  background: rgba(255, 255, 255, .96);
  border: 0;
  border-radius: var(--radius-lg);
  box-shadow: 0 8px 24px rgba(18, 25, 74, .12);
  text-align: center;
}
.pub-gate-over p { margin: 0 0 8px; font-size: .8rem; color: var(--text-secondary); line-height: 1.35; }
.pub-gate-actions { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.pub-gate-over .pub-gate-more { margin: 10px 0 0; }
.pub-pill {
  display: inline-block;
  border-radius: 50px;
  padding: 7px 14px;
  font-weight: 700;
  font-size: .8rem;
  text-decoration: none;
}
.pub-pill-red { background: var(--disney-red); color: #fff; }
.pub-pill-gold { background: var(--disney-gold); color: var(--disney-navy); }

/* Today pages (mockup 09) */
/* Two park tiles a row with a hairline between rows; one a row on a phone. */
.pub-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
.pub-tile { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 14px 0 16px; border-top: 1px solid #eef1f7; }
.pub-tile:nth-child(-n+2) { border-top: 0; padding-top: 4px; }
.pub-tile p { margin: 0; }
.pub-tile .pub-card-head { margin-bottom: 2px; }
.pub-tile .pub-bignum { font-size: 2.4rem; }
.pub-tile .pub-why { border-top: 0; margin-top: 4px; padding-top: 2px; }
@media (max-width: 720px) {
  .pub-tiles { grid-template-columns: minmax(0, 1fr); }
  .pub-tile:nth-child(2) { border-top: 1px solid #eef1f7; padding-top: 14px; }
}
.pub-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pub-park-name { color: var(--disney-navy); font-weight: 700; text-decoration: none; }
.pub-tag {
  flex: 0 0 auto;
  border-radius: 50px;
  padding: 3px 9px;
  background: var(--pub-border);
  font-size: .64rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.pub-tag-best { color: var(--crowd-4); }
.pub-tag-busiest { color: var(--disney-navy); }
.pub-bignum {
  margin-top: 4px;
  font-size: 2.9rem;
  font-weight: 750;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--disney-navy);
}
.pub-of { font-size: 1.05rem; font-weight: 600; color: var(--text-muted); }
.pub-pct { font-size: .8rem; color: var(--text-muted); }
.pub-meter { display: flex; gap: 3px; margin: 4px 0 2px; }
.pub-seg { flex: 1 1 0; height: 7px; border-radius: 3px; background: var(--pub-border); }
.pub-seg-in { background: var(--crowd-2); }
.pub-seg-at { background: var(--crowd-4); }
.pub-wait { font-size: var(--font-size-sm); }
.pub-wait strong { color: var(--disney-navy); }
.pub-hours { font-size: var(--font-size-sm); color: var(--text-secondary); }
.pub-why {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px solid var(--pub-border);
  font-size: .82rem;
}
.pub-why ul { margin: 4px 0 0; padding-left: 0; list-style: none; line-height: 1.45; }
.pub-why .pub-stale { margin-top: 4px; }
/* The park page's Why widget: the meter with a 1 to 10 caption, then the drivers at body size. */
.pub-widget > .pub-meter { max-width: 520px; margin: 2px 0 4px; }
.pub-widget > .pub-meter .pub-seg { height: 9px; }
.pub-meter-cap { display: flex; justify-content: space-between; max-width: 520px; margin: 0 0 12px; font-size: .72rem; color: var(--text-muted); }
.pub-widget > .pub-why { margin: 0; padding: 0; border-top: 0; font-size: .95rem; }
.pub-widget > .pub-why ul { margin: 0; line-height: 1.6; }
.pub-widget > .pub-why p { margin: 0; }
.pub-notes { margin: 0; padding-left: 18px; font-size: .95rem; line-height: 1.6; }
.pub-res { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: .7rem; font-weight: 700; }
.pub-res-ok { background: #DDF2EA; color: #1b7f5a; }
.pub-res-miss { background: #F6DADC; color: var(--disney-red); }
.pub-foot { margin: 12px 0 0; font-size: .8rem; color: #8a92a6; }
.pub-links { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: var(--spacing-lg); }
.pub-links a { color: var(--disney-blue); font-weight: 600; }

/* Crowd Horizon calendar (mockup 09 section C). The widget card is the box; months sit bare inside it. */
.pub-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 12px; font-size: .8rem; color: var(--text-secondary); }
.pub-sw { display: inline-block; width: 12px; height: 12px; margin-right: 4px; border-radius: 3px; vertical-align: -2px; }
.pub-months { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.pub-month { padding: 0; border: 0; box-shadow: none; background: none; }
.pub-month h3 { margin: 0 0 6px; font-size: .95rem; color: var(--disney-navy); }
.pub-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.pub-dow { font-size: .6rem; color: var(--text-muted); text-align: center; text-transform: uppercase; }
.pub-day {
  aspect-ratio: 1;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 3px;
  font-variant-numeric: tabular-nums;
  color: var(--disney-navy);
}
a.pub-day { text-decoration: none; width: 100%; height: 100%; }
.pub-day-date {
  position: absolute;
  top: 2px;
  left: 3px;
  font-size: .5rem;
  line-height: 1;
  font-weight: 400;
  opacity: .8;
}
.pub-day-level { font-size: .86rem; font-weight: 700; line-height: 1; padding-top: 3px; }
.pub-day-na .pub-day-date, .pub-day-locked .pub-day-date { position: static; font-size: .62rem; opacity: 1; }
.pub-day-1 { background: var(--crowd-1); }
.pub-day-2 { background: var(--crowd-2); }
.pub-day-3 { background: var(--crowd-3); }
.pub-day-4 { background: var(--crowd-4); color: #fff; }
.pub-day-5 { background: var(--crowd-5); color: #fff; }
.pub-day-na { background: var(--disney-light-gray); color: var(--text-muted); }
.pub-day-locked {
  background: repeating-linear-gradient(135deg, var(--disney-light-gray) 0 4px, transparent 4px 7px);
  color: var(--text-muted);
}
.pub-day-locked::after { content: "\1F512"; font-size: .55rem; margin-left: 1px; }
.pub-day-past { opacity: .55; }
.pub-day-today { box-shadow: 0 0 0 2px var(--disney-blue); }
.pub-day-sel { box-shadow: 0 0 0 2px var(--crowd-4); }
.pub-day-today.pub-day-sel { box-shadow: 0 0 0 2px var(--disney-blue), 0 0 0 4px var(--crowd-4); }
.pub-day:focus-visible { outline: 2px solid var(--disney-blue); outline-offset: 1px; }

/* The selected day's lines (direct children of the day card; the gate's own text keeps its size). */
.pub-detail-col .pub-widget > p:not(.pub-widget-sub) { margin: 0 0 8px; font-size: .95rem; line-height: 1.5; }
.pub-detail-col .pub-widget > p.pub-stale { font-size: .8rem; }
.pub-widget .pub-widget { margin-top: 14px; padding: 0; box-shadow: none; }
.pub-widget .pub-widget .pub-widget-title { font-size: .95rem; }
/* The math preview is four short rows; the gate card over it is taller in a 300px column. */
.pub-gate { min-height: 190px; }
.pub-widget > h3 { margin: 18px 0 6px; font-size: .95rem; color: var(--disney-navy); }
.pub-why li.pub-driver-up, .pub-why li.pub-driver-down { padding-left: 1.1em; text-indent: -1.1em; }
.pub-driver-up .pub-arrow { color: var(--disney-red); }
.pub-driver-down .pub-arrow { color: var(--crowd-4); }
.pub-math {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: .85rem;
  font-variant-numeric: tabular-nums;
}
.pub-math li {
  display: flex;
  justify-content: space-between;
  padding: 4px 0;
  border-bottom: 1px dashed var(--pub-border);
}
.pub-math li:last-child { border-bottom: none; }
.pub-plus { color: var(--disney-red); font-weight: 700; }
.pub-minus { color: var(--crowd-4); font-weight: 700; }

.pub-subtitle { margin-top: 16px; }
.pub-bars-wrap { margin: 10px 0 0; }
.pub-bars {
  display: flex;
  align-items: flex-end;
  gap: 4px;
  height: 104px;
  border-bottom: 1px solid var(--pub-border);
}
.pub-bar {
  flex: 1 1 0;
  min-width: 10px;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
}
.pub-bar-num {
  font-size: .68rem;
  line-height: 1;
  margin-bottom: 3px;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}
.pub-bar-fill { display: block; width: 100%; max-width: 22px; border-radius: 4px 4px 0 0; }
.pub-bar-h1 { height: 9%; } .pub-bar-h2 { height: 18%; } .pub-bar-h3 { height: 27%; }
.pub-bar-h4 { height: 36%; } .pub-bar-h5 { height: 45%; } .pub-bar-h6 { height: 54%; }
.pub-bar-h7 { height: 63%; } .pub-bar-h8 { height: 72%; } .pub-bar-h9 { height: 81%; }
.pub-bar-h10 { height: 90%; }
.pub-bar-1 { background: var(--crowd-1); } .pub-bar-2 { background: var(--crowd-2); }
.pub-bar-3 { background: var(--crowd-3); } .pub-bar-4 { background: var(--crowd-4); }
.pub-bar-5 { background: var(--crowd-5); }
.pub-bar-labels { display: flex; gap: 4px; margin-top: 4px; font-size: .66rem; color: var(--text-muted); }
.pub-bar-label { flex: 1 1 0; min-width: 10px; text-align: center; white-space: nowrap; overflow: visible; }
.pub-bar-label:first-child { text-align: left; }
.pub-bar-label:last-child { text-align: right; }

.pub-tablewrap { overflow-x: auto; }
table.pub-acc, table.pub-misses { font-size: .85rem; }


.pub-detail-col { min-width: 0; }
.pub-cols-detail-first .pub-detail-col { order: -1; }
@media (min-width: 601px) {
  .pub-months { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
}

@media (min-width: 900px) {
  .pub-tabs { justify-content: center; }
  .pub-tabs a, .pub-tabs .pub-tab { flex: 0 0 auto; padding: 12px 24px; }
  .pub-hero h1 { font-size: 2rem; }
  .pub-cols { grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
  .pub-cols-detail-first .pub-detail-col { order: 0; position: sticky; top: 60px; align-self: start; }
}

.pub-chart { width: 100%; height: auto; display: block; background: #fff; }
.pub-ch-actual { stroke: var(--disney-navy); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; fill: none; }
.pub-ch-forecast { stroke: var(--crowd-4); stroke-width: 2; fill: none; }
.pub-ch-usual { stroke: #c3c9d6; stroke-width: 1.5; fill: none; }
.pub-ch-range { fill: var(--crowd-2); opacity: .28; stroke: none; }
.pub-ch-down { fill: var(--status-down); opacity: .16; }
.pub-ch-grid { stroke: #eef1f7; stroke-width: 1; }
.pub-st-avail { fill: var(--crowd-3); }
/* Sold is the chart's white, left transparent so the hour gridlines read through it. */
.pub-st-sold { fill: transparent; }
.pub-st-down { fill: var(--status-down); }
/* A white halo keeps a label legible where it sits over an earlier short run. */
.pub-st-time { font-size: .5rem; fill: var(--disney-navy); paint-order: stroke; stroke: #fff; stroke-width: 2px; stroke-linejoin: round; }
.pub-st-cursor { stroke: var(--disney-navy); stroke-width: 1; pointer-events: none; }
.pub-st-cursor-time { font-size: 10px; font-weight: 700; fill: var(--disney-navy); text-anchor: middle; pointer-events: none; paint-order: stroke; stroke: #fff; stroke-width: 3px; stroke-linejoin: round; }
.pub-strips-wrap, .pub-line-wrap { position: relative; }
/* One tooltip look for the strips and the line charts; pub-strips-tip is kept as an alias. */
.pub-tip, .pub-strips-tip {
  position: absolute;
  pointer-events: none;
  white-space: nowrap;
  padding: 3px 8px;
  background: rgba(255, 255, 255, .97);
  border: 1px solid var(--pub-border);
  border-radius: 6px;
  box-shadow: var(--shadow-md);
  font-size: .74rem;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}
.pub-tip b, .pub-strips-tip b { font-size: .92rem; color: var(--disney-navy); }
.pub-tip[hidden], .pub-strips-tip[hidden] { display: none; }
/* The line tooltip: the time in bold, then one line per series. */
.pub-line-tip b, .pub-line-tip span { display: block; }
.pub-ch-cursor { stroke: var(--disney-navy); stroke-width: 1; pointer-events: none; }
/* A lone sample between two breaks in a line. */
.pub-ch-dot { stroke: none; }
.pub-ch-dot.pub-ch-actual { fill: var(--disney-navy); }
.pub-ch-dot.pub-ch-forecast { fill: var(--crowd-4); }
.pub-ch-dot.pub-ch-usual { fill: #c3c9d6; }
.pub-line-readout { min-height: 1.5em; margin: 4px 0; font-size: .8rem; line-height: 1.5; color: #8a92a6; font-variant-numeric: tabular-nums; }
.pub-legend-row { display: flex; flex-wrap: wrap; gap: 14px; margin: 0 0 8px; font-size: .8rem; color: var(--text-muted); }
.pub-legend-item { display: inline-flex; align-items: center; gap: 6px; }
/* Line keys are 14px by 2px strokes; the range and the down band are 14px by 8px washes. */
.pub-legend-key { display: inline-block; width: 14px; height: 2px; }
.pub-legend-key.pub-ch-actual { background: var(--disney-navy); }
.pub-legend-key.pub-ch-forecast { background: var(--crowd-4); }
.pub-legend-key.pub-ch-usual { background: #c3c9d6; }
.pub-legend-key.pub-ch-range { height: 8px; background: var(--crowd-2); opacity: .28; }
.pub-legend-key.pub-ch-down { height: 8px; background: var(--status-down); opacity: .16; }
.pub-strips { height: auto; }
.pub-strips-readout { min-height: 1.5em; margin: 4px 0; font-size: .8rem; line-height: 1.5; color: #8a92a6; font-variant-numeric: tabular-nums; }
.pub-ch-label { font-size: 10px; fill: #8a92a6; }

/* Ride page base (the redesign layer below overrides the look) */
.pub-daterow { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.pub-daterow a, .pub-daterow .pub-daterow-off { padding: 6px 12px; background: #f1f4fa; border-radius: 999px; font-size: .85rem; color: var(--disney-blue); font-weight: 600; text-decoration: none; }
.pub-daterow .pub-daterow-off { color: var(--text-muted); }

/* The hero band (mockup 07, every page type since mockup 09): full-bleed navy with a figure, a sentence
   and four KPI cards, then white widget cards on the gray body. */
.pub-hero-band { background: var(--disney-navy); color: #fff; padding: 14px 16px 28px; }
.pub-hero-wrap { max-width: 1040px; margin: 0 auto; }
.pub-hero-band .pub-crumb { max-width: none; margin: 0 0 10px; padding: 0; font-size: .78rem; color: rgba(255, 255, 255, .6); }
.pub-hero-band .pub-crumb a { color: rgba(255, 255, 255, .8); }
.pub-hero-band .pub-crumb-sep { color: rgba(255, 255, 255, .4); }
.pub-hero-band h1 { margin: 0 0 4px; font-size: 2.1rem; line-height: 1.1; color: #fff; letter-spacing: -.01em; }
.pub-live { margin: 0 0 18px; font-size: .9rem; color: rgba(255, 255, 255, .72); }
.pub-live-dot { display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 50%; background: #3dd17a; vertical-align: 1px; box-shadow: 0 0 0 3px rgba(61, 209, 122, .25); }
.pub-lead { display: grid; grid-template-columns: auto 1fr; gap: 24px; align-items: center; }
.pub-lead-one { grid-template-columns: 1fr; gap: 6px; }
/* min-content, not max-content, for the number: a spanning label wider than the number puts its extra
   width into max-content tracks first, which floated the unit away from the number. */
.pub-figure { display: grid; grid-template-columns: min-content auto; grid-template-rows: auto auto; column-gap: 8px; align-items: baseline; justify-content: start; }
.pub-figure-num { white-space: nowrap; font-size: 64px; font-weight: 700; line-height: 1; letter-spacing: -.02em; font-variant-numeric: proportional-nums; }
.pub-figure-word .pub-figure-num { font-size: 40px; }
.pub-figure-unit { font-size: 1.4rem; font-weight: 600; color: rgba(255, 255, 255, .8); }
.pub-figure-label { grid-column: 1 / -1; margin-top: 4px; font-size: .8rem; color: rgba(255, 255, 255, .65); }
.pub-lead p { margin: 0; font-size: 1.1rem; line-height: 1.5; color: rgba(255, 255, 255, .88); max-width: 56ch; }
.pub-lead-one p { max-width: none; }
.pub-lead .pub-hero-date { font-size: .8rem; color: rgba(255, 255, 255, .65); }
.pub-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 22px; }
.pub-kpi { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 12px 14px; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14); border-radius: 12px; }
.pub-kpi-label { font-size: .74rem; color: rgba(255, 255, 255, .65); }
.pub-kpi-value { font-size: 1.45rem; font-weight: 700; line-height: 1.15; overflow-wrap: anywhere; }
.pub-kpi-note { font-size: .74rem; color: rgba(255, 255, 255, .6); }
@media (max-width: 720px) {
  .pub-lead { grid-template-columns: 1fr; gap: 12px; }
  .pub-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pub-figure-num { font-size: 56px; }
}
main.pub-main[data-page-type="ride"] { padding-top: 20px; }
main.pub-main > .pub-links { color: #8a92a6; }
/* The one ride list (mockup 08). The same hero band and KPI row as the ride page; one white card per park. */
.pub-hero-sentence { margin: 0; font-size: 1.1rem; line-height: 1.5; color: rgba(255, 255, 255, .88); max-width: 64ch; }
main.pub-main[data-page-type="rides"] { padding-top: 16px; }
.pub-filter-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 4px 0 0; font-size: .85rem; }
.pub-chip { display: inline-block; padding: 6px 12px; border-radius: 999px; background: #fff; border: 1px solid rgba(18, 25, 74, .14); color: var(--disney-navy); font-weight: 600; text-decoration: none; }
.pub-chip.on { background: var(--disney-navy); border-color: var(--disney-navy); color: #fff; }
.pub-sort { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; color: var(--text-secondary); }
.pub-sort[hidden] { display: none; }
.pub-sort select { font: inherit; padding: 5px 8px; border-radius: 8px; border: 1px solid rgba(18, 25, 74, .18); background: #fff; color: var(--disney-navy); }
.pub-rides-card { margin-top: 16px; padding: 6px 0 2px; overflow: hidden; background: #fff; border-radius: 14px; box-shadow: 0 1px 2px rgba(18, 25, 74, .06), 0 8px 24px rgba(18, 25, 74, .05); }
.pub-rides-card[hidden] { display: none; }
.pub-rides-card h2 { display: flex; justify-content: space-between; align-items: baseline; margin: 0; padding: 12px 20px 8px; font-size: 1.05rem; color: var(--disney-navy); }
.pub-rides-card h2 span { font-size: .8rem; font-weight: 400; color: var(--text-secondary); }
/* Flat tables. The theme stripes rows, tints them on hover, makes the first column sticky with a gold
   rule, and gives every table a margin, radius and shadow; none of that applies to the pub tables. */
table.pub-rides, table.pub-acc, table.pub-misses { width: 100%; margin: 0; border-collapse: collapse; border-radius: 0; box-shadow: none; overflow: visible; background: #fff; font-variant-numeric: tabular-nums; }
table.pub-rides tr, table.pub-rides tr:nth-child(even), table.pub-rides tr:nth-child(odd), table.pub-rides tr:hover,
table.pub-acc tr, table.pub-acc tr:nth-child(even), table.pub-acc tr:nth-child(odd), table.pub-acc tr:hover,
table.pub-misses tr, table.pub-misses tr:nth-child(even), table.pub-misses tr:nth-child(odd), table.pub-misses tr:hover { background: #fff; }
table.pub-rides th, table.pub-acc thead th, table.pub-misses thead th { position: static; padding: 7px 10px; border-bottom: 0; background: var(--disney-blue); color: #fff; font-size: .78rem; font-weight: 600; text-align: right; white-space: nowrap; }
table.pub-rides td, table.pub-acc td, table.pub-misses td,
table.pub-acc tbody th, table.pub-misses tbody th { padding: 7px 10px; border-bottom: 1px solid #eef1f7; font-size: inherit; text-align: right; white-space: nowrap; }
table.pub-rides tr:last-child td, table.pub-acc tr:last-child td, table.pub-misses tr:last-child td,
table.pub-acc tr:last-child th, table.pub-misses tr:last-child th { border-bottom: 0; }
table.pub-rides th:first-child, table.pub-rides tbody td:first-child,
table.pub-acc th:first-child, table.pub-acc tbody td:first-child,
table.pub-misses th:first-child, table.pub-misses tbody td:first-child { position: static; max-width: none; min-width: 0; border-right: 0; text-align: left; white-space: normal; overflow: visible; text-overflow: clip; }
table.pub-rides th:first-child, table.pub-acc thead th:first-child, table.pub-misses thead th:first-child { background: var(--disney-blue) !important; color: #fff !important; }
/* Row headers (the first cell of a body row) keep the body-cell look of tbody td:first-child in the theme. */
table.pub-acc tbody th[scope="row"], table.pub-misses tbody th[scope="row"] { z-index: auto; background: inherit !important; color: inherit !important; font-weight: 600; }
/* The ride list's tables run to the card edge, so their outer cells get the card's 20px inset. */
table.pub-rides { font-size: .9rem; }
table.pub-rides th:first-child, table.pub-rides tbody td:first-child { padding-left: 20px; }
table.pub-rides tbody td:first-child a { color: var(--disney-navy); font-weight: 600; text-decoration: none; }
table.pub-rides th:last-child, table.pub-rides td:last-child { padding-right: 20px; }
.pub-now-wrap { display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px; }
.pub-now-val { display: inline-flex; flex-direction: column; align-items: flex-end; min-width: 52px; }
.pub-now { font-weight: 700; color: var(--disney-navy); }
.pub-spark { display: inline-block; flex: none; width: 80px; height: 20px; overflow: visible; }
.pub-spark polyline { fill: none; stroke: #8a92a6; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.pub-spark .pub-spark-end { fill: var(--crowd-4); }
.pub-state { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: .7rem; font-weight: 700; }
.pub-state-down { background: #F6DADC; color: var(--disney-red); }
.pub-state-closed { background: #eef1f7; color: var(--text-secondary); }
.pub-nosample { font-size: .68rem; color: var(--text-muted); }
.pub-muted { color: var(--text-muted); }
.pub-rides .pub-bar { display: inline-flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 8px; width: 100%; min-width: 0; height: auto; }
.pub-rides .pub-bar i { display: inline-block; height: 8px; border-radius: 0 4px 4px 0; background: var(--crowd-3); }
.pub-ll { font-size: .8rem; }
.pub-ll-out { color: var(--text-muted); }
@media (max-width: 720px) {
  table.pub-rides { font-size: .85rem; }
  table.pub-rides .pub-opt { display: none; }
  table.pub-rides th:first-child, table.pub-rides tbody td:first-child { padding-left: 12px; }
  table.pub-rides th, table.pub-rides td { padding-left: 6px; padding-right: 6px; }
  table.pub-rides th:nth-child(3), table.pub-rides td:nth-child(3) { padding-right: 12px; }
  table.pub-rides th, table.pub-rides td:nth-child(3) { white-space: normal; }
  .pub-state { padding: 2px 6px; }
  .pub-spark-empty { display: none; }
  .pub-now-val .pub-muted { white-space: normal; }
  .pub-rides .pub-bar i { display: none; }
  .pub-spark { width: 48px; height: 16px; }
  .pub-now-wrap { gap: 6px; }
  .pub-rides-card h2 { padding: 12px 12px 8px; }
  .pub-sort { margin-left: 0; }
}
/* SVG text scales with the viewBox; on a narrow screen it needs more viewBox units to stay legible. */
@media (max-width: 600px) {
  .pub-ch-label, .pub-st-time, .pub-st-cursor-time { font-size: 17px; }
  .pub-chart.pub-strips .pub-ch-label { font-size: 15px; }
}

/* Method page lists. */
.pub-method-list { padding-left: 18px; margin: 0; font-size: .95rem; line-height: 1.6 }
.pub-method-list li + li { margin-top: 8px }
.pub-method-link { margin: 12px 0 0; font-size: .92rem }
