/* CarAds — advertiser dashboard. Dark by default, because it sits beside a map
   all day; lib/theme.js repaints these tokens when someone picks another scheme.
   The values below are the house theme, so the page is right before any script
   has run. */

:root{
  --navy:#0d2134; --navy-2:#13293f; --surface:#16314b; --line:#28425b; --hover:#1b3a58;
  --fog:#e6e6e6; --steel:#aabfcb; --dim:#7f97a8; --off:#6c8091;
  --orange:#e87d2d; --ok:#3fbf7f; --warn:#e8b52d; --bad:#e0524a;
  --on-accent:#000; --accent-text:#e87d2d; --accent-text-2:#e87d2d; --on-bad:#000;
  --bad-bg:#3a1c1c; --bad-line:#6b2f2f; --bad-fg:#ffd7d2; --bad-edge:var(--bad-edge); --warn-line:var(--warn-line);
  /* Data colours stay fixed whatever the accent: a legend has to mean the same
     thing on every screen, and the donut in stats.js uses these exact values. */
  --data-1:#e87d2d; --data-1-deep:#b85f1d;
  --font:"Barlow",Bahnschrift,"Segoe UI",system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--navy);color:var(--fog);font-family:var(--font);font-size:15px;line-height:1.5}
button,select,input{font:inherit;color:inherit}
.boot{display:grid;place-items:center;height:100vh;color:var(--steel)}
.muted{color:var(--dim)}
.small{font-size:12.5px}
.strong{font-weight:600}

.logo img{display:block;width:56px;height:56px}
.login .logo img{width:112px;height:112px;margin:0 auto 6px}

button{background:var(--surface);border:1px solid var(--line);border-radius:9px;
  padding:8px 14px;cursor:pointer;transition:background .12s,border-color .12s}
button:hover{background:var(--hover)}
button:disabled{opacity:.55;cursor:default}
button.ghost{background:transparent}
button.ghost:hover{background:var(--surface)}
select{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 12px}

/* ---------------------------------------------------------------- login */
.login-wrap{display:grid;place-items:center;min-height:100vh;padding:24px}
.login{width:100%;max-width:370px;display:flex;flex-direction:column;gap:12px;
  background:var(--navy-2);border:1px solid var(--line);border-radius:14px;padding:30px 26px}
.login-sub{margin:0 0 6px;color:var(--steel);font-size:14px}
.login label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--steel)}
.login input{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:11px 13px}
.login input:focus{outline:none;border-color:var(--orange)}
.login button[type=submit]{background:var(--orange);border:0;color:var(--on-accent);font-weight:600;padding:12px;margin-top:4px}
.login button[type=submit]:hover{filter:brightness(1.07)}
.login-foot{margin:4px 0 0;color:var(--dim);font-size:12px;line-height:1.5}
.error{background:var(--bad-bg);border:1px solid var(--bad-line);color:var(--bad-fg);border-radius:9px;padding:10px 13px;font-size:13.5px}
.error.wide{margin:0 22px}

/* ---------------------------------------------------------------- shell */
.shell{max-width:1480px;margin:0 auto;padding:18px 22px 40px;display:flex;flex-direction:column;gap:16px}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.brand .sub{color:var(--dim);font-size:13px;margin-top:3px}
.topright{display:flex;align-items:center;gap:10px}

.campaignbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:var(--navy-2);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
.camp{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.camp .k{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim)}
.camp .v{font-weight:600}
.periods{display:flex;gap:6px}
.periods button,.maptoggle button,.tabs button{padding:7px 13px;font-size:13.5px}
.periods button.on{background:var(--orange);border-color:var(--orange);color:var(--on-accent);font-weight:600}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.stat{background:var(--navy-2);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.stat .v{font-size:30px;font-weight:700;line-height:1.1;letter-spacing:-.5px}
.stat .k{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--dim);margin-top:5px}

.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);padding-bottom:0}
.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;
  color:var(--steel);padding:10px 14px}
.tabs button:hover{background:transparent;color:var(--fog)}
.tabs button.on{color:var(--fog);border-bottom-color:var(--orange);font-weight:600}

/* ---------------------------------------------------------------- map */
.live{display:grid;grid-template-columns:1fr 320px;gap:14px;min-height:560px}
.mapwrap{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--navy-2)}
.map{position:absolute;inset:0}
.maplibregl-ctrl-attrib{background:color-mix(in srgb,var(--navy) 80%,transparent)!important;color:var(--dim)!important;font-size:10px}
.maplibregl-ctrl-attrib a{color:var(--steel)!important}

