
:root {
  color-scheme: dark;
  --bg:#0d0e0b; --card:#191a12; --ink:#f4f3ea; --sec:#9c9d92; --mut:#77786d;
  --acc:#dee073; --c1:#999a35; --c2:#3987e5; --red:#e66767; --blu:#3987e5;
  --good:#0ca30c; --warn:#fab219; --seri:#ec835a; --crit:#d03b3b;
  --line:rgba(244,243,234,.08); --line-strong:rgba(244,243,234,.2);
  --line2:#383835; --meter-rest:#33342a; --wash:rgba(244,243,234,.025);
  --track:#24251b; --labc1:#0d0e0b; --labc2:#ffffff; --labred:#0d0e0b;
  --acc-wash:rgba(222,224,115,.05); --acc-line:rgba(222,224,115,.25);
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg:#f7f7f7; --card:#ffffff; --ink:#11131c; --sec:#52514e; --mut:#898989;
  --acc:#6f7020; --c1:#6f7020; --c2:#2a78d6; --red:#e34948; --blu:#2a78d6;
  --good:#006300; --warn:#b06e00; --seri:#c25322; --crit:#d03b3b;
  --line:rgba(17,19,28,.10); --line-strong:rgba(17,19,28,.25);
  --line2:#c9c9c4; --meter-rest:#e4e4df; --wash:rgba(17,19,28,.03);
  --track:#f5f5f5; --labc1:#ffffff; --labc2:#ffffff; --labred:#ffffff;
  --acc-wash:rgba(111,112,32,.06); --acc-line:rgba(111,112,32,.35);
}
* { box-sizing: border-box; margin: 0; }
body { background:var(--bg); color:var(--ink);
  font-family:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:16.5px; line-height:1.55; -webkit-font-smoothing:antialiased;
  padding:0 0 64px; }
a { color:inherit; }
.wrap { max-width:1160px; margin:0 auto; padding:0 28px; }
header.site { padding:26px 0 0; }
.hdrrow { display:flex; justify-content:space-between; align-items:center; gap:14px; }
.brand { font-weight:800; letter-spacing:.18em; font-size:12px; color:var(--acc);
  text-transform:uppercase; }
.brand a { text-decoration:none; }
.brand .dim { color:var(--mut); font-weight:600; }
.themebtn { border:1px solid var(--line-strong); background:none; color:var(--sec);
  font:700 12px/1 "Manrope",sans-serif; letter-spacing:.06em; padding:8px 14px;
  border-radius:99px; cursor:pointer; }
.themebtn:hover { color:var(--acc); border-color:var(--acc); }
.topnav { display:flex; flex-wrap:wrap; gap:4px 14px; margin-top:14px;
  padding-bottom:12px; border-bottom:1px solid var(--line); }
.topnav a { color:var(--sec); text-decoration:none; font-size:13px; font-weight:700;
  letter-spacing:.04em; padding:3px 2px; }
.topnav a:hover { color:var(--acc); }
.topnav a.on { color:var(--acc); border-bottom:2px solid var(--acc); }
/* hero banner: image behind the title, dark-left → lighter-right gradient */
.hero-banner { position:relative; overflow:hidden; margin-top:18px;
  border:1px solid var(--line); min-height:340px; display:flex; align-items:flex-end; }
.hero-banner img { position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; z-index:0; }
.hero-banner .shade { position:absolute; inset:0; z-index:1;
  background:linear-gradient(100deg, rgba(10,11,8,.97) 0%, rgba(10,11,8,.9) 45%,
             rgba(10,11,8,.55) 75%, rgba(10,11,8,.18) 100%); }
:root[data-theme="light"] .hero-banner .shade {
  background:linear-gradient(100deg, rgba(17,19,28,.92) 0%, rgba(17,19,28,.74) 38%,
             rgba(17,19,28,.34) 68%, rgba(17,19,28,.08) 100%); }
