:root{--indigo:#2A2A8C;--indigo-deep:#1D1D66;--indigo-night:#14144A;--indigo-bright:#4141B8;--peri:#9DA2E8;--peri-soft:#C7C9F0;--tint:#F4F5FC;--tint-2:#E9EBF9;--warm:#D9844A;--ink:#101018;--slate:#4E5165;--font:"Helvetica Neue","Helvetica","Arial",sans-serif;--mono:"SF Mono","Menlo","Consolas",monospace /* @kind font */;--page:#fff;--surface:var(--tint);--text:var(--ink);--muted:var(--slate);--line:rgba(42,42,140,.15);--nav:rgba(255,255,255,.78);--pill:rgba(42,42,140,.09);--input:rgba(255,255,255,.55);--placeholder:#66697c}
:root[data-theme="light"]{color-scheme:light}
:root[data-theme="dark"]{color-scheme:dark;--page:#101038;--surface:#171747;--text:#FAFAFF;--muted:#C7C9E2;--line:rgba(199,201,240,.23);--nav:rgba(16,16,56,.78);--pill:rgba(199,201,240,.13);--input:rgba(10,10,44,.35);--placeholder:#C1C3DA}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--page)}
body{margin:0;min-width:320px;overflow-x:clip;background:var(--page);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}
section,header,footer,main{overflow-x:clip}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit}
button{color:inherit}
.wrap{width:min(1180px,calc(100% - 40px));margin-inline:auto}
.display{margin:0;font-weight:700;font-style:italic;letter-spacing:-.02em;line-height:.96}
.eyebrow a:hover{color:var(--indigo-bright)}.text-link{display:inline-block;margin-top:20px;color:var(--indigo-bright);font-weight:700;font-size:15px}[data-theme="dark"] .text-link{color:var(--peri)}.eyebrow{margin:0 0 20px;font:700 13px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--indigo-bright)}
[data-theme="dark"] .eyebrow{color:var(--peri)}
.logo{display:block;width:158px;height:38px;object-fit:contain;object-position:left center}
.logo-light{display:none}
[data-theme="dark"] .logo-main{display:none}
[data-theme="dark"] .logo-light{display:block}
.nav{position:sticky;top:0;z-index:30;height:70px;border-bottom:1px solid var(--line);background:var(--nav);backdrop-filter:blur(20px) saturate(1.25);-webkit-backdrop-filter:blur(20px) saturate(1.25)}
.nav-inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:24px}
.nav-links,.nav-actions{display:flex;align-items:center;gap:26px}
.nav-links a,.login{color:var(--muted);font-size:14px}
.nav-links a:hover,.login:hover{color:var(--text)}
.nav-links a.is-current{color:var(--text);font-weight:700}
.theme-toggle{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--pill);cursor:pointer}
.theme-icon{font-size:15px;line-height:1}
.theme-text{font-size:12px;font-weight:600}
.small-cta,.primary{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:var(--indigo);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 8px 24px rgba(42,42,140,.2)}
.small-cta{min-height:38px;padding:0 17px;font-size:13px}
.primary{min-height:52px;padding:0 24px;font-size:15px}
.page-head{padding:95px 0 75px;background:linear-gradient(145deg,var(--page) 4%,var(--surface) 75%,var(--page))}
.page-head h1{max-width:820px;font-size:clamp(44px,6.4vw,84px)}
.page-lede{max-width:600px;margin:22px 0 0;color:var(--muted);font-size:clamp(17px,2vw,20px);line-height:1.55}
.service-head-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);align-items:center;gap:clamp(36px,6vw,86px)}
.service-head-copy{min-width:0}
.service-hero-art{position:relative;width:100%;aspect-ratio:16/10;min-height:0;display:grid;place-items:center;isolation:isolate}
.service-hero-art::before{content:"";position:absolute;z-index:-1;inset:15% 8% 8%;border-radius:50%;background:var(--pill);filter:blur(18px)}
.service-hero-art svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 20px 18px color-mix(in srgb,var(--indigo-night) 14%,transparent))}
.iso-outline{stroke:var(--indigo-deep);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.iso-thin{stroke:var(--indigo);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.iso-route{fill:none;stroke:var(--peri);stroke-width:2;stroke-linecap:round;stroke-dasharray:4 8}
.iso-top{fill:var(--peri-soft)}.iso-left{fill:var(--peri)}.iso-right{fill:var(--indigo)}
.iso-deep{fill:var(--indigo-deep)}.iso-night{fill:var(--indigo-night)}.iso-bright{fill:var(--indigo-bright)}
.iso-surface{fill:var(--surface)}.iso-page{fill:var(--page)}.iso-tint{fill:var(--tint-2)}.iso-warm{fill:var(--warm)}
.iso-line{fill:none;stroke:var(--line);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
[data-theme="dark"] .service-hero-art svg{filter:drop-shadow(0 22px 20px color-mix(in srgb,var(--indigo-night) 45%,transparent))}
.section{padding:95px 0}
.section.alt{background:var(--surface)}
.section-head{max-width:640px;margin-bottom:55px}
.section-head h2{font-size:clamp(36px,4.6vw,58px)}
.section-head p{max-width:520px;margin:18px 0 0;color:var(--muted);font-size:17px;line-height:1.6}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.card{padding:30px 28px;border:1px solid var(--line);border-radius:18px;background:var(--page)}
.section.alt .card{background:var(--page)}
.section:not(.alt) .card{background:var(--surface)}
.card-tag{font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--indigo-bright)}
[data-theme="dark"] .card-tag{color:var(--peri)}
.card h3{margin:14px 0 10px;font-size:21px;letter-spacing:-.01em}
.card p{margin:0;color:var(--muted);font-size:15px;line-height:1.6}
.card .card-link{display:inline-block;margin-top:14px;color:var(--indigo-bright);font-size:13px;font-weight:700}
[data-theme="dark"] .card .card-link{color:var(--peri)}
.cta-band{padding:110px 0;text-align:center;background:linear-gradient(145deg,var(--indigo-night),var(--indigo));color:#fff}
.cta-band h2{font-size:clamp(38px,5vw,64px)}
.cta-band p{margin:18px 0 28px;color:var(--peri-soft);font-size:17px}
.cta-band .cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 24px;border-radius:999px;background:#fff;color:var(--indigo-deep);font-weight:700;box-shadow:0 8px 24px rgba(0,0,20,.25)}
.cta-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.cta-ghost{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 24px;border:1px solid rgba(255,255,255,.5);border-radius:999px;color:#fff;font-weight:700}
.cta-ghost:hover{background:rgba(255,255,255,.12)}
.ghost-cta{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 16px;border:1px solid var(--line);border-radius:999px;font-size:13px;font-weight:700;color:var(--text)}
.ghost-cta:hover{border-color:var(--indigo);color:var(--indigo)}
[data-theme="dark"] .ghost-cta:hover{border-color:var(--peri);color:var(--peri)}
.lang-switch{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--pill)}
.lang-switch button{min-height:38px;padding:0 11px;border:0;background:transparent;color:var(--muted);font:700 12px/1 var(--mono);letter-spacing:.05em;cursor:pointer}
.lang-switch button[aria-pressed="true"]{background:var(--indigo);color:#fff}
[data-theme="dark"] .lang-switch button[aria-pressed="true"]{background:var(--indigo-bright)}
footer{padding:70px 0 35px;background:var(--surface)}
.footer-grid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:36px}
.footer-brand p{max-width:420px;margin:22px 0 0;color:var(--muted);font-size:13px;line-height:1.7}
.footer-col h3{margin:4px 0 18px;font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.footer-col a{display:block;margin:0 0 12px;color:var(--muted);font-size:13px}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:60px;padding-top:25px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}
.footer-utils{display:flex;align-items:center;gap:16px;margin-right:96px}
.footer-utils .lang-switch,.footer-utils .theme-toggle{height:40px;box-sizing:border-box}
.footer-utils .lang-switch button{min-height:38px}
.newsletter{display:flex;gap:8px;margin-top:22px;max-width:340px}
.newsletter input{flex:1;min-width:0;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:var(--input);color:var(--text);outline:0;font-size:13px}
.newsletter input::placeholder{color:var(--placeholder)}
.news-note{margin:10px 0 0;color:var(--muted);font-size:12px}
:focus-visible{outline:3px solid var(--indigo-bright);outline-offset:3px}
[data-theme="dark"] :focus-visible{outline-color:var(--peri-soft)}
html.motion [data-reveal]{opacity:0;transform:translate3d(-28px,14px,0);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.75,.25,1);transition-delay:calc(var(--i,0) * 70ms)}
html.motion [data-reveal].is-revealed{opacity:1;transform:none}
@media (max-width:900px){.nav-links{display:none}.service-head-grid{grid-template-columns:1fr;gap:24px}.service-hero-art{width:min(100%,620px);margin-inline:auto}.cards{grid-template-columns:1fr 1fr}.footer-grid{grid-template-columns:repeat(3,1fr);gap:30px}.footer-brand{grid-column:1/-1}}
@media (max-width:680px){.wrap{width:min(100% - 28px,1180px)}.nav{height:64px}.logo{width:132px;height:32px}.nav .login-item,.nav .login,.nav .small-cta,.nav .theme-text{display:none}.nav-actions{gap:8px}.theme-toggle{width:40px;justify-content:center;padding:0}.page-head{padding:65px 0 42px}.service-hero-art{margin-top:8px}.section{padding:70px 0}.cards{grid-template-columns:1fr;gap:16px}.cta-band{padding:85px 0}.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.footer-bottom{display:block;line-height:2}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}[data-reveal]{opacity:1 !important;transform:none !important}}
.page-head.has-photo{color:#fff;background-size:cover;background-position:center}
.page-head.has-photo .eyebrow{color:var(--peri)}
.page-head.has-photo .page-lede{color:var(--peri-soft)}
.photo-band{position:relative;min-height:min(620px,72vh);background-size:cover;background-position:center}
.band-chip{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);padding:10px 16px;border-radius:999px;background:rgba(16,16,56,.72);color:#fff;font:700 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.box-solid{--f-top:#4747C2;--f-right:#2A2A8C;--f-left:#1D1D66}
.box-mid{--f-top:#9DA2E8;--f-right:#6B6FD2;--f-left:#5054BC}
.box-light{--f-top:#E9EBF9;--f-right:#C7C9F0;--f-left:#A9ADE5}
.f-top{fill:var(--f-top)}.f-right{fill:var(--f-right)}.f-left{fill:var(--f-left)}
.card-art{display:block;width:100%;max-width:200px;height:auto;margin:4px auto 16px;overflow:visible;filter:drop-shadow(0 14px 12px rgba(29,29,102,.12))}
.spot-disc{fill:var(--pill)}
@media (max-width:680px){.photo-band{min-height:320px}.band-chip{font-size:8px;padding:8px 12px}}

.nav-links,.nav-actions{align-self:stretch}
.nav-item{position:relative;display:flex;align-items:center;height:100%}
.nav-item .caret{margin-left:5px;font-size:8px;opacity:.55}
.nav-drop{position:absolute;top:100%;left:-16px;z-index:40;min-width:240px;padding:10px;border:1px solid var(--line);border-radius:16px;background:var(--page);box-shadow:0 24px 60px rgba(29,29,102,.18);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease,visibility .18s}
.nav-item:hover>.nav-drop,.nav-item:focus-within>.nav-drop{opacity:1;visibility:visible;transform:none}
.nav-drop a{display:block;padding:8px 12px;border-radius:9px;color:var(--muted);font-size:13px;white-space:nowrap}
.nav-drop a:hover{background:var(--pill);color:var(--text)}
.nav-drop .drop-h{display:block;padding:10px 12px 5px;font:700 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--indigo-bright)}
[data-theme="dark"] .nav-drop .drop-h{color:var(--peri)}
.nav-drop.cols{display:grid;grid-template-columns:auto auto;gap:0 14px;min-width:0}
.nav-drop .drop-cta{font-weight:700;color:var(--indigo-bright)}
[data-theme="dark"] .nav-drop .drop-cta,[data-theme="dark"] .nav-drop .drop-cta:hover{color:var(--peri)}
.settings-trigger{display:grid;place-items:center;width:38px;height:38px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--pill);color:var(--muted);cursor:pointer}
.settings-trigger:hover{color:var(--text)}
.gear-icon{width:18px;height:18px}
.settings-item .nav-drop{left:auto;right:0;min-width:0}
.settings-drop{display:grid;gap:10px;justify-items:stretch}
.settings-drop .lang-switch,.settings-drop .theme-toggle{width:100%;justify-content:center}
.login-item .nav-drop{left:auto;right:-12px;min-width:200px}

.social{display:flex;gap:8px;margin-top:20px}
.social a{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;color:var(--muted)}
.social a:hover{border-color:var(--indigo);color:var(--indigo)}
[data-theme="dark"] .social a:hover{border-color:var(--peri);color:var(--peri)}
.social svg{width:16px;height:16px}

/* Front chat launcher: the cross-origin iframe declares a light color scheme;
   inheriting the page's dark scheme makes Chromium paint an opaque white
   backdrop behind its transparent background. Pin the iframe to light so
   transparency survives (verified live: white square gone in dark mode). */
#front-chat-iframe{color-scheme:light}

/* Agent locator island (islands/agent-locator.tsx). Lives here rather than inline in
   agent-locator.html because that page is the donor chrome for all 389 blog articles, so
   anything inline there ships 389 times. */
/* ONE source of truth for the height this island occupies once mounted, so that
   agent-locator.html can reserve exactly that much BEFORE hydration and the swap costs no
   CLS — the same contract as STRIP_HEIGHT_PX <-> .ticker-slot on the homepage. They live
   here, beside the rules they feed, so a height can only be changed in one place.
   Measured on the built page, mounted height matching the reservation exactly: desktop
   62 + 14 + 20 + 14 + 640 = 750px, narrow 120 + 14 + 20 + 14 + 996 = 1164px. */
:root{
  --agl-map-h:560px;      /* floor for the body height; the map's OWN height only when stacked */
  --agl-list-h:min(70vh,640px);
  /* Side by side, BOTH columns fill the body, so their bottoms are always flush and the panel
     keeps one height whatever the filter selects (the map used to stop 80px short). */
  --agl-body-h:max(var(--agl-map-h),var(--agl-list-h));
  --agl-filters-h:62px;   /* one row: 13px label + 5px gap + 42px control */
  --agl-count-h:20px;     /* one line at 13px, pinned by line-height so it is not font-dependent */
  --agl-reserve:calc(var(--agl-filters-h) + 14px + var(--agl-count-h) + 14px + var(--agl-body-h));
  /* Card elevation. Two layers: a tight contact shadow for the edge, a soft ambient one for
     depth. Dark mode needs its own values — a translucent indigo reads as nothing on a dark
     surface, so it darkens instead. */
  --agl-card-sh:0 1px 2px rgba(29,29,102,.05),0 6px 16px -6px rgba(29,29,102,.14);
  --agl-card-sh-hover:0 2px 4px rgba(29,29,102,.07),0 12px 24px -8px rgba(29,29,102,.20);
}
[data-theme="dark"]{
  --agl-card-sh:0 1px 2px rgba(0,0,20,.40),0 6px 16px -6px rgba(0,0,20,.55);
  --agl-card-sh-hover:0 2px 4px rgba(0,0,20,.50),0 12px 24px -8px rgba(0,0,20,.70);
}
.agl{display:flex;flex-direction:column;gap:14px}
.agl-filters{display:flex;flex-wrap:wrap;align-items:end;gap:14px}
.agl-field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}
.agl-field select{min-width:220px;height:42px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);font:inherit}
.agl-modes{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.agl-mode{height:42px;padding:0 18px;border:0;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}
.agl-mode.is-active{background:var(--indigo);color:#fff}
/* Its own row above the list, not a filter-bar item: it labels the list it counts, and as a
   flex item between the controls it read as orphaned. An earlier `margin-left:auto` here never
   applied — `.locator-placeholder p` in agent-locator.html (0,1,1) outranked it. */
/* min-height, not height: one line is reserved exactly, but the failure message ("The agent list
   is unavailable right now.") can wrap at narrow widths, and growing by a line is far better than
   clipping the only notice that anything went wrong. */
.agl-count{margin:0;min-height:var(--agl-count-h);font-size:13px;line-height:var(--agl-count-h);color:var(--muted)}
.agl-body{display:grid;grid-template-columns:minmax(280px,34%) 1fr;gap:16px;min-height:var(--agl-body-h)}
/* height, not max-height: the list is exactly as tall as the map beside it, so both bottoms are
   flush and the panel keeps one height whatever the filter selects. Scrolls internally.
   The inline padding/negative-margin pair is bleed room for the card shadows: overflow-y:auto
   computes overflow-x to auto, which would otherwise clip them at the column edges. The padding
   cancels the margin, so the cards still line up with the filter row and the map. */
.agl-list{height:var(--agl-body-h);overflow-y:auto;margin:0 -6px;padding:0 6px 8px;list-style:none;display:flex;flex-direction:column;gap:10px}
/* flex-shrink:0 is load-bearing. .agl-list is a scrolling flex column, and overflow:hidden
   here sets min-height:0, which lets every card collapse to a few pixels and then clips its
   own content — the list rendered as a stack of empty bars. */
.agl-card{flex:0 0 auto;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden;box-shadow:var(--agl-card-sh);transition:box-shadow .18s ease,border-color .18s ease}
.agl-card-main{width:100%;display:flex;flex-direction:column;gap:3px;padding:14px;border:0;background:transparent;color:var(--text);text-align:left;font:inherit;cursor:pointer}
.agl-actions{display:flex;gap:8px;padding:0 14px 12px}
.agl-action{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--indigo-bright);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.agl-action:hover{border-color:var(--indigo);color:var(--indigo)}
[data-theme="dark"] .agl-action{color:var(--peri)}
[data-theme="dark"] .agl-action:hover{border-color:var(--peri)}
.agl-card:hover,.agl-card.is-selected{border-color:var(--indigo);box-shadow:var(--agl-card-sh-hover)}
[data-theme="dark"] .agl-card:hover,[data-theme="dark"] .agl-card.is-selected{border-color:var(--peri)}
.agl-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.agl-tags{display:flex;gap:5px}
.agl-tag{padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;color:#fff}
.agl-tag--sea{background:var(--indigo)}
.agl-tag--air{background:var(--peri)}
.agl-country{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.agl-line,.agl-email{font-size:13px;color:var(--muted);line-height:1.45}
.agl-email{color:var(--indigo-bright);font-weight:600;overflow-wrap:anywhere}
[data-theme="dark"] .agl-email{color:var(--peri)}
/* height, not min-height, and a DEFINITE length: MarketMap is handed height:100% (MAP_HEIGHT in
   agent-locator.tsx), which resolves only because this box has a real height to resolve against.
   --agl-body-h is a max() of lengths, so it stays definite. Never let this become auto/percentage
   — a percentage against an auto-height parent collapses the map to zero and Google renders no
   tiles at all, with no console error. */
.agl-map{height:var(--agl-body-h);border:1px solid var(--line);border-radius:16px;overflow:hidden}
/* Google's InfoWindow bubble is always white, in either theme. Inheriting --text painted
   white-on-white in dark mode. Pin explicit dark ink here rather than theme tokens. */
.agl-info{color:#101018;font-size:13px;line-height:1.5}
.agl-info a{color:#2A2A8C;font-weight:700}
.agl-info strong{display:block;margin-bottom:3px;color:#101018}
.agl-map-empty{display:grid;place-items:center;height:100%;margin:0;padding:24px;text-align:center;color:var(--muted);font-size:14px}
.agl-selected{margin:0;font-size:13px;color:var(--muted)}
/* Single column: the list now sits ABOVE the map, so the reserved height has to be their sum
   plus the grid gap — not the taller of the two. */
@media (max-width:860px){
  :root{
    --agl-list-h:420px;
    --agl-body-h:calc(var(--agl-list-h) + 16px + var(--agl-map-h));
  }
  .agl-body{grid-template-columns:1fr}
  /* Stacked, the body is their SUM, so filling it is wrong: each takes its own height again. */
  .agl-list{height:var(--agl-list-h)}
  .agl-map{height:var(--agl-map-h)}
}
/* --agl-filters-h tracks how far the filter bar wraps, measured on the built page. The bar holds
   only the select and the mode pills (the count is its own row), so it has just TWO states: one
   row at 62px, or the pills under the select at 120px. Measured identical in English and French.
   A measurement, not a formula: wrapping depends on font metrics and the translated labels, so
   changing the filter controls or their copy means re-measuring these numbers.
   The wrap lands between 475px (one row) and 470px (two); the step sits at 480px, deliberately a
   little early, because over-reserving only leaves dead space while under-reserving shifts
   everything below it.
   Unrelated residual, kept for the next reader: the 0.03-0.06 CLS once seen at 430-860px is
   `.agl-map` transiently collapsing to zero height around 370ms, not the reservation. */
@media (max-width:480px){:root{--agl-filters-h:120px}}   /* pills wrap under the select */

/* Shown in place of a live grid when its feed fails. These pages used to restore the
   baked sample markup instead, which presented invented port dwell figures and
   chokepoint statuses as live under headings that say "Live". One honest line instead.
   Defined once here because /dwell, /chokepoints and /air all need it. */
.feed-unavailable{margin:0;padding:20px 0;color:var(--muted);font-size:14px}