.maptoggle{position:absolute;left:12px;bottom:12px;display:flex;gap:6px;z-index:2}
.maptoggle button{background:color-mix(in srgb,var(--navy) 88%,transparent);backdrop-filter:blur(4px)}
.maptoggle button.on{background:var(--orange);border-color:var(--orange);color:var(--on-accent);font-weight:600}

/* Top-left, clear of both the zoom buttons and the attribution strip. */
.mapnote{position:absolute;left:12px;top:12px;z-index:2;font-size:11px;color:var(--warn);
  background:color-mix(in srgb,var(--navy) 88%,transparent);border:1px solid var(--warn-line);border-radius:7px;padding:4px 9px}
.mapnote.bad{color:var(--bad);border-color:var(--bad-edge)}

/* The reason, spelled out. The badge alone would send someone to the console,
   which is where the last afternoon went. Directly under the badge it explains,
   rather than bottom-left, which belongs to the layer toggle. */
.basemapwarn{position:absolute;left:12px;top:42px;z-index:2;max-width:390px;
  font-size:12px;line-height:1.45;color:var(--fog);background:color-mix(in srgb,var(--navy) 94%,transparent);
  border:1px solid var(--bad-edge);border-left:3px solid var(--bad);border-radius:7px;padding:8px 11px}

.maperror,.mapempty{position:absolute;inset:auto 0 50% 0;text-align:center;z-index:2;
  display:flex;flex-direction:column;gap:5px;color:var(--steel);pointer-events:none}
.mapempty strong{font-size:15px;color:var(--fog)}
.mapempty span{font-size:13px;color:var(--dim)}
.maperror{color:var(--bad)}

.sidepanel{display:flex;flex-direction:column;gap:12px;min-width:0}
.panel{background:var(--navy-2);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.panel h3{margin:0 0 12px;font-size:12px;letter-spacing:1.3px;text-transform:uppercase;color:var(--steel);
  display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.panel h3 .count{font-size:11px;letter-spacing:0;text-transform:none;color:var(--dim)}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.panel-head h3{margin:0}

.carlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;max-height:430px;overflow:auto}
.carlist li{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:8px;cursor:pointer}
.carlist li:hover{background:var(--surface)}
.carlist .dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--off)}
.carlist .dot.on{background:var(--ok);box-shadow:0 0 0 3px rgba(63,191,127,.18)}
.carlist .plate{font-weight:600;font-size:14px;flex:1;min-width:0;unicode-bidi:isolate}
.carlist .meta{color:var(--dim);font-size:12px;white-space:nowrap}

/* ---------------------------------------------------------------- stats */
.stats-page{display:flex;flex-direction:column;gap:14px}

/* The chart is three stacked rows: a line marking the peak, the bars, then the
   labels. Keeping labels out of the bar box is what stops them overlapping the
   bars when a value is small. */
.chart{position:relative;padding-top:18px}
.peakline{position:absolute;inset:14px 0 auto 0;border-top:1px dashed var(--line)}
.peakline span{position:absolute;right:0;top:-16px;font-size:10.5px;color:var(--dim)}
.bars{display:flex;align-items:flex-end;gap:5px;height:170px}
.bar{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end}
.bar .fill{width:100%;background:linear-gradient(180deg,var(--data-1),var(--data-1-deep));
  border-radius:4px 4px 2px 2px;min-height:2px;transition:height .25s ease}
.labs{display:flex;gap:5px;margin-top:7px}
.labs span{flex:1;min-width:0;font-size:10px;color:var(--dim);text-align:center;white-space:nowrap;
  overflow:hidden}