@media (max-width:700px) {
  .hero-banner .shade, :root[data-theme="light"] .hero-banner .shade {
    background:linear-gradient(165deg, rgba(10,11,8,.94) 0%, rgba(10,11,8,.86) 60%,
               rgba(10,11,8,.74) 100%); }
}
.hero-banner .inner { position:relative; z-index:2; padding:44px 36px 30px;
  max-width:760px; text-shadow:0 1px 14px rgba(0,0,0,.55); }
.hero-banner h1 { font-size:clamp(34px,6vw,60px); font-weight:800;
  letter-spacing:-.02em; line-height:1.02; margin:6px 0; color:#fff; }
.hero-banner .meta, .hero-banner .thesis { color:#e8e7dc; }
.hero-banner .thesis b { color:#dee073; }
.hero-banner .crumbs, .hero-banner .crumbs a { color:rgba(244,243,234,.7); }
.hero-banner figcaption { position:absolute; right:12px; bottom:8px; z-index:2;
  color:rgba(244,243,234,.55); font-size:10.5px; }
.crumbs { margin-top:14px; font-size:13.5px; color:var(--mut); }
.crumbs a { color:var(--sec); text-decoration:none; }
.crumbs a:hover { color:var(--acc); }
h1 { font-size:clamp(32px,5.5vw,54px); font-weight:800; letter-spacing:-.02em;
  line-height:1.03; margin:10px 0 6px; }
.meta { color:var(--sec); font-size:14.5px; }
.thesis { margin:14px 0 0; font-size:clamp(16px,2vw,19px); font-weight:300;
  max-width:72ch; }
.thesis b { font-weight:600; }
.ai { margin:12px 0 2px; border:1px solid var(--acc-line);
  background:var(--acc-wash); padding:12px 14px; }
.ai-tag { font-size:9.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--acc); font-weight:700; margin-bottom:5px; }
.ai p { color:var(--ink); font-size:15px; }
.ai-watch { margin-top:7px; font-size:14px; color:var(--sec); }
.ai-watch span { font-size:9.5px; letter-spacing:.12em; color:var(--mut);
  font-weight:700; margin-right:6px; }
.tiles { margin:26px 0 8px; display:grid;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; }
.tile { background:var(--card); border:1px solid var(--line); padding:16px 18px; }
.tl { font-size:10.5px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--mut); font-weight:600; }
.tv { font-size:34px; font-weight:800; margin-top:2px; }
.ts { font-size:15px; color:var(--sec); font-weight:600; }
main.grid { margin-top:18px; display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.card { background:var(--card); border:1px solid var(--line);
  padding:22px 22px 16px; display:flex; min-width:0; flex-direction:column; }
.card.wide { grid-column:1 / -1; }
.card svg { max-width:640px; display:block; }
@media (max-width:860px) { main.grid { grid-template-columns:1fr; } }
.eyebrow { font-size:10.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--mut); font-weight:700; }
h2 { font-size:clamp(19px,2.6vw,24px); font-weight:800; letter-spacing:-.015em;
  margin:6px 0 8px; text-wrap:balance; }
h2 a { text-decoration:none; }
h2 a:hover { color:var(--acc); }
.verdict { color:var(--sec); margin-bottom:12px; max-width:66ch; }
.verdict b { color:var(--ink); font-weight:700; }
.h3 { font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--mut); font-weight:700; margin:16px 0 8px; }
.h3.op { color:var(--good); } .h3.ca { color:var(--warn); } .h3.pr { color:var(--seri); }
.blab { fill:var(--sec); font-size:12.5px; }
.bval { fill:var(--ink); font-size:12.5px; font-weight:800; }
.axlab { fill:var(--mut); font-size:10px; }
svg text { font-family:"Manrope",system-ui,sans-serif;
  font-variant-numeric:tabular-nums; }
.chips { display:flex; flex-wrap:nowrap; gap:6px; overflow-x:auto;
  scrollbar-width:thin; -webkit-overflow-scrolling:touch; padding-bottom:2px; }
.chip { flex:none; white-space:nowrap;
  border:1px solid var(--line-strong); color:var(--sec); padding:4px 12px;
  font-size:13px; border-radius:99px; }
