:root {
  --ink:#14243a;
  --muted:#5c6d81;
  --blue:#065a91;
  --blue-2:#0b77b7;
  --sky:#eaf5fb;
  --line:#dce5ec;
  --paper:#fff;
  --bg:#f6f8fa;
  --ok:#147d55;
  --warn:#9a6500;
  --bad:#ad2e24;
}
* { box-sizing:border-box; }
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font:16px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
#main-content { padding-bottom:64px; }
#main-content>.hero,#main-content>.dynamic-page { padding-bottom:0; }
a { color:var(--blue); }
.shell { width:min(1180px,calc(100% - 32px)); margin-inline:auto; }
.skip-link { position:absolute; left:-9999px; }
.skip-link:focus { left:16px; top:16px; background:#fff; padding:10px; z-index:10; }
.sr-only { position:absolute; width:1px; max-width:1px; height:1px; max-height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; border:0; }
.site-header { border-bottom:1px solid var(--line); background:#fff; }
.header-row { min-height:82px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand { display:flex; gap:12px; align-items:center; text-decoration:none; color:var(--ink); min-width:0; }
.brand-mark { display:block; flex:0 0 42px; width:42px; height:42px; overflow:hidden; border-radius:10px; }
.brand-mark img { display:block; width:100%; height:100%; }
.brand>span:last-child { min-width:0; overflow:hidden; }
.brand strong,.brand small { display:block; }
.brand strong { font-size:22px; font-weight:800; line-height:1.1; letter-spacing:-0.01em; }
.brand small { font-size:12px; line-height:1.25; color:var(--muted); }
.brand .brand-tagline { color:var(--blue); font-weight:650; }
.header-tools { display:flex; align-items:center; gap:18px; flex:0 0 auto; }
.utility-nav { display:flex; align-items:center; gap:10px; font-size:12px; }
.utility-nav a { color:var(--ink); font-weight:750; text-decoration:none; }
.utility-nav a[aria-current=page] { color:var(--blue); text-decoration:underline; text-underline-offset:3px; }
.weather-widget { display:flex; align-items:center; gap:9px; color:var(--ink); }
.weather-widget strong,.weather-widget small { display:block; }
.weather-widget strong { font-size:13px; }
.weather-widget small { color:var(--muted); font-size:12px; }
.weather-icon { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:var(--sky); font-size:18px; }
.weather-widget--stale { opacity:.72; }
.locale-selector { display:flex; border:1px solid var(--line); border-radius:999px; padding:2px; }
.locale-selector a { border-radius:999px; padding:5px 8px; color:var(--ink); text-decoration:none; font-size:12px; font-weight:800; }
.locale-selector a[aria-current=true] { background:var(--blue); color:#fff; }
.entity-highlight-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:20px 0 28px; }
.entity-highlight-grid[hidden] { display:none; }
.entity-highlight-card { border:1px solid var(--line); border-radius:16px; padding:20px; background:linear-gradient(145deg,#fff,#f6f9fc); box-shadow:0 8px 24px rgba(16,42,67,.06); }
.entity-highlight-card h3 { margin:6px 0 12px; font-size:1.1rem; }
.entity-highlight-card ul { margin:0; padding-left:18px; color:var(--muted); }
.entity-highlight-card__icon { display:grid; place-items:center; width:42px; height:42px; margin-bottom:12px; border-radius:12px; background:var(--sky); color:var(--blue); }
.entity-highlight-card__icon .shared-icon { width:24px; height:24px; }
.editorial-layer--directory-lead { width:100%; max-width:none; }
.editorial-layer--directory-lead>* { margin-top:28px; }
.editorial-layer--directory-lead .editorial-card-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.entity-directory { margin-top:28px; }
.entity-directory>.kpi-grid { grid-template-columns:repeat(4,minmax(0,1fr)); margin-top:22px; }
.entity-directory-tools { display:grid; align-items:end; gap:12px 16px; margin:22px 0 8px; }
/* Countries: search + Activity + Search on one row. */
.entity-directory-tools--countries { grid-template-columns:minmax(220px,1fr) auto auto; }
/* Destinations: search + Country + Activity on one row, Search on the row below. */
.entity-directory-tools--destinations { grid-template-columns:minmax(200px,1.5fr) minmax(150px,1fr) minmax(150px,1fr) auto; }
.entity-directory-tools--destinations .flight-search-submit { grid-column:auto; justify-self:stretch; }
.entity-directory-tools label { display:grid; gap:4px; }
.entity-directory-tools label>span:not(.sr-only) { font-size:13px; font-weight:750; color:var(--muted); }
.entity-directory-tools input { width:100%; min-height:44px; padding:10px 14px 10px 40px; border:1px solid #9db5c6; border-radius:10px; color:var(--ink); background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%235c6d81' stroke-width='2'%3E%3Ccircle cx='8' cy='8' r='5.5'/%3E%3Cpath d='m12 12 4 4'/%3E%3C/svg%3E") no-repeat 13px 50%; font:inherit; }
.entity-directory-tools input:focus-visible { outline:3px solid #f5a623; outline-offset:2px; border-color:var(--blue); }
/* One shared control height so the search input, Activity/Country selects and the
   Search button line up on the bottom-aligned row (Countries and Destinations). */
.entity-directory-tools input,
.entity-directory-tools select,
.entity-directory-tools .flight-search-submit { box-sizing:border-box; height:44px; min-height:44px; }
.entity-directory-tools select { width:100%; padding:0 12px; border:1px solid #9db5c6; border-radius:10px; background:#fff; color:var(--ink); font:inherit; }
.entity-directory-tools .flight-search-submit { display:inline-flex; align-items:center; justify-content:center; justify-self:end; min-width:120px; padding:0 1.35rem; border-radius:10px; line-height:1; box-shadow:0 5px 14px rgba(0,82,136,.18); }
.entity-directory .coverage-disclaimer { margin-top:24px; }
.fact-secondary { display:block; margin-top:5px; color:var(--muted); font-size:.78rem; font-weight:650; line-height:1.35; }
.entity-directory-table { margin-top:28px; }
.entity-directory-table>h2 { margin-top:0; }
.entity-activity-state { display:inline-flex; align-items:center; min-height:28px; padding:4px 9px; border-radius:999px; font-size:12px; font-weight:800; white-space:nowrap; }
.entity-activity-state--current { background:#e3f5ec; color:#075b3b; }
.entity-activity-state--previous { background:#eef2f5; color:#4b5d70; }
.entity-directory-empty { margin:16px 0 0; padding:18px; }
.entity-action-links { display:flex; flex-wrap:wrap; gap:10px; margin:18px 0 24px; }
.entity-observations { margin:24px 0; padding:22px; border:1px solid var(--line); border-radius:16px; background:#f8fbff; }
.entity-observations ul { margin-bottom:0; }
.entity-public-heading { margin-bottom:20px; }
.entity-heading-title { display:flex; align-items:center; gap:18px; min-width:0; }
.entity-heading-title h1 { min-width:0; }
.entity-media-label { display:inline-flex; align-items:center; gap:10px; min-width:0; vertical-align:middle; }
.entity-media-label--airline { gap:12px; }
.entity-media-label__text { min-width:0; }
.entity-flag { display:inline-block; flex:0 0 auto; border:1px solid rgba(20,36,58,.14); border-radius:3px; background:#fff; object-fit:cover; box-shadow:0 1px 3px rgba(16,42,67,.08); }
.entity-flag--hero { border-radius:7px; box-shadow:0 6px 18px rgba(16,42,67,.14); }
.airline-logo { display:inline-block; flex:0 0 auto; border-radius:8px; background:#fff; object-fit:contain; }
.airline-logo--hero { padding:7px; border:1px solid var(--line); box-shadow:0 6px 18px rgba(16,42,67,.1); }
.airline-code-mark { display:inline-grid; place-items:center; flex:0 0 auto; width:var(--airline-mark-size); height:var(--airline-mark-size); border:1px solid #9eb6c8; border-radius:8px; background:linear-gradient(145deg,#fff,#eef5fa); color:var(--blue); font-size:calc(var(--airline-mark-size) * .3); font-weight:900; letter-spacing:.04em; line-height:1; }
.airline-code-mark.airline-logo--hero { padding:0; }
.entity-highlight-card__icon--media { width:52px; height:44px; background:#fff; border:1px solid var(--line); }
.entity-highlight-card__icon--media .entity-flag { max-width:40px; max-height:30px; }
.entity-highlight-card__icon--airline { width:52px; height:52px; }
.entity-highlight-card__icon--airline .airline-logo,
.entity-highlight-card__icon--airline .airline-code-mark { max-width:42px; max-height:42px; }
.entity-family-scope { margin-bottom:24px; }
.entity-family-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:0 0 28px; }
.entity-family-kpis>div { min-width:0; padding:18px; border:1px solid var(--line); border-radius:16px; background:linear-gradient(145deg,#fff,#f3f8fc); }
.entity-family-kpis span { display:block; color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.entity-family-kpis strong { display:block; margin-top:8px; color:var(--ink); font-size:clamp(22px,2.2vw,32px); overflow-wrap:anywhere; }
.entity-family-definition-list { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:18px 0 0; }
.entity-family-definition-list>div { padding:14px; border:1px solid var(--line); border-radius:12px; background:var(--paper); }
.entity-family-definition-list dt { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; }
.entity-family-definition-list dd { margin:6px 0 0; color:var(--ink); font-weight:800; }
.entity-family-map .table-scroll { margin-top:16px; }
.entity-family-planning-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:18px; }
.entity-family-planning-grid article { min-width:0; padding:20px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 8px 22px rgba(20,36,58,.055); }
.entity-family-planning-grid h3 { margin:0 0 9px; font-size:20px; }
.entity-family-planning-grid p { margin:0; }
.entity-family-travel-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:18px; }
.entity-family-travel-grid article { min-width:0; padding:22px; border:1px solid var(--line); border-radius:16px; background:linear-gradient(145deg,#fff,#f5f9fc); box-shadow:0 8px 24px rgba(20,36,58,.05); }
.entity-family-travel-grid h3 { margin:0 0 10px; font-size:20px; line-height:1.25; }
.entity-family-travel-grid p { margin:0; }
.entity-family-weather { overflow:hidden; background:linear-gradient(145deg,#eef8fd,#fff); }
.entity-family-weather__status { margin:12px 0 0; color:var(--muted); }
.entity-family-weather__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:18px; }
.entity-weather-card { min-width:0; padding:20px; border:1px solid #b9d9eb; border-radius:16px; background:#fff; box-shadow:0 8px 24px rgba(20,36,58,.06); }
.entity-weather-card__top { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; }
.entity-weather-card h3 { margin:0; font-size:18px; line-height:1.3; }
.entity-weather-card__icon { flex:0 0 auto; font-size:29px; line-height:1; }
.entity-weather-card__temperature { margin:15px 0 0; color:var(--ink); font-size:32px; font-weight:900; line-height:1; }
.entity-weather-card__description { margin:7px 0 0; color:var(--blue); font-weight:800; }
.entity-weather-card dl { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:16px 0 0; }
.entity-weather-card dl>div { min-width:0; padding-top:9px; border-top:1px solid #e3edf3; }
.entity-weather-card dt { color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.03em; text-transform:uppercase; }
.entity-weather-card dd { margin:4px 0 0; color:var(--ink); font-size:13px; font-weight:800; overflow-wrap:anywhere; }
.entity-weather-card__links { margin:14px 0 0; font-size:13px; font-weight:800; }
.entity-weather-card small { display:block; margin-top:12px; color:var(--muted); font-size:11px; }
.entity-family-weather__source { margin:14px 0 0; }
.entity-family-place-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:18px; }
.entity-family-place-columns>div { min-width:0; padding:20px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.entity-family-place-columns h3 { margin:0 0 12px; }
.entity-family-place-columns ul { display:grid; gap:0; margin:0; padding:0; list-style:none; }
.entity-family-place-columns li { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 16px; align-items:baseline; padding:11px 0; border-top:1px solid #e8eef2; }
.entity-family-place-columns li:first-child { border-top:0; padding-top:0; }
.entity-family-place-columns li:last-child { padding-bottom:0; }
.entity-family-place-columns a { min-width:0; font-weight:800; overflow-wrap:anywhere; }
.entity-family-place-columns span { color:var(--muted); font-size:13px; text-align:right; }
.entity-family-network-insight p+p { margin-top:12px; }
.entity-family-checklist ol { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 28px; margin:16px 0 0; padding-left:24px; }
.entity-family-checklist li { padding-left:4px; }
.entity-family-checklist__actions { display:flex; flex-wrap:wrap; gap:10px; margin:20px 0 0; }
.airline-profile-planning__list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 28px; margin:16px 0; padding-left:24px; }
.airline-profile-planning__list li { padding-left:4px; }
.entity-map-frame { position:relative; min-height:380px; overflow:hidden; border:1px solid #b8cbd9; border-radius:16px; background:#eaf5fb; }
.entity-map-frame__iframe,.entity-map-frame__canvas { display:block; width:100%; height:380px; border:0; background:#eaf5fb; }
.entity-map-frame__canvas { position:absolute; inset:0; z-index:2; visibility:hidden; }
.entity-map-frame.is-enhanced .entity-map-frame__canvas { visibility:visible; }
.entity-map-frame.is-enhanced .entity-map-frame__iframe { visibility:hidden; }
.entity-map-code-label { padding:3px 6px; border:0; border-radius:7px; background:#065a91; color:#fff; box-shadow:0 2px 8px rgba(20,36,58,.3); font-size:11px; font-weight:900; }
.entity-map-code-label::before { border-top-color:#065a91; }
.entity-map-popup { min-width:190px; color:var(--ink); line-height:1.45; }
.entity-map-popup strong { display:block; margin-bottom:6px; font-size:14px; }
.entity-map-popup div { font-size:12px; }
.entity-map-frame__note { margin:10px 0 0; }
.entity-family-activity__chart { display:flex; align-items:flex-end; gap:10px; min-height:250px; padding:22px 18px 12px; overflow-x:auto; border:1px solid var(--line); border-radius:16px; background:#f7fafc; }
.entity-family-activity__chart>span { display:grid; grid-template-rows:190px auto; gap:8px; flex:1 0 54px; min-width:54px; text-align:center; }
.entity-family-activity__chart i { align-self:end; display:block; width:100%; height:var(--bar-height); min-height:6px; border-radius:8px 8px 2px 2px; background:linear-gradient(180deg,#0b77b7,#065a91); }
.entity-family-activity__chart small { color:var(--muted); font-size:11px; white-space:nowrap; }
.entity-family-activity .table-scroll { margin-top:16px; }
.entity-family-unresolved { margin-top:18px; padding:16px 18px; border:1px solid #d6b55d; border-radius:14px; background:#fff8df; color:#4b3a09; }
.entity-family-nearby ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 24px; }
.entity-family-fares { background:linear-gradient(145deg,#eef8fd,#fff); }
.entity-family-fares .button { display:inline-flex; }
.detail-facts--public { margin:20px 0 24px; }
.entity-primary-table { margin-top:24px; }
.entity-data-disclosure {
  margin-top:18px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 8px 24px #14243a0a;
}
.entity-data-disclosure>summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 20px;
  color:var(--ink);
  cursor:pointer;
  font-weight:800;
}
.entity-data-disclosure>summary span { color:var(--muted); font-size:13px; font-weight:650; }
.entity-data-disclosure[open]>summary { border-bottom:1px solid var(--line); }
.entity-data-disclosure>.table-scroll { padding:0 16px 16px; }
.dynamic-empty--compact { min-height:180px; margin-top:20px; padding:28px; }
@media (max-width: 860px) {
  .entity-highlight-grid { grid-template-columns:1fr; }
  .editorial-layer--directory-lead .editorial-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .entity-directory-tools,
  .entity-directory-tools--countries,
  .entity-directory-tools--destinations { grid-template-columns:1fr; }
  .entity-directory-tools--destinations .flight-search-submit { grid-column:1; }
  .ticket-discovery-bridge { align-items:flex-start; flex-direction:column; }
}
.mobile-nav-toggle { display:none; padding:8px 10px; }
.main-nav { border-top:1px solid var(--line); }
.main-nav>ul {
  display:flex;
  gap:4px;
  align-items:center;
  list-style:none;
  padding:10px 0;
  margin-block:0;
}
.main-nav li { position:relative; list-style:none; }
.main-nav a,.main-nav span,.main-nav .submenu-toggle { display:block; padding:8px 8px; border-radius:0; background:transparent; color:var(--ink); text-decoration:none; font-size:15px; font-weight:650; }
.main-nav .submenu-toggle::after { content:" ▾"; color:var(--blue); }
.main-nav a[aria-current=page] { color:var(--blue); text-decoration:underline; text-underline-offset:4px; }
.main-nav>ul>li:first-child>a,.main-nav>ul>li:first-child>span,.main-nav>ul>li:first-child>.submenu-toggle { padding-left:0; }
.main-nav li ul {
  display:none;
  position:absolute;
  z-index:4;
  top:100%;
  left:0;
  min-width:230px;
  padding:8px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:10px;
  box-shadow:0 16px 36px #14243a22;
}
.main-nav li:hover ul,.main-nav li:focus-within ul { display:block; }
.breadcrumbs { padding-block:13px; }
.breadcrumbs ol { display:flex; flex-wrap:wrap; gap:7px; margin:0; padding:0; list-style:none; color:var(--muted); font-size:13px; }
.breadcrumbs li+li::before { content:"/"; margin-right:7px; color:#93a2b1; }
.breadcrumbs a { color:var(--blue); }
.hero { min-height:50vh; padding:72px 0; background:linear-gradient(180deg,var(--sky),#fff); }
.content-narrow {
  width:min(790px,calc(100% - 32px));
  max-width:none;
  margin-left:max(16px,calc((100% - 1180px)/2));
  margin-right:auto;
}
.content-wide { width:min(1180px,calc(100% - 32px)); max-width:none; margin-inline:auto; }
.shared-page--tickets>.content-wide { display:grid; gap:28px; }
.shared-page--tickets>.content-wide>* { min-width:0; max-width:100%; margin-block:0; }
.shared-page--tickets [data-component="page-identity"] h1 { max-width:980px; font-size:clamp(34px,4.6vw,54px); }
.shared-page--archive .dynamic-component { width:100%; }
.shared-page--archive .flight-table { min-width:760px; }
.shared-page--archive [data-component="page-identity"] h1 { max-width:980px; font-size:clamp(34px,4.6vw,54px); }
/* minmax(0,1fr): an implicit auto track grows to the widest child's min-content
   width, which let the day chart widen the whole column past the viewport. */
.archive-retention,
.archive-month,
.archive-day-context { display:grid; grid-template-columns:minmax(0,1fr); gap:28px; }
.archive-retention>section,
.archive-month>section,
.archive-day-context>.dynamic-component { min-width:0; }
.archive-date-picker { display:flex; flex-wrap:wrap; align-items:end; gap:10px; padding:18px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.archive-date-picker label { display:grid; flex:1 1 260px; gap:7px; color:var(--muted); font-size:13px; font-weight:800; }
.archive-date-picker select,.archive-date-picker input[type="date"] { min-height:44px; width:100%; border:1px solid var(--line); border-radius:8px; padding:8px 11px; background:#fff; color:var(--ink); font:inherit; }
.ad-slot { display:flex; width:100%; min-width:0; min-height:var(--ad-reserved-height,180px); align-items:center; justify-content:center; overflow:hidden; border-radius:14px; background:#f6f8fa; color:var(--muted); text-align:center; }
.ad-slot--live { background:transparent; }
.ad-slot__preview { padding:10px 14px; border:1px dashed #9aabba; border-radius:999px; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.dynamic-component>.ad-slot { margin:20px 0 16px; }
.ad-slot+.table-scroll { margin-top:0; }
.archive-month-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(245px,1fr)); gap:16px; }
.archive-month-card { padding:19px; border:1px solid var(--line); border-radius:12px; background:#fff; box-shadow:0 8px 24px #14243a0b; }
.archive-month-card h3 { margin-top:0; }
.archive-month-card dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 14px; margin-bottom:0; }
.archive-month-card dl div { display:flex; justify-content:space-between; gap:8px; border-top:1px solid #edf1f4; padding-top:7px; }
.archive-month-card dt { color:var(--muted); }
.archive-month-card dd { margin:0; font-weight:850; }
.archive-status { display:inline-flex; border-radius:999px; padding:4px 9px; font-size:12px; font-weight:850; }
.archive-status--complete { background:#e3f5ec; color:#075b3b; }
.archive-status--partial,.archive-status--current { background:#fff4d6; color:#714800; }
.archive-status--unknown { background:#eef1f4; color:#46596c; }
.archive-day-status { margin:0; padding:14px 16px; border-left:4px solid currentColor; border-radius:0 9px 9px 0; }
.archive-back { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; }
.archive-back a { color:var(--blue); font-weight:750; }
.archive-current-cta { padding:22px; border:1px solid var(--line); border-radius:12px; background:var(--sky); }
.eyebrow { margin:0 0 8px; color:var(--blue); font-size:13px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
h1 { font-size:clamp(36px,6vw,68px); line-height:1.02; margin:0 0 24px; letter-spacing:-.04em; }
.lead { font-size:21px; color:var(--muted); }
.content-required { border-left:4px solid var(--blue); background:#fff; padding:22px 24px; border-radius:0 12px 12px 0; box-shadow:0 12px 30px #14243a12; }
.content-required p { margin-bottom:0; color:var(--muted); }
.content-section { margin-top:40px; }
.button,button { display:inline-flex; border:0; border-radius:8px; padding:10px 16px; background:var(--blue); color:#fff; text-decoration:none; font:inherit; font-weight:750; cursor:pointer; }
.button--ghost { background:#fff; color:var(--blue); border:1px solid var(--line); }
.button-secondary { border:1px solid var(--blue); background:#fff; color:var(--blue); }
.button-secondary:hover,.button-secondary:focus-visible { background:var(--sky); }

.dynamic-page { padding:64px 0 88px; background:linear-gradient(180deg,var(--sky) 0,#fff 280px); }
.dynamic-page>.shell { min-width:0; }
.dynamic-heading { max-width:850px; margin-bottom:30px; }
.dynamic-heading h1 { margin-bottom:18px; }
.dynamic-page--statistics { padding-top:34px; }
.dynamic-page--statistics .dynamic-heading { margin-bottom:18px; }
.dynamic-page--statistics .dynamic-heading h1 { max-width:900px; font-size:clamp(34px,4.6vw,54px); }
.dynamic-page--statistics .dynamic-heading .lead { max-width:820px; margin-bottom:0; font-size:18px; line-height:1.55; }
.dynamic-page--statistics .data-state { margin-bottom:14px; }
.data-state { display:flex; align-items:center; gap:12px; padding:13px 16px; border-radius:10px; margin-bottom:30px; font-size:14px; }
.data-state strong { white-space:nowrap; }
.data-state--ok { background:#e3f5ec; color:#075b3b; }
.data-state--empty { background:#fff4d6; color:#714800; }
.data-state--error { background:#fde8e7; color:#7c211b; }
.data-state--stale { background:#fff0d6; color:#714800; border:1px solid #f1c56d; }
.dynamic-component { margin-top:28px; background:#fff; border:1px solid var(--line); border-radius:16px; padding:24px; box-shadow:0 12px 34px #14243a0d; }
.archive-back { width:100%; margin:0 0 18px; }
.data-table-block { width:100%; min-width:0; margin-top:32px; }
.data-table-block>h2 { margin:0 0 14px; }
.data-table-block>.table-scroll,
.dynamic-component>.table-scroll {
  width:100%;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-inline:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
}
.section-heading { display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.section-heading h2 { margin:0; }
.section-heading span { color:var(--muted); font-size:13px; }
.flight-tools { display:grid; grid-template-columns:minmax(230px,360px) 1fr auto; align-items:center; gap:14px; margin:20px 0 8px; }
.flight-search-field { position:relative; display:block; }
.flight-tools input { width:100%; padding-left:38px; padding-right:42px; background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%235c6d81' stroke-width='2'%3E%3Ccircle cx='8' cy='8' r='5.5'/%3E%3Cpath d='m12 12 4 4'/%3E%3C/svg%3E") no-repeat 12px 50%; }
/* The platform owns the accessible clear action. Chromium/WebKit otherwise
   adds a second native X to type=search after hydration. */
.flight-search-field>[data-flight-search]::-webkit-search-cancel-button { display:none; -webkit-appearance:none; appearance:none; }
.flight-search-field>.flight-search-clear { position:absolute; top:50%; right:7px; display:grid; width:30px; height:30px; padding:0; transform:translateY(-50%); place-items:center; border-radius:50%; color:var(--muted); font-size:22px; line-height:1; text-decoration:none; }
.flight-search-field>.flight-search-clear:hover,.flight-search-field>.flight-search-clear:focus-visible { background:var(--sky); color:var(--blue); }
.flight-search-clear[hidden] { display:none; }
.filter-chips { display:flex; flex-wrap:wrap; gap:7px; }
.filter-chips button { padding:7px 11px; border:1px solid var(--line); border-radius:999px; background:#fff; color:var(--ink); font-size:13px; font-weight:700; }
.filter-chips button:hover,.filter-chips button.is-active { border-color:var(--blue); background:var(--sky); color:var(--blue); }
.flight-result-count { margin:0; color:var(--muted); font-size:13px; white-space:nowrap; }
.flight-table { min-width:830px; }
.flight-table th { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.06em; }
.flight-table td { vertical-align:top; }
.flight-time-cell strong,.flight-number-cell>strong { display:block; font-size:16px; }
.flight-time-cell small,.flight-airline-cell small { display:block; margin-top:3px; color:var(--muted); font-size:11px; }
.flight-airline-cell>a,.flight-airline-cell>.entity-data-link,.flight-airline-cell .entity-media-label__text>a,.flight-airline-cell .entity-media-label__text>.entity-data-link { display:inline-block; font-weight:800; }
.flight-airline-cell .flight-airline-identity { gap:8px; }
.flight-airline-cell .airline-logo,.flight-airline-cell .airline-code-mark { --airline-mark-size:30px; width:30px; height:30px; }
.flight-airport-cell { min-width:170px; }
.flight-codeshares { margin-top:6px; max-width:260px; }
.flight-codeshares summary { color:var(--blue); cursor:pointer; font-size:11px; font-weight:800; }
.flight-codeshares summary:focus-visible { outline:3px solid color-mix(in srgb,var(--blue) 30%,transparent); outline-offset:3px; border-radius:3px; }
.flight-codeshares ul { display:grid; gap:3px; margin:7px 0 0; padding-left:18px; color:var(--muted); font-size:11px; }
.flight-codeshares li strong { color:var(--ink); }
.entity-data-link {
  color:var(--blue);
  font-weight:700;
  text-decoration-color:color-mix(in srgb,var(--blue) 42%,transparent);
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
.entity-data-link:hover,
.entity-data-link:focus-visible {
  color:#064f83;
  text-decoration-color:currentColor;
}
.flight-status { display:inline-flex; border-radius:999px; padding:3px 8px; background:#e9edf1; font-size:12px; font-weight:800; text-transform:capitalize; }
.flight-status--landed,.flight-status--active { background:#dff3e9; color:var(--ok); }
.flight-status--cancelled { background:#fde8e7; color:var(--bad); }
.flight-status--delayed { background:#fff0d6; color:var(--warn); }
.flight-status--diverted,.flight-status--incident { background:#fde8e7; color:var(--bad); }
.flight-status--unknown { border:1px solid #cbd5df; background:#f5f7f9; color:#465569; }
.flight-status--recorded { background:#dff3e9; color:var(--ok); }
.flight-status--unavailable { border:1px solid #cbd5df; background:#f5f7f9; color:#465569; }
.flight-table td[data-label="Status"],.flight-table td[data-label="Estado"] { white-space:nowrap; }
.flight-raw-status { display:block; color:var(--muted); margin-top:3px; font-size:11px; white-space:normal; }
.delay { display:block; color:var(--bad); margin-top:3px; }
/* Punctuality chip: meaning is in the words, colour only reinforces it. */
.flight-delay { display:inline-block; margin-top:4px; padding:1px 7px; border-radius:999px; font-size:11px; font-weight:800; white-space:nowrap; }
.flight-delay--late { background:#fde8e7; color:var(--bad); }
.flight-delay--early { background:#dff3e9; color:var(--ok); }
.flight-delay--ontime { background:#eef2f5; color:#465569; }
.flight-status + .flight-delay { margin-left:7px; }
.flight-board-disclaimer { margin:18px 0 0; color:var(--muted); font-size:.86rem; line-height:1.55; }
/* Near-now board time-window controls (Earlier / Around now / Later / All). */
.flight-window-controls { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 4px; }
.flight-window-controls .flight-window-btn.is-active { background:var(--blue); color:#fff; border-color:var(--blue); }
.flight-window-empty { margin:8px 0; color:var(--muted); }
.dynamic-page--flight-board>.shell { display:grid; gap:28px; }
.dynamic-page--flight-board>.shell>* { min-width:0; max-width:100%; margin-block:0; }
.flight-board-product { display:grid; gap:28px; min-width:0; }
.flight-board-product>* { min-width:0; max-width:100%; margin-block:0; }
.flight-day-navigation { display:flex; flex-wrap:wrap; gap:8px; }
.flight-day-navigation a { padding:8px 12px; border:1px solid var(--line); border-radius:999px; background:#fff; color:var(--blue); font-weight:800; text-decoration:none; }
.flight-day-navigation a[aria-current=page] { border-color:var(--blue); background:var(--blue); color:#fff; }
.flight-board-kpis { display:grid; gap:18px; }
.flight-board-kpis h2,.flight-board-kpis p { margin:0; }
.flight-board-kpis .kpi-grid { grid-template-columns:repeat(6,minmax(0,1fr)); }
.flight-owner-links { display:flex; flex-wrap:wrap; gap:5px 9px; margin-top:6px; }
.flight-owner-links a { font-size:11px; font-weight:750; }
.dynamic-empty { min-height:260px; display:grid; place-content:center; text-align:center; margin-top:28px; padding:42px; border:1px dashed #b8c8d5; border-radius:16px; background:#fff; }
/* The empty-state message is a zero-results state, hidden until a search
   actually returns nothing. `display:grid` above otherwise overrides the UA
   `[hidden]` rule and shows it at rest — the attribute selector must win. */
.dynamic-empty[hidden] { display:none; }
.dynamic-empty>span { display:grid; place-items:center; width:48px; height:48px; margin:0 auto 12px; border-radius:50%; background:var(--sky); color:var(--blue); font-size:28px; }
.dynamic-empty h2 { margin:0 0 8px; }
.dynamic-empty p { max-width:620px; margin:0; color:var(--muted); }
.kpi-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.kpi-card { min-height:110px; display:flex; flex-direction:column; justify-content:center; border:1px solid var(--line); border-radius:12px; padding:16px; background:linear-gradient(145deg,#fff,#f7fbfd); }
.kpi-card strong { color:var(--blue); font-size:28px; line-height:1.1; }
.kpi-card span { margin-top:7px; color:var(--muted); font-size:13px; }
.kpi-card small { margin-top:5px; color:var(--muted); font-size:11px; line-height:1.4; }
.kpi-card--link { color:inherit; text-decoration:none; transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease; }
.kpi-card--link:hover { transform:translateY(-2px); border-color:var(--blue); box-shadow:0 10px 24px #14243a14; }
.kpi-card--link:focus-visible { outline:3px solid #f5a623; outline-offset:3px; }
.on-time-performance-product>.kpi-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.on-time-performance-product .statistics-owner-context { margin-top:28px; }
.on-time-performance-product .statistics-owner-context:first-child { margin-top:0; }
.on-time-performance-product .data-freshness-warning { padding:12px 14px; border-left:4px solid var(--warn); background:#fff0d6; }
.on-time-performance-product .line-chart-scroll,
.on-time-performance-product .multi-bar-chart { overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch; }
.on-time-daily-table { margin-top:28px; }
.on-time-daily-table caption { padding:10px 0; color:var(--muted); text-align:left; }
.delay-analysis-product>.kpi-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.delay-analysis-product .statistics-owner-context { margin-top:28px; }
.delay-analysis-product .statistics-owner-context:first-child { margin-top:0; }
.delay-analysis-product .data-freshness-warning { padding:12px 14px; border-left:4px solid var(--warn); background:#fff0d6; }
.delay-analysis-product .line-chart-scroll,
.delay-analysis-product .multi-bar-chart,
.delay-heatmap-scroll { overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch; }
.delay-daily-table { margin-top:28px; }
.delay-daily-table caption,.delay-heatmap caption { padding:10px 0; color:var(--muted); text-align:left; }
.statistics-observations { margin-top:32px; }
.chart-card { margin-top:28px; }
.statistics-hub { display:grid; grid-template-columns:minmax(0,1fr); gap:34px; }
.statistics-hub>* { min-width:0; }
.statistics-hub>.kpi-grid,
.statistics-hub>.chart-card { margin-top:0; }
.statistics-hub>.kpi-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.statistics-hub>.kpi-grid .kpi-card { min-height:92px; }
.statistics-quick-links { display:flex; flex-wrap:wrap; gap:8px; margin-top:-18px; }
.statistics-quick-links a { padding:7px 11px; border:1px solid var(--line); border-radius:999px; background:#fff; font-size:13px; font-weight:800; text-decoration:none; }
.statistics-quick-links a:hover,.statistics-quick-links a:focus-visible { border-color:var(--blue); background:var(--sky); }
.statistics-owner-backlink { width:min(1180px,100%); margin:24px auto 0; padding:15px 18px; border-left:4px solid var(--blue); border-radius:8px; background:var(--sky); }
.statistics-owner-backlink a { font-weight:800; }
.statistics-demo-notice {
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:17px 20px;
  border:2px solid #b55308;
  border-radius:12px;
  background:#fff4e5;
  color:#6d3000;
}
.statistics-demo-notice strong { font-size:17px; }
.statistics-demo-notice span { line-height:1.55; }
.statistics-overview {
  padding:26px;
  border:1px solid #a9ccdf;
  border-radius:15px;
  background:linear-gradient(135deg,#f1faff 0%,#fff 72%);
}
.statistics-overview h2 { margin:4px 0 12px; }
.statistics-overview p:not(.eyebrow) { max-width:920px; margin:0; color:var(--muted); font-size:16px; line-height:1.7; }
.statistics-overview p+p { margin-top:10px; }
.statistics-section-intro { max-width:900px; margin-bottom:-20px; }
.statistics-section-intro h2 { margin:0 0 8px; }
.statistics-section-intro p { margin:0; color:var(--muted); line-height:1.65; }
.statistics-coverage {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--line);
}
.statistics-coverage>div { display:flex; min-height:78px; flex-direction:column; justify-content:center; padding:14px 18px; background:#f7fbfd; }
.statistics-coverage span { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.035em; text-transform:uppercase; }
.statistics-coverage strong { margin-top:5px; font-size:16px; }
.statistics-schedule-summary,
.statistics-history-gate,
.statistics-history-coverage {
  box-sizing:border-box; width:100%; padding:24px; border:1px solid var(--line); border-radius:14px; background:#f7fbfd;
}
.statistics-schedule-summary>.section-heading { align-items:flex-start; margin-bottom:12px; }
.statistics-schedule-summary>.section-heading h2,
.statistics-history-gate h2,
.statistics-history-coverage h2 { margin:4px 0 10px; }
.statistics-schedule-summary>p,
.statistics-history-gate>p,
.statistics-history-coverage>p { max-width:920px; color:var(--muted); line-height:1.65; }
.statistics-schedule-summary>.button { margin-top:14px; }
.statistics-hub .statistics-component-explanation {
  box-sizing:border-box;
  margin:20px 0 0;
  padding:15px 17px;
  border-left:4px solid #6b8fa6;
  border-radius:8px;
  background:#f5f8fa;
  color:var(--ink);
  line-height:1.7;
}
.statistics-hub>.statistics-component-explanation { margin:0; }
.statistics-direction-snapshot {
  display:grid;
  gap:18px;
  padding:24px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
}
.statistics-direction-snapshot>.section-heading { margin:0; }
.statistics-direction-snapshot>.section-heading h2 { margin:0 0 8px; }
.statistics-direction-snapshot>.section-heading p { margin:0; color:var(--muted); line-height:1.6; }
.statistics-direction-snapshot>.statistics-component-explanation,
.statistics-direction-snapshot>.statistics-data-table,
.statistics-direction-snapshot>.statistics-inline-links { margin:0; }
.statistics-direction-snapshot>.statistics-data-table { margin-top:2px; }
.statistics-mix-snapshots { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.statistics-mix-snapshot { display:flex; min-width:0; flex-direction:column; padding:22px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.statistics-mix-snapshot>.section-heading { margin-bottom:16px; }
.statistics-mix-snapshot>.section-heading h2 { margin:0 0 8px; }
.statistics-mix-snapshot>.section-heading p { margin:0; color:var(--muted); line-height:1.55; }
.statistics-mix-snapshot>.statistics-component-explanation { margin:20px 0 0; }
.statistics-mix-snapshot>.statistics-data-table { margin:18px 0 0; }
.statistics-mix-snapshot>.component-note { margin:16px 0 0; }
.statistics-mix-snapshot>a:last-child { margin-top:14px; font-weight:800; }
.statistics-history-page { display:grid; gap:28px; }
.statistics-history-gate { border-left:5px solid #b07224; }
.statistics-history-coverage { border-left:5px solid #54705e; }
.statistics-daily-trend-owner { display:grid; gap:22px; }
.statistics-daily-trend-owner>* { min-width:0; max-width:100%; }
.statistics-daily-trend-owner>.section-heading { margin-bottom:0; }
.statistics-daily-trend-owner>.section-heading p { max-width:900px; margin:8px 0 0; color:var(--muted); line-height:1.65; }
.weekly-comparison-product { display:grid; gap:28px; }
.weekly-comparison-product>* { min-width:0; max-width:100%; }
.weekly-comparison-scope { padding:22px; border-left:5px solid var(--blue); border-radius:12px; background:#f7fbfd; }
.weekly-comparison-scope h2 { margin:3px 0 8px; }
.weekly-comparison-scope p:last-child { max-width:900px; margin:0; color:var(--muted); line-height:1.65; }
.weekly-period-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.weekly-period-grid>div { display:flex; min-width:0; flex-direction:column; gap:5px; padding:20px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.weekly-period-grid span { color:var(--muted); font-size:13px; font-weight:800; }
.weekly-period-grid strong { color:var(--ink); font-size:18px; overflow-wrap:anywhere; }
.weekly-period-grid small { color:var(--blue); font-weight:800; }
.weekly-metrics-region { margin:0; border:1px solid var(--line); border-radius:12px; }
.weekly-metrics-table { min-width:760px; }
.weekly-metrics-table caption,
.weekly-daily-comparison table caption { padding:12px; color:var(--muted); font-weight:750; text-align:left; }
.weekly-metrics-table th[scope=row] { min-width:170px; }
.weekly-daily-comparison { display:grid; min-width:0; gap:20px; }
.weekly-daily-comparison>.chart-card { width:100%; min-width:0; max-width:100%; margin-top:0; }
.weekly-daily-comparison .chart-plot { width:100%; min-width:0; max-width:100%; overflow:hidden; }
.weekly-daily-comparison .multi-bar-chart { width:100%; min-width:0; max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch; }
.weekly-neutral-summary p+p { margin-top:8px; }
.weekly-comparison-state { margin-top:0; }
.statistics-daily-trend-owner>.chart-card { width:100%; min-width:0; max-width:100%; }
.statistics-daily-trend-owner .chart-plot { width:100%; min-width:0; max-width:100%; overflow:hidden; }
.statistics-owner-context { padding:20px 22px; border-left:5px solid var(--blue); border-radius:10px; background:#f7fbfd; }
.statistics-owner-context h2 { margin:0 0 8px; }
.statistics-owner-context p { max-width:920px; margin:0; color:var(--muted); line-height:1.65; }
.statistics-data-table { margin-top:-18px; border:1px solid var(--line); border-radius:10px; background:#fbfdfe; }
.statistics-data-table summary { padding:12px 16px; color:var(--blue); font-weight:800; cursor:pointer; }
.statistics-data-table .table-scroll { padding:0 14px 14px; }
.statistics-range-status { margin:8px 0 0; color:var(--muted); font-size:12px; }
.statistics-range-status + .statistics-data-table { margin-top:6px; }
/* The progressive daily chart has its own bottom spacing; the -18px pull that suits the older stacked charts would overlap it. */
.statistics-data-table[data-on-time-daily-table],
.statistics-data-table[data-delay-daily-table] { margin-top:8px; }
.activity-guidance {
  padding:24px;
  border:1px solid #9cc6dc;
  border-left:5px solid var(--blue);
  border-radius:14px;
  background:linear-gradient(135deg,#f3fbff,#fff);
}
.activity-guidance--limited { border-color:#e1b965; border-left-color:var(--warn); background:#fffaf0; }
.activity-guidance--unavailable,
.activity-guidance--insufficient { border-color:#c7d1da; border-left-color:#637283; background:#f7f9fa; }
.activity-guidance .section-heading { margin:0 0 10px; }
.activity-guidance .section-heading h2 { margin:2px 0 0; }
.activity-guidance__state { display:inline-flex; padding:6px 10px; border-radius:999px; background:#fff; color:var(--blue); font-size:12px; font-weight:850; }
.activity-window-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:18px; }
.activity-window-grid article { display:flex; flex-direction:column; padding:18px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.activity-window-grid strong { color:var(--blue); font-size:25px; }
.activity-window-grid span { margin-top:4px; font-weight:800; }
.activity-window-grid small { margin-top:4px; color:var(--muted); }
.activity-guidance__freshness { margin:14px 0 0; color:var(--muted); font-size:13px; }
.activity-guidance .component-note { margin-bottom:0; }
.activity-bin-chart {
  display:flex;
  height:238px;
  align-items:flex-end;
  gap:4px;
  margin-top:18px;
  padding:14px 34px 78px 12px;
  overflow-x:auto;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
}
.activity-bin-chart>span { position:relative; display:flex; min-width:28px; height:100%; flex:1 0 28px; align-items:flex-end; }
.activity-bin-chart i { display:block; width:100%; height:var(--activity-height); min-height:4px; border-radius:4px 4px 0 0; background:linear-gradient(180deg,var(--blue-2),var(--blue)); }
.activity-bin-chart small { position:absolute; top:calc(100% + 7px); left:50%; color:var(--muted); font-size:10px; white-space:nowrap; transform:translateX(-4px) rotate(45deg); transform-origin:top left; }
.activity-bin-table { margin-top:12px; }
.statistics-insights .section-heading,
.airline-mix .section-heading,
.route-mix .section-heading,
.statistics-modules .section-heading,
.statistics-faq .section-heading { margin-bottom:16px; }
.statistics-insight-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.statistics-insight-card {
  display:flex;
  min-height:210px;
  flex-direction:column;
  padding:20px;
  border:1px solid var(--line);
  border-radius:13px;
  background:#fff;
  color:inherit;
  text-decoration:none;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
}
.statistics-insight-card:hover,
.statistics-insight-card:focus-visible { transform:translateY(-2px); border-color:var(--blue); box-shadow:0 10px 24px #14243a14; }
.statistics-insight-card>span { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.035em; text-transform:uppercase; }
.statistics-insight-card>strong { margin-top:10px; color:var(--blue); font-size:24px; line-height:1.15; overflow-wrap:anywhere; }
.statistics-insight-card>p { margin:10px 0; color:var(--muted); font-size:14px; }
.statistics-insight-card>small { margin-top:auto; color:var(--blue); font-weight:800; }
.ranked-bars { display:grid; gap:10px; }
.ranked-bars>a,
.ranked-bars>div {
  display:grid;
  grid-template-columns:minmax(180px,1.15fr) minmax(180px,3fr) auto;
  align-items:center;
  gap:14px;
  padding:10px 12px;
  border-radius:10px;
  color:inherit;
  text-decoration:none;
}
.ranked-bars>a:hover,
.ranked-bars>a:focus-visible { background:var(--sky); }
.ranked-bars span { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.ranked-bars small { color:var(--muted); }
.ranked-bars i { display:block; height:12px; overflow:hidden; border-radius:999px; background:#e8eef2; }
.ranked-bars b { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue-2),var(--blue)); }
.ranked-bars em { min-width:66px; color:var(--muted); font-size:13px; font-style:normal; text-align:right; }
.airline-mix .statistics-data-table { margin-top:18px; }
.route-mix .statistics-data-table { margin-top:18px; }
.airline-mix__interpretation { max-width:900px; margin:18px 0 8px; color:var(--ink); font-weight:650; }
.busiest-routes-scope,
.busiest-route-distribution,
.busiest-routes-table,
.busiest-routes-definition { margin-top:24px; }
.busiest-routes-scope,
.busiest-route-distribution,
.busiest-routes-definition { padding:22px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.busiest-routes-scope h2 { margin:4px 0 10px; }
/* The Observation-window block is immediately followed by the KPI grid; give
   the grid its own top margin and a four-column layout (this page has four KPI
   cards, not the generic six), so the cards never butt against the block or
   each other. Spacing is owned by the grid, not per-card margins. */
.busiest-routes-product > .kpi-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-top:18px; }
@media (max-width:900px) { .busiest-routes-product > .kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px) { .busiest-routes-product > .kpi-grid { grid-template-columns:1fr; } }
.busiest-route-chart { margin-top:16px; }
/* The "View all N routes" control stays a real <summary> (keyboard/no-JS
   accessible) but is formatted as a button so it reads as an action. */
.busiest-routes-table > summary { cursor:pointer; display:flex; width:100%; box-sizing:border-box; align-items:center; gap:12px; font-weight:800; padding:17px 20px; border:1px solid #8db7d4; border-radius:14px; background:linear-gradient(135deg,#f4f9fd,#e3f1fa); box-shadow:0 6px 18px rgba(0,65,105,.08); list-style:none; }
.busiest-routes-table > summary>span { display:grid; gap:4px; }
.busiest-routes-table > summary::-webkit-details-marker { display:none; }
.busiest-routes-table > summary::marker { content:''; }
.busiest-routes-table > summary:hover,.busiest-routes-table > summary:focus-visible { background:#e4f2fb; border-color:var(--blue); }
.busiest-routes-table > summary .busiest-routes-table__toggle { color:var(--blue); font-weight:800; }
.busiest-routes-table > summary::after { content:'+'; margin-left:auto; width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:var(--blue); color:#fff; }
.busiest-routes-table[open] > summary::after { content:'−'; }
.busiest-routes-table table { min-width:1120px; }
.busiest-routes-table caption { padding:12px 14px; color:var(--muted); font-size:13px; text-align:left; }
.busiest-routes-table tbody th[scope="row"] { font-weight:800; text-align:left; }
.busiest-routes-table td small { color:var(--muted); }
.ranking-narrative { margin:20px 0 4px; padding:20px; border-left:4px solid var(--blue); border-radius:10px; background:#f3f8fc; }
.ranking-narrative h3 { margin:0 0 8px; }
.ranking-narrative p { margin:0; line-height:1.7; }
.daily-traffic-passenger-tip,.airline-direction-summary { margin:20px 0; padding:20px; border-left:4px solid var(--teal,#168b7c); border-radius:10px; background:#eef8f5; }
.daily-traffic-passenger-tip h2,.airline-direction-summary h3 { margin:0 0 8px; }
.daily-traffic-passenger-tip p,.airline-direction-summary p { margin:0; line-height:1.7; }
.airline-direction-links { margin-top:14px; }
.statistics-coverage-row td { background:#f7f9fa; color:var(--muted); font-style:italic; }
.statistics-patterns {
  padding:25px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
}
.statistics-patterns .section-heading { margin-bottom:18px; }
.statistics-patterns .section-heading p { max-width:920px; margin:8px 0 0; color:var(--muted); line-height:1.65; }
.statistics-pattern-columns { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); gap:28px; }
.statistics-pattern-columns>div { min-width:0; }
.statistics-pattern-columns h3 { margin:0 0 8px; }
.statistics-pattern-columns p { color:var(--muted); }
.statistics-pattern-columns ol { display:grid; gap:8px; margin:14px 0; padding-left:22px; }
.statistics-pattern-columns li { padding-left:5px; }
.statistics-pattern-columns li span { margin-left:7px; color:var(--muted); font-size:13px; white-space:nowrap; }
.statistics-inline-links { display:flex; flex-wrap:wrap; gap:8px 16px; }
.statistics-inline-links a { font-weight:800; }
.statistics-bridge {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:24px;
  padding:25px;
  border-radius:14px;
  background:#f5f8fa;
}
.statistics-bridge--performance { border-left:5px solid var(--blue); }
.statistics-bridge--archive { border-left:5px solid #54705e; }
.daily-traffic-product { display:grid; grid-template-columns:minmax(0,1fr); gap:28px; }
.daily-traffic-product>* { box-sizing:border-box; min-width:0; max-width:100%; }
.daily-traffic-product>.section-heading { margin-bottom:-6px; }
.daily-traffic-narrative {
  display:grid;
  grid-template-columns:minmax(210px,.72fr) minmax(0,1.25fr) minmax(0,1.25fr);
  gap:20px;
  padding:24px;
  border:1px solid var(--line);
  border-radius:14px;
  background:linear-gradient(145deg,#fff,#f5fafc);
}
.daily-traffic-narrative h2 { margin:0; }
.daily-traffic-narrative p { margin:0; color:var(--muted); line-height:1.7; }
.daily-traffic-methodology { margin-top:2px; }
.archive-retention { display:grid; gap:28px; }
.archive-retention>.section-heading { margin:0; }
.archive-retention>.section-heading p:not(.eyebrow) { max-width:900px; margin:8px 0 0; color:var(--muted); line-height:1.65; }
.archive-retention__period { margin:0; padding:16px 18px; border-left:4px solid var(--blue); background:var(--sky); line-height:1.65; }
.archive-retention>[data-component="archive-coverage"] { display:grid; gap:20px; }
.archive-retention>[data-component="archive-coverage"]>h2,
.archive-retention>[data-component="archive-coverage"]>.archive-retention__period,
.archive-retention>[data-component="archive-coverage"]>.kpi-grid { margin:0; }
.archive-retention>h3 { margin:2px 0 -8px; font-size:24px; }
.archive-coverage-visualization { min-width:0; padding:22px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 8px 24px #14243a0b; }
.archive-coverage-visualization>h2 { margin:0 0 8px; }
.archive-coverage-visualization>p { margin:0 0 16px; color:var(--muted); line-height:1.6; }
.archive-coverage-legend { display:flex; flex-wrap:wrap; gap:9px 16px; margin-bottom:14px; color:var(--muted); font-size:12px; }
.archive-coverage-legend>span { display:inline-flex; align-items:center; gap:7px; }
.archive-coverage-swatch { display:block; width:24px; height:10px; border-radius:3px; border:1px solid transparent; background:#2480bb; }
.archive-coverage-swatch--partial { border-color:#9a6500; background:repeating-linear-gradient(135deg,#f3bf54 0 4px,#fff3ce 4px 8px); }
.archive-coverage-swatch--current { border-color:#9a6500; background:#fff; box-shadow:inset 0 0 0 2px #f3bf54; }
.archive-coverage-swatch--unknown { border-color:#7b8792; background:#dfe4e8; }
.archive-coverage-scroll { max-width:100%; overflow-x:auto; padding:6px 2px 10px; overscroll-behavior-inline:contain; }
.archive-coverage-chart { display:flex; align-items:flex-end; gap:12px; min-width:max(640px,calc(var(--archive-days) * 72px)); height:270px; padding:22px 8px 46px; border-bottom:1px solid var(--line); background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),var(--line) 25%); }
.archive-coverage-day { position:relative; display:flex; flex:1 0 58px; min-width:58px; height:100%; flex-direction:column; align-items:center; justify-content:flex-end; }
.archive-coverage-day__bars { display:flex; width:34px; height:100%; flex-direction:column-reverse; justify-content:flex-start; border-radius:5px 5px 0 0; overflow:hidden; }
.archive-coverage-day__bar { display:block; width:100%; min-height:2px; }
.archive-coverage-day__bar--arrivals { background:#00639a; }
.archive-coverage-day__bar--departures { background:#e66b2e; }
.archive-coverage-day>time { position:absolute; top:calc(100% + 7px); color:var(--muted); font-size:10px; white-space:nowrap; }
.archive-coverage-day>.archive-status { position:absolute; top:calc(100% + 23px); padding:2px 6px; font-size:9px; white-space:nowrap; }
.archive-coverage-day--partial .archive-coverage-day__bars { opacity:.7; outline:2px dashed #9a6500; outline-offset:2px; }
.archive-coverage-day--partial .archive-coverage-day__bar { background-image:repeating-linear-gradient(135deg,transparent 0 5px,#ffffff73 5px 9px); }
.archive-coverage-day--current .archive-coverage-day__bars { opacity:.72; outline:2px solid #d48a00; outline-offset:2px; }
.archive-coverage-day--unknown .archive-coverage-day__bars { filter:grayscale(1); opacity:.5; }
.archive-coverage-fallback { margin-top:18px; }
.archive-direction-links { display:flex; flex-wrap:wrap; gap:6px 12px; }
.archive-direction-links a { font-weight:800; }
.archive-month>.kpi-grid,
.archive-month-overview>.kpi-grid,
.archive-retention>[data-component="archive-coverage"]>.kpi-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.archive-month-overview { display:grid; gap:18px; min-width:0; padding:24px; border:1px solid var(--line); border-radius:14px; background:linear-gradient(145deg,#fff,#f5fafc); }
.archive-month-overview>h2,
.archive-month-overview>.archive-retention__period,
.archive-month-overview>.kpi-grid { margin:0; }
.archive-month-summary { margin:0; padding:18px 20px; border-left:4px solid var(--blue); border-radius:0 10px 10px 0; background:var(--sky); line-height:1.68; }
.multi-bar-chart__item--partial .multi-bar-chart__bars { opacity:.62; outline:2px dashed #9a6500; outline-offset:2px; }
.multi-bar-chart__item--partial .multi-bar-chart__bar { background-image:repeating-linear-gradient(135deg,transparent 0 5px,#ffffff78 5px 9px); }
.multi-bar-chart__item--partial .multi-bar-chart__label { max-width:104px; color:#714800; font-weight:800; }
.chart-status-swatch--partial { border:1px solid #9a6500; background:repeating-linear-gradient(135deg,#f3bf54 0 4px,#fff3ce 4px 8px) !important; }
.archive-daily-snapshot { display:grid; gap:18px; padding:22px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 8px 24px #14243a0b; }
.archive-daily-snapshot>h2,.archive-daily-snapshot>.kpi-grid,.archive-timing-breakdown>.kpi-grid { margin:0; }
.archive-status-breakdown>h3 { margin:0 0 10px; }
.archive-status-breakdown ul { display:flex; flex-wrap:wrap; gap:8px 14px; margin:0; padding:0; list-style:none; }
.archive-status-breakdown li { display:flex; align-items:center; gap:8px; }
.archive-timing-breakdown { display:grid; gap:10px; }
.archive-timing-breakdown>.component-note { margin:0; }
.archive-daily-interpretation { margin:0; padding:16px 18px; border-left:4px solid var(--blue); background:var(--sky); line-height:1.65; }
.archive-daily-interpretation--limited { border-left-color:#c17b00; background:#fff8e6; }
.archive-analysis { display:grid; gap:18px; padding:24px; border:1px solid var(--line); border-radius:14px; background:linear-gradient(145deg,#fff,#f5fafc); }
.archive-analysis>.section-heading { margin:0; }
.archive-analysis-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.archive-analysis-grid article { min-width:0; padding:19px; border:1px solid #d7e3ea; border-radius:12px; background:#fff; }
.archive-analysis-grid h3 { margin:0 0 9px; font-size:19px; }
.archive-analysis-grid p { margin:0; color:var(--muted); line-height:1.65; }
.statistics-bridge h2 { margin:4px 0 9px; }
.statistics-bridge p { margin:0; color:var(--muted); line-height:1.65; }
.statistics-bridge .statistics-component-explanation { margin-top:14px; color:var(--ink); }
.statistics-bridge .statistics-inline-links { justify-content:flex-end; }
.statistics-bridge .statistics-inline-links a { display:inline-flex; align-items:center; justify-content:center; min-height:42px; padding:8px 13px; border:1px solid var(--line); border-radius:9px; background:#fff; text-decoration:none; }
.statistics-bridge .statistics-inline-links a:hover,.statistics-bridge .statistics-inline-links a:focus-visible { border-color:var(--blue); background:var(--sky); }
.ticket-discovery-bridge { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:28px; }
.ticket-discovery-bridge .button { flex:0 0 auto; }
.route-distribution-summary { margin:18px 0 0; max-width:78ch; color:var(--ink); font-weight:400; line-height:1.7; }
.statistics-modules>.statistics-component-explanation { margin:0 0 22px; }
.statistics-module-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.statistics-module-grid article { display:flex; min-height:180px; flex-direction:column; padding:20px; border:1px solid var(--line); border-radius:13px; background:linear-gradient(145deg,#fff,#f7fbfd); }
.statistics-module-grid h3 { margin:0; font-size:19px; }
.statistics-module-grid p { margin:9px 0 16px; color:var(--muted); }
.statistics-module-grid article>div { display:flex; flex-wrap:wrap; gap:7px 12px; margin-top:auto; }
.statistics-module-grid a { font-size:13px; font-weight:800; }
.statistics-faq { display:grid; gap:9px; }
.statistics-faq .section-heading { margin-bottom:7px; }
.statistics-faq details { border:1px solid var(--line); border-radius:10px; background:#fff; }
.statistics-faq summary { padding:15px 17px; font-weight:850; cursor:pointer; }
.statistics-faq details p { margin:0; padding:0 17px 17px; color:var(--muted); }
.statistics-methodology-panel { box-sizing:border-box; display:grid; width:100%; max-width:100%; grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr); gap:22px; padding:25px; border-radius:14px; background:var(--ink); color:#fff; scroll-margin-top:110px; }
.statistics-methodology-panel h2 { margin:3px 0 10px; color:#fff; }
.statistics-methodology-panel p { color:#d6e1ea; }
.statistics-methodology-panel dl { margin:0; }
.statistics-methodology-panel dl>div { display:flex; justify-content:space-between; gap:16px; padding:9px 0; border-bottom:1px solid #ffffff24; }
.statistics-methodology-panel dt { color:#b9c9d6; }
.statistics-methodology-panel dd { margin:0; font-weight:800; text-align:right; }
.statistics-methodology-panel>.component-note { grid-column:1/-1; margin:0; color:#b9c9d6; }
.statistics-long-history { box-sizing:border-box; display:grid; width:100%; max-width:100%; min-width:0; grid-template-columns:minmax(0,1fr); gap:24px; overflow:hidden; padding:25px; border:2px solid #c68532; border-radius:14px; background:#fffaf2; }
.statistics-long-history>* { min-width:0; max-width:100%; }
.statistics-long-history>.section-heading { margin:0; }
.statistics-long-history>.section-heading p:not(.eyebrow) { max-width:900px; margin:8px 0 0; color:var(--muted); line-height:1.65; }
.statistics-long-history>.chart-card,
.statistics-history-grid .chart-card { width:100%; min-width:0; max-width:100%; margin-top:0; background:#fff; }
.statistics-long-history .statistics-data-table { margin-top:-10px; background:#fff; }
.statistics-history-grid { display:grid; width:100%; min-width:0; max-width:100%; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.statistics-history-grid>div { min-width:0; }
.statistics-history-grid .multi-bar-chart { min-width:560px; }
.statistics-long-history>.chart-card .multi-bar-chart { min-width:960px; }
.statistics-long-history .chart-plot { max-width:100%; overflow-x:auto; }
.chart-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.chart-heading h2 { margin:0; }
.chart-period { display:flex; gap:5px; }
.chart-period button { padding:5px 9px; border:1px solid var(--line); background:#fff; color:var(--ink); font-size:12px; }
.chart-period button.is-active { border-color:var(--blue); background:var(--sky); color:var(--blue); }
.chart-legend { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:12px; color:var(--muted); font-size:12px; }
.chart-legend>span:not(.chart-legend__item) { width:22px; height:8px; border-radius:3px; background:linear-gradient(90deg,var(--blue-2),var(--blue)); }
.chart-legend__item { display:inline-flex; align-items:center; gap:6px; }
.chart-legend__item i { width:22px; height:8px; border-radius:3px; background:var(--series-color); }
.table-sort { width:100%; justify-content:flex-start; padding:0; background:transparent; color:inherit; font:inherit; text-align:left; }
.table-sort::after { content:" ↕"; color:var(--blue); }
.data-table-block { margin-top:32px; }
.data-table-block h2 { margin-bottom:12px; }
.delay-heatmap { min-width:850px; font-size:12px; }
.delay-heatmap th,.delay-heatmap td { padding:7px; text-align:center; }
.delay-heatmap td span,.delay-heatmap td small { display:block; white-space:nowrap; }
.delay-heatmap td small { margin-top:3px; font-size:9px; opacity:.88; }
.delay-heatmap .heat-1 { background:#fff1d5; }
.delay-heatmap .heat-2 { background:#ffd99c; }
.delay-heatmap .heat-3 { background:#ffb56b; }
.delay-heatmap .heat-4 { background:#ef774f; color:#fff; }
.delay-heatmap .heat-5 { background:#ad2e24; color:#fff; }
.bar-chart { height:300px; display:flex; align-items:flex-end; gap:7px; overflow-x:auto; padding:48px 6px 38px; border-bottom:1px solid var(--line); }
.bar-chart__item { position:relative; min-width:28px; height:100%; flex:1 0 28px; display:flex; align-items:flex-end; justify-content:center; }
[data-shared-chart] [data-chart-index][hidden],
[data-range-sync] [data-chart-table-row][hidden],
table[data-paginate] tbody tr[hidden] { display:none !important; }
.bar-chart__bar { width:min(28px,80%); min-height:2px; border-radius:5px 5px 0 0; background:linear-gradient(180deg,var(--blue-2),var(--blue)); }
.bar-chart__value { position:absolute; bottom:calc(100% + 4px); display:none; padding:2px 5px; border-radius:4px; background:var(--ink); color:#fff; font-size:11px; white-space:nowrap; }
.bar-chart__item:hover .bar-chart__value,.bar-chart__item:focus-within .bar-chart__value { display:block; }
.bar-chart__label { position:absolute; top:calc(100% + 7px); max-width:70px; overflow:hidden; color:var(--muted); font-size:10px; white-space:nowrap; text-overflow:ellipsis; }
.chart-plot { position:relative; margin-top:8px; padding-left:44px; }
.chart-y-axis { position:absolute; z-index:1; inset:0 auto 38px 0; width:38px; color:var(--muted); font-size:10px; pointer-events:none; }
.chart-y-axis span { position:absolute; right:5px; transform:translateY(50%); }
.multi-bar-chart { position:relative; height:300px; display:flex; align-items:flex-end; gap:9px; overflow-x:auto; padding:28px 6px 38px; border-bottom:1px solid var(--line); background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),var(--line) 25%); }
.multi-bar-chart__item { position:relative; min-width:34px; height:100%; flex:1 0 34px; display:flex; align-items:flex-end; justify-content:center; }
.multi-bar-chart__bars { width:min(34px,90%); height:100%; display:flex; align-items:flex-end; justify-content:center; gap:2px; }
.multi-bar-chart__bar { position:relative; display:block; flex:1 1 0; min-width:5px; min-height:2px; max-width:18px; border-radius:4px 4px 0 0; background:var(--series-color); }
[data-chart-mode=stacked] .multi-bar-chart__bars { flex-direction:column-reverse; align-items:stretch; justify-content:flex-start; gap:0; }
[data-chart-mode=stacked] .multi-bar-chart__bar { width:100%; max-width:none; flex:none; border-radius:0; }
[data-chart-mode=stacked] .multi-bar-chart__bar:first-child { border-radius:0 0 4px 4px; }
[data-chart-mode=stacked] .multi-bar-chart__bar:last-child { border-radius:4px 4px 0 0; }
.multi-bar-chart__value { position:absolute; z-index:3; left:50%; bottom:calc(100% + 5px); display:none; transform:translateX(-50%); padding:3px 6px; border-radius:4px; background:var(--ink); color:#fff; font-size:11px; white-space:nowrap; box-shadow:0 4px 12px #14243a33; }
.multi-bar-chart__item:hover .multi-bar-chart__value,.multi-bar-chart__item:focus-within .multi-bar-chart__value { display:block; }
.multi-bar-chart__label { position:absolute; top:calc(100% + 7px); max-width:72px; overflow:hidden; color:var(--muted); font-size:10px; white-space:nowrap; text-overflow:ellipsis; }
.chart-card--dense-labels .multi-bar-chart { height:380px; padding-bottom:118px; }
.chart-card--dense-labels .chart-y-axis { bottom:118px; }
.multi-bar-chart--dense-labels { padding-right:84px; }
.multi-bar-chart--dense-labels .multi-bar-chart__label { left:50%; width:104px; max-width:none; overflow:visible; transform:rotate(45deg); transform-origin:top left; text-overflow:clip; }
.chart-axis-title { margin:8px 0 0; color:var(--muted); font-size:11px; text-align:center; }
.line-chart-scroll { overflow-x:auto; margin-top:8px; }
.line-chart { display:block; width:100%; min-width:680px; height:auto; }
.line-chart__grid { stroke:var(--line); stroke-width:1; }
.line-chart__axis-label { fill:var(--muted); font:11px Inter,ui-sans-serif,system-ui,sans-serif; }
.line-chart__series { fill:none; stroke:var(--series-color); stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }
.line-chart__point { fill:#fff; stroke:var(--series-color); stroke-width:3; }
.line-chart__point:focus { outline:none; stroke-width:6; }
.table-pagination { display:flex; align-items:center; justify-content:center; gap:12px; margin-top:14px; }
.table-pagination button { padding:7px 11px; border:1px solid var(--line); background:#fff; color:var(--blue); font-size:12px; }
.table-pagination button:disabled { opacity:.45; cursor:not-allowed; }
.table-pagination span { color:var(--muted); font-size:12px; text-align:center; }
/* Passenger status chip: a single, centered pill that never wraps into two ragged
   lines, with a controlled min-width and height on desktop and in the mobile card. */
.ticket-quality { display:inline-flex; align-items:center; justify-content:center; gap:5px;
  min-width:120px; min-height:26px; padding:3px 12px; border-radius:999px; background:#eef2f5;
  color:#3f5666; font-size:11px; font-weight:800; line-height:1.2; letter-spacing:.01em;
  text-align:center; white-space:nowrap; box-sizing:border-box; }
.ticket-quality--strong,.ticket-quality--good,.ticket-quality--available { background:#dff3e9; color:#136c46; }
.ticket-quality--limited { background:#fef3d9; color:#8a5a12; }
.ticket-quality--historical { background:#e7eef6; color:#355680; }
.ticket-quality--none { background:#eef2f5; color:#586570; }
@media (max-width:640px){ .ticket-quality { min-width:0; width:100%; max-width:200px; } }
.editorial-layer { max-width:850px; }
.editorial-layer>* { margin-top:40px; }
.editorial-answer { margin-top:28px; padding:20px 22px; border-left:4px solid var(--blue); border-radius:0 12px 12px 0; background:var(--sky); }
.editorial-answer p { margin:6px 0 0; }
.editorial-lead { margin-top:24px; }
.editorial-message { margin-top:28px; padding:20px 22px; border-left:4px solid var(--blue); border-radius:0 12px 12px 0; background:var(--sky); }
.editorial-message h2 { margin:0 0 8px; font-size:20px; }
.editorial-message div>:first-child { margin-top:0; }
.editorial-message div>:last-child { margin-bottom:0; }
.editorial-message--alert,.editorial-message--warning { border-color:var(--warn); background:#fff4d6; color:#714800; }
.editorial-message--status { border-color:var(--ok); background:#e3f5ec; color:#075b3b; }
.editorial-layer>section { margin-top:40px; }
.editorial-steps li,.editorial-tips li { margin-block:8px; }
.editorial-steps li::marker { color:var(--blue); font-weight:800; }
.editorial-card__icon { display:grid; place-items:center; width:38px; height:38px; margin-bottom:10px; border-radius:10px; background:var(--sky); font-size:20px; }
.shared-icon{width:1.35rem;height:1.35rem;display:inline-block;vertical-align:-.22em;flex:0 0 auto}
.shared-icon--heading{margin-right:.5rem;color:var(--blue)}
.editorial-card__icon .shared-icon{width:1.75rem;height:1.75rem}
.product-icon-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.product-icon-card{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fff}
.product-icon-card>.shared-icon{width:1.8rem;height:1.8rem;color:var(--blue)}
.menu-lines{display:inline-grid;gap:4px;width:22px}
.menu-lines i{display:block;height:2px;border-radius:2px;background:currentColor}
.brand-mark .shared-icon,.weather-icon .shared-icon{width:1.35rem;height:1.35rem}
.home-product{display:grid;gap:2rem;margin:28px 0 0}
.home-board-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.home-board-card,.home-time-card{display:flex;gap:.85rem;border:1px solid var(--line);border-radius:14px;padding:1.1rem;background:#fff}
.home-time-card{align-items:flex-start;background:linear-gradient(135deg,#f5fbff,#f3faf7)}
.home-time-card__body{display:grid;grid-template-columns:1fr auto;align-items:start;gap:.35rem 1.5rem;flex:1;min-width:0}
.home-time-card__main{min-width:0}
.home-time-card__sun{grid-column:2;grid-row:1;justify-self:end;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}
.home-board-card>div,.home-time-card>div{min-width:0;flex:1}
.home-board-card h2,.home-time-card h2{margin:0 0 .65rem;font-size:1.05rem}
.home-board-window{margin:-.35rem 0 .85rem;color:var(--muted);font-size:.8rem;font-weight:700}
.home-board-card ul{list-style:none;margin:0 0 .75rem;padding:0;display:grid;gap:.45rem}
.home-board-card li{display:grid;grid-template-columns:3.25rem 1fr;gap:.65rem;padding:.35rem 0;border-bottom:1px solid #edf1f4;font-size:.88rem}
.home-board-card li:last-child{border-bottom:0}
.home-board-card li time{font-weight:850}
.home-board-card li span{min-width:0;overflow-wrap:anywhere}
.home-board-card li small{display:block;margin-top:.15rem;color:var(--muted);font-size:.75rem}
.home-time-card strong{font-size:2rem;line-height:1;display:block;margin-top:.15rem}
.home-time-card__tz{margin:.35rem 0 0;color:var(--muted);font-size:.85rem}
.home-time-card__recorded{margin:.3rem 0 0;color:var(--muted);font-size:.82rem}
.home-time-card__recorded time{font-weight:750;color:var(--ink)}
.home-time-links{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem;font-size:.8rem;margin:0}
.home-time-links a{display:inline-flex;align-items:center;gap:.35rem;font-weight:750}
.home-time-links .shared-icon{width:.95rem;height:.95rem;flex:0 0 auto;color:var(--blue)}
.home-time-card__sun .home-sun-times{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;margin:0;color:var(--muted);font-size:.82rem}
.home-sun-times span{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}
.home-sun-times .shared-icon{width:1rem;height:1rem;flex:0 0 auto}
.home-sun-times time{font-weight:750;color:var(--ink)}
.home-next-flights{border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem;background:#fff;display:grid;gap:.75rem}
.home-next-flights[data-flights-fresh=false]{background:#fbfcfd}
.home-next-flights-head{display:flex;align-items:center;gap:.6rem}
.home-next-flights-head h2{margin:0;font-size:1.05rem}
.home-next-flights-head .shared-icon{width:1.3rem;height:1.3rem;color:var(--blue)}
.home-next-flights-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.4rem}
.home-next-flights-col{display:grid;align-content:start;gap:.55rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:12px;background:#fbfdff;min-width:0}
.home-next-flights-col>h3{margin:0;font-size:.95rem}
.home-next-flights-col .home-next-flights-board{margin-top:.35rem;justify-self:start}
.home-next-flights-list{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.home-next-flight{display:grid;grid-template-columns:3.4rem 1fr;align-items:baseline;gap:.55rem .8rem;padding-bottom:.5rem;border-bottom:1px solid #edf1f4}
.home-next-flight:last-child{border-bottom:0;padding-bottom:0}
.home-next-flight>time{font-weight:850}
.home-next-flight-detail{min-width:0;overflow-wrap:anywhere}
.home-next-flight-detail small{display:block;margin-top:.1rem;color:var(--muted);font-size:.75rem}
.home-next-flights-reference{margin:0;color:var(--muted);font-size:.82rem}
.home-next-flights-reference time{color:var(--ink);font-weight:700}
.home-next-flights-notice{margin:0;color:var(--muted);font-size:.9rem}
.home-next-flights-links{display:flex;flex-wrap:wrap;gap:.5rem 1.1rem;margin:0;font-size:.85rem}
.home-next-flights-links a{font-weight:750}
.kpi-card .kpi-window{display:block;margin-top:.35rem;color:var(--muted);font-size:.72rem;font-weight:650;line-height:1.3}
.home-operator-note{margin:.35rem 0 0;color:var(--muted);font-size:.9rem}
.home-operator-note strong{color:var(--ink)}
.flight-status-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 1rem}
.flight-status-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .7rem;border-radius:999px;font-size:.8rem;font-weight:750;border:1px solid var(--line);background:#fff;color:var(--ink)}
.flight-status-chip--time{font-weight:650;color:var(--muted)}
.flight-status-chip--time time{color:var(--ink);font-weight:750}
.flight-status-bar--ok .flight-status-chip--state{background:#e7f6ec;border-color:#bfe5cc;color:#1c6b3a}
.flight-status-bar--neutral .flight-status-chip--state{background:#eef2f6;border-color:var(--line);color:var(--ink)}
.flight-status-bar--stale .flight-status-chip--state,.flight-status-chip--caution{background:#fdf3e2;border-color:#f0d9ac;color:#8a5a12}
.flight-status-bar--error .flight-status-chip--state{background:#fbe9e9;border-color:#f0c2c2;color:#9a2828}
.flight-status-bar--empty .flight-status-chip--state{background:#eef2f6;border-color:var(--line);color:var(--muted)}
.flight-next-card{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem .8rem;margin:0 0 1.1rem;padding:.8rem 1rem;border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:12px;background:#fff}
.flight-next-card__tag{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--blue)}
.flight-next-card>time{font-weight:850}
.flight-next-card__detail{min-width:0;overflow-wrap:anywhere}
.flight-next-card__detail small{color:var(--muted)}
.flight-next-card__ops{flex-basis:100%;color:var(--muted);font-size:.8rem}
.route-evidence-cta{display:inline-block;margin-top:.25rem;font-size:.78rem;font-weight:750;color:var(--blue)}
.flight-search-submit{padding:.45rem .9rem;border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:8px;font-weight:750;cursor:pointer}
.flight-search-clear{align-self:center;font-size:.85rem;font-weight:700;color:var(--blue)}
.flight-share{display:inline-block;margin-top:.2rem;font-size:.72rem;font-weight:700;color:var(--muted)}
.flight-share:hover,.flight-share:focus{color:var(--blue)}
tr[data-flight-row]:target{outline:2px solid var(--blue);outline-offset:-2px;background:#eef6ff}
tr[data-flight-row]:target td{background:#eef6ff}
/* Strong visual separation: the comparative-summary block is a card, and each
   interpretive sub-block (balance, top countries, trend) is a distinct panel so
   the three readings don't blur into one another. */
.busiest-routes-insights{display:grid;gap:1rem;margin:1.5rem 0;padding:22px;border:1px solid var(--line);border-radius:14px;background:#fff}
.busiest-routes-balance{margin:0;color:var(--ink);padding:12px 14px;border-left:3px solid var(--blue);background:#f5fbff;border-radius:8px}
.busiest-routes-countries,.busiest-routes-trend{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fbfdff}
.busiest-routes-countries ul,.busiest-routes-trend ul{list-style:none;margin:.5rem 0 0;padding:0;display:grid;gap:.4rem}
.busiest-routes-countries li,.busiest-routes-trend li{font-size:.9rem;overflow-wrap:anywhere}
.busiest-routes-trend h3,.busiest-routes-countries h3{margin:0 0 .25rem;font-size:1rem}
.busiest-routes-trend--withheld{margin:0;color:var(--muted);font-size:.9rem;padding:14px 16px;border:1px dashed var(--line);border-radius:12px;background:#fbfcfd}
.home-decision-block,.home-passenger-block,.home-data-overview,.home-practical{display:grid;gap:1rem}
.product-icon-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.product-icon-card{display:flex;gap:.8rem;align-items:flex-start;padding:1rem;border:1px solid var(--line);border-radius:14px;text-decoration:none;background:#fff}
.product-icon-card span{display:grid;gap:.25rem}
.product-icon-card small{color:var(--muted);line-height:1.4}
.home-entity-list{border-top:1px solid var(--line);padding-top:1rem}
.home-entity-list ul{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:0;list-style:none}
.home-active-list{margin-top:1rem}
.home-active-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem}
.home-active-head h3{margin:0;font-size:1rem}
.home-active-coverage{color:var(--muted);font-size:.8rem;font-weight:700}
.home-active-items{list-style:none;margin:.75rem 0 .85rem;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.home-active-item{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.5rem .65rem;border:1px solid var(--line);border-radius:10px;background:#fbfdff}
.home-active-rank{display:inline-flex;align-items:center;justify-content:center;min-width:1.4rem;height:1.4rem;padding:0 .35rem;border-radius:999px;background:var(--blue);color:#fff;font-size:.72rem;font-weight:800;font-variant-numeric:tabular-nums}
.home-active-icon{display:inline-flex}
.home-active-icon .shared-icon{width:1.05rem;height:1.05rem;color:var(--blue)}
.home-active-name{font-weight:700;min-width:0;overflow-wrap:anywhere}
.home-active-name a{font-weight:700}
.home-active-count{color:var(--muted);font-size:.8rem;font-weight:700;white-space:nowrap}
.home-active-all{margin-top:.35rem}
.home-lead-layer{margin-top:28px}
.home-editorial-layer{margin-top:28px}
.observation-list{display:grid;gap:.75rem;padding-left:1.25rem}
.observation-list p{margin:0}
.observation-list small,.coverage-disclaimer{color:var(--muted)}
.product-icon-card h3{margin:0 0 4px;font-size:1rem}.product-icon-card p{margin:0;color:var(--muted)}
.contextual-prose a{font-weight:700}
.editorial-prose { margin-top:34px; }
.editorial-prose .lead { font-size:21px; }
.editorial-prose h2 { margin:38px 0 12px; }
.editorial-prose h3 { margin:26px 0 8px; }
.editorial-card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.editorial-card { min-width:0; padding:18px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.editorial-card h3 { margin:0 0 7px; font-size:16px; }
.editorial-card h4 { margin:0 0 6px; font-size:16px; }
.editorial-card p { margin:0; color:var(--muted); }
.editorial-card__link { display:inline-block; margin-top:12px; font-weight:750; }
.family-visual-navigation .editorial-card-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.family-visual-navigation .editorial-card { display:flex; min-height:218px; flex-direction:column; padding:20px; background:linear-gradient(145deg,#fff 55%,#f3f9fd); transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease; }
.family-visual-navigation .editorial-card:hover,.family-visual-navigation .editorial-card:focus-within { border-color:#8dbbd7; box-shadow:0 10px 26px #14243a14; transform:translateY(-2px); }
.family-visual-navigation .editorial-card__icon { width:44px; height:44px; color:var(--blue); }
.family-visual-navigation .editorial-card__link { margin-top:auto; padding-top:16px; }
.family-visual-navigation .editorial-card__link:focus-visible { border-radius:4px; outline:3px solid #f5b942; outline-offset:4px; }
/* Task-based services hub: quick task picker + journey groups */
.service-journey-nav>h2 { margin-bottom:6px; }
.service-quick-tasks { margin:2px 0 22px; }
.service-quick-tasks__label { margin:0 0 9px; font-weight:750; color:var(--ink); }
.service-quick-tasks ul { display:flex; flex-wrap:wrap; gap:8px; list-style:none; padding:0; margin:0; }
.service-quick-chip { display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border:1px solid var(--line); border-radius:999px; background:#fff; font-weight:700; text-decoration:none; color:var(--ink); }
.service-quick-chip:hover,.service-quick-chip:focus-visible { border-color:#8dbbd7; background:var(--sky); }
.service-quick-chip__icon { display:inline-flex; color:var(--blue); }
.service-quick-chip__icon .shared-icon { width:1.15rem; height:1.15rem; }
.service-journey-groups { display:grid; gap:24px; }
.service-journey-group>h3 { margin:0 0 12px; font-size:18px; }
.service-journey-nav .editorial-card-grid { grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); }
.service-journey-nav .editorial-card { min-height:0; }
.service-journey-nav .editorial-card__link { margin-top:auto; padding-top:12px; }
.editorial-comparison-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.editorial-comparison-grid article { padding:20px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.editorial-comparison-grid h3 { margin-top:0; }
.editorial-primary-cta { display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; margin:2px 0 6px; }
.editorial-primary-cta .button--primary { padding:12px 20px; font-size:15px; }
.editorial-primary-cta__note { font-size:13px; color:var(--muted); min-width:0; }
.editorial-verification__advisory { margin:8px 0 0; font-size:13px; color:#8a5a00; }
.editorial-verification[data-freshness="stale"] .editorial-verification__advisory { color:#9a2a2a; font-weight:650; }
.editorial-official { padding:20px; border:1px solid var(--line); border-radius:14px; background:#f7fafc; }
.editorial-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.editorial-actions h2 { flex-basis:100%; }
.editorial-faq details { border-bottom:1px solid var(--line); padding:13px 0; }
.editorial-faq summary { cursor:pointer; font-weight:750; }
.editorial-related-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.editorial-related-grid a { padding:14px; border:1px solid var(--line); border-radius:10px; background:#fff; font-weight:700; text-decoration:none; }
.shared-page--editorial [data-component="page-identity"] h1 { max-width:980px; font-size:clamp(34px,4.6vw,54px); }
.shared-page--editorial .editorial-layer { display:grid; width:100%; max-width:980px; gap:28px; }
.shared-page--editorial .editorial-layer>section,
.shared-page--editorial .editorial-layer>aside { min-width:0; margin-block:0; }
.shared-page--editorial .editorial-lead,
.shared-page--editorial .editorial-answer,
.shared-page--editorial .editorial-prose { max-width:850px; }
.editorial-layer section[id],.editorial-faq[id] { scroll-margin-top:96px; }
.editorial-verification { padding:14px 16px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); color:var(--muted); font-size:14px; }
.editorial-verification a { font-weight:700; }
.entity-map iframe { display:block; width:100%; height:360px; border:1px solid var(--line); border-radius:12px; background:var(--bg); box-shadow:0 10px 28px #14243a12; }
.editorial-map>div>:first-child { margin-top:0; }
.editorial-map>div>:last-child { margin-bottom:0; }
.editorial-map iframe { margin-top:16px; }
.editorial-map .component-note { margin:10px 0 0; }
.component-note { color:var(--muted); font-size:14px; }
.ticket-history small { display:block; color:var(--muted); }
.ticket-history,.ticket-route-summary { display:grid; gap:28px; }
.ticket-history>*,.ticket-route-summary>* { min-width:0; margin-block:0; }
.ticket-sparkline { display:block; width:150px; max-width:100%; height:46px; color:var(--blue); }
.ticket-route-summary>.ticket-sparkline { width:100%; height:110px; margin-top:24px; }

/* ---- fare price-history chart (focusable bars + hover/focus tooltip) ------- */
.fare-chart { margin:20px 0 4px; display:block; }
.fare-chart__caption { font-size:14px; font-weight:750; color:var(--ink); margin:0 0 6px; }
.fare-chart__trend { display:inline-flex; align-items:center; gap:6px; margin:0 0 12px; font-size:13px; font-weight:700; padding:4px 10px; border-radius:999px; background:#eef2f6; color:var(--ink); }
.fare-chart__trend[data-fare-trend="up"] { background:#fbeceb; color:#9a2f12; }
.fare-chart__trend[data-fare-trend="down"] { background:#e8f4ec; color:#147d55; }
.fare-chart__trend-arrow { font-weight:900; }
.fare-chart__bars { display:flex; align-items:flex-end; gap:4px; height:170px; padding-top:34px; overflow-x:auto; overflow-y:visible; scrollbar-width:thin; }
.fare-chart__bar { position:relative; flex:1 1 0; min-width:14px; height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:4px; cursor:default; background:none; border:0; }
.fare-chart__fill { display:block; width:100%; max-width:34px; margin:0 auto; height:var(--fare-bar,12%); min-height:5px; border-radius:6px 6px 2px 2px; background:linear-gradient(180deg,#3ea0da,#1d81bd); transition:filter .12s ease; }
.fare-chart__bar>small { font-size:10px; color:var(--muted); }
.fare-chart__bar:hover .fare-chart__fill,.fare-chart__bar:focus .fare-chart__fill,.fare-chart__bar:focus-visible .fare-chart__fill { filter:brightness(1.12); }
.fare-chart__bar:focus-visible { outline:2px solid var(--blue); outline-offset:2px; border-radius:6px; }
.fare-chart__tip { position:absolute; bottom:calc(100% - 30px); left:50%; transform:translate(-50%,4px); z-index:3; display:block; visibility:hidden; opacity:0; width:max-content; max-width:220px; padding:6px 10px; border-radius:8px; background:var(--ink); color:#fff; font-size:12px; font-weight:700; line-height:1.35; pointer-events:none; box-shadow:0 8px 20px rgba(20,36,58,.24); transition:opacity .12s ease,transform .12s ease,visibility .12s; }
.fare-chart__bar:hover .fare-chart__tip,.fare-chart__bar:focus .fare-chart__tip,.fare-chart__bar:focus-within .fare-chart__tip { visibility:visible; opacity:1; transform:translate(-50%,0); }
.fare-chart__bar:first-child .fare-chart__tip { left:0; transform:translate(0,4px); }
.fare-chart__bar:first-child:hover .fare-chart__tip,.fare-chart__bar:first-child:focus .fare-chart__tip { transform:translate(0,0); }
.fare-chart__bar:last-child .fare-chart__tip { left:auto; right:0; transform:translate(0,4px); }
.fare-chart__bar:last-child:hover .fare-chart__tip,.fare-chart__bar:last-child:focus .fare-chart__tip { transform:translate(0,0); }
.fare-chart__legend { font-size:12.5px; color:var(--muted); margin:10px 0 0; }
.fare-chart__table { margin:10px 0 0; }
.fare-chart__table>summary { cursor:pointer; font-size:13px; font-weight:700; color:var(--blue); }
.fare-chart__table table { width:100%; border-collapse:collapse; margin-top:8px; font-size:13px; }
.fare-chart__table th,.fare-chart__table td { text-align:left; padding:6px 10px; border-bottom:1px solid var(--line); }
@media (prefers-reduced-motion: reduce) { .fare-chart__tip,.fare-chart__fill { transition:none; } }
.fare-chart__change { font-size:12.5px; color:var(--muted); margin:0 0 12px; }

/* ---- partner-search CTA, decision support, future dates, owner embed ------- */
.fare-cta { margin:16px 0; }
.fare-cta--compact { margin:12px 0; }
.fare-cta__button { display:inline-flex; align-items:center; justify-content:center; min-height:46px; font-weight:800; }
.fare-cta--disabled { background:none; border:0; padding:0; }
.fare-decision { display:inline-flex; flex-wrap:wrap; align-items:center; gap:8px; margin:12px 0; padding:8px 14px; border-radius:10px; font-size:13.5px; background:#eef2f6; color:var(--ink); }
.fare-decision[data-decision-tone="low"] { background:#e3f4ea; color:#136c46; }
.fare-decision[data-decision-tone="high"] { background:#fdecec; color:#9a2f12; }
.fare-decision[data-decision-tone="mid"] { background:#eef2f6; color:#355680; }
.fare-summary { font-size:14px; line-height:1.6; color:var(--ink); margin:12px 0; }
.fare-directory-onward { margin:6px 0 18px; }
.fare-future { margin:18px 0; }
.fare-future__list { list-style:none; margin:12px 0 0; padding:0; display:grid; gap:10px; }
.fare-future__item { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:#fff; min-width:0; box-sizing:border-box; }
.fare-future__meta { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 12px; min-width:0; flex:1 1 auto; }
.fare-future__meta strong { font-size:16px; }
.fare-future__dates { font-weight:700; }
.fare-future__extra,.fare-future__observed { color:var(--muted); font-size:12.5px; }
/* The CTA text may wrap to several lines — it is never truncated and never forces
   the card wider than the content container. */
.fare-future__cta { min-width:0; max-width:100%; white-space:normal; overflow-wrap:anywhere; text-align:center; box-sizing:border-box; flex:0 1 auto; }
.fare-embedded__routes { list-style:none; margin:10px 0 0; padding:0; display:grid; gap:8px; }
.fare-embedded__route { display:grid; grid-template-columns:minmax(120px,.8fr) minmax(210px,1.4fr) auto; align-items:center; gap:8px 14px; min-width:0; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.fare-embedded__route small { display:block; color:var(--muted); line-height:1.45; }
.fare-embedded__amount { font-weight:800; }
.fare-embedded__cta { font-size:12px; font-weight:800; padding:4px 10px; border-radius:8px; background:var(--blue); color:#fff; text-decoration:none; white-space:normal; overflow-wrap:anywhere; max-width:100%; box-sizing:border-box; }
.fare-embedded__cta:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
@media (max-width:620px){ .fare-future__item { flex-direction:column; align-items:stretch; } .fare-future__cta { width:100%; } .fare-embedded__route { grid-template-columns:1fr; align-items:stretch; } .fare-embedded__cta { width:100%; text-align:center; } }
.detail-facts { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.detail-facts div { min-width:0; padding:16px; border:1px solid var(--line); border-radius:12px; background:#fff; }
.detail-facts span,.detail-facts strong { display:block; overflow-wrap:anywhere; }
.detail-facts span { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.05em; }
.detail-facts strong { margin-top:5px; }
.detail-facts strong .entity-media-label { display:inline-flex; align-items:center; gap:10px; color:inherit; font-size:inherit; letter-spacing:normal; text-transform:none; }
.detail-facts strong .entity-media-label__text { display:inline; color:inherit; font-size:inherit; letter-spacing:normal; text-transform:none; }

.related-airports { border-top:1px solid var(--line); background:#f5f8fa; }
.related-airports .shell { display:flex; align-items:center; gap:24px; padding-top:22px; padding-bottom:22px; }
.related-airports h2 { min-width:max-content; margin:0; font-size:17px; }
.related-airports ul { display:flex; flex-wrap:wrap; gap:10px; margin:0; padding:0; list-style:none; }
.related-airports a { display:flex; align-items:baseline; gap:8px; padding:9px 12px; border:1px solid var(--line); border-radius:9px; background:#fff; color:var(--ink); text-decoration:none; }
.related-airports a:hover,.related-airports a:focus-visible { border-color:var(--blue); color:var(--blue); }
.related-airports strong { color:var(--blue); }
.site-footer { background:var(--ink); color:#dce6f1; padding:50px 0 24px; }
.site-footer a { color:#fff; }
.footer-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:14px; align-items:start; }
.footer-grid section { min-width:0; }
.footer-grid h2 { margin:0 0 12px; font-size:14px; color:#fff; }
.footer-grid ul { margin:0; padding:0; list-style:none; }
.footer-grid li { margin:5px 0; line-height:1.28; }
.footer-grid a { font-size:14px; }
.footer-bottom { max-width:850px; border-top:1px solid #ffffff24; margin-top:36px; padding-top:24px; color:#b9c6d5; font-size:14px; text-align:center; }
.footer-seo { line-height:1.75; }
.footer-independence { margin:14px auto 0; max-width:760px; line-height:1.7; color:#9fb0c2; font-size:13px; }

.admin-body { background:var(--bg); }
.admin-top { height:64px; display:flex; align-items:center; justify-content:space-between; padding:0 max(20px,calc((100vw - 1180px)/2)); background:var(--ink); color:#fff; }
.admin-top a { color:#fff; text-decoration:none; }
.admin-top nav { display:flex; gap:18px; }
.admin-main { width:min(1180px,calc(100% - 32px)); margin:42px auto; }
.airport-admin-nav {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:-18px 0 32px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 8px 22px #14243a0a;
}
.airport-admin-nav a {
  padding:8px 11px;
  border-radius:7px;
  color:var(--ink);
  text-decoration:none;
  font-size:14px;
  font-weight:700;
}
.airport-admin-nav a:hover { background:var(--sky); }
.airport-admin-nav a[aria-current=page] { background:var(--blue); color:#fff; }
.admin-heading { display:flex; align-items:end; justify-content:space-between; gap:20px; margin-bottom:24px; }
.admin-heading h1 { font-size:42px; }
.admin-card { display:block; background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px; box-shadow:0 8px 22px #14243a0a; }
.admin-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.admin-tile { text-decoration:none; color:var(--ink); }
.admin-tile h2 { margin-top:0; }
.admin-tile__meta { display:inline-flex; margin-bottom:14px; padding:3px 8px; border-radius:999px; background:var(--sky); color:var(--blue); font-size:12px; font-weight:800; }
.admin-overview { margin-bottom:32px; }
.admin-overview h2 { margin-top:0; }
.admin-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin:0; }
.admin-facts div { min-width:0; padding:14px; border-radius:10px; background:var(--bg); }
.admin-facts dt { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.admin-facts dd { margin:5px 0 0; overflow-wrap:anywhere; font-weight:750; }
.admin-section-title { margin:0 0 16px; }
.admin-guide h2 { margin-top:34px; }
.admin-guide h2:first-child { margin-top:0; }
.admin-guide li { margin:8px 0; }
.admin-guide-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.admin-guide-grid>div { padding:18px; border:1px solid var(--line); border-radius:12px; background:var(--bg); }
.admin-guide-grid h3 { margin-top:0; }
.admin-login { max-width:460px; margin:12vh auto; }
.admin-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.admin-form label { display:grid; gap:6px; font-weight:650; }
.admin-form textarea,.admin-form label:has(textarea) { grid-column:1/-1; }
input,textarea,select { width:100%; border:1px solid #bac8d4; border-radius:7px; padding:10px 12px; background:#fff; color:var(--ink); font:inherit; }
label>input[type=checkbox] { width:auto; margin-right:8px; }
.table-scroll { overflow:auto; }
table { width:100%; border-collapse:collapse; }
th,td { padding:12px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }
.status { display:inline-flex; padding:3px 8px; border-radius:999px; background:#e9edf1; font-size:12px; font-weight:800; }
.status--ready,.status--validated { background:#dff3e9; color:var(--ok); }
.notice,.error { padding:14px 16px; border-radius:8px; }
.notice { background:#dff3e9; color:#075b3b; }
.error { background:#fde8e7; color:var(--bad); }
.pass { color:var(--ok); }
.fail { color:var(--bad); }
pre { white-space:pre-wrap; overflow-wrap:anywhere; background:#f2f5f7; padding:16px; border-radius:8px; }

@media (max-width:1050px) {
  .footer-grid { grid-template-columns:repeat(7,minmax(105px,1fr)); overflow-x:auto; padding-bottom:10px; }
  .kpi-grid { grid-template-columns:repeat(3,1fr); }
  .detail-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .statistics-insight-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .archive-analysis-grid { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  .family-visual-navigation .editorial-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mobile-nav-toggle { display:inline-flex; }
  .main-nav { display:none; }
  .site-header.is-nav-open .main-nav { display:block; }
  .main-nav>ul { display:block; padding:8px 16px 18px; }
  .main-nav>ul>li:first-child>a,.main-nav>ul>li:first-child>span,.main-nav>ul>li:first-child>.submenu-toggle { padding-left:10px; }
  .main-nav a,.main-nav .submenu-toggle { width:100%; text-align:left; }
  .main-nav li ul { position:static; display:none; min-width:0; margin:0 0 7px 12px; border:0; border-left:2px solid var(--line); border-radius:0; box-shadow:none; }
  .main-nav li:hover ul,.main-nav li:focus-within ul { display:none; }
  .main-nav li.is-open ul { display:block; }
  .admin-grid,.admin-form,.admin-facts,.admin-guide-grid { grid-template-columns:1fr; }
  .flight-tools { grid-template-columns:1fr; }
  .flight-result-count { justify-self:start; }
}
@media (max-width:700px) {
  #main-content { padding-bottom:48px; }
  .header-row { min-height:72px; }
  .weather-widget strong { display:none; }
  .weather-widget small { max-width:112px; }
  .brand { gap:10px; }
  .brand strong { font-size:18px; white-space:normal; overflow-wrap:break-word; }
  .brand small { white-space:normal; overflow-wrap:break-word; }
  .dynamic-page,.hero { padding:42px 0 64px; }
  .dynamic-page--statistics { padding-top:22px; }
  .dynamic-page--statistics .dynamic-heading { margin-bottom:12px; }
  .dynamic-page--statistics .dynamic-heading h1 { margin-bottom:10px; font-size:34px; line-height:1.04; }
  .dynamic-page--statistics .dynamic-heading .lead { margin-top:0; font-size:16px; line-height:1.42; }
  .entity-public-heading { margin-bottom:16px; }
  .entity-heading-title { align-items:flex-start; gap:14px; }
  .entity-heading-title .airline-logo--hero { width:52px; height:52px; }
  .entity-heading-title .entity-flag--hero { width:40px; height:30px; margin-top:4px; }
  .entity-public-heading .lead { font-size:18px; }
  .entity-action-links { margin:12px 0 18px; }
  .entity-action-links .button { flex:1 1 150px; justify-content:center; text-align:center; }
  .detail-facts--public { margin:16px 0 20px; }
  .entity-observations { margin:18px 0; padding:18px; }
  .entity-primary-table { margin-top:20px; }
  .entity-data-disclosure>summary { padding:14px 16px; }
  .entity-data-disclosure>.table-scroll { padding:0 10px 12px; }
  .entity-family-kpis,.entity-family-definition-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .entity-map-frame { min-height:300px; }
  .entity-map-frame__iframe { height:300px; }
  .entity-map-frame__canvas { height:300px; }
  .entity-family-planning-grid { grid-template-columns:1fr; gap:12px; }
  .entity-family-travel-grid,.entity-family-place-columns,.entity-family-weather__grid { grid-template-columns:1fr; gap:12px; }
  .entity-family-place-columns li { grid-template-columns:1fr; gap:3px; }
  .entity-family-place-columns span { text-align:left; }
  .entity-family-checklist ol { grid-template-columns:1fr; }
  .archive-month>.kpi-grid,
  .archive-month-overview>.kpi-grid,
  .archive-retention>[data-component="archive-coverage"]>.kpi-grid { grid-template-columns:1fr; }
  .archive-retention { gap:24px; }
  .airline-profile-planning__list { grid-template-columns:1fr; }
  .entity-family-nearby ul { grid-template-columns:1fr; }
  .data-state { align-items:flex-start; flex-direction:column; gap:3px; }
  .data-state strong { max-width:100%; white-space:normal; overflow-wrap:anywhere; }
  .dynamic-page--statistics .data-state { padding:10px 12px; margin-bottom:10px; font-size:13px; }
  .kpi-grid { grid-template-columns:repeat(2,1fr); }
  .entity-directory { min-width:0; max-width:100%; }
  .entity-directory>.kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .entity-directory>.kpi-grid>*,.entity-directory-tools>* { min-width:0; }
  .on-time-performance-product>.kpi-grid { grid-template-columns:1fr; }
  .delay-analysis-product>.kpi-grid { grid-template-columns:1fr; }
  .weekly-period-grid { grid-template-columns:1fr; }
  .weekly-metrics-table { min-width:0; }
  .weekly-metrics-table th[scope=row],
  [data-weekly-daily-table] th[scope=row] { display:block; padding:4px 0 9px; border:0; color:var(--blue); font-size:16px; }
  .dynamic-component { padding:16px; }
  .data-table-block { margin-top:26px; }
  .data-table-block>.table-scroll,
  .dynamic-component>.table-scroll { margin-inline:0; }
  .statistics-observations { margin-top:24px; }
  .statistics-hub { gap:28px; }
  .statistics-hub { margin-top:10px; padding:12px; gap:22px; }
  .statistics-hub>.kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .statistics-hub>.kpi-grid .kpi-card { min-height:82px; padding:12px; }
  .statistics-hub>.kpi-grid .kpi-card strong { font-size:24px; }
  .statistics-quick-links { margin-top:-10px; gap:6px; }
  .statistics-coverage { grid-template-columns:1fr; }
  .statistics-coverage>div { min-height:0; }
  .activity-window-grid,
  .statistics-insight-grid,
  .statistics-module-grid,
  .statistics-pattern-columns,
  .statistics-bridge,
  .statistics-methodology-panel,
  .daily-traffic-narrative { grid-template-columns:1fr; }
  .statistics-history-grid { grid-template-columns:1fr; }
  .statistics-long-history { padding:18px; }
  .statistics-overview,
  .statistics-direction-snapshot,
  .statistics-patterns,
  .statistics-bridge { padding:19px; }
  .statistics-mix-snapshots { grid-template-columns:1fr; }
  .statistics-schedule-summary,
  .statistics-history-gate,
  .statistics-history-coverage,
  .statistics-mix-snapshot { padding:18px; }
  .statistics-hub .statistics-component-explanation { margin-top:18px; padding:14px 15px; }
  .statistics-hub>.statistics-component-explanation { margin-top:0; }
  .statistics-direction-snapshot { gap:16px; }
  .statistics-direction-snapshot>.statistics-component-explanation { margin:0; }
  .statistics-bridge .statistics-inline-links { justify-content:flex-start; }
  .statistics-insight-card { min-height:0; }
  .ranked-bars>a,
  .ranked-bars>div { grid-template-columns:1fr auto; gap:7px 12px; }
  .ranked-bars>a>i,
  .ranked-bars>div>i { grid-column:1/-1; grid-row:2; }
  .ranked-bars em { grid-column:2; grid-row:1; }
  .statistics-methodology-panel>.component-note { grid-column:auto; }
  .statistics-methodology-panel>* { min-width:0; }
  .statistics-methodology-panel dl>div { align-items:flex-start; flex-direction:column; gap:4px; }
  .statistics-methodology-panel dd { max-width:100%; text-align:left; overflow-wrap:anywhere; }
  .detail-facts { grid-template-columns:1fr; }
  .editorial-card-grid { grid-template-columns:1fr; }
  .family-visual-navigation .editorial-card-grid { grid-template-columns:1fr; }
  .family-visual-navigation .editorial-card { min-height:0; }
  .editorial-layer--directory-lead .editorial-card-grid { grid-template-columns:1fr; }
  .editorial-layer>section { margin-top:32px; }
  .editorial-comparison-grid { grid-template-columns:1fr; }
  .editorial-related-grid { grid-template-columns:1fr; }
  .shared-page--editorial .editorial-layer { gap:24px; }
  .section-heading,.chart-heading { align-items:flex-start; flex-direction:column; }
  .chart-period { width:100%; overflow-x:auto; }
  .chart-plot { padding-left:36px; }
  .multi-bar-chart { height:260px; }
  .multi-bar-chart__item { min-width:76px; flex-basis:76px; }
  .multi-bar-chart__label { max-width:76px; }
  .chart-card--dense-labels .multi-bar-chart { height:274px; padding-bottom:52px; }
  .chart-card--dense-labels .chart-y-axis { bottom:52px; }
  .multi-bar-chart--dense-labels { padding-right:12px; }
  .multi-bar-chart--dense-labels .multi-bar-chart__label { left:auto; width:auto; max-width:76px; overflow:visible; transform:none; text-overflow:clip; }
  .entity-map iframe { height:280px; }
  table[data-mobile-cards] { display:block; }
  /* A caption keeps its table-caption display inside a card-mode table, which
     squeezes it into the first column's width and wraps it one word per line.
     It has to become a block that spans the container. */
  table[data-mobile-cards] caption:not(.sr-only) { display:block; box-sizing:border-box; width:100%; padding:0 0 12px; color:var(--muted); font-size:13px; font-weight:750; text-align:left; }
  table[data-mobile-cards] thead { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
  table[data-mobile-cards] tbody { display:grid; gap:12px; }
  table[data-mobile-cards] tr { display:block; padding:10px 14px; border:1px solid var(--line); border-radius:12px; background:#fff; box-shadow:0 5px 16px #14243a0a; }
  table[data-mobile-cards] td,
  table[data-mobile-cards] th[scope="row"] { display:grid; grid-template-columns:minmax(92px,38%) 1fr; gap:10px; padding:7px 0; border:0; overflow-wrap:anywhere; text-align:left; }
  table[data-mobile-cards] td+td,
  table[data-mobile-cards] th[scope="row"]+td { border-top:1px solid #edf1f4; }
  table[data-mobile-cards] td::before,
  table[data-mobile-cards] th[scope="row"]::before { content:attr(data-label); color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
  .busiest-routes-table table { min-width:0; }
  .flight-table,
  .shared-page--archive .flight-table { min-width:720px; }
  /* Flight boards stay compact on phones. Unlike general data directories,
     one flight remains one table row and the containing .table-scroll is the
     deliberate horizontal scroll surface. This avoids a full-screen card for
     every flight while preserving the semantic table and its header. */
  .flight-table[data-mobile-cards] { display:table; width:100%; min-width:720px; }
  [data-component="flight-table"] { overflow:hidden; }
  [data-component="flight-table"]>.table-scroll { contain:layout inline-size paint; }
  .flight-table[data-mobile-cards] caption:not(.sr-only) { display:table-caption; width:auto; padding:0 0 10px; }
  .flight-table[data-mobile-cards] thead { position:static; width:auto; height:auto; padding:0; margin:0; overflow:visible; clip:auto; white-space:normal; }
  .flight-table[data-mobile-cards] tbody { display:table-row-group; }
  .flight-table[data-mobile-cards] tr { display:table-row; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
  .flight-table[data-mobile-cards] td,
  .flight-table[data-mobile-cards] th[scope="row"] { display:table-cell; padding:11px 10px; border-bottom:1px solid var(--line); overflow-wrap:normal; white-space:normal; vertical-align:top; }
  .flight-table[data-mobile-cards] td+td,
  .flight-table[data-mobile-cards] th[scope="row"]+td { border-top:0; }
  .flight-table[data-mobile-cards] td::before,
  .flight-table[data-mobile-cards] th[scope="row"]::before { content:none; }
  .content-wide { width:calc(100% - 24px); }
  .ticket-sparkline { width:100%; }
  .home-board-grid,.product-icon-grid,.home-next-flights-columns{grid-template-columns:1fr}
  .home-time-card__body{grid-template-columns:1fr}
  .home-time-card__sun{grid-column:1;grid-row:auto;justify-self:start;text-align:left;align-items:flex-start}
  .home-time-card__sun .home-sun-times{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:.35rem 1rem}
  .home-time-card__sun .home-time-links{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:.3rem 1rem;margin-top:.35rem}
  .home-active-items{grid-template-columns:1fr}
  .home-product{margin-top:24px}
  .home-lead-layer,.home-editorial-layer{margin-top:24px}
}
html,body { max-width:100%; overflow-x:hidden; }
.dynamic-component,.table-scroll { min-width:0; max-width:100%; }
.dynamic-heading h1 { overflow-wrap:anywhere; }
.dynamic-page .dynamic-heading h1 { max-width:980px; font-size:clamp(34px,4.6vw,54px); }
.dynamic-detail[data-detail-kind="route"]>.shell,
.dynamic-detail[data-detail-kind="airport"]>.shell,
.dynamic-detail[data-detail-kind="destination"]>.shell,
.dynamic-detail[data-detail-kind="country"]>.shell { display:grid; gap:28px; }
.dynamic-detail[data-detail-kind="route"]>.shell>*,
.dynamic-detail[data-detail-kind="airport"]>.shell>*,
.dynamic-detail[data-detail-kind="destination"]>.shell>*,
.dynamic-detail[data-detail-kind="country"]>.shell>* { min-width:0; max-width:100%; margin-block:0; }
@media (max-width:560px) {
  .site-header { padding-top:env(safe-area-inset-top); }
  .header-row { min-height:72px; gap:12px; padding-block:8px; }
  .brand { gap:0; }
  .brand-mark { display:none; }
  .header-tools { gap:8px; }
  .utility-nav { display:none; }
  .weather-widget small { display:none; }
  .footer-grid { grid-template-columns:repeat(2,minmax(130px,1fr)); overflow:visible; }
  .related-airports .shell { align-items:stretch; flex-direction:column; gap:12px; }
  .related-airports h2 { min-width:0; }
  .related-airports ul,.related-airports li,.related-airports a { width:100%; }
  .admin-heading { align-items:start; flex-direction:column; }
  h1,.admin-heading h1 { font-size:36px; }
  .dynamic-page .dynamic-heading h1 { font-size:34px; line-height:1.04; }
  .dynamic-page--flight-board>.shell,.flight-board-product { gap:24px; }
  .flight-board-kpis .kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dynamic-detail[data-detail-kind="route"]>.shell,
  .dynamic-detail[data-detail-kind="airport"]>.shell,
  .dynamic-detail[data-detail-kind="destination"]>.shell,
  .dynamic-detail[data-detail-kind="country"]>.shell { gap:24px; }
  .shared-page--tickets>.content-wide { gap:24px; }
  .ticket-history,.ticket-route-summary { gap:24px; }
  .shared-page--archive [data-component="page-identity"] h1 { font-size:34px; }
  .archive-date-picker button { width:100%; justify-content:center; }
  .archive-month-card dl { grid-template-columns:1fr; }
  .archive-coverage-visualization,.archive-daily-snapshot { padding:18px; }
  .archive-coverage-chart { min-width:max(620px,calc(var(--archive-days) * 68px)); }
}

/* All Routes owner product */
.all-routes-product { display:grid; gap:28px; }
.all-routes-product>* { min-width:0; max-width:100%; margin:0; }
.all-routes-product>.kpi-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.all-routes-coverage,
.all-routes-country-distribution,
.all-routes-directory,
.all-routes-definition { padding:clamp(18px,2.5vw,28px); border:1px solid var(--line); border-radius:16px; background:#fff; }
.all-routes-coverage { background:linear-gradient(145deg,#f4fbff,#f3faf6); border-color:#b9d5e3; }
.all-routes-coverage h2 { margin:0 0 12px; }
.all-routes-coverage p { max-width:920px; }
.all-routes-coverage .data-provenance { margin-bottom:0; color:var(--muted); font-size:13px; overflow-wrap:anywhere; }
.country-route-bars { display:grid; gap:10px; margin-top:22px; }
.country-route-bars>div { display:grid; grid-template-columns:minmax(160px,260px) minmax(120px,1fr) 48px; align-items:center; gap:12px; min-width:0; }
.country-route-bars i { height:11px; overflow:hidden; border-radius:999px; background:#e2edf3; }
.country-route-bars i b { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue),#2d9c72); }
.country-route-bars strong { color:var(--blue); text-align:right; }
.all-routes-tools { display:grid; grid-template-columns:minmax(260px,1.3fr) minmax(190px,.7fr) auto; align-items:end; gap:14px; margin:22px 0; }
.all-routes-tools label { display:grid; gap:7px; min-width:0; font-weight:750; }
.all-routes-tools input,
.all-routes-tools select { width:100%; min-height:48px; padding:10px 13px; border:1px solid #91adbf; border-radius:10px; background:#fff; color:var(--ink); font:inherit; }
.all-routes-tools input:focus-visible,
.all-routes-tools select:focus-visible,
.route-state-filters button:focus-visible { outline:3px solid #f4b942; outline-offset:2px; }
.route-state-filters { display:flex; flex-wrap:wrap; gap:7px; }
.route-state-filters button { min-height:44px; padding:8px 12px; border:1px solid #91adbf; border-radius:999px; background:#fff; color:var(--ink); }
.route-state-filters button.is-active { border-color:var(--blue); background:var(--blue); color:#fff; }
.all-routes-directory table { min-width:1040px; }
.all-routes-directory caption { padding:10px 0; color:var(--muted); text-align:left; }
.all-routes-directory th[scope="row"] { min-width:230px; }
.all-routes-directory th[scope="row"]>small { display:block; margin-top:6px; }
.route-state-badge { display:table; margin:0 0 7px; padding:3px 7px; border-radius:999px; background:#e6f4ed; color:#17623b; font-size:11px; font-weight:800; }
.route-state-badge--previous { background:#eef2f5; color:#4b5d70; }
.route-actions { display:grid; gap:6px; min-width:180px; }
.all-routes-no-results { padding:16px; border-left:4px solid var(--blue); background:var(--sky); }
.route-group-summary { margin:8px 0 0; color:var(--muted); }
/* Route-card directory: responsive grid of observed route cards, paginated
   server-side, with a separate collapsed previously-recorded block. */
.route-card-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:16px; margin-top:18px; }
.route-card { display:flex; flex-direction:column; gap:12px; padding:18px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.route-card--previous { background:#f9fbfc; }
.route-card__head { display:grid; gap:4px; }
.route-card__title { margin:2px 0 0; font-size:16px; }
.route-card__place { margin:0; font-weight:650; }
.route-card__iata { display:inline-block; margin-left:4px; padding:1px 6px; border-radius:6px; background:var(--sky); color:var(--blue); font-size:11px; font-weight:800; }
.route-card__geo { margin:0; color:var(--muted); font-size:13px; }
.route-card__stats { display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; margin:0; }
.route-card__stat dt { margin:0; color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.02em; }
.route-card__stat dd { margin:2px 0 0; font-weight:800; }
.route-card__actions { margin-top:auto; }
.route-card-pagination { display:flex; align-items:center; justify-content:center; gap:16px; margin-top:20px; font-weight:750; }
.route-card-pagination [aria-disabled="true"] { color:var(--muted); }
.route-card-pagination__status { color:var(--muted); }
.route-previous-block { margin-top:24px; }
.route-previous-block>summary { cursor:pointer; width:100%; box-sizing:border-box; font-weight:800; display:flex; align-items:center; gap:12px; padding:17px 20px; border:1px solid #8db7d4; border-radius:14px; background:linear-gradient(135deg,#f4f9fd,#e3f1fa); color:var(--blue); box-shadow:0 6px 18px rgba(0,65,105,.08); list-style:none; }
.route-previous-block>summary>span { display:grid; gap:4px; }
.route-previous-block>summary::-webkit-details-marker { display:none; }
.route-previous-block>summary::marker { content:''; }
.route-previous-block>summary:hover,.route-previous-block>summary:focus-visible { background:var(--sky); border-color:var(--blue); }
.route-previous-block>summary::after { content:'+'; margin-left:auto; width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:var(--blue); color:#fff; }
.route-previous-block[open]>summary::after { content:'−'; }
.archive-direction-switch { font-weight:850; border-color:var(--blue)!important; background:var(--sky)!important; }
.archive-table-heading { margin:24px 0 10px; }
@media (max-width:560px) {
  .route-card-grid { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) {
  .all-routes-product * { animation:none!important; scroll-behavior:auto!important; transition:none!important; }
}
@media (max-width:800px) {
  .all-routes-product { gap:24px; }
  .all-routes-product>.kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .all-routes-tools { grid-template-columns:1fr; align-items:stretch; }
  .country-route-bars>div { grid-template-columns:minmax(110px,1fr) 2fr 38px; gap:8px; }
  .all-routes-directory table { min-width:0; }
  .route-actions { min-width:0; }
}
@media (max-width:560px) {
  .all-routes-product>.kpi-grid { grid-template-columns:1fr; }
  .country-route-bars>div { grid-template-columns:1fr auto; }
  .country-route-bars i { grid-column:1/-1; grid-row:2; }
}

.fare-tools { display:flex; align-items:end; justify-content:space-between; gap:16px; margin:18px 0; }
.fare-tools label { display:grid; gap:7px; width:min(100%,520px); font-weight:750; }
.fare-tools input { width:100%; min-height:48px; padding:10px 14px; border:1px solid #9eb6c8; border-radius:10px; background:#fff; color:var(--ink); font:inherit; }
.fare-tools input:focus-visible { outline:3px solid #f4b942; outline-offset:2px; }
.fare-tools [data-fare-count] { color:var(--muted); font-weight:750; white-space:nowrap; }
.fare-state-guide { margin:4px 0 18px; padding:12px 14px; border-left:4px solid var(--blue); border-radius:0 8px 8px 0; background:#f3f8fc; color:var(--muted); font-size:13px; line-height:1.55; }
.fare-state-guide strong { color:var(--ink); }
.shared-page--tickets .ticket-lead-layer,
.shared-page--tickets .ticket-editorial-layer { display:grid; width:100%; max-width:980px; gap:28px; }
.shared-page--tickets .ticket-lead-layer>*,
.shared-page--tickets .ticket-editorial-layer>* { min-width:0; max-width:100%; margin-block:0; }
@media (min-width:1000px) {
  .shared-page--tickets .ticket-lead-layer .editorial-card-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media (min-width:701px) and (max-width:999px) {
  .shared-page--tickets .ticket-lead-layer .editorial-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
.ticket-history,
.ticket-route-summary { display:grid; gap:28px; width:100%; }
.ticket-directory-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.ticket-directory-summary article { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:3px 12px; min-width:0; padding:17px 18px; border:1px solid #b8d5e4; border-radius:15px; background:linear-gradient(145deg,#f4f9ff,#f2faf7); box-shadow:0 8px 22px #173e590b; }
.ticket-directory-summary svg { grid-row:1/3; width:30px; height:30px; padding:6px; border-radius:10px; background:#fff; color:var(--blue); box-sizing:content-box; }
.ticket-directory-summary strong { font-size:clamp(23px,2.4vw,32px); line-height:1; }
.ticket-directory-summary span { color:var(--muted); font-size:13px; font-weight:700; }
.ticket-route-overview { display:grid; grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:16px; padding:22px; border:1px solid #b8d5e4; border-radius:18px; background:linear-gradient(140deg,#f4f9ff,#eef8f4); }
.ticket-route-overview__icon { display:grid; place-items:center; width:52px; height:52px; border-radius:14px; background:#fff; color:var(--blue); box-shadow:0 8px 22px #173e5912; }
.ticket-route-overview__icon svg { width:30px; height:30px; }
.ticket-route-overview>div { display:grid; gap:4px; min-width:0; }
.ticket-route-overview>div>span { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ticket-route-overview strong { overflow-wrap:anywhere; font-size:clamp(17px,2vw,22px); line-height:1.25; }
.ticket-route-overview__arrow { color:var(--blue); font-size:30px; font-weight:800; }
.ticket-route-links,
.ticket-route-guidance,
.ticket-route-faq { display:grid; gap:16px; margin:0; }
.ticket-route-links h2,
.ticket-route-guidance h2,
.ticket-route-faq h2 { margin:0; }
.ticket-route-links .fare-relations { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin:0; }
.ticket-route-links .fare-relations a { display:flex; align-items:center; gap:11px; min-height:68px; padding:14px 16px; border:1px solid var(--line); border-radius:13px; background:#fff; color:var(--ink); font-weight:800; text-decoration:none; box-shadow:0 7px 20px #173e590a; }
.ticket-route-links .fare-relations a:hover { border-color:#78aecd; color:var(--blue); transform:translateY(-1px); }
.ticket-route-links .fare-relations a:focus-visible { outline:3px solid #f4b942; outline-offset:2px; }
.ticket-route-links .fare-relations svg { flex:0 0 auto; width:26px; height:26px; color:var(--blue); }
.ticket-check-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.ticket-check-grid article { min-width:0; padding:19px; border:1px solid var(--line); border-radius:15px; background:#f8fbff; }
.ticket-check-grid svg { width:30px; height:30px; margin-bottom:10px; color:var(--blue); }
.ticket-check-grid h3 { margin:0 0 7px; font-size:18px; }
.ticket-check-grid p { margin:0; color:var(--muted); }
.fare-method { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:22px 0; }
.fare-method>div { min-width:0; padding:14px; border:1px solid var(--line); border-radius:12px; background:#f8fbff; }
.fare-method dt { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; }
.fare-method dd { margin:6px 0 0; font-weight:750; overflow-wrap:anywhere; }
.fare-trend { margin:22px 0; padding:16px; border:1px solid var(--line); border-radius:14px; background:#f8fbff; }
.fare-trend .ticket-sparkline { width:100%; height:auto; }
.fare-trend figcaption,.fare-js-fallback { color:var(--muted); font-size:13px; }
.fare-relations { display:flex; flex-wrap:wrap; gap:8px 14px; margin:18px 0; }
.ticket-quality--ready { background:#dff3e9; color:var(--ok); }
.ticket-quality--stale,.ticket-quality--provider_failure { background:#fff0dc; color:#80520a; }
.ticket-quality--insufficient_history,.ticket-quality--collecting { background:#e7f1fa; color:#16547b; }
@media (max-width:700px) {
  .fare-tools { align-items:stretch; flex-direction:column; }
  .fare-method { grid-template-columns:1fr; }
  .shared-page--tickets .ticket-lead-layer,
  .shared-page--tickets .ticket-editorial-layer,
  .ticket-history,
  .ticket-route-summary { gap:24px; }
  .ticket-directory-summary,
  .ticket-check-grid { grid-template-columns:1fr; }
  .ticket-route-overview { grid-template-columns:auto minmax(0,1fr); gap:12px; padding:18px; }
  .ticket-route-overview__icon { grid-row:1/2; }
  .ticket-route-overview__arrow { grid-column:2; transform:rotate(90deg); justify-self:start; font-size:23px; line-height:1; }
  .ticket-route-overview>div:last-child { grid-column:2; }
  .ticket-route-links .fare-relations { grid-template-columns:1fr; }
}

/* Airlines family owner-renderer */
.dynamic-page--airlines .dynamic-heading h1,
.airline-detail .dynamic-heading h1 { max-width:980px; font-size:clamp(34px,4.6vw,54px); }
.airline-detail>.shell { display:grid; gap:28px; }
.airline-detail>.shell>* { min-width:0; max-width:100%; margin-block:0; }
.airlines-family { display:grid; gap:34px; }
.airlines-scope { padding:28px; border:1px solid #bed3e3; border-radius:20px; background:linear-gradient(145deg,#f7fbff,#eef7f5); }
.airlines-scope>div:first-child { max-width:820px; }
.airlines-scope dl { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:24px 0 18px; }
.airlines-scope dl>div { min-width:0; padding:16px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.airlines-scope dt { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.03em; text-transform:uppercase; }
.airlines-scope dd { margin:7px 0 0; font-size:clamp(20px,2vw,30px); font-weight:850; overflow-wrap:anywhere; }
.official-directory-note { margin:18px 0 0; padding-top:16px; border-top:1px solid var(--line); }
.airline-directory-tools { max-width:680px; margin:18px 0; }
.airline-directory-tools label { display:block; margin-bottom:7px; font-weight:750; }
.airline-directory-tools input { width:100%; min-height:48px; padding:10px 14px; border:1px solid #9eb6c8; border-radius:10px; background:#fff; font:inherit; }
.airline-directory caption,
.airline-detail caption { padding:10px 14px; color:var(--muted); font-size:13px; text-align:left; }
.publication-state { display:inline-flex; padding:4px 8px; border-radius:999px; background:#e9f4ed; color:#17623b; font-size:12px; font-weight:800; white-space:nowrap; }
.publication-state--qualified_noindex { background:#fff2d9; color:#79520a; }
.airlines-related-links { margin:28px 0; padding:22px; border:1px solid var(--line); border-radius:16px; background:#f8fbff; }
.airlines-related-links ul { display:flex; flex-wrap:wrap; gap:9px 18px; margin:0; padding:0; list-style:none; }
.archive-date-navigation { display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px 18px; margin:18px 0; padding:14px 18px; border:1px solid var(--line); border-radius:12px; }
.airline-punctuality { margin:18px 0; padding:18px; border:1px solid #9cc7ad; border-radius:14px; background:#f2fbf5; }
.airline-en-route { padding:clamp(20px,3vw,30px); border:1px solid #b8d5e4; border-radius:20px; background:linear-gradient(145deg,#f5fbff,#f2faf7); box-shadow:0 14px 34px #173e590d; }
.airline-en-route .section-heading { margin-bottom:12px; }
.airline-en-route .section-heading .eyebrow { margin:0 0 4px; }
.airline-en-route__intro { max-width:850px; margin:0 0 20px; color:var(--muted); }
.airline-en-route__cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:0; padding:0; list-style:none; }
.airline-en-route__card { min-width:0; padding:20px; border:1px solid #c8dce7; border-radius:16px; background:#fff; box-shadow:0 8px 22px #173e590b; }
.airline-en-route__flight { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:17px; }
.airline-en-route__flight>strong { color:var(--blue); font-size:22px; overflow-wrap:anywhere; }
.airline-en-route__status { display:inline-flex; align-items:center; gap:7px; color:#17623b; font-size:13px; font-weight:800; }
.airline-en-route__status i { width:8px; height:8px; border-radius:50%; background:#168252; box-shadow:0 0 0 4px #d9f2e5; }
.airline-en-route__route { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:12px; }
.airline-en-route__route>span { display:grid; min-width:0; }
.airline-en-route__route>span:last-child { text-align:right; }
.airline-en-route__route strong { font-size:28px; line-height:1; }
.airline-en-route__route small { margin-top:7px; color:var(--muted); overflow-wrap:anywhere; }
.airline-en-route__route>b { color:var(--blue-2); font-size:22px; }
.airline-en-route__times { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:18px 0; padding:13px 0; border-block:1px solid #e1eaef; }
.airline-en-route__times>div:last-child { text-align:right; }
.airline-en-route__times dt { color:var(--muted); font-size:12px; font-weight:750; }
.airline-en-route__times dd { margin:4px 0 0; font-weight:850; }
.airline-en-route__progress { height:12px; margin:23px 7px 10px; border-radius:999px; background:#dce8ef; }
.airline-en-route__progress>span { position:relative; display:block; width:var(--flight-progress); max-width:100%; height:100%; border-radius:inherit; background:linear-gradient(90deg,#1878a8,#2d9c72); }
.airline-en-route__progress i { position:absolute; top:50%; right:0; display:grid; width:30px; height:30px; place-items:center; border:2px solid #fff; border-radius:50%; background:var(--blue); color:#fff; font-style:normal; transform:translate(50%,-50%) rotate(4deg); box-shadow:0 4px 12px #173e5938; }
.airline-en-route__progress-text,.airline-en-route__unavailable { margin:0; color:var(--muted); font-size:13px; }
.airline-en-route__unavailable { padding:10px 12px; border-radius:10px; background:#fff4dc; color:#704c0c; }
.airline-en-route__note { margin:18px 0 0; padding-top:15px; border-top:1px solid #cadde7; color:var(--muted); font-size:13px; }
@media (prefers-reduced-motion:reduce) {
  .airline-en-route * { animation:none!important; scroll-behavior:auto!important; transition:none!important; }
}
.airline-activity { margin:32px 0; }
.airline-activity-chart { display:flex; align-items:end; gap:10px; min-height:220px; padding:22px 18px 8px; overflow-x:auto; border:1px solid var(--line); border-radius:16px; background:#f8fbff; }
.airline-activity-chart>div { display:grid; grid-template-rows:170px auto; align-items:end; justify-items:center; min-width:54px; flex:1; }
.airline-activity-chart span { display:block; width:34px; height:var(--airline-bar); min-height:3px; border-radius:7px 7px 2px 2px; background:linear-gradient(180deg,var(--blue-2),var(--blue)); }
.airline-activity-chart small { padding-top:8px; color:var(--muted); }
.airline-flight-table .flight-tools { grid-template-columns:minmax(240px,360px) 1fr; align-items:end; }
.airline-flight-table .flight-tools label { display:grid; gap:6px; font-weight:750; }
.airline-flight-table .flight-tools [role="group"] { display:flex; flex-wrap:wrap; gap:7px; }
.airline-flight-table .flight-tools button { padding:8px 11px; border:1px solid #9eb6c8; border-radius:999px; background:var(--paper); color:var(--ink); cursor:pointer; font-weight:750; }
.airline-flight-table .flight-tools button:hover { border-color:var(--blue-2); background:var(--sky); color:var(--blue); }
.airline-flight-table .flight-tools button:focus-visible { outline:3px solid #f4b942; outline-offset:2px; }
.airline-flight-table .flight-tools button.is-active { border-color:var(--blue); background:var(--blue); color:#fff; }
.airline-flight-table .flight-tools button.is-active:hover { background:#044b79; color:#fff; }
@media (max-width:860px) {
  .airlines-scope dl { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .airline-en-route__cards { grid-template-columns:1fr; }
  .airline-flight-table .flight-tools { grid-template-columns:1fr; }
}
@media (max-width:560px) {
  .dynamic-page--airlines .dynamic-heading h1,
  .airline-detail .dynamic-heading h1 { font-size:34px; line-height:1.04; }
  .airline-detail>.shell { gap:24px; }
  .airlines-scope { padding:19px; }
  .airlines-scope dl { grid-template-columns:1fr; }
  .archive-date-navigation { justify-content:flex-start; }
  .airline-activity-chart { min-height:200px; }
  .airline-en-route { padding:18px; }
  .airline-en-route__card { padding:17px; }
}

/* Entity reference layouts — airport, city and country owners.
   Weight comes from type and rules rather than from boxing every block, so the
   one genuinely primary section can read as primary. */
.ref-hero-evidence { margin:18px 0 10px; }
.dynamic-detail[data-reference-layout] .ref-hero-meta { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; margin:0 0 12px; }
.ref-hero-meta__item { display:grid; align-content:center; gap:5px; min-height:88px; padding:15px 16px; border:1px solid #d5e3ec; border-radius:14px; background:linear-gradient(160deg,#fff,#f4f8fb); box-shadow:0 5px 16px rgba(20,36,58,.045); }
.ref-hero-meta__item span { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ref-hero-meta__item strong { color:var(--ink); font-size:15px; }
.ref-hero-scope { margin:0 0 4px; color:var(--muted); font-size:13px; }

.ref-evidence { display:inline-flex; align-items:center; border-radius:999px; padding:3px 11px; font-size:12px; font-weight:800; letter-spacing:.02em; white-space:nowrap; background:#eef2f6; color:var(--muted); }
.ref-evidence--regular { background:#e4f4ec; color:var(--ok); }
.ref-evidence--occasional { background:#fdf2dc; color:var(--warn); }
.ref-evidence--limited { background:#fbe9e7; color:var(--bad); }

.ref-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin:22px 0 8px; }
.ref-kpis>div { min-width:0; min-height:116px; padding:16px; border:1px solid #d5e3ec; border-radius:14px; background:linear-gradient(160deg,#fff,#f4f8fb); box-shadow:0 5px 16px rgba(20,36,58,.045); }
.ref-kpis__label { display:block; color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.ref-kpis strong { display:block; margin:6px 0 3px; color:var(--ink); font-size:clamp(20px,2vw,27px); line-height:1.15; overflow-wrap:anywhere; }
.ref-kpis__note { display:block; color:var(--muted); font-size:12px; }

.ref-section { margin-top:40px; padding-top:28px; border-top:1px solid var(--line); }
.ref-section__head { display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.ref-section__head h2 { margin:0; font-size:clamp(21px,2vw,26px); }
.ref-badge { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ref-section__note { margin:8px 0 0; max-width:70ch; color:var(--muted); }
.ref-section>.table-scroll,.ref-section>.ref-related,.ref-section>.ref-choices,.ref-section>.ref-practical,.ref-section>.ref-facts,.ref-section>.ref-connection,.ref-section>.ref-chart,.ref-section>.ref-map,.ref-section>.editorial-faq { margin-top:18px; }
.ref-section h3 { margin:26px 0 8px; font-size:18px; }
.ref-section p { max-width:74ch; }
.ref-caveat { margin:14px 0 0; color:var(--muted); font-size:13px; }
.ref-empty { margin:14px 0 0; color:var(--muted); }
.ref-actions { display:flex; flex-wrap:wrap; gap:10px; margin:22px 0 0; }

/* The single primary section of each page gets the only real panel. */
[data-component="entity-reference-connection"] { margin-top:30px; padding:26px 28px; border:1px solid #cfe3f1; border-top:3px solid var(--blue-2); border-radius:16px; background:linear-gradient(160deg,#f4fafd,#fff); }
[data-component="entity-reference-connection"] .ref-section__note { color:#3e5468; }
.ref-connection__lead { margin:0; font-size:17px; line-height:1.55; }
.ref-connection__lead .ref-evidence { margin-right:8px; vertical-align:2px; }
.ref-connection__facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:4px 28px; margin:20px 0 0; }
.ref-connection__facts>div { padding:12px 0; border-top:1px solid #dbe9f3; }
.ref-connection__facts dt { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ref-connection__facts dd { margin:5px 0 0; font-weight:750; overflow-wrap:anywhere; }

.ref-facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:0 30px; margin:0; }
.ref-facts>div { padding:11px 0; border-top:1px solid var(--line); }
.ref-facts dt { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ref-facts dd { margin:5px 0 0; font-weight:750; overflow-wrap:anywhere; }

.ref-tools { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:16px; }
.ref-tools input[type=search] { min-width:min(320px,100%); border:1px solid var(--line); border-radius:9px; padding:9px 13px; font:inherit; }
.ref-tools__count { color:var(--muted); font-size:13px; font-weight:800; }

.ref-choices { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:6px 32px; }
.ref-choices__group { padding:16px 0; border-top:1px solid var(--line); }
.ref-choices__group h3 { margin:0 0 6px; font-size:16px; }
.ref-choices__group p { margin:0 0 10px; color:var(--muted); font-size:13px; }
.ref-choices__group ul { margin:0; padding:0; list-style:none; }
.ref-choices__group li { display:flex; flex-wrap:wrap; justify-content:space-between; gap:4px 12px; padding:6px 0; }
.ref-choices__group li span { color:var(--muted); font-size:13px; }

.ref-related { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:6px 32px; }
.ref-related>div { padding:16px 0; border-top:1px solid var(--line); }
.ref-related h3 { margin:0 0 8px; font-size:16px; }
.ref-related ul { margin:0; padding:0; list-style:none; }
.ref-related li { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 14px; align-items:baseline; padding:7px 0; }
.ref-related a { font-weight:750; overflow-wrap:anywhere; }
.ref-related span { color:var(--muted); font-size:12px; text-align:right; }

.ref-practical { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:4px 34px; }
.ref-practical>div { padding:14px 0; border-top:1px solid var(--line); }
.ref-practical h3 { margin:0 0 6px; font-size:16px; }
.ref-practical p { margin:0; color:#3e5468; }

.ref-editorial__summary { font-size:18px; line-height:1.6; }
.ref-editorial-items { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:4px 32px; margin:18px 0 0; }
.ref-editorial-items>div { padding:14px 0; border-top:1px solid var(--line); }
.ref-editorial-items dt { font-weight:800; }
.ref-editorial-items dd { margin:5px 0 0; color:#3e5468; }
.ref-editorial-items__detail { display:block; margin-top:5px; color:var(--muted); font-size:13px; }

.ref-sources { margin:16px 0 0; padding-left:20px; }
.ref-sources li { padding:5px 0; }
.ref-sources span { color:var(--muted); font-size:13px; }

.ref-map .entity-map-frame,.ref-map .entity-map-frame__iframe,.ref-map .entity-map-frame__canvas { height:320px; min-height:320px; max-height:320px; }
/* Top padding has to clear the tooltip: the chart is its own scroll container,
   so anything that overflows the top edge is clipped rather than shown. */
.ref-chart { display:flex; align-items:flex-end; gap:9px; min-height:210px; padding:52px 16px 10px; overflow-x:auto; border:1px solid var(--line); border-radius:14px; background:#f7fafc; }
.ref-chart>span { display:grid; grid-template-rows:150px auto; gap:8px; flex:1 0 46px; min-width:46px; text-align:center; }
.ref-chart i { align-self:end; display:block; width:100%; height:var(--bar-height); min-height:6px; border-radius:7px 7px 2px 2px; background:linear-gradient(180deg,var(--blue-2),var(--blue)); }
.ref-chart small { color:var(--muted); font-size:11px; white-space:nowrap; }
.ref-readout { margin-top:16px; }
.ref-readout p { margin:0 0 6px; }

.ref-disclosure { margin-top:18px; border:1px solid var(--line); border-radius:12px; }
.ref-disclosure>summary { padding:12px 16px; color:var(--blue); font-weight:750; cursor:pointer; }
.ref-disclosure>.table-scroll { padding:0 12px 12px; }
.ref-disclosure--compact { display:inline-block; max-width:100%; border:0; border-radius:0; }
.ref-disclosure--compact>summary { padding:9px 14px; border:1px solid #bfd3e1; border-radius:999px; background:#f7fafc; }
.ref-disclosure--compact[open] { display:block; }
.ref-disclosure--compact[open]>summary { display:inline-block; margin-bottom:10px; }
.ref-disclosure--compact>.table-scroll { padding:0; }

.ref-preview-banner { display:grid; gap:5px; margin:18px 0 0; padding:14px 18px; border:1px dashed #b1791f; border-radius:12px; background:#fff8e6; color:#5a4208; }
.ref-preview-banner strong { font-size:12px; letter-spacing:.09em; }

@media (max-width:700px) {
  .ref-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ref-kpis>div { min-height:108px; padding:14px; }
  .ref-section { margin-top:32px; padding-top:22px; }
  [data-component="entity-reference-connection"] { padding:20px 18px; }
  .ref-connection__lead { font-size:16px; }
  .ref-related li { grid-template-columns:1fr; gap:2px; }
  .ref-related span { text-align:left; }
  .ref-chart { min-height:180px; }
  .ref-chart>span { grid-template-rows:120px auto; }
  .ref-hero-meta { gap:8px 16px; }
}

/* Reference layouts — follow-up corrections. */
.ref-facts--single dd a { font-weight:800; }
.ref-connection__hint { display:block; margin-top:3px; color:var(--muted); font-size:12px; font-weight:600; }
.ref-more-flights { margin:16px 0 0; color:var(--muted); font-size:13px; }

.ref-tools .filter-chips { display:flex; flex-wrap:wrap; gap:8px; }
.ref-tools .filter-chips button { border:1px solid var(--line); border-radius:999px; padding:7px 14px; background:#fff; color:var(--ink); font-size:13px; font-weight:750; }
.ref-tools .filter-chips button.is-active { border-color:var(--blue); background:var(--blue); color:#fff; }

/* `.button` sets display:inline-flex, which out-specifies the UA rule for the
   hidden attribute — without this the toggle shows even when it has nothing to
   reveal ("Show 0 more"). */
.ref-progressive-toggle { margin-top:14px; }
.ref-progressive-toggle[hidden] { display:none; }
/* Must out-specify `table[data-mobile-cards] tr { display:block }`, which the
   card layout sets — otherwise the class applies and nothing is hidden. The
   same applies to a filtered-out row: the `hidden` attribute loses to it too. */
table tr.is-progressive-hidden,
table[data-mobile-cards] tr.is-progressive-hidden,
table tr.is-filter-hidden,
table[data-mobile-cards] tr.is-filter-hidden { display:none; }
.is-progressive-hidden { display:none; }

/* Chart bars are focusable so the readout is reachable by keyboard and by tap,
   not only by a mouse hover the phone can never produce. */
.ref-chart__bar { position:relative; display:grid; grid-template-rows:150px auto; gap:8px; flex:1 0 46px; min-width:46px; padding:0; border:0; border-radius:0; background:none; color:inherit; text-align:center; cursor:pointer; }
.ref-chart__bar i { align-self:end; display:block; width:100%; height:var(--bar-height); min-height:6px; border-radius:7px 7px 2px 2px; background:linear-gradient(180deg,var(--blue-2),var(--blue)); transition:filter .12s ease; }
.ref-chart__bar small { color:var(--muted); font-size:11px; white-space:nowrap; }
.ref-chart__bar:hover i,.ref-chart__bar:focus-visible i { filter:brightness(1.18); }
.ref-chart__bar:focus-visible { outline:2px solid var(--blue); outline-offset:3px; }
.ref-chart__tip { position:absolute; bottom:calc(100% - 6px); left:50%; z-index:3; transform:translate(-50%,4px); display:block; visibility:hidden; opacity:0; width:max-content; max-width:190px; padding:7px 11px; border-radius:9px; background:var(--ink); color:#fff; font-size:12px; font-weight:700; line-height:1.35; white-space:normal; pointer-events:none; box-shadow:0 8px 20px rgba(20,36,58,.24); transition:opacity .12s ease,transform .12s ease,visibility .12s; }
.ref-chart__tip::after { content:""; position:absolute; top:100%; left:50%; margin-left:-5px; border:5px solid transparent; border-top-color:var(--ink); }
.ref-chart__bar:hover .ref-chart__tip,.ref-chart__bar:focus-visible .ref-chart__tip { visibility:visible; opacity:1; transform:translate(-50%,0); }
.ref-chart__bar:first-child .ref-chart__tip { left:0; transform:translate(0,4px); }
.ref-chart__bar:first-child:hover .ref-chart__tip,.ref-chart__bar:first-child:focus-visible .ref-chart__tip { transform:translate(0,0); }
.ref-chart__bar:last-child .ref-chart__tip { left:auto; right:0; transform:translate(0,4px); }
.ref-chart__bar:last-child:hover .ref-chart__tip,.ref-chart__bar:last-child:focus-visible .ref-chart__tip { transform:translate(0,0); }

@media (prefers-reduced-motion:reduce) {
  .ref-chart__tip,.ref-chart__bar i { transition:none; }
}
@media (max-width:700px) {
  .ref-chart { padding-top:68px; }
  .ref-chart__bar { grid-template-rows:120px auto; }
  .ref-chart__tip { max-width:148px; }
  .ref-tools { flex-direction:column; align-items:stretch; }
  .ref-tools__count { text-align:right; }
  .ref-progressive-toggle { width:100%; justify-content:center; }
}

/* A country observes a dozen airports, so its weather grid is a dozen cards.
   Two columns made each one 166px wide, where the humidity and wind terms ran
   together and every value wrapped, so the block stays one column and shows
   three airports until the reader asks for the rest. */
@media (max-width:700px) {
  [data-component="entity-reference-weather"] .entity-family-weather__grid { grid-template-columns:1fr; gap:12px; }
}

.ref-choice-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:4px 32px; margin:18px 0 0; }
.ref-choice-list>div { padding:14px 0; border-top:1px solid var(--line); }
.ref-choice-list dt { color:var(--muted); font-size:12px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ref-choice-list dd { margin:6px 0 0; }
.ref-choice-list dd strong { display:block; font-size:17px; overflow-wrap:anywhere; }
.ref-choice-list__value { display:block; margin-top:2px; font-weight:750; color:var(--blue); }
.ref-choice-list__note { display:block; margin-top:5px; color:var(--muted); font-size:13px; }

/* ---- shared daily activity chart -----------------------------------------
   One implementation for every family. Each day is two stacked segments so a
   direction can carry its own archive link; there is no combined daily archive
   page, so nothing here pretends a total is clickable. */
.statistics-partial-banner { margin:0 0 18px; padding:12px 16px; border:1px solid #f4c96b; border-radius:12px; background:#fff8ea; color:#6a4a08; font-size:14px; }
.statistics-partial-banner strong { color:#8a5a00; }
.daily-chart__day--partial .daily-chart__bar, .daily-chart__day--partial .daily-chart__seg { opacity:.55; }
.daily-chart__partial-flag { display:block; margin-top:4px; font-size:10px; font-weight:700; color:#8a5a00; }
.daily-chart__swipe-hint { display:none; margin:0 0 8px; color:var(--muted); font-size:12px; font-weight:650; }
.chart-swipe-hint { display:none; margin:0 0 8px; color:var(--muted); font-size:12px; font-weight:650; }
@media (max-width:600px) { .daily-chart__swipe-hint, .chart-swipe-hint { display:block; } }
.daily-chart { display:flex; align-items:flex-end; gap:9px; min-height:214px; padding:56px 16px 10px; overflow-x:auto; border:1px solid var(--line); border-radius:14px; background:#f7fafc; }
.daily-chart__day { position:relative; display:grid; grid-template-rows:150px auto; gap:8px; flex:1 0 46px; min-width:46px; text-align:center; }
.daily-chart__bar { align-self:end; display:grid; grid-template-rows:var(--arrival-share) 1fr; width:100%; height:var(--day-height); min-height:6px; overflow:hidden; border-radius:7px 7px 2px 2px; }
.daily-chart__segment { display:block; min-height:2px; transition:filter .12s ease; }
.daily-chart__segment--arrival { background:linear-gradient(180deg,#3ea0da,#1d81bd); }
.daily-chart__segment--departure { background:linear-gradient(180deg,#0b6ca8,#064d7d); }
.daily-chart__segment:hover,.daily-chart__segment:focus-visible { filter:brightness(1.25); }
.daily-chart__segment:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.daily-chart__day small { color:var(--muted); font-size:11px; white-space:nowrap; }

.daily-chart__tip { position:absolute; top:8px; bottom:auto; left:50%; z-index:3; transform:translate(-50%,4px); display:block; visibility:hidden; opacity:0; width:max-content; max-width:230px; padding:7px 11px; border-radius:9px; background:var(--ink); color:#fff; font-size:12px; font-weight:700; line-height:1.35; text-align:left; pointer-events:none; box-shadow:0 8px 20px rgba(20,36,58,.24); transition:opacity .12s ease,transform .12s ease,visibility .12s; }
.daily-chart__tip::after { content:""; position:absolute; top:100%; left:50%; margin-left:-5px; border:5px solid transparent; border-top-color:var(--ink); }
.daily-chart__day:hover .daily-chart__tip,
.daily-chart__day:focus-within .daily-chart__tip { visibility:visible; opacity:1; transform:translate(-50%,0); }
.daily-chart__day:first-child .daily-chart__tip { left:0; transform:translate(0,4px); }
.daily-chart__day:first-child:hover .daily-chart__tip,
.daily-chart__day:first-child:focus-within .daily-chart__tip { transform:translate(0,0); }
.daily-chart__day:last-child .daily-chart__tip { left:auto; right:0; transform:translate(0,4px); }
.daily-chart__day:last-child:hover .daily-chart__tip,
.daily-chart__day:last-child:focus-within .daily-chart__tip { transform:translate(0,0); }
.daily-chart__day.tip-align-start .daily-chart__tip { left:0; right:auto; transform:translate(0,4px); }
.daily-chart__day.tip-align-start:hover .daily-chart__tip,
.daily-chart__day.tip-align-start:focus-within .daily-chart__tip { transform:translate(0,0); }
.daily-chart__day.tip-align-end .daily-chart__tip { left:auto; right:0; transform:translate(0,4px); }
.daily-chart__day.tip-align-end:hover .daily-chart__tip,
.daily-chart__day.tip-align-end:focus-within .daily-chart__tip { transform:translate(0,0); }
.daily-chart__day.tip-align-inside .daily-chart__tip { top:8px; bottom:auto; }
.daily-chart__day.tip-align-inside .daily-chart__tip::after { display:none; }

.daily-chart__legend { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:12px 0 0; color:var(--muted); font-size:13px; }
.daily-chart__key { display:inline-block; width:12px; height:12px; margin-left:6px; border-radius:3px; }
.daily-chart__key:first-child { margin-left:0; }
.daily-chart__key--arrival { background:#1d81bd; }
.daily-chart__key--departure { background:#064d7d; }

@media (prefers-reduced-motion:reduce) {
  .daily-chart__tip,.daily-chart__segment { transition:none; }
}
@media (max-width:700px) {
  .daily-chart { padding-top:72px; min-height:190px; }
  .daily-chart__day { grid-template-rows:120px auto; }
  .daily-chart__tip { max-width:180px; }
}
.button.is-current { cursor:default; background:var(--sky); border-color:var(--line); color:var(--muted); }

/* ---- progressive performance windows -------------------------------------
   Four windows, each with its own denominator and coverage. Without JS every
   panel is visible; the tab strip only narrows the view. */
.performance-windows { margin:24px 0 0; }
.performance-windows__tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
.performance-windows__tab { border:1px solid var(--line); border-radius:999px; padding:8px 16px; background:#fff; color:var(--ink); font-size:14px; font-weight:750; cursor:pointer; }
.performance-windows__tab.is-active { border-color:var(--blue); background:var(--blue); color:#fff; }
.performance-windows__tab:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.performance-windows__panel { padding-top:18px; border-top:1px solid var(--line); margin-top:18px; }
.performance-windows__panel:first-of-type { border-top:0; margin-top:0; padding-top:0; }
.performance-windows__head { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:10px; }
.performance-windows__head h3 { margin:0; font-size:19px; }
.performance-windows__state { border-radius:999px; padding:3px 11px; font-size:12px; font-weight:800; background:#eef2f6; color:var(--muted); white-space:nowrap; }
.performance-windows__state--sufficient { background:#e4f4ec; color:var(--ok); }
.performance-windows__state--partial { background:#fdf2dc; color:var(--warn); }
.performance-windows__state--early_sample { background:#eaf3fb; color:var(--blue); }
.performance-windows__state--empty { background:#eef2f6; color:var(--muted); }
.performance-windows__state--failure { background:#fbe9e7; color:var(--bad); }
.performance-windows__coverage { margin:10px 0 14px; color:var(--muted); font-size:14px; }
/* Compact per-entity time windows (airline/airport/destination/country/route) */
.entity-windows { margin:16px 0 4px; }
.entity-windows__tabs { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.entity-windows__tab { border:1px solid var(--line); border-radius:999px; padding:7px 14px; background:#fff; color:var(--ink); font-size:14px; font-weight:750; cursor:pointer; }
.entity-windows__tab.is-active { border-color:var(--blue); background:var(--blue); color:#fff; }
.entity-windows__tab:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.entity-windows__panel[hidden] { display:none; }
.entity-windows__panel { padding:22px; border:1px solid #cfe0eb; border-top:4px solid var(--blue); border-radius:14px; background:linear-gradient(160deg,#fff,#f3f8fb); }
.entity-windows__state { margin:0 0 9px; font-size:16px; line-height:1.35; font-weight:850; }
.entity-windows__state--sufficient { color:var(--ok); }
.entity-windows__state--partial { color:var(--warn); }
.entity-windows__state--early_sample { color:var(--blue); }
.entity-windows__state--empty, .entity-windows__state--failure { color:var(--muted); }
.entity-windows__coverage { margin:0 0 14px; color:#3e5468; font-size:15px; line-height:1.5; }
.entity-windows__facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px 16px; margin:0; }
.entity-windows__facts div { display:flex; flex-direction:column; gap:3px; padding:10px 12px; border-radius:9px; background:#fff; box-shadow:inset 0 0 0 1px #dce7ef; }
.archive-daily-table-heading { margin:26px 0 10px; }
.entity-windows__facts dt { font-size:13px; color:var(--muted); }
.entity-windows__facts dd { margin:0; font-size:15px; line-height:1.4; font-weight:750; }
.entity-windows__hint { font-weight:500; color:var(--muted); font-size:12px; }
.entity-windows__last-data { margin:12px 0 0; font-size:13px; color:var(--muted); }
.entity-windows__last-data time { font-weight:750; color:var(--ink); }
.entity-windows__archive { margin:10px 0 0; font-size:13px; }
.entity-windows__archive summary { cursor:pointer; color:var(--blue); font-weight:700; }
.entity-windows__archive-list { list-style:none; margin:8px 0 0; padding:0; display:grid; gap:4px; }
.entity-windows__archive-list li { display:flex; flex-wrap:wrap; gap:6px; align-items:baseline; }
.entity-windows__archive-date { color:var(--muted); min-width:96px; }
.sample-flag { display:inline-block; margin-left:8px; border-radius:999px; padding:2px 9px; background:#fdf2dc; color:var(--warn); font-size:11px; font-weight:800; white-space:nowrap; }
[data-sample-state="limited"] td { color:#3e5468; }

@media (max-width:700px) {
  .performance-windows__tabs { gap:6px; }
  .performance-windows__tab { flex:1 1 44%; text-align:center; padding:8px 10px; }
  .performance-windows__head { flex-direction:column; align-items:flex-start; gap:4px; }
}

/* ---- shared daily statistics chart (category segments) -------------------- */
.daily-chart--stat { align-items:flex-end; }
.daily-chart__day--stat { position:relative; grid-template-rows:150px auto; }
.daily-chart__bar--stat { align-self:end; display:flex; flex-direction:column-reverse; width:100%; height:var(--day-height); min-height:6px; overflow:hidden; border-radius:7px 7px 2px 2px; }
.daily-chart__seg { display:block; min-height:0; width:100%; }
.daily-chart__seg--early { background:linear-gradient(180deg,#3ea0da,#1d81bd); }
.daily-chart__seg--on-time { background:linear-gradient(180deg,#37a06a,#147d55); }
.daily-chart__seg--late { background:linear-gradient(180deg,#e08b3a,#b8641b); }
/* The two archive links overlay the bar's left and right halves, so the whole
   column is a keyboard-reachable, tappable, direction-correct target. */
.daily-chart__day--stat { touch-action:manipulation; }
.daily-chart__links { position:absolute; top:44px; bottom:20px; left:0; right:0; z-index:1; }
.daily-chart__stat-link { position:absolute; top:0; bottom:0; width:50%; display:flex; align-items:flex-end; justify-content:center; padding-bottom:4px; touch-action:manipulation; }
.daily-chart__stat-link--arrival { left:0; }
.daily-chart__stat-link--departure { right:0; }
/* The noun label is invisible until the day is revealed (hover, focus or an
   opened touch day), but the link itself always takes the tap — that is the
   no-JS fallback. */
.daily-chart__stat-link-text { opacity:0; transform:translateY(4px); transition:opacity .12s ease,transform .12s ease; font-size:11px; font-weight:800; color:#fff; background:var(--ink); border-radius:6px; padding:2px 7px; pointer-events:none; }
.daily-chart__day--stat:hover .daily-chart__stat-link-text,
.daily-chart__day--stat:focus-within .daily-chart__stat-link-text,
.daily-chart__day--stat.is-open .daily-chart__stat-link-text { opacity:1; transform:translateY(0); }
.daily-chart__day--stat.is-open .daily-chart__tip { visibility:visible; opacity:1; transform:translate(-50%,0); }
.daily-chart__stat-link:focus-visible { outline:2px solid var(--blue); outline-offset:-2px; border-radius:6px; }
.daily-chart__day--stat:hover .daily-chart__bar--stat,
.daily-chart__day--stat.is-open .daily-chart__bar--stat,
.daily-chart__day--stat:focus-within .daily-chart__bar--stat { filter:brightness(1.12); }

/* Full-width mobile readout panel — the touch path, one day at a time. */
.daily-chart__mobile-panel { margin:12px 0 0; padding:12px 14px; border:1px solid var(--line); border-radius:10px; background:#fff; }
.daily-chart__mobile-panel[hidden] { display:none; }
.daily-chart__mobile-readout { margin:0 0 10px; font-size:13px; font-weight:750; line-height:1.45; color:var(--ink); }
.daily-chart__mobile-actions { display:flex; gap:10px; }
.daily-chart__mobile-link { flex:1; min-height:44px; display:flex; align-items:center; justify-content:center; border-radius:8px; background:var(--blue); color:#fff; font-weight:800; font-size:14px; text-decoration:none; }
.daily-chart__mobile-link:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
/* On a coarse pointer the readout/labels live in the panel, so the chart's own
   narrow overlay labels and tooltip are suppressed — no cramped, overlapping
   text in the ~23px half-columns. The overlay links themselves stay as the
   no-JS tap fallback. */
@media (hover: none), (pointer: coarse) {
  .daily-chart__stat-link-text { display:none; }
  .daily-chart__day--stat.is-open .daily-chart__tip { visibility:hidden; opacity:0; }
}
.daily-chart__key--early { background:#1d81bd; }
.daily-chart__key--on-time { background:#147d55; }
.daily-chart__key--late { background:#b8641b; }
.daily-chart__key--delay { background:#b8641b; }
/* Clear the table below from the chart's tooltip padding. */
.on-time-performance-product .daily-chart,
.delay-analysis-product .daily-chart { margin-bottom:14px; }
[data-component="on-time-daily-chart"],
[data-component="delay-daily-chart"] { margin-bottom:14px; }

/* ---- performance distribution / delay / direction / route visuals --------- */
/* One shared tone palette for every performance segment and legend swatch, so
   the distribution bar, delay histogram and direction compare read as one
   system. Colour never carries meaning alone — each is paired with a label and
   a number in the markup. */
.perf-distribution__seg--early,   .perf-distribution__swatch--early   { background:linear-gradient(180deg,#3ea0da,#1d81bd); }
.perf-distribution__seg--on-time, .perf-distribution__swatch--on-time { background:linear-gradient(180deg,#37a06a,#147d55); }
.perf-distribution__seg--late,    .perf-distribution__swatch--late    { background:linear-gradient(180deg,#eaa23a,#d97a2b); }
.perf-distribution__seg--late-30, .perf-distribution__swatch--late-30 { background:linear-gradient(180deg,#dd7a25,#c25f1a); }
.perf-distribution__seg--late-60, .perf-distribution__swatch--late-60 { background:linear-gradient(180deg,#c65420,#a53a15); }
.perf-distribution__seg--late-over,.perf-distribution__swatch--late-over{ background:linear-gradient(180deg,#a5301a,#7c1e0f); }
.perf-distribution__seg--cancelled,.perf-distribution__swatch--cancelled{ background:linear-gradient(180deg,#8a1b2c,#5f1220); }
.perf-distribution__seg--pending, .perf-distribution__swatch--pending  { background:linear-gradient(180deg,#b3bcc6,#8b95a0); }
.daily-chart__seg--late-30 { background:linear-gradient(180deg,#dd7a25,#c25f1a); }
.daily-chart__seg--late-60 { background:linear-gradient(180deg,#c65420,#a53a15); }
.daily-chart__seg--late-over { background:linear-gradient(180deg,#a5301a,#7c1e0f); }

.perf-distribution { margin:14px 0 4px; }
.perf-distribution__bar { display:flex; width:100%; height:26px; border-radius:8px; overflow:hidden; box-shadow:inset 0 0 0 1px rgba(0,0,0,.06); }
.perf-distribution__seg { display:block; min-width:0; height:100%; }
.perf-distribution__legend { display:flex; flex-wrap:wrap; gap:6px 16px; margin:10px 0 0; padding:0; font-size:13px; color:var(--ink); }
.perf-distribution__key { display:inline-flex; align-items:center; gap:6px; }
.perf-distribution__swatch { display:inline-block; width:12px; height:12px; border-radius:3px; flex:0 0 auto; }
.perf-distribution__aside { margin:8px 0 0; font-size:12.5px; color:var(--muted); display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; }

.entity-windows__subhead { margin:16px 0 6px; font-size:14px; font-weight:800; letter-spacing:.01em; color:var(--ink); }
.entity-windows__trend { margin-top:10px; }

.perf-direction { margin:14px 0 4px; }
.perf-direction__row { display:grid; grid-template-columns:120px 1fr; gap:6px 12px; align-items:center; margin:8px 0; }
.perf-direction__label { font-size:13px; font-weight:750; }
.perf-direction__label small { display:block; font-weight:600; color:var(--muted); }
.perf-direction__bar { display:flex; height:18px; border-radius:6px; overflow:hidden; box-shadow:inset 0 0 0 1px rgba(0,0,0,.06); }
.perf-direction__bar .perf-distribution__seg { height:100%; }
.perf-direction__value { grid-column:2; font-size:12.5px; color:var(--muted); }
.perf-direction__note { margin:8px 0 0; font-size:12.5px; color:var(--muted); }

.perf-delay { margin:16px 0 4px; }
.perf-delay__legend { list-style:none; margin:10px 0 0; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:6px 16px; font-size:13px; }
.perf-delay__legend li { display:flex; align-items:center; gap:8px; }
.perf-delay__label { flex:1 1 auto; }
.perf-delay__label small { color:var(--muted); font-weight:500; }
.perf-delay__pct { color:var(--muted); font-variant-numeric:tabular-nums; }

.perf-routes { margin:16px 0 4px; }
.perf-routes__limited { display:inline-block; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:#7c1e0f; background:#fbeceb; border-radius:5px; padding:2px 7px; }
.perf-routes tr[data-limited-sample="1"] th { color:var(--muted); }

.airline-on-time-summary--lead { border:1px solid var(--line); border-radius:14px; padding:18px 20px; background:linear-gradient(180deg,#fbfdff,#f4f8fc); }
.airline-performance-recap { margin:16px 0; padding:12px 16px; border-left:4px solid var(--blue); background:#f4f8fc; border-radius:0 8px 8px 0; }
.airline-performance-recap p { margin:0; font-size:13.5px; line-height:1.5; }
.airline-performance-recap a { font-weight:700; white-space:nowrap; }
.entity-traveller-insight { margin:18px 0; padding:18px 20px; border-left:4px solid var(--blue); border-radius:0 12px 12px 0; background:linear-gradient(135deg,#f2f8fd,#f7fbf8); }
.entity-traveller-insight h3 { margin:0 0 8px; font-size:1.08rem; }
.entity-traveller-insight p { margin:0; line-height:1.65; }

@media (max-width:640px) {
  .perf-direction__row { grid-template-columns:1fr; }
  .perf-direction__value { grid-column:1; }
  .airline-on-time-summary--lead { padding:14px; }
}

/* ---- directory activity-share and market-coverage bar charts -------------- */
.airline-activity-share, .airline-markets { margin:22px 0; }
.activity-bars, .market-bars { list-style:none; margin:12px 0 0; padding:0; }
.activity-bars__row { margin:6px 0; }
.activity-bars__link { display:grid; grid-template-columns:minmax(120px,180px) 1fr auto; align-items:center; gap:12px; text-decoration:none; color:var(--ink); padding:4px 6px; border-radius:8px; }
.activity-bars__link:hover, .activity-bars__link:focus-visible { background:#f4f8fc; }
.activity-bars__link:focus-visible { outline:2px solid var(--blue); outline-offset:1px; }
.activity-bars__link--plain { cursor:default; }
.activity-bars__name, .market-bars__name { font-weight:750; font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.activity-bars__track { position:relative; height:16px; background:#eef2f6; border-radius:8px; overflow:hidden; box-shadow:inset 0 0 0 1px rgba(0,0,0,.05); }
.activity-bars__fill { display:block; height:100%; border-radius:8px; background:linear-gradient(90deg,#3ea0da,#1d81bd); transition:filter .12s ease; }
.activity-bars__link:hover .activity-bars__fill, .activity-bars__link:focus-visible .activity-bars__fill { filter:brightness(1.08); }
/* Rank-cycled hues so the leading carriers read as distinct colours, not one
   flat blue — colour is decoration here; the number beside each bar is the data. */
.activity-bars__row[style*="--bar-rank:1"] .activity-bars__fill { background:linear-gradient(90deg,#3ea0da,#1565a0); }
.activity-bars__row[style*="--bar-rank:2"] .activity-bars__fill { background:linear-gradient(90deg,#37a06a,#147d55); }
.activity-bars__row[style*="--bar-rank:3"] .activity-bars__fill { background:linear-gradient(90deg,#eaa23a,#d97a2b); }
.activity-bars__row[style*="--bar-rank:4"] .activity-bars__fill { background:linear-gradient(90deg,#8e7cc3,#6a52a3); }
.activity-bars__row[style*="--bar-rank:5"] .activity-bars__fill { background:linear-gradient(90deg,#d9708f,#b84a6c); }
.activity-bars__fill--market { background:linear-gradient(90deg,#5aa9d6,#2b7bb0); }
.activity-bars__value { font-size:13px; font-weight:700; color:var(--muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
@media (max-width:560px) {
  .activity-bars__link { grid-template-columns:1fr auto; grid-template-areas:"name value" "track track"; row-gap:4px; }
  .activity-bars__name, .market-bars__name { grid-area:name; }
  .activity-bars__value { grid-area:value; text-align:right; }
  .activity-bars__track { grid-area:track; }
}

/* Route timetable-sample block: a compact horizontal chip row for operating days,
   never a bulleted vertical list. Works with no JS and on every viewport. */
.entity-family-route-evidence .route-evidence-dir { margin:0 0 .85rem; }
.entity-family-route-evidence .route-evidence-dir > strong { display:block; margin-bottom:.15rem; }
.route-day-chips { display:flex; flex-wrap:wrap; gap:6px; margin:.4rem 0 .3rem; padding:0; list-style:none; }
.route-day-chips li { display:inline-flex; align-items:center; justify-content:center; min-width:2.1rem; min-height:1.9rem; padding:.25rem .55rem; border:1px solid var(--line); border-radius:999px; background:var(--sky); color:var(--ink); font-size:13px; font-weight:600; line-height:1; }
.route-times { display:block; color:var(--muted); font-size:13px; margin-top:.15rem; }
.route-times.route-dir-checked { margin-top:.3rem; font-style:italic; }

/* Positive-only per-airport timetable-sample marker on destination owner pages. */
.ref-sample-flag { display:inline-block; margin-left:.35rem; padding:.05rem .4rem; border-radius:999px; background:var(--sky); color:var(--blue); font-size:11px; font-weight:600; white-space:nowrap; vertical-align:middle; }

/* Own photographs inside editorial sections (PhotoLibrary). */
.content-photo { margin:16px 0 20px; max-width:820px; }
.content-photo img { display:block; width:100%; height:auto; border-radius:12px; background:var(--line); }
.content-photo--portrait { max-width:480px; }
.content-photo figcaption { margin-top:8px; font-size:.875rem; line-height:1.45; color:var(--muted); }
.content-photo__credit { white-space:nowrap; opacity:.85; }
