/* The shared site shell on every public page and /live: header, phone menu, footer, skip link, the freshness
   chip and report card shared by public data pages, and the plain About, Privacy and 404 pages. Tokens are
   prefixed --site- so page stylesheets keep their own. */
:root{--site-header-h:64px;--site-bg:#09141d;--site-panel:#101e29;--site-line:#243746;--site-ink:#e8eef2;--site-muted:#8da4b4;--site-soft:#c3d3de;
  --site-mint:#7ef0c8;--site-people:#70cff2;--site-vehicles:#edb97f;--site-alert:#ff7a6b;--site-amber:#f1c27d;
  --site-border:#1d3040;--site-radius:16px;--site-radius-control:12px;--site-panel-bg:linear-gradient(180deg,rgba(18,34,46,.92),rgba(13,25,34,.92));
  --site-h1:clamp(34px,4vw,48px);
  --site-font:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
@media(max-width:760px){:root{--site-header-h:56px}}
/* One text rendering on every page; wrapping hints with no specificity that leave white-space:nowrap alone */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
:where(h1,h2,h3){text-wrap-style:balance}
:where(p,li,dd,figcaption){text-wrap-style:pretty}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:16px;top:-80px;z-index:1000;padding:12px 18px;border-radius:10px;background:var(--site-mint);color:#06231a;font:650 14px/1.2 var(--site-font);text-decoration:none}
.skip-link:focus{top:12px}

/* Header */
.site-header.topbar{box-sizing:border-box;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:var(--site-header-h);min-height:0;padding:0 20px;margin:0;
  position:sticky;top:0;z-index:500;border-bottom:1px solid #1d2f3d;background:rgba(9,20,29,.9);-webkit-backdrop-filter:saturate(1.3) blur(14px);backdrop-filter:saturate(1.3) blur(14px);
  color:var(--site-ink);font:14px/1.4 var(--site-font)}
body.live-workspace .site-header.topbar{position:relative}
.site-header [hidden]{display:none!important}
.site-header .site-brand{grid-column:1;justify-self:start;display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 4px;color:var(--site-ink);text-decoration:none;
  font-size:20px;font-weight:650;letter-spacing:-.5px;white-space:nowrap}
.site-header .site-brand-mark{font-size:24px;line-height:1;color:var(--site-mint)}
.site-header .site-nav{grid-column:2;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;margin:0;padding:0;min-width:0;border:0;background:none;
  position:static;height:auto;width:auto;overflow:visible;white-space:nowrap}
.site-header .site-nav a{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 12px;margin:0;border-radius:9px;background:none;color:#aec1ce;
  font-size:14px;font-weight:500;line-height:1.2;text-decoration:none}
.site-header .site-nav a:hover{color:var(--site-ink);background:rgba(255,255,255,.045)}
.site-header .site-nav a:focus-visible,.site-header .site-brand:focus-visible,.site-header button:focus-visible,.site-footer a:focus-visible{outline:2px solid var(--site-mint);outline-offset:2px}
.site-header .site-nav a[aria-current=page]{color:var(--site-mint)}
.site-header .site-nav a[aria-current=page]::after{content:"";position:absolute;left:12px;right:12px;bottom:6px;height:2px;border-radius:2px;background:currentColor;opacity:.7}
body[data-page=home] .site-nav a[href="/"],body[data-page=demo] .site-nav a[href="/demo"],body[data-page=ai] .site-nav a[href="/ai"],body[data-page=forecasts] .site-nav a[href="/forecasts"],body[data-page=demographics] .site-nav a[href="/demographics"],
body[data-page=updates] .site-nav a[href="/updates"],body[data-page=developer] .site-nav a[href="/developer"],body[data-page=about] .site-nav a[href="/about"],
body[data-page=live] .site-nav a[href="/live"]{color:var(--site-mint)}
.site-header .site-session{grid-column:3;justify-self:end;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.site-header .auth-chrome{display:flex;align-items:center;gap:8px;margin:0;font-size:13px}
.site-header .auth-chrome [data-auth-email]{display:none}
.site-header .site-login,.site-header .auth-chrome button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;margin:0;border:1px solid #3a5466;border-radius:999px;
  background:transparent;color:var(--site-ink);font:500 14px/1 var(--site-font);white-space:nowrap;cursor:pointer}
.site-header .site-login:hover,.site-header .auth-chrome button:hover{border-color:var(--site-mint);color:var(--site-mint);background:transparent}
.site-header .site-login:disabled{opacity:.6;cursor:progress}
.site-header .site-menu-toggle{display:none}
.site-header .site-auth-status:not([hidden]){position:absolute;top:100%;left:0;right:0;z-index:501;margin:0;padding:12px 20px;background:#13283a;border-bottom:1px solid #3b5a6e;
  color:#f3d2c4;font:14px/1.5 var(--site-font)}
.site-header .site-auth-status a,.site-header .site-auth-status button{color:var(--site-mint)}
@media(max-width:980px) and (min-width:761px){.site-header.topbar{grid-template-columns:auto 1fr auto;padding:0 14px}.site-header .site-nav a{padding:0 9px}}
/* Eight links and Sign out still fit beside the brand down to the phone menu; signed in, a ninth (3D world) does too,
   with room for wider system fonts */
@media(max-width:860px) and (min-width:761px){.site-header.topbar{column-gap:10px}.site-header .site-nav a{padding:0 5px;font-size:13px}
  .site-header .site-nav a[aria-current=page]::after{left:5px;right:5px}}
@media(max-width:820px) and (min-width:761px){
  .site-header:has(.site-nav a[data-authenticated]:not([hidden])) .site-brand{gap:6px;font-size:18px}
  .site-header:has(.site-nav a[data-authenticated]:not([hidden])) .auth-chrome button{padding:0 12px}
  .site-header:has(.site-nav a[data-authenticated]:not([hidden])) .site-nav{gap:0}
  .site-header:has(.site-nav a[data-authenticated]:not([hidden])) .site-nav a{padding:0 4px;font-size:12.5px}
  .site-header:has(.site-nav a[data-authenticated]:not([hidden])) .site-nav a[aria-current=page]::after{left:4px;right:4px}}
@media(max-width:760px){
  .site-header.topbar{grid-template-columns:1fr auto auto;gap:6px;padding:0 8px 0 14px}
  .site-header .site-brand{font-size:19px}
  .site-header .site-session{grid-column:2}
  .site-header .site-menu-toggle{grid-column:3;grid-row:1;position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;margin:0;
    border:0;border-radius:10px;background:transparent;color:var(--site-ink);font-size:14px;text-indent:100px;white-space:nowrap;overflow:hidden;cursor:pointer}
  .site-header .site-menu-toggle::before,.site-header .site-menu-toggle::after{content:"";position:absolute;left:13px;right:13px;height:2px;border-radius:2px;background:currentColor;
    transition:transform .2s ease,box-shadow .2s ease}
  .site-header .site-menu-toggle::before{top:16px;box-shadow:0 5px 0 currentColor}
  .site-header .site-menu-toggle::after{top:26px}
  .site-header .site-menu-toggle[aria-expanded=true]::before{transform:translateY(5px) rotate(45deg);box-shadow:none}
  .site-header .site-menu-toggle[aria-expanded=true]::after{transform:translateY(-5px) rotate(-45deg)}
  .site-header .site-nav{grid-column:auto;grid-row:auto;position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:2px;padding:8px 10px 14px;
    background:#0b1822;border-bottom:1px solid var(--site-line);box-shadow:0 22px 44px rgba(0,0,0,.5)}
  .site-header[data-menu=open] .site-nav{display:flex}
  .site-header .site-nav a{justify-content:flex-start;min-height:48px;padding:0 14px;font-size:17px;color:var(--site-ink)}
  .site-header .site-nav a[aria-current=page]::after{left:auto;right:16px;top:50%;bottom:auto;width:6px;height:6px;border-radius:50%;opacity:1;transform:translateY(-50%)}
  .site-header .site-login,.site-header .auth-chrome button{padding:0 14px}
  .site-header .site-auth-status:not([hidden]){padding:12px 16px}
}
@media(max-width:760px) and (scripting:none){
  .site-header.topbar{height:auto;grid-template-rows:var(--site-header-h) auto;padding-bottom:6px}
  .site-header .site-nav{grid-column:1/-1;grid-row:2;position:static;display:flex;flex-direction:row;overflow-x:auto;padding:0;background:none;border:0;box-shadow:none}
  .site-header .site-nav a{font-size:15px;min-height:44px}
}
@media(prefers-reduced-motion:reduce){.site-header .site-menu-toggle::before,.site-header .site-menu-toggle::after{transition:none}}

/* Cross-page fade with the header held still, only between pages that both opt in and never under reduced motion */
@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}
.site-header.topbar{view-transition-name:site-header}
::view-transition-old(root){animation:180ms ease-out both site-vt-out}
::view-transition-new(root){animation:220ms ease-out both site-vt-in}
@keyframes site-vt-out{to{opacity:0}}
@keyframes site-vt-in{from{opacity:0}}

/* Footer */
.site-footer{box-sizing:border-box;display:block;margin:0;padding:22px 16px calc(22px + env(safe-area-inset-bottom,0px));border-top:1px solid #1b2c39;background:#071017;
  color:var(--site-muted);font:14px/1.5 var(--site-font)}
.site-footer .site-footer-nav{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 4px;max-width:1200px;margin:0 auto;padding:0;
  border:0;background:none;position:static;height:auto;width:auto;white-space:normal}
.site-footer .site-footer-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 12px;margin:0;border-radius:9px;
  background:none;color:var(--site-muted);font-size:14px;text-decoration:none}
.site-footer .site-footer-nav a:hover{color:var(--site-ink);background:rgba(255,255,255,.04)}
.site-footer .site-footer-nav a[aria-current=page]{color:var(--site-ink)}

/* Freshness chip and data notes shared by public data pages. The dot moves only for a real event: a ping when the
   data's as-of time advances (data-tick) and a spinner while a request is in flight (data-checking). */
.freshness{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0}
.freshness-chip{box-sizing:border-box;display:inline-flex;align-items:center;gap:8px;min-height:34px;margin:0;padding:6px 14px 6px 12px;border:1px solid #23404a;border-radius:999px;
  background:rgba(12,28,37,.85);color:var(--site-muted);font:500 13px/1.35 var(--site-font);font-variant-numeric:tabular-nums}
.freshness-chip [data-chip-label]{color:var(--site-ink);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.freshness-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--site-muted)}
.freshness[data-freshness=live] .freshness-chip{border-color:#1f4a43}
.freshness[data-freshness=live] .freshness-dot{background:var(--site-mint);box-shadow:0 0 0 3px rgba(126,240,200,.18)}
.freshness[data-freshness=live] [data-chip-label]{color:var(--site-mint)}
.freshness[data-freshness=delayed] .freshness-chip{border-color:#4d4430}
.freshness[data-freshness=delayed] .freshness-dot{background:var(--site-amber)}
.freshness[data-freshness=delayed] [data-chip-label]{color:var(--site-amber)}
.freshness[data-freshness=partial] .freshness-chip{border-color:#4d4430}
.freshness[data-freshness=partial] .freshness-dot{background:var(--site-amber)}
.freshness[data-freshness=partial] [data-chip-label]{color:var(--site-amber)}
.freshness[data-freshness=unavailable] .freshness-dot,.freshness[data-freshness=loading] .freshness-dot{background:transparent;box-shadow:inset 0 0 0 1.5px var(--site-muted)}
.freshness[data-freshness=starting] .freshness-dot{background:var(--site-people)}
/* A rolling sample, not a live feed: no halo and no ping */
.freshness[data-freshness=sampled] .freshness-chip{border-color:#1f4a43}
.freshness[data-freshness=sampled] .freshness-dot{background:var(--site-mint)}
.freshness[data-freshness=sampled] [data-chip-label]{color:var(--site-mint)}
.freshness[data-tick] .freshness-dot{animation:site-ping .9s cubic-bezier(.2,.7,.3,1) 1}
.freshness[data-checking] .freshness-dot{box-sizing:border-box;background:transparent;box-shadow:none;border:1.5px solid var(--site-muted);border-top-color:var(--site-mint);
  animation:site-spin .8s linear infinite}
/* Keeping the ping listed stops it replaying when a request ends without new data */
.freshness[data-checking][data-tick] .freshness-dot{animation:site-ping .9s cubic-bezier(.2,.7,.3,1) 1,site-spin .8s linear infinite}
.freshness-retry{box-sizing:border-box;display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid #3a5466;border-radius:999px;background:transparent;color:var(--site-ink);
  font:500 14px/1 var(--site-font);cursor:pointer}
.freshness-retry[hidden]{display:none}
.freshness-retry:hover{border-color:var(--site-mint);color:var(--site-mint)}
.freshness-retry:focus-visible{outline:2px solid var(--site-mint);outline-offset:2px}
.data-note{margin:0;color:var(--site-amber);font:500 13px/1.5 var(--site-font);font-variant-numeric:tabular-nums}
@keyframes site-ping{0%{box-shadow:0 0 0 0 rgba(126,240,200,.7)}100%{box-shadow:0 0 0 10px rgba(126,240,200,0)}}
@keyframes site-spin{to{transform:rotate(360deg)}}
/* Phones: Retry shares the chip's row (below 370 px it moves under a chip that needs the full width, so chip text never
   runs to three lines). The chip shrinks to make room but never stretches, and its text wraps inside the pill onto a
   line under the label, with the dot hanging in the padding. */
@media(max-width:639px){
  .freshness-retry{flex:none}
  .freshness-chip{flex:0 1 auto;min-width:0;flex-wrap:wrap;row-gap:2px;padding-left:28px}
  .freshness-chip .freshness-dot{margin-left:-16px}
}
@media(min-width:370px) and (max-width:639px){.freshness{flex-wrap:nowrap}}
@media(prefers-reduced-motion:reduce){.freshness-dot{animation:none!important}}

/* Forecast report card (landing and /forecasts) */
.report-targets{display:grid;gap:18px;margin:0}
.report-target{margin:0;padding:0}
.report-target h3{display:flex;align-items:baseline;gap:10px;margin:0 0 12px;font:650 15px/1.3 var(--site-font);color:var(--site-ink)}
.report-target h3 span{color:var(--site-muted);font-size:13px;font-weight:500}
.report-target[data-target=people] h3::before,.report-target[data-target=vehicles] h3::before{content:"";flex:none;width:10px;height:10px;border-radius:3px;background:var(--site-people);transform:translateY(1px)}
.report-target[data-target=vehicles] h3::before{background:var(--site-vehicles)}
.report-lines{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.report-line{display:grid;gap:6px;margin:0}
.report-line p{margin:0;color:#c9d7e0;font:15px/1.45 var(--site-font);font-variant-numeric:tabular-nums}
.report-line p strong{color:var(--site-ink);font-weight:650}
.report-line small{display:block;color:var(--site-muted);font:13px/1.45 var(--site-font);font-variant-numeric:tabular-nums}
.report-scale{position:relative;height:14px;margin:2px 0 0}
.report-scale::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;border-radius:2px;background:#5c7586}
.report-scale .zero{position:absolute;top:0;bottom:0;width:1px;background:#8da4b4}
.report-scale .range{position:absolute;top:5px;height:4px;border-radius:2px;background:#8aa5b6}
.report-scale .point{position:absolute;top:2px;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--site-ink);box-shadow:0 0 0 2px var(--site-panel)}
.report-scale .target{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--site-mint)}
.report-scale-labels{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;margin:4px 0 0;color:var(--site-muted);font:12px/1.3 var(--site-font)}
.report-scale-labels span:last-child{text-align:right}
.report-scale-note{position:relative;height:16px;margin:4px 0 0;color:var(--site-mint);font:12px/1.3 var(--site-font)}
.report-scale-note span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.report-progress{position:relative;height:6px;margin:4px 0 0;border-radius:6px;background:#1e3242;overflow:hidden}
.report-progress span{position:absolute;inset:0 auto 0 0;border-radius:6px;background:var(--site-people)}
.report-target[data-target=vehicles] .report-progress span{background:var(--site-vehicles)}
.report-message{margin:0;color:var(--site-muted);font:15px/1.5 var(--site-font)}
.report-window{margin:18px 0 0;color:var(--site-muted);font:13px/1.5 var(--site-font);font-variant-numeric:tabular-nums}

/* About, Privacy and the 404 page */
body:is([data-page=about],[data-page=privacy],[data-page=not-found]){margin:0;min-height:100vh;display:flex;flex-direction:column;color:var(--site-ink);font:16px/1.65 var(--site-font);
  background:radial-gradient(1100px 520px at 88% -8%,rgba(25,58,74,.55),transparent 62%),var(--site-bg)}
body:is([data-page=about],[data-page=privacy],[data-page=not-found]) main{flex:1;box-sizing:border-box;width:100%;max-width:780px;margin:0 auto;padding:56px 20px 80px}
.prose .eyebrow{margin:0 0 14px;color:var(--site-mint);font:700 12px/1.4 var(--site-font);letter-spacing:.16em;text-transform:uppercase}
.prose h1{margin:0 0 20px;font-size:var(--site-h1);line-height:1.06;letter-spacing:-.035em;font-weight:650}
.prose .title-accent{color:var(--site-mint)}
.prose .lead{margin:0 0 12px;color:#cddae3;font-size:19px;line-height:1.6}
/* "On this page": pills under the lead, a rail beside the column from 1280 px */
.prose .toc{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 8px}
.prose .toc a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid #23404a;border-radius:999px;color:var(--site-muted);font:500 14px/1 var(--site-font);
  text-decoration:none}
.prose .toc a:hover,.prose .toc a:focus-visible{color:var(--site-ink);border-color:var(--site-mint)}
.prose h2{margin:56px 0 14px;padding-top:28px;border-top:1px solid #1c2e3b;font-size:25px;line-height:1.25;letter-spacing:-.015em;font-weight:650}
.prose section,.prose h2{scroll-margin-top:calc(var(--site-header-h) + 16px)}
.prose h3{margin:30px 0 8px;font-size:18px;line-height:1.35;font-weight:650}
.prose p,.prose li,.prose dd{color:#b9cad6}
.prose p{margin:0 0 14px}
.prose ul,.prose ol{margin:0 0 16px;padding-left:22px}
.prose li{margin:6px 0}
.prose a{color:var(--site-mint);text-underline-offset:3px;text-decoration-thickness:1px}
.prose strong{color:var(--site-ink);font-weight:650}
.prose code{padding:2px 6px;border-radius:6px;background:#132634;color:#d5e4ec;font:13px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.prose em{color:var(--site-ink);font-style:normal;font-weight:600}
.prose .note{margin:20px 0;padding:16px 18px;border:1px solid var(--site-border);border-radius:var(--site-radius);background:var(--site-panel-bg);color:var(--site-soft)}
.prose .facts{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0;margin:8px 0 18px;border-top:1px solid #1c2e3b}
.prose .facts dt,.prose .facts dd{margin:0;padding:12px 0;border-bottom:1px solid #1c2e3b}
.prose .facts dt{color:var(--site-ink);padding-right:16px}
.prose .facts dd{color:var(--site-mint);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.prose .actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0}
.prose .button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border:1px solid #3a5466;border-radius:999px;background:transparent;
  color:var(--site-ink);font:600 15px/1 var(--site-font);text-decoration:none;cursor:pointer}
.prose .button.primary{border-color:var(--site-mint);background:var(--site-mint);color:#06231a}
.prose .button:hover{border-color:var(--site-mint)}
.prose .button.primary:hover{background:#a6f6da}
.not-found-mark{display:block;margin:0 0 18px;color:var(--site-mint);font-size:44px;line-height:1}
body:is([data-page=about],[data-page=privacy],[data-page=not-found]) main :focus-visible{outline:2px solid var(--site-mint);outline-offset:3px}
@media(max-width:760px){
  body:is([data-page=about],[data-page=privacy],[data-page=not-found]) main{padding:36px 16px 64px}.prose .lead{font-size:18px}.prose h2{margin-top:44px}
  .prose .facts{grid-template-columns:minmax(0,1fr)}
  .prose .facts dt{padding:12px 0 2px;border-bottom:0}
  .prose .facts dd{padding:0 0 12px;text-align:left;white-space:normal}
}
/* The rail keeps 16 px off the window edge and 26 px or more before the 780 px column; short windows keep the pills */
@media(min-width:1280px) and (min-height:600px){
  .prose .toc{position:fixed;top:calc(var(--site-header-h) + 56px);left:max(16px,calc(50% - 390px - 248px));width:200px;display:grid;gap:0;margin:0}
  .prose .toc a{border:0;border-left:2px solid #1c2e3b;border-radius:0;padding:0 12px}
  .prose .toc a:hover,.prose .toc a:focus-visible{border-left-color:var(--site-mint)}
}
@media print{.prose .toc{display:none}}

/* /live workspace bars and the developer sidebar sit below the header */
.workspace-status,.camera-toolbar{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:18px;height:40px;padding:0 24px;background:#0d1b25;
  border-bottom:1px solid #2b414f;font:12px system-ui,sans-serif;color:#aac0cc}
.workspace-status .network-metrics{display:flex;gap:22px;margin:0}
.workspace-status .network-metrics b{font-size:14px}
.workspace-status .connection{display:flex;font-size:12px;margin:0}
.camera-toolbar #camera-picker{max-width:420px;min-width:160px;margin:0;padding:4px 8px;min-height:28px;font-size:12px}
.camera-toolbar .meta{display:flex;gap:18px;margin-left:auto;font-size:12px}
body.live-workspace main{height:calc(100dvh - var(--site-header-h) - 40px)}
body[data-developer-portal] .layout>aside{top:var(--site-header-h);height:calc(100dvh - var(--site-header-h))}
@media(max-width:760px){
  .workspace-status,.camera-toolbar{padding:0 12px;gap:12px}
  .workspace-status .network-metrics{gap:12px;font-size:12px}
  .workspace-status #clock,.camera-toolbar .meta .place,.camera-toolbar .meta time{display:none}
  .camera-toolbar .meta{gap:8px}
  .camera-toolbar #camera-picker{flex:1;max-width:none;width:auto;font-size:12px;min-width:0}
  body.live-workspace main{height:auto;min-height:calc(100dvh - var(--site-header-h) - 40px)}
  body[data-developer-portal] .layout>aside{top:var(--site-header-h);height:auto}
}