.cols { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.cols > div { min-width:0; }
@media (max-width:760px) { .cols { grid-template-columns:1fr; } }
.twrap { overflow-x:auto; }
table { border-collapse:collapse; width:100%; font-size:15.5px; }
th { text-align:left; color:var(--mut); font-size:11.5px; font-weight:800;
  letter-spacing:.1em; text-transform:uppercase; padding:6px 12px 8px 0;
  border-bottom:1px solid var(--line-strong); }
td { padding:9px 12px 9px 0; border-bottom:1px solid var(--line);
  vertical-align:top; }
tbody tr:hover td { background:var(--wash); }
td:first-child { color:var(--ink); font-weight:600; }
td.num, th.num { text-align:right; font-variant-numeric:tabular-nums;
  white-space:nowrap; }
td.num { font-weight:700; }
td.dim { color:var(--sec); }
.trend-r { color:var(--red); } .trend-f { color:var(--blu); } .trend-0 { color:var(--mut); }
.sig li { margin:6px 0 6px 18px; color:var(--sec); }
.note { margin-top:auto; padding-top:12px; border-top:1px solid var(--line);
  color:var(--mut); font-size:12.5px; line-height:1.55; }
.more { display:inline-block; margin:14px 0 2px; color:var(--acc); font-weight:700;
  font-size:13px; text-decoration:none; }
.more:hover { text-decoration:underline; }
/* homepage city listing */
.home-hero { padding:56px 0 30px; }
.home-hero h1 { font-size:clamp(44px,8vw,84px); font-weight:800;
  letter-spacing:-.03em; line-height:.96; margin:10px 0 0; }
.home-hero .geo { color:var(--acc); }
.home-hero .lede { max-width:620px; font-size:17.5px; line-height:1.55;
  color:var(--sec); margin-top:18px; }
.home-meta { margin-top:16px; font-size:12.5px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--mut); font-weight:600; }
.citygrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr));
  gap:20px; margin-top:16px; }
.citycard { display:block; background:var(--card); border:1px solid var(--line);
  text-decoration:none; color:var(--ink); overflow:hidden; min-width:0;
  transition:border-color .15s ease; }
.citycard:hover { border-color:var(--acc-line); }
.cc-img { position:relative; height:150px; overflow:hidden; }
.cc-img img { width:100%; height:100%; object-fit:cover; display:block; }
.cc-shade { position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,11,8,.05) 40%, rgba(10,11,8,.82) 100%); }
.cc-loc { position:absolute; left:14px; bottom:10px; color:#fff;
  font-size:12px; font-weight:600; letter-spacing:.06em; }