.split{display:flex;flex-direction:column;gap:12px}
.splitbar{display:flex;height:13px;border-radius:999px;overflow:hidden;background:var(--surface)}
.splitbar .seg.moving{background:var(--data-1)}
.splitbar .seg.dwell{background:#3c7fbf}
.splitbar .seg.hwy{background:var(--data-1)}
.splitbar .seg.city{background:#3c7fbf}
.splitbar .seg.other{background:#44607a}
.legend{list-style:none;margin:0;padding:0;display:flex;gap:22px;flex-wrap:wrap;font-size:13.5px}
.legend li{display:flex;align-items:center;gap:8px}
.legend .sw{width:11px;height:11px;border-radius:3px}
.legend .sw.moving,.legend .sw.hwy{background:var(--data-1)}
.legend .sw.dwell,.legend .sw.city{background:#3c7fbf}
.legend .sw.other{background:#44607a}

/* ---------------------------------------------------------------- donuts */
.donutrow{display:flex;align-items:center;gap:30px;flex-wrap:wrap}
.donut-wrap{position:relative;flex:none}
.donut-wrap svg{display:block}
.donut-wrap circle{transition:stroke-dasharray .3s ease}
.donut-centre{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;pointer-events:none;text-align:center}
.donut-centre strong{font-size:23px;font-weight:700;line-height:1.1;letter-spacing:-.5px}
.donut-centre span{font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--dim);
  margin-top:3px;max-width:96px}

.donutkey{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;
  flex:1 1 230px;min-width:0}
.donutkey li{display:grid;grid-template-columns:12px 1fr auto auto;align-items:center;
  gap:10px;font-size:13.5px}
.donutkey .sw{width:11px;height:11px;border-radius:3px}
.donutkey .n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donutkey .v{color:var(--steel);font-variant-numeric:tabular-nums}
.donutkey .p{color:var(--dim);font-variant-numeric:tabular-nums;min-width:38px;text-align:right}

/* ---------------------------------------------------------------- car card */
.maplibregl-popup.carpop .maplibregl-popup-content{
  background:var(--navy-2);border:1px solid var(--line);border-radius:12px;
  padding:13px 15px;color:var(--fog);box-shadow:0 10px 30px rgba(0,0,0,.45)}
.maplibregl-popup.carpop .maplibregl-popup-tip{border-top-color:var(--navy-2);
  border-bottom-color:var(--navy-2)}
.maplibregl-popup.carpop .maplibregl-popup-close-button{color:var(--dim);font-size:17px;
  padding:2px 7px;background:none;border:0}
.cp-plate{font-weight:600;font-size:16px;unicode-bidi:isolate;margin-bottom:5px}
.cp-status{font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;color:var(--off)}
.cp-status.on{color:var(--ok)}
.cp-figures{font-size:13px;color:var(--steel);margin-top:7px}
.cp-speed{font-size:12px;color:var(--dim);margin-top:3px}

/* A corridor is a road, not a district; the breakdown says which. */
.arearow .name{display:flex;align-items:center;gap:8px;min-width:0}
.tag{font-size:9.5px;letter-spacing:1px;text-transform:uppercase;color:var(--accent-text);
  border:1px solid currentColor;border-radius:999px;padding:1px 6px;flex:none}

.arealist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.arealist.compact{gap:9px}
.arealist.compact .arearow{font-size:13px;margin-bottom:4px}
.arealist.compact .track{height:5px}
.arearow{display:flex;justify-content:space-between;gap:12px;font-size:14px;margin-bottom:5px}
.arearow .val{color:var(--steel);font-variant-numeric:tabular-nums}
.track{height:6px;border-radius:999px;background:var(--surface);overflow:hidden}
/* Same two colours as the split above it, so the eye carries the meaning down
   the page: orange is a road, blue is a district. */
.track .fill{height:100%;background:#3c7fbf;border-radius:999px}
.track.road .fill{background:var(--data-1)}

.tablewrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:10.5px;letter-spacing:1.3px;text-transform:uppercase;color:var(--dim);
  font-weight:500;padding:0 14px 9px 0;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:11px 14px 11px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
tfoot td{border-bottom:0;border-top:1px solid var(--line);color:var(--steel);font-weight:600}
/* A plate is Arabic letters next to Latin digits. Isolating it stops the digits
   jumping to the wrong end of the string, and keeping it inline means the cell
   stays left-aligned with the rest of the table. */
.plate{font-weight:600;unicode-bidi:isolate;font-variant-numeric:normal;display:inline-block}

.empty{background:var(--navy-2);border:1px dashed var(--line);border-radius:12px;padding:40px 28px;text-align:center}
.empty h3{margin:0 0 8px;font-size:17px;color:var(--fog)}
.empty p{margin:0 auto;max-width:460px;color:var(--dim);font-size:13.5px}

.method{color:var(--dim);font-size:12.5px;line-height:1.75;border-top:1px solid var(--line);padding-top:14px;
  max-width:900px}
.method strong{color:var(--steel)}

/* ---------------------------------------------------------------- narrow */
@media (max-width:1000px){
  .live{grid-template-columns:1fr;min-height:0}
  .mapwrap{height:420px}
  .stats{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .shell{padding:14px 14px 32px}
  .stat .v{font-size:24px}
  .campaignbar{align-items:flex-start;flex-direction:column}
  .bars{height:150px}
}

/* ---------------------------------------------------------------- advertiser logo
   On a light chip, because most logos are dark artwork on a transparent
   background and would vanish against the navy. */
.brandrow{display:flex;align-items:center;gap:12px}
.brandx{color:var(--dim);font-size:18px;line-height:1}
.brandtext{display:flex;flex-direction:column;justify-content:center;min-width:0}
.brandtext .name{font-weight:600;font-size:16px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brandtext .sub{color:var(--dim);font-size:13px;margin-top:2px}
.cologo{height:38px;max-width:150px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 10px;
  display:flex;align-items:center}
.cologo img{max-height:28px;max-width:130px;object-fit:contain;display:block}


/* ---------------------------------------------------------------- top bar */
.top{background:var(--navy-2);border:1px solid var(--line);border-radius:14px;padding:10px 14px}
.topright{flex-wrap:wrap}
.topright select{max-width:280px}

/* The account menu: who is signed in, and the way out. */
.usermenu{position:relative}
.userbtn{display:flex;align-items:center;gap:9px;padding:5px 10px 5px 5px}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--orange);color:var(--on-accent);
  display:grid;place-items:center;font-weight:700;font-size:13px;flex:0 0 30px}
.userbtn .who{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.userbtn .caret{color:var(--dim);font-size:11px}
.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:230px;
  background:var(--navy-2);border:1px solid var(--line);border-radius:12px;padding:6px;
  box-shadow:0 12px 32px rgba(0,0,0,.35);display:flex;flex-direction:column}
.menu .meta{padding:9px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:5px}
.menu .meta .k{font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dim)}
.menu .meta .v{font-weight:600;margin-top:2px;overflow-wrap:anywhere}
.menu .meta .s{color:var(--steel);font-size:12.5px;overflow-wrap:anywhere}
.menu button{background:transparent;border:0;text-align:left;padding:9px 10px;border-radius:8px}
.menu button:hover{background:var(--hover)}

@media (max-width:640px){
  .userbtn .who,.userbtn .caret,.appbtn{display:none}
  .userbtn{padding:5px}
  .topright{width:100%;justify-content:flex-end}
  .topright select{flex:1 1 auto;max-width:none}
  .brandx{display:none}
  .logo img{width:44px;height:44px}
  .cologo{height:32px;max-width:96px;padding:3px 7px}
  .cologo img{max-height:24px;max-width:80px}
}

/* ---------------------------------------------------------------- drawer */
.drawer-backdrop{position:fixed;inset:0;background:rgba(5,14,24,.6);z-index:40}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(520px,100%);z-index:41;
  background:var(--navy-2);border-left:1px solid var(--line);display:flex;flex-direction:column}
.drawer-head{display:flex;align-items:center;justify-content:space-between;
  padding:18px 22px;border-bottom:1px solid var(--line)}
.drawer-head h2{margin:0;font-size:19px}
.drawer-body{overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:26px}
.drawer-body section{display:flex;flex-direction:column;gap:12px}
.drawer-body h3{margin:0;font-size:11.5px;letter-spacing:1.3px;text-transform:uppercase;color:var(--steel);font-weight:600}
.drawer-actions{display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--line);padding-top:18px}
.drawer-actions button:not(.ghost){background:var(--orange);border-color:var(--orange);color:var(--on-accent);font-weight:600}
button.icon{background:transparent;border:0;color:var(--steel);padding:6px 10px;font-size:16px}
.hint{margin:0;font-size:12.5px;color:var(--dim);line-height:1.5}
.mono{font-family:var(--mono);font-size:12.5px}

/* ---------------------------------------------------------------- appearance */
.themegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.themecard{display:flex;flex-direction:column;align-items:stretch;gap:3px;
  background:var(--navy-2);border:1px solid var(--line);border-radius:10px;
  padding:9px 9px 11px;text-align:left;color:var(--fog);width:100%;min-width:0;
  white-space:normal;overflow-wrap:anywhere}
.themecard:hover{background:var(--hover)}
.themecard.on{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.themename{font-size:13px;font-weight:600;margin-top:7px}
.themenote{font-size:11.5px;color:var(--dim);line-height:1.4}
/* A miniature of this dashboard: top bar, stat cards, a panel. */
.themeview{display:flex;flex-direction:column;gap:4px;height:58px;border-radius:6px;overflow:hidden;
  border:1px solid var(--line);padding:5px}
.tv-top{height:10px;border-radius:3px;border:1px solid;display:flex;align-items:center;padding:0 3px}
.tv-top i{display:block;width:18%;height:3px;border-radius:2px}
.tv-cards{display:flex;gap:3px}
.tv-cards span{flex:1;height:10px;border-radius:3px;border:1px solid}
.tv-panel{flex:1;border-radius:3px;border:1px solid}
.accentrow{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.accentdot{width:30px;height:30px;flex:0 0 30px;border-radius:50%;border:0;padding:0;
  cursor:pointer;font-size:14px;line-height:1;color:transparent;display:grid;place-items:center}
.accentdot:hover{box-shadow:0 0 0 3px var(--hover);background-clip:padding-box}
.accentdot.on{color:var(--tick);box-shadow:0 0 0 2px var(--navy),0 0 0 4px var(--fog)}
.accentown{display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  background:var(--navy-2);border:1px solid var(--line);border-radius:8px;
  padding:4px 10px 4px 5px;font-size:12.5px;color:var(--steel)}
.accentown:hover{background:var(--hover);color:var(--fog)}
.accentown.on{border-color:var(--orange);color:var(--fog)}
.accentown input[type=color]{width:22px;height:22px;flex:0 0 22px;border-radius:5px;border:0;padding:0;background:none}

/* ---------------------------------------------------------------- explore */
.explore{display:flex;flex-direction:column;gap:14px}
.explore-grid{display:grid;grid-template-columns:290px 1fr;gap:14px;align-items:start}
.builder{display:flex;flex-direction:column;gap:14px}
.builder h3{margin-bottom:2px}
.field{display:flex;flex-direction:column;gap:6px}
.field > span{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--dim);display:flex;justify-content:space-between}
.field select{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 10px;width:100%}
.field .clear{color:var(--accent-text);cursor:pointer;text-transform:none;letter-spacing:0}
.seg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.seg button{flex:1;border:0;border-radius:0;padding:7px 6px;font-size:13px;background:transparent}
.seg button+button{border-left:1px solid var(--line)}
.seg button.on{background:var(--orange);color:var(--on-accent);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border-radius:999px;padding:6px 13px;font-size:13px}
.chips.small .chip{padding:4px 10px;font-size:12px}
.chip.on{background:var(--orange);color:var(--on-accent);border-color:var(--orange)}
.note{margin:0;line-height:1.5}
.result{min-width:0}
.result .panel-head{align-items:flex-start}
.result h3{text-transform:none;letter-spacing:0;font-size:15px;color:var(--fog);margin-bottom:3px}
.grand{color:var(--fog)}
.ex-chart svg{width:100%;height:auto;display:block}
.ex-chart .grid{stroke:var(--line);stroke-width:1}
.ex-chart .ax{fill:var(--dim);font-size:11px;font-family:var(--font)}
.ex-chart rect{transition:height .2s ease,y .2s ease}
.ex-legend{margin-top:12px;gap:16px;font-size:13px}
.ex-empty{padding:50px 0;text-align:center}
.rowchart{display:flex;flex-direction:column;gap:7px}
.rc-row{display:grid;grid-template-columns:150px 1fr 70px;align-items:center;gap:10px;font-size:13px}
.rc-lab{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc-track{display:flex;height:14px;background:var(--surface);border-radius:4px;overflow:hidden}
.rc-track.grouped{flex-direction:column;height:auto;gap:2px;background:transparent}
.rc-track.grouped .rc-seg{height:6px;border-radius:3px}
.rc-seg{height:100%;transition:width .25s ease}
.rc-val{text-align:right;color:var(--steel);font-variant-numeric:tabular-nums}
.plate-ish{unicode-bidi:isolate;font-weight:600}
.ex-table{max-height:520px}
.ex-table th.num,.ex-table td.num{text-align:right}
.ex-table thead th{position:sticky;top:0;background:var(--navy-2)}
@media (max-width:1000px){.explore-grid{grid-template-columns:1fr}}
@media (max-width:560px){.rc-row{grid-template-columns:100px 1fr 56px}}