.cc-body { padding:16px 18px 18px; }
.cc-body h2 { font-size:18.5px; margin:0 0 6px; }
.cc-body p { font-size:13px; color:var(--sec); line-height:1.5; margin:0 0 12px;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.cc-stats { display:flex; gap:18px; }
.cc-stats b { display:block; font-size:16.5px; font-weight:800; }
.cc-stats span { font-size:10.5px; color:var(--mut); text-transform:uppercase;
  letter-spacing:.06em; }
.home-cta { margin:44px 0 10px; padding:22px; border:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:10px 20px; align-items:center;
  justify-content:space-between; }
.home-cta p { margin:0; color:var(--sec); }
.home-cta a { color:var(--acc); font-weight:700; text-decoration:none; }
.gchart { margin:10px 0 4px; }
.gbar { position:relative; background:var(--track); height:34px; margin:0 0 8px;
  display:flex; align-items:center; }
.gbar:last-child { margin-bottom:0; }
.gfill { height:100%; flex:none; display:flex; align-items:center;
  overflow:hidden; animation:gslide .6s ease both; }
.glab { padding:0 12px; font-size:13px; font-weight:600; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }
.gval { margin-left:10px; font-size:15px; font-weight:800; color:var(--ink);
  white-space:nowrap; font-variant-numeric:tabular-nums; }
.glab-out { margin-left:10px; font-size:13px; color:var(--sec);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@keyframes gslide { from { opacity:0; transform:translateX(-14px); }
  to { opacity:1; transform:none; } }
.empty { color:var(--mut); font-size:12px; }
.sechead { margin:34px 0 0; font-size:14px; letter-spacing:.16em;
  text-transform:uppercase; font-weight:800; color:var(--acc);
  border-bottom:1px solid var(--acc-line); padding-bottom:8px; }
.incidents { margin-top:12px; padding:10px 14px; border-left:3px solid var(--seri);
  background:var(--acc-wash); color:var(--sec); font-size:14px; }
.incidents span { display:block; font-size:9.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--seri); font-weight:700; margin-bottom:3px; }
.meter-row { display:grid; grid-template-columns:30px 1fr auto; gap:10px;
  align-items:center; padding:5px 0; }
.m-name { color:var(--sec); font-size:14.5px; }
.m-bar { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:15px;
  letter-spacing:1px; white-space:nowrap; }
.m-fill { color:var(--c1); } .m-rest { color:var(--meter-rest); }
.cklist { list-style:none; margin:4px 0 0; padding:0; }
.cklist li { padding:6px 0; border-bottom:1px solid var(--line); font-size:15px; }
.cklist .ck { color:var(--good); font-weight:800; margin-right:8px; }
.cklist .why { color:var(--mut); font-size:12.5px; margin-left:6px; }
.facts li { margin:9px 0 9px 20px; font-size:15px; color:var(--ink); }
.trend-row { display:flex; justify-content:space-between; padding:7px 0;
  border-bottom:1px solid var(--line); font-size:15px; }
.trend-row .d-up { color:var(--red); font-weight:800; }
.trend-row .d-dn { color:var(--blu); font-weight:800; }
.trend-row .cnt { color:var(--mut); font-size:12px; margin-left:8px; }
/* trend image-card strip (horizontally scrollable) */
.tstrip { display:flex; gap:14px; overflow-x:auto; padding:6px 2px 14px;
  scroll-snap-type:x mandatory; }
.tcard { position:relative; flex:0 0 240px; height:150px; border-radius:10px;
  overflow:hidden; scroll-snap-align:start; border:1px solid var(--line);
  display:flex; flex-direction:column; justify-content:flex-end; }
.tcard svg.bgart { position:absolute; inset:0; width:100%; height:100%; z-index:0; }
.tcard .tshade { position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(8,9,6,.05) 0%, rgba(8,9,6,.72) 100%); }
.tcard .tbody { position:relative; z-index:2; padding:12px 14px; color:#fff; }
.tcard .tbody h4 { font-size:16px; font-weight:800; margin:0; }
.tcard .tbody .sub { font-size:11.5px; color:rgba(255,255,255,.75); }
.tcard .tbody .metric { font-size:22px; font-weight:800; margin-top:2px; }
.prism-cta { margin-top:56px; border:1px solid var(--acc-line);
  background:var(--acc-wash); padding:30px 32px; display:flex;
  flex-wrap:wrap; align-items:center; justify-content:space-between; gap:18px; }
.prism-cta h2 { font-size:clamp(20px,2.6vw,26px); margin:0 0 6px; }
.prism-cta p { color:var(--sec); font-size:15.5px; max-width:52ch; margin:0; }
.prism-cta a { flex:none; border:1px solid var(--acc); color:var(--acc);
  text-decoration:none; font-weight:800; font-size:15px; padding:13px 26px;
  transition:background .2s ease; }
.prism-cta a:hover { background:var(--acc-wash); }
footer { margin-top:56px; border-top:1px solid var(--line);
  padding-top:26px; color:var(--mut); font-size:14.5px; line-height:1.75; }
footer b { color:var(--sec); }
.pilllinks { display:flex; flex-wrap:nowrap; gap:8px; margin:16px 0 0;
  overflow-x:auto; scrollbar-width:thin; -webkit-overflow-scrolling:touch;
  padding-bottom:6px; }
.pilllinks a { flex:none; white-space:nowrap;
  border:1px solid var(--line-strong); color:var(--sec);
  text-decoration:none; padding:6px 15px; font-size:13.5px; border-radius:99px; }
.pilllinks a:hover { border-color:var(--acc); color:var(--acc); }
@media (prefers-reduced-motion: reduce) { * { transition:none !important; animation:none !important; } }
