:root {
  --paper:    oklch(0.987 0.006 78);
  --paper-2:  oklch(0.965 0.009 78);
  --card:     oklch(0.996 0.004 85);
  --ink:      oklch(0.27 0.012 60);
  --ink-2:    oklch(0.43 0.013 58);
  --ink-3:    oklch(0.585 0.012 58);
  --line:     oklch(0.27 0.012 60 / 0.10);
  --line-2:   oklch(0.27 0.012 60 / 0.16);
  --dark:     oklch(0.255 0.014 55);
  --on-dark:  oklch(0.96 0.006 78);
  --accent:      oklch(0.52 0.066 252);
  --accent-deep: oklch(0.44 0.066 252);
  --accent-soft: oklch(0.945 0.024 252);
  --accent-line: oklch(0.52 0.066 252 / 0.28);
  --warn:   oklch(0.52 0.13 32);
  --warn-s: oklch(0.945 0.03 38);
  --caut:   oklch(0.62 0.10 70);
  --caut-s: oklch(0.95 0.04 80);
  --ok:     oklch(0.5 0.07 155);
  --ok-s:   oklch(0.945 0.03 155);
  --r:  10px; --rl: 16px;
  --gut: clamp(20px, 5vw, 80px);
  --maxw: 1200px;
  --nav-blue: oklch(0.54 0.078 252);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Hanken Grotesk',system-ui,sans-serif;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.62;padding-bottom:38px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{font-family:'Newsreader',Georgia,serif;font-weight:400;letter-spacing:-0.012em;color:var(--ink);text-wrap:balance}
em{font-style:italic}a{text-decoration:none;color:inherit}button{font-family:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent)}
.lead{color:var(--ink-2);font-size:17px;line-height:1.7}
.meta{color:var(--ink-3);font-size:13.5px}
/* NAV */
.nav{position:sticky;top:0;z-index:200;background:var(--nav-blue);backdrop-filter:none;border-bottom:1px solid oklch(1 0 0 / 0.14)}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);height:66px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;flex-direction:column;line-height:1.15;cursor:pointer}
.brand-mark{font-family:'Newsreader',serif;font-size:19px;font-weight:500;letter-spacing:-0.01em;white-space:nowrap}
.brand-mark b{color:var(--accent);font-weight:500}
.brand-sub{font-size:11px;color:oklch(1 0 0 / 0.7);letter-spacing:0.02em}
.nav-links{display:flex;align-items:center;gap:2px}
.nav-link{font-size:14px;color:oklch(1 0 0 / 0.82);padding:7px 13px;border-radius:8px;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}
.nav-link-ic{display:none}
.nav-link:hover{background:oklch(1 0 0 / 0.12);color:#fff}
.nav-link.active{color:#fff;font-weight:600}
.nav-link.active::after{content:"";display:block;height:2px;border-radius:2px;background:#fff;margin:5px 13px -7px}
.nav-right{display:flex;align-items:center;gap:8px}
.nav-burger{display:none}
.nav-search{display:flex;align-items:center;position:relative}
.nav-search-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:0;background:oklch(1 0 0 / 0.12);color:oklch(1 0 0 / 0.85);font-size:16px;cursor:pointer;transition:background .15s,color .15s;flex:none}
.nav-search-icon:hover{background:oklch(1 0 0 / 0.22);color:#fff}
.nav-search input{border:0;background:transparent;outline:none;font:inherit;font-size:13.5px;color:#fff;width:0;max-width:0;padding:0;opacity:0;transition:width .22s ease,max-width .22s ease,opacity .18s,padding .22s}
.nav-search input::placeholder{color:oklch(1 0 0 / 0.6)}
.nav-search.expanded{background:oklch(1 0 0 / 0.12);border:1px solid oklch(1 0 0 / 0.22);border-radius:22px;padding:4px 12px 4px 6px}
.nav-search.expanded input{width:180px;max-width:180px;padding:4px 4px;opacity:1}
.nav-search-dd{position:absolute;top:calc(100% + 8px);right:0;left:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.14);overflow:hidden;z-index:999;min-width:280px;display:none}
.nav-search-dd.open{display:block}
.nav-search-dd-item{padding:11px 16px;cursor:pointer;display:flex;align-items:flex-start;gap:10px;border-bottom:1px solid var(--line)}
.nav-search-dd-item:last-child{border-bottom:none}
.nav-search-dd-item:hover{background:var(--bg-alt)}
.nav-search-dd-icon{color:var(--accent);flex:none;font-size:15px;margin-top:1px}
.nav-search-dd-text{flex:1}
.nav-search-dd-title{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.3}
.nav-search-dd-sub{font-size:11.5px;color:var(--ink-3);margin-top:1px}
.nav-search-dd-empty{padding:14px 16px;font-size:13px;color:var(--ink-3);text-align:center}
/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;font-weight:500;line-height:1;padding:12px 22px;border-radius:26px;cursor:pointer;border:1px solid transparent;transition:transform .12s,background .15s,border-color .15s,color .15s}
.btn:active{transform:scale(.98)}
.btn-p{background:var(--accent);color:#fff}
.btn-p:hover{background:var(--accent-deep)}
.btn-o{border-color:var(--line-2);color:var(--ink);background:transparent}
.btn-o:hover{border-color:var(--ink)}
.btn .ti{font-size:16px}
/* PAGES */
.page{display:none}
.page.active{display:block;animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.section{padding:clamp(34px,5vw,60px) 0}
.section+.section{border-top:1px solid var(--line)}
.section.alt{background:var(--paper-2)}
.sec-head{max-width:620px;margin-bottom:26px}
.sec-head .eyebrow{margin-bottom:9px;display:block}
.sec-h{font-size:clamp(26px,3.4vw,34px);line-height:1.12;margin-bottom:9px}
.sec-head .lead{margin-top:2px}
/* HERO */
.hero{padding:clamp(28px,4vw,52px) 0 clamp(14px,2vw,24px)}
.mobile-notice{display:none}
.hero-grid{display:grid;grid-template-columns:1.05fr 0.95fr;gap:clamp(32px,6vw,72px);align-items:center}
.hero-eyebrow{display:block;margin-bottom:22px}
.hero-h1{font-size:clamp(40px,6vw,64px);line-height:1.04;letter-spacing:-0.02em;margin-bottom:22px}
.hero-h1 em{color:var(--accent)}
.hero-sub{font-size:clamp(16px,1.5vw,19px);color:var(--ink-2);line-height:1.66;max-width:30em;margin-bottom:34px}
.hero-btns{display:flex;gap:12px;flex-wrap:wrap}
.hero-media{border-radius:var(--rl);overflow:hidden;aspect-ratio:4/3.4;border:1px solid var(--line);position:relative}
.hero-media-single{width:100%;height:100%;overflow:hidden;display:block}
/* STATS */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.stat{padding:8px 36px 8px 0}
.stat+.stat{padding-left:36px;border-left:1px solid var(--line)}
.stat-n{font-family:'Newsreader',serif;font-weight:400;font-size:clamp(38px,4.6vw,54px);line-height:1;letter-spacing:-0.02em;margin-bottom:12px}
.stat-n.warn{color:var(--warn)}
.stat-n .cur{font-family:'Hanken Grotesk',sans-serif;font-weight:500;font-size:0.8em;vertical-align:0.05em;margin-right:0.01em}
.stat-l{font-size:15px;color:var(--ink-2);line-height:1.5;max-width:22em}
.stat-src{font-size:12px;color:var(--ink-3);margin-top:12px;display:inline-flex;align-items:center;gap:5px}
.stat-src.link{color:var(--accent);cursor:pointer}
.stat-src.link:hover{text-decoration:underline}
.stats.stats-4{grid-template-columns:repeat(4,1fr)}
/* TOPIC CARDS */
.topics{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x proximity;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-inline:52px;padding:6px 0}
.topics::-webkit-scrollbar{display:none}
.topics .tcard{flex:0 0 calc((100% - 36px)/3);scroll-snap-align:start}
.tcard{position:relative;display:flex;flex-direction:column;padding:26px 24px 24px;border-radius:var(--rl);background:var(--card);border:1px solid var(--line);cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s}
.tcard:hover{transform:translateY(-4px);box-shadow:0 14px 36px oklch(0.27 0.012 60 / 0.09);border-color:var(--line-2)}
.tcard.is-active{border-color:var(--accent-line)}
.tcard.is-soon{cursor:default}
.tcard.is-soon:hover{transform:none;box-shadow:none;border-color:var(--line)}
.tcard.is-soon .tc-icon{background:oklch(0.27 0.012 60 / 0.05);color:var(--ink-3)}
.tcard.is-soon .tc-t,.tcard.is-soon .tc-b{color:var(--ink-3)}
.tc-icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent-deep);font-size:22px;margin-bottom:18px}
.tc-t{font-family:'Newsreader',serif;font-size:21px;margin-bottom:7px}
.tc-b{font-size:14px;color:var(--ink-2);line-height:1.55;flex:1}
.tc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:18px}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:0.02em;border-radius:20px;padding:4px 11px}
.badge.dot::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.b-live{background:var(--ok-s);color:var(--ok)}
.b-arc{background:oklch(0.27 0.012 60 / 0.05);color:var(--ink-3)}
.tc-go{font-size:13px;color:var(--accent);font-weight:600;opacity:0;transition:opacity .2s}
.tcard:hover .tc-go{opacity:1}
.topics-note{margin-top:22px;font-size:14px;color:var(--ink-3);display:flex;align-items:center;gap:9px}
.topics-note .ti{color:var(--accent)}
.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.topics-carousel{position:relative}
.topics-prev{left:4px}
.topics-next{right:4px}
/* BLOG */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.blog-grid .bcard-thumb,.blog-grid .bcard-media{max-height:240px}
.blog-carousel{position:relative}
.blog-track{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x proximity;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-inline:52px;padding:6px 0}
.blog-track::-webkit-scrollbar{display:none}
.blog-track .bcard{flex:0 0 calc((100% - 44px)/3);scroll-snap-align:start}
.blog-prev{left:4px}
.blog-next{right:4px}
.bcard{cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s;position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--rl);padding:16px 16px 20px}
.bcard:hover{transform:translateY(-4px);box-shadow:0 14px 36px oklch(0.27 0.012 60 / 0.09);border-color:var(--line-2)}
.bcard-media{aspect-ratio:16/9;border-radius:var(--r);overflow:hidden;margin-bottom:16px;border:1px solid var(--line)}
.bcard-thumb{display:block;width:100%;height:auto;aspect-ratio:16/9;margin-bottom:16px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}.bcard-thumb.ph{height:auto;min-height:0}
.bcard-tag{font-size:11.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--accent)}
.bcard-t{font-family:'Newsreader',serif;font-size:20px;line-height:1.22;margin:8px 0 8px;transition:color .15s}
.bcard:hover .bcard-t{color:var(--accent-deep)}
.bcard-meta{font-size:13px;color:var(--ink-3)}
.bcard-flash{transform:translateY(-4px);box-shadow:0 14px 36px oklch(0.27 0.012 60 / 0.09);border-radius:var(--rl)}
.bcard-flash .bcard-t{color:var(--accent-deep)}
/* PLACEHOLDER */
.ph{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:repeating-linear-gradient(135deg,oklch(0.27 0.012 60 / 0.022) 0 10px,transparent 10px 20px),var(--paper-2);color:var(--ink-3)}
.ph .ti{font-size:30px;opacity:0.5}
.ph span{font-family:ui-monospace,'SF Mono',monospace;font-size:10.5px;letter-spacing:0.02em}
/* SPLIT / PROSE */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,72px)}
.about-split{grid-template-columns:1fr 1.15fr}
.prose p{color:var(--ink-2);margin-bottom:16px;max-width:38em}
/* PRIOR ROWS */
.prior-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 4px;border-bottom:1px solid var(--line);cursor:pointer;transition:padding-left .18s}
.prior-row:hover{padding-left:12px}
.prior-row:first-of-type{border-top:1px solid var(--line)}
.prior-y{font-size:13px;color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums;min-width:48px}
.prior-t{font-size:15px;font-weight:500}
.prior-s{font-size:13px;color:var(--ink-3);margin-top:1px}
.prior-row .ti{color:var(--ink-3);font-size:18px;transition:color .15s,transform .18s}
.prior-row:hover .ti{color:var(--accent);transform:translateX(3px)}
/* CRUMB */
.crumb{padding:18px 0 0;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:8px}
.crumb a{color:var(--accent);cursor:pointer}
.crumb a:hover{text-decoration:underline}
.crumb .ti{font-size:14px;opacity:0.6}
/* DASHBOARD */
.dash-hero{padding:26px 0 0;margin-bottom:56px}
.dash-h1{font-size:clamp(30px,4.2vw,44px);line-height:1.08;margin:16px 0 14px;max-width:16em}
.dash-lead{max-width:44em;margin-bottom:30px}
.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line-2)}
.tabs::-webkit-scrollbar{display:none}
.tab{font-size:14px;color:var(--ink-3);white-space:nowrap;padding:12px 16px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--accent-deep);font-weight:600;border-bottom-color:var(--accent)}
.tabpane{display:none;padding:44px 0}
.tabpane.active{display:block;animation:fade .3s ease}
.filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:36px}
.dash-filter{padding-top:30px}
.dash-filter .filterbar{margin-bottom:0}
.filterbar .lbl{font-size:13px;color:var(--ink-3);margin-right:2px}
.chip{font-size:13px;color:var(--ink-2);background:transparent;border:1px solid var(--line-2);border-radius:20px;padding:6px 14px;cursor:pointer;transition:all .14s}
.chip:hover{border-color:var(--accent-line);color:var(--ink)}
.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.filterbar .hint{font-size:12px;color:var(--ink-3);font-style:italic}
/* CARDS + CHARTS */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--rl);padding:26px}
.card-t{font-family:'Newsreader',serif;font-size:20px;line-height:1.2;margin-bottom:5px}
.card-s{font-size:13px;color:var(--ink-3);margin-bottom:24px}
/* Dashboard bars (150px) */
.bars{display:flex;align-items:flex-end;gap:10px;height:150px;margin-bottom:18px}
.bc{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}
.bar{width:100%;max-width:46px;border-radius:5px 5px 0 0;background:var(--accent-soft);border-top:3px solid var(--accent);transition:opacity .15s;cursor:pointer}
.bar:hover{opacity:0.7}
.bar.hi{background:var(--warn-s);border-top-color:var(--warn)}
.bar.lo{background:var(--caut-s);border-top-color:var(--caut)}
.bc-lbl{font-size:11px;color:var(--ink-3);text-align:center;margin-top:8px;line-height:1.35}
.bc-lbl b{display:block;color:var(--ink);font-size:12px;font-weight:600}
/* Minichart bars (84px) — scoped to avoid conflict */
.minichart .bars{height:132px;gap:9px;margin-bottom:0}
.minichart .bar{flex:1;max-width:none;background:var(--accent-line);border-radius:4px 4px 0 0;border-top:none;min-height:4px;position:relative}
.minichart .bar .bv{position:absolute;top:-14px;left:0;right:0;text-align:center;font-size:9px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.minichart .bar.bar-now{background:var(--accent-soft);border-top:3px solid var(--accent)}
.bars-x{display:flex;gap:9px;margin-top:7px}
.bars-x span{flex:1;text-align:center;font-size:10px;color:var(--ink-3)}
.minichart-cap{font-size:11px;color:var(--ink-3);margin-top:11px;font-style:italic}
/* CALLOUT */
.callout{background:var(--caut-s);border-left:3px solid var(--caut);border-radius:0 var(--r) var(--r) 0;padding:14px 16px}
.callout-t{font-size:13.5px;color:var(--ink);line-height:1.55}
.callout-s{font-size:11.5px;color:var(--ink-3);margin-top:5px;font-style:italic}
.callout.warn{background:var(--warn-s);border-left-color:var(--warn)}
.callout.info{background:var(--accent-soft);border-left-color:var(--accent)}
/* MAP PLACEHOLDER */
.map-ph{min-height:220px;border-radius:var(--rl);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:repeating-linear-gradient(135deg,oklch(0.27 0.012 60 / 0.02) 0 12px,transparent 12px 24px),var(--paper-2);text-align:center;padding:20px}
.map-ph .ti{font-size:32px;color:var(--accent);opacity:0.6}
.map-ph .t{font-size:14px;font-weight:600}
.map-ph .s{font-size:12.5px;color:var(--ink-3)}
.scale{height:6px;border-radius:3px;width:60%;max-width:240px;margin-top:4px;background:linear-gradient(to right,#fde725,#5ec962,#21918c,#3b528b,#440154)}
.scale-lbl{font-family:ui-monospace,monospace;font-size:10px;color:var(--ink-3)}
/* TABLES */
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;padding:12px 16px;font-size:11.5px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line-2)}
th:first-child,td:first-child{padding-left:4px}
td{padding:14px 16px;border-bottom:1px solid var(--line);color:var(--ink-2)}
td.name{color:var(--ink);font-weight:500}
tr:last-child td{border-bottom:none}
td.hi{color:var(--warn);font-weight:600;font-variant-numeric:tabular-nums}
td.ok{color:var(--ok);font-weight:600;font-variant-numeric:tabular-nums}
td.num{font-variant-numeric:tabular-nums}
tbody tr{transition:background .12s;cursor:default}
tbody tr:hover td{background:var(--accent-soft)}
/* EXPL GRID */
.expl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.expl{padding:24px;border:1px solid var(--line);border-radius:var(--rl);background:var(--card)}
.expl-q{font-family:'Newsreader',serif;font-size:18px;margin-bottom:10px}
.expl-a{font-size:14px;color:var(--ink-2);line-height:1.62}
.expl-link{font-size:13px;color:var(--accent);font-weight:600;margin-top:14px;display:inline-flex;gap:5px;cursor:pointer}
.expl-link:hover{text-decoration:underline}
/* DLSTRIP */
.dlstrip{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:30px 34px;border-radius:var(--rl);background:var(--dark);color:var(--on-dark)}
.dlstrip-t{font-family:'Newsreader',serif;font-size:21px}
.dlstrip-s{font-size:13px;color:oklch(1 0 0 / 0.55);margin-top:4px}
.dl-btns{display:flex;gap:10px;flex-wrap:wrap}
.btn-ghost{font-size:13px;font-weight:500;color:var(--on-dark);background:oklch(1 0 0 / 0.08);border:1px solid oklch(1 0 0 / 0.16);padding:10px 16px;border-radius:22px;cursor:pointer;transition:background .15s;display:inline-flex;align-items:center;gap:7px}
.btn-ghost:hover{background:oklch(1 0 0 / 0.16)}
/* STUB */
.stub{text-align:center;max-width:560px;margin:0 auto;padding:clamp(56px,9vw,110px) 0}
.stub .eyebrow{display:block;margin-bottom:16px}
.stub h2{font-size:clamp(28px,4vw,40px);margin-bottom:16px}
.stub p{color:var(--ink-2);font-size:17px;line-height:1.66;margin-bottom:30px}
.stub-btns{display:inline-flex;gap:12px;flex-wrap:wrap;justify-content:center}
/* FOOTER */
footer{background:var(--dark);color:var(--on-dark);padding:clamp(48px,7vw,72px) 0 28px}
.foot-grid{display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr;gap:40px;margin-bottom:44px}
.foot-brand .brand-mark{color:#fff;font-size:20px}
.foot-brand .brand-mark b{color:oklch(0.78 0.08 45)}
.foot-about{font-size:13.5px;color:oklch(1 0 0 / 0.5);line-height:1.7;margin:14px 0 18px;max-width:32em}
.foot-t{font-size:12px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:oklch(1 0 0 / 0.45);margin-bottom:14px}
.foot-l{display:block;font-size:14px;color:oklch(1 0 0 / 0.66);margin-bottom:9px;cursor:pointer;transition:color .15s}
.foot-l:hover{color:#fff}
.a11y{display:flex;gap:8px;flex-wrap:wrap}
.a11y-chip{font-size:11px;border:1px solid oklch(1 0 0 / 0.16);border-radius:20px;padding:4px 11px;color:oklch(1 0 0 / 0.5)}
.foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid oklch(1 0 0 / 0.1);padding-top:22px;font-size:12px;color:oklch(1 0 0 / 0.38)}
/* MODAL */
.modal-bg{display:none;position:fixed;inset:0;z-index:900;background:oklch(0.255 0.014 55 / 0.45);backdrop-filter:blur(4px);align-items:center;justify-content:center;padding:24px}
.modal-bg.open{display:flex;animation:fade .2s ease}
.modal{background:var(--paper);border-radius:var(--rl);width:620px;max-width:100%;max-height:82vh;overflow-y:hidden;padding:0;position:relative;box-shadow:0 30px 80px oklch(0.255 0.014 55 / 0.35);display:flex;flex-direction:column}
.modal-close{position:absolute;top:20px;right:22px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line-2);background:var(--card);font-size:18px;color:var(--ink-2);cursor:pointer;line-height:1}
.modal-close:hover{color:var(--ink);border-color:var(--ink)}
.modal h2{font-size:28px;margin-bottom:6px}
.modal .lead{margin-bottom:26px}
.gloss{padding:18px 0;border-bottom:1px solid var(--line);border-radius:8px}
.gloss:last-child{border-bottom:none;padding-bottom:0}
.gloss-term{font-size:16px;font-weight:600;margin-bottom:5px}
.gloss-search-wrap{position:sticky;top:0;background:var(--modal-bg,var(--paper));padding:10px 0 14px;z-index:1;margin-bottom:4px}
.gloss-search{width:100%;padding:10px 14px 10px 38px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:14px;color:var(--ink);background:var(--paper-2);outline:none;box-sizing:border-box}
.gloss-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.gloss-modal-head{padding:36px 40px 16px;flex-shrink:0;border-bottom:1px solid var(--line)}
.gloss-modal-body{overflow-y:auto;padding:0 40px 32px;flex:1 1 auto}
.gloss-search-wrap .ti{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-size:16px;pointer-events:none}
.gloss-search-wrap{position:sticky;top:0;z-index:1}
.gloss-no-results{display:none;padding:24px 0;color:var(--ink-3);font-size:14px;text-align:center}
.gloss-def{font-size:14px;color:var(--ink-2);line-height:1.66}
.gloss-src{font-size:12px;color:var(--accent);margin-top:6px;font-style:italic}
.gloss-link{color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;text-decoration-color:oklch(0.52 0.066 252 / 0.5);transition:color .14s,text-decoration-color .14s}
.gloss-link:hover{color:var(--accent-deep);text-decoration-color:var(--accent)}
@keyframes glossHitPulse{0%{background:oklch(0.52 0.066 252 / 0);box-shadow:0 0 0 0 oklch(0.52 0.066 252 / 0)}14%{background:oklch(0.52 0.066 252 / 0.13);box-shadow:0 0 0 8px oklch(0.52 0.066 252 / 0.13)}72%{background:oklch(0.52 0.066 252 / 0.13);box-shadow:0 0 0 8px oklch(0.52 0.066 252 / 0.13)}100%{background:oklch(0.52 0.066 252 / 0);box-shadow:0 0 0 0 oklch(0.52 0.066 252 / 0)}}
.gloss.gloss-hit{animation:glossHitPulse 2.6s ease forwards}
.gloss.gloss-hit .gloss-term{color:var(--accent-deep)}
/* NAV DROPDOWN */
.nav-dd{position:relative}
.nav-dd>.nav-link{display:inline-flex;align-items:center;gap:5px}
.nav-dd>.nav-link .ti{font-size:14px;transition:transform .18s}
.nav-dd.open>.nav-link{background:oklch(1 0 0 / 0.12);color:#fff}
.nav-dd.open>.nav-link .ti{transform:rotate(180deg)}
.dd-menu{position:absolute;top:calc(100% + 12px);left:0;background:var(--card);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 18px 46px oklch(0.27 0.012 60 / 0.16);padding:7px;min-width:248px;z-index:240;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .16s,transform .16s,visibility .16s}
.nav-dd.open .dd-menu{opacity:1;visibility:visible;transform:none}
.dd-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:9px;cursor:pointer;transition:background .14s,color .14s}
.dd-item:hover{background:var(--accent-soft)}
.dd-ic{width:34px;height:34px;flex:none;border-radius:9px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent-deep);font-size:17px}
.dd-item:hover .dd-ic{background:var(--card)}
.dd-tx{flex:1;display:flex;flex-direction:column}
.dd-t{font-size:14px;font-weight:600;color:var(--ink);line-height:1.2}
.dd-s{font-size:12px;color:var(--ink-3)}
.dd-tag{font-size:10.5px;font-weight:600;letter-spacing:.03em;color:var(--ink-3)}
.dd-tag.live{color:var(--ok)}
/* MEMBER GRID */
.member-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:44px 56px;margin-top:28px}
.member{text-align:center}
.member-photo{width:152px;height:152px;aspect-ratio:1;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;margin:0 auto 18px;border:1px solid var(--line);background:repeating-linear-gradient(135deg,oklch(0.27 0.012 60 / 0.022) 0 10px,transparent 10px 20px),var(--paper-2);color:var(--ink-3);font-size:28px}
.member-n{font-size:19px;font-weight:600}
.member-meta{font-size:13.5px;color:var(--ink-3);margin-top:4px}
.member-bio{font-size:14px;color:var(--ink-2);margin:12px auto 0;line-height:1.6;max-width:44ch}
.faculty-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px 32px;margin-top:18px}
.fac{display:flex;gap:16px;align-items:flex-start}
.fac-photo{width:92px;height:92px;flex:none;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:repeating-linear-gradient(135deg,oklch(0.27 0.012 60 / 0.022) 0 10px,transparent 10px 20px),var(--paper-2);color:var(--ink-3);font-size:22px}
.fac-n{font-size:16px;font-weight:600}
.fac-r{font-size:12.5px;color:var(--ink-3);margin-top:1px}
.fac-bio{font-size:13.5px;color:var(--ink-2);line-height:1.55;margin-top:8px}
.member-note{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink-2)}
/* BIBLIO */
.biblio{max-width:840px}
.biblio-group{margin-bottom:28px}
.biblio-group:last-of-type{margin-bottom:0}
.biblio-h{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;padding-bottom:12px;border-bottom:1px solid var(--line-2)}
.cite{display:flex;gap:18px;padding:20px 0;border-bottom:1px solid var(--line)}
.cite:last-child{border-bottom:none}
.cite-num{font-family:'Newsreader',serif;font-size:18px;color:var(--accent);font-variant-numeric:tabular-nums;min-width:28px;line-height:1.4}
.cite-body{flex:1}
.cite-t{font-size:16px;font-weight:600;line-height:1.35}
.cite-pub{font-size:14px;color:var(--ink-2);margin-top:3px}
.cite-meta{font-size:12.5px;color:var(--ink-3);margin-top:8px;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.cite-meta .tag{display:inline-flex;align-items:center;gap:5px}
.cite-link{color:var(--accent);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.cite-link:hover{text-decoration:underline}
/* BLOG POST */
.post{padding:4px 0 64px}
.post-head{max-width:720px;margin:0 auto}
.post-title{font-family:'Newsreader',serif;font-weight:400;font-size:clamp(32px,5vw,52px);line-height:1.06;letter-spacing:-0.02em;margin:14px 0 18px}
.post-dek{font-size:clamp(17px,1.8vw,20px);color:var(--ink-2);line-height:1.6;max-width:34em;margin-bottom:26px}
.post-byline{display:flex;align-items:center;gap:13px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.post-byline .by-n{font-size:14px;font-weight:600;color:var(--ink)}
.post-byline .by-m{font-size:13px;color:var(--ink-3);margin-top:1px}
.post-author-ph{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-3);font-size:18px}
.post-media{max-width:880px;margin:34px auto 0}
.post-figcap{font-size:12.5px;color:var(--ink-3);line-height:1.5;margin-top:10px;font-style:italic}
.post-body{max-width:720px;margin:0 auto;padding-top:34px}
.post-body p{color:var(--ink-2);font-size:17px;line-height:1.78;margin-bottom:20px}
.post-body p strong{color:var(--ink);font-weight:600}
.post-body h2{font-family:'Newsreader',serif;font-weight:400;font-size:27px;line-height:1.18;letter-spacing:-0.01em;margin:40px 0 14px}
.post-lead::first-letter{font-family:'Newsreader',serif;float:left;font-size:3.5em;line-height:0.78;padding:4px 10px 0 0;color:var(--accent);font-weight:500}
.post-figure{margin:30px 0}
.post-quote{font-family:'Newsreader',serif;font-style:italic;font-size:25px;line-height:1.34;color:var(--ink);border-left:3px solid var(--accent);padding:4px 0 4px 24px;margin:36px 0;text-wrap:balance}
.post-sources-h{font-size:13px!important;font-family:'Hanken Grotesk',sans-serif!important;font-weight:600!important;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);margin:40px 0 12px!important}
.post-sources{list-style:none}
.post-sources li{font-size:14px;color:var(--ink-2);line-height:1.5;padding-left:18px;position:relative;margin-bottom:9px}
.post-sources li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--accent-line)}
.post-foot{max-width:720px;margin:40px auto 0;padding-top:26px;border-top:1px solid var(--line)}
.post-back{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:var(--ink-3);cursor:pointer;transition:color .15s,gap .15s}
.post-back:hover{color:var(--accent);gap:11px}
/* SPOTLIGHT CAROUSEL */
.spot-head{margin-bottom:30px}
.spot-eyebrow-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}
.spot-topic{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;letter-spacing:0.01em;font-family:inherit;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line-2);border-radius:20px;padding:2px 11px 2px 9px;margin-top:14px;cursor:pointer;transition:opacity .22s,border-color .18s,color .18s,background .18s}
.spot-topic:hover{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}
.spot-topic .ti{font-size:15px;color:var(--accent)}
.spot-topic .spot-topic-go{font-size:14px;transition:transform .18s}
.spot-topic:hover .spot-topic-go{transform:translateX(3px)}
.spot-h,.spot-lead{transition:opacity .22s}
.spot-lead{max-width:52em;min-height:3.4em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.spot-slide .stat-l{min-height:3em}
.spot-carousel{position:relative}
.spot-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.spot-track::-webkit-scrollbar{display:none}
.spot-slide{flex:0 0 100%;min-width:100%;box-sizing:border-box;padding:0 30px;scroll-snap-align:start}
.spot-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--line-2);color:var(--accent);font-size:18px;cursor:pointer;box-shadow:0 8px 24px oklch(0.27 0.012 60 / 0.13);transition:background .15s,border-color .15s,color .15s,opacity .18s,transform .12s}
.spot-arrow:hover{border-color:var(--accent-line);color:var(--accent-deep)}
.spot-arrow:active{transform:translateY(-50%) scale(.93)}
.spot-prev{left:-19px}
.spot-next{right:-19px}
.spot-arrow[disabled]{opacity:.32;pointer-events:none;box-shadow:none}
.spot-dots{display:flex;justify-content:center;gap:9px;margin-top:30px}
.spot-dot{width:8px;height:8px;border-radius:50%;padding:0;border:0;background:var(--line-2);cursor:pointer;transition:background .18s,width .18s}
.spot-dot.on{background:var(--accent);width:22px;border-radius:4px}
.spot-readmore{display:inline-flex;align-items:center;gap:6px;margin-top:28px;padding:0;border:0;background:none;font-family:inherit;font-size:13.5px;font-weight:600;letter-spacing:0.01em;color:var(--ink-3);cursor:pointer;transition:color .15s}
.spot-readmore .ti{font-size:16px;transition:transform .18s}
.spot-readmore:hover{color:var(--accent)}
.spot-readmore:hover .ti{transform:translateX(4px)}
.rs-pre{white-space:nowrap}
.rs-rotator{position:relative;overflow:hidden;height:1.5em;line-height:1.5em;display:inline-block;vertical-align:bottom;padding-right:6px}
.rs-title{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:inherit;will-change:transform,opacity;transition:transform .42s cubic-bezier(.4,0,.2,1),opacity .42s ease}
.rs-text{min-width:0}
.rs-title .ti{flex:0 0 auto}
/* BACK TO TOP */
.backtop-wrap{display:flex;justify-content:center;padding:8px 0 34px}
.backtop{display:inline-flex;align-items:center;gap:7px;background:none;border:0;cursor:pointer;font-family:inherit;font-size:12.5px;letter-spacing:0.04em;color:var(--ink-3);padding:7px 12px;border-radius:8px;white-space:nowrap;transition:color .15s,background .15s}
.backtop:hover{color:var(--accent);background:var(--paper-2)}
.backtop .ti{font-size:15px;transition:transform .15s}
.backtop:hover .ti{transform:translateY(-2px)}
/* ── ACCESSIBILITY PANEL ── */
.a11y-btn{position:fixed;left:22px;bottom:54px;z-index:300;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--nav-blue);color:#fff;border:0;cursor:pointer;box-shadow:0 4px 16px oklch(0.40 0.066 252 / 0.28);font-size:20px;transition:background .15s,transform .12s}
.a11y-btn:hover{background:oklch(0.63 0.088 252);transform:scale(1.07)}
.a11y-panel{position:fixed;left:22px;bottom:110px;z-index:301;width:320px;background:var(--card);border:1px solid var(--line-2);border-radius:16px;box-shadow:0 18px 46px oklch(0.27 0.012 60 / 0.18);padding:0;opacity:0;transform:translateY(10px) scale(0.97);transform-origin:bottom left;pointer-events:none;transition:opacity .18s,transform .18s;overflow:hidden;max-height:90vh;overflow-y:auto}
.a11y-panel.open{opacity:1;transform:none;pointer-events:auto}
.a11y-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--line-2);position:sticky;top:0;background:var(--card);z-index:1}
.a11y-head-t{font-size:13px;font-weight:700;letter-spacing:0.05em;text-transform:uppercase;color:var(--ink)}
.a11y-close{background:none;border:0;cursor:pointer;color:var(--ink-3);font-size:18px;line-height:1;padding:2px;border-radius:6px;transition:color .13s}
.a11y-close:hover{color:var(--ink)}
.a11y-section{padding:10px 12px 4px;font-size:10px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3)}
.a11y-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;padding:4px 12px 10px}
.a11y-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:11px 6px 9px;border-radius:11px;border:1.5px solid var(--line-2);background:var(--paper-2);cursor:pointer;transition:border-color .15s,background .15s;font-family:inherit;color:var(--ink);text-align:center;min-height:80px}
.a11y-tile:hover{border-color:var(--accent);background:var(--accent-soft)}
.a11y-tile.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}
.a11y-tile .ti{font-size:20px;color:var(--ink-3);transition:color .15s}
.a11y-tile.on .ti,.a11y-tile:hover .ti{color:var(--accent)}
.a11y-tile-t{font-size:10.5px;font-weight:600;line-height:1.3}
.a11y-levels{display:flex;gap:3px;margin-top:3px}
.a11y-lvbar{width:14px;height:3px;border-radius:2px;background:var(--line-2);transition:background .15s}
.a11y-lvbar.lit{background:var(--accent)}
.a11y-reset{display:block;width:100%;padding:11px 16px;background:none;border:0;border-top:1px solid var(--line-2);font-family:inherit;font-size:12.5px;font-weight:600;color:var(--ink-3);cursor:pointer;letter-spacing:0.04em;transition:color .13s,background .13s;text-align:center}
.a11y-reset:hover{background:var(--paper-2);color:var(--accent)}
/* Custom cursor — scaled arrow */
html.a11y-cursor-1 *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M4 2 L4 22 L8 18 L11 25 L14 23 L11 16 L17 16 Z' fill='black' stroke='white' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") 4 2,auto!important}
html.a11y-cursor-2 *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M5 3 L5 32 L11 26 L15 36 L20 33 L16 23 L24 23 Z' fill='black' stroke='white' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") 5 3,auto!important}
html.a11y-cursor-3 *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='52' height='52'%3E%3Cpath d='M6 3 L6 42 L15 34 L20 47 L27 44 L22 31 L33 31 Z' fill='black' stroke='white' stroke-width='2.5' stroke-linejoin='round'/%3E%3C/svg%3E") 6 3,auto!important}
/* Mode overrides */
html.a11y-text-1 body{zoom:1.1}html.a11y-text-2 body{zoom:1.18}html.a11y-text-3 body{zoom:1.26}html.a11y-text-4 body{zoom:1.35}
html.a11y-spacing p,html.a11y-spacing li,html.a11y-spacing .lead,html.a11y-spacing .callout-t{letter-spacing:0.07em;word-spacing:0.22em}
html.a11y-lh-1 p,html.a11y-lh-1 li,html.a11y-lh-1 .lead,html.a11y-lh-1 .callout-t{line-height:1.8!important}
html.a11y-lh-2 p,html.a11y-lh-2 li,html.a11y-lh-2 .lead,html.a11y-lh-2 .callout-t{line-height:2.2!important}
html.a11y-lh-3 p,html.a11y-lh-3 li,html.a11y-lh-3 .lead,html.a11y-lh-3 .callout-t{line-height:2.6!important}
html.a11y-contrast{filter:contrast(1.4) brightness(0.96)}
html.a11y-motion *{animation:none!important;transition:none!important}
html.a11y-dyslexia,html.a11y-dyslexia *{font-family:'OpenDyslexic','Comic Sans MS',sans-serif!important}
html.a11y-noimages img,html.a11y-noimages video,html.a11y-noimages .bcard-thumb{display:none!important}
html.a11y-noimages .bcard-thumb+*{margin-top:0}
/* FAB */
.fab{position:fixed;right:22px;bottom:54px;z-index:300}
.fab-btn{position:relative;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--nav-blue);color:#fff;border:1px solid var(--nav-blue);box-shadow:0 6px 20px oklch(0.40 0.066 252 / 0.28);cursor:pointer;transition:color .16s,background .16s,border-color .16s,transform .16s,box-shadow .16s}
.fab-btn:hover{background:oklch(0.63 0.088 252);border-color:oklch(0.63 0.088 252)}
.fab-btn .ti{position:absolute;font-size:20px;transition:opacity .16s,transform .16s}
.fab-btn .fab-ic-close{opacity:0;transform:rotate(-90deg)}
.fab.open .fab-btn{color:var(--nav-blue);background:var(--card);border-color:var(--line-2)}
.fab.open .fab-btn .fab-ic-open{opacity:0;transform:rotate(90deg)}
.fab.open .fab-btn .fab-ic-close{opacity:1;transform:none}
.fab-menu{position:absolute;right:0;bottom:calc(100% + 12px);width:236px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 46px oklch(0.27 0.012 60 / 0.16);padding:7px;opacity:0;transform:translateY(8px) scale(0.98);transform-origin:bottom right;pointer-events:none;transition:opacity .18s,transform .18s}
.fab.open .fab-menu{opacity:1;transform:none;pointer-events:auto}
.fab-menu-h{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);font-weight:600;padding:8px 10px 7px}
.fab-item{display:flex;align-items:center;gap:11px;width:100%;background:none;border:0;cursor:pointer;text-align:left;font-family:inherit;font-size:14px;color:var(--ink);padding:10px;border-radius:9px;transition:background .13s,color .13s}
.fab-item:hover{background:var(--paper-2);color:var(--accent)}
.fab-item .ti{font-size:17px;color:var(--ink-3);transition:color .13s}
.fab-item:hover .ti{color:var(--accent)}
/* FACTSBAR */
.factsbar{position:fixed;left:0;right:0;bottom:0;z-index:120;height:38px;background:var(--paper-2);color:var(--ink-2);border-top:1px solid var(--line-2);box-shadow:0 -4px 18px oklch(0.27 0.012 60 / 0.05)}
.factsbar-inner{max-width:var(--maxw);margin:0 auto;height:100%;padding:0 var(--gut);display:flex;align-items:center;gap:13px;font-size:12.5px;overflow:hidden;white-space:nowrap}
.factsbar-label{font-size:10px;letter-spacing:0.13em;text-transform:uppercase;font-weight:800;color:var(--nav-blue);white-space:nowrap;flex:none}
.factsbar-sep{width:1px;height:14px;background:var(--line-2);flex:none}
.factsbar-rot{display:flex;align-items:center;gap:9px;min-width:0;transition:opacity .4s,transform .4s}
.factsbar-rot>.ti{font-size:15px;color:var(--accent);flex:none}
.fact-title{font-weight:600;color:var(--ink);white-space:nowrap;flex:none}
.fact-dash{color:var(--ink-3);flex:none}
.fact-desc{color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:clip;min-width:0}
/* NEIGHBORHOODS TEASER */
.nbhd-carousel{margin-top:26px}
.nbhd-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.nbhd-prev{left:4px}
.nbhd-next{right:4px}
.nbhd-tcard{border:1px solid var(--line);border-radius:var(--r);background:oklch(0.985 0.008 252);padding:20px;cursor:pointer;display:flex;flex-direction:column;gap:7px;transition:transform .2s,box-shadow .2s,border-color .2s}
.nbhd-tcard:hover{transform:translateY(-4px);box-shadow:0 14px 36px oklch(0.27 0.012 60 / 0.09);border-color:var(--line-2)}
.nbhd-tcard .town{font-size:11.5px;letter-spacing:0.05em;text-transform:uppercase;color:var(--accent);font-weight:600}
.nbhd-tcard .nm{font-family:'Newsreader',serif;font-size:21px;line-height:1.1;display:flex;align-items:center;gap:8px}
.nbhd-tcard .tc-pin{font-size:17px;color:var(--accent);flex-shrink:0}
.nbhd-tcard .ds{font-size:13px;color:var(--ink-3);line-height:1.5;margin-top:1px}
.nbhd-tcard .tc-go{font-size:13px;color:var(--accent);font-weight:600;margin-top:auto;padding-top:8px}
/* SCAFFOLD NOTE */
.scaffold-note{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink-2);line-height:1.55;border:1px dashed var(--line-2);border-radius:10px;padding:12px 15px;margin-top:20px;max-width:760px}
.scaffold-note .ti{color:var(--accent);font-size:16px;margin-top:1px;flex:none}
/* LOCATOR */
.loc{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:26px}
.loc-town{border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;background:var(--card)}
.loc-town-h{display:flex;align-items:center;gap:8px;font-family:'Newsreader',serif;font-size:19px}
.loc-town-h .ti{color:var(--accent);font-size:18px}
.loc-town-sub{font-size:12px;color:var(--ink-3);margin:3px 0 13px}
.loc-pills{display:flex;flex-wrap:wrap;gap:8px}
.loc-pill{font-size:13px;color:var(--ink);background:var(--paper-2);border:1px solid var(--line);border-radius:20px;padding:5px 13px;cursor:pointer;transition:border-color .14px,color .14s,background .14s}
.loc-pill:hover{border-color:var(--accent-line);color:var(--accent);background:var(--card)}
/* NEIGHBORHOOD DETAIL */
.nbhd-list{margin-top:34px}
.nbhd{padding:38px 0;border-top:1px solid var(--line);scroll-margin-top:92px}
.nbhd:first-child{border-top:0;padding-top:6px}
.nbhd-top{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.nbhd-name{font-family:'Newsreader',serif;font-size:29px;line-height:1.05}
.nbhd-town-badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;color:var(--accent)}
.nbhd-kicker{font-size:13px;color:var(--ink-3);margin-top:5px}
.nbhd-grid2{display:grid;grid-template-columns:1.25fr 1fr;gap:44px;margin-top:22px;align-items:start}
.nbhd-prose p{color:var(--ink-2);line-height:1.72;margin-bottom:14px;max-width:56ch}
.nph{font-style:italic;color:var(--ink-3)}
.data-tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-bottom:11px}
.nstats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nstat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.nstat-n{font-family:'Newsreader',serif;font-size:25px;line-height:1;color:var(--ink)}
.nstat-l{font-size:12.5px;color:var(--ink-3);margin-top:7px;line-height:1.4}
.minichart{margin-top:14px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:15px 16px 13px}
.minichart-h{font-size:13px;font-weight:600;margin-bottom:14px}
.reports{margin-top:24px}
.reports-h{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-bottom:4px}
.report-item{display:flex;align-items:flex-start;gap:12px;padding:13px 0;border-top:1px solid var(--line);cursor:pointer;transition:padding-left .15s}
.report-item:hover{padding-left:6px}
.report-item>.ti{color:var(--ink-3);font-size:18px;margin-top:1px;flex:none;transition:color .15s}
.report-item:hover>.ti{color:var(--accent)}
.report-tx{flex:1}
.report-t{font-size:14.5px;color:var(--ink);font-weight:500;line-height:1.35}
.report-m{font-size:12.5px;color:var(--ink-3);margin-top:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.report-kind{font-size:10.5px;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:var(--accent)}
/* OVERVIEW STAT ROWS */
.stat-rows{display:flex;flex-direction:column}
.stat-row{display:grid;grid-template-columns:minmax(0,0.82fr) minmax(0,1.18fr);gap:clamp(28px,5vw,76px);align-items:center;padding:40px 0;border-top:1px solid var(--line)}
.stat-row:first-child{border-top:none;padding-top:4px}
.stat-row:last-child{padding-bottom:4px}
.srow-fig .stat-n{margin-bottom:16px}
.srow-fig .stat-l{font-size:17px;line-height:1.5;max-width:17em;margin-bottom:16px}
.ovchart-h{font-size:12px;color:var(--ink-3);margin-bottom:18px}
/* Area chart */
.ovarea{padding-top:26px}
.ovarea-plot{position:relative;height:142px}
.ovarea-plot svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.ovarea-fill{fill:var(--accent-soft);opacity:0.7}
.ovarea-line{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.ovpt{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--card);border:2.5px solid var(--accent);transform:translate(-50%,50%);box-sizing:border-box;z-index:2}
.ovpt.now{border-color:var(--warn);width:13px;height:13px;box-shadow:0 0 0 4px var(--warn-s)}
.ovpv{position:absolute;transform:translate(-50%,-100%);margin-bottom:4px;font-size:11.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;z-index:3}
.ovpv.now{color:var(--warn)}
.ovpv.first{transform:translate(0,-100%)}
.ovpv.last{transform:translate(-100%,-100%)}
.ovarea-x{display:flex;margin-top:9px}
.ovarea-x span{flex:1;text-align:center;font-size:10.5px;color:var(--ink-3)}
.ovarea-x span:first-child{text-align:left}
.ovarea-x span:last-child{text-align:right}
.ovarea-x b{color:var(--ink-2);font-weight:600}
/* Lollipop */
.ovlolly{display:flex;align-items:stretch;gap:10px;height:168px;padding-top:30px}
.ovlolc{flex:1;display:flex;flex-direction:column}
.ovstem-wrap{flex:1;position:relative;display:flex;justify-content:center;align-items:flex-end}
.ovstem{width:2px;background:var(--accent-line);position:relative}
.ovdot{position:absolute;top:0;left:50%;width:15px;height:15px;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%);border:2.5px solid var(--card);box-shadow:0 0 0 1px var(--accent-line)}
.ovlv{position:absolute;top:-27px;left:50%;transform:translateX(-50%);font-size:11.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.ovlolc.now .ovstem{background:var(--warn)}
.ovlolc.now .ovdot{background:var(--warn);border-color:var(--card);box-shadow:0 0 0 4px var(--warn-s)}
.ovlolc.now .ovlv{color:var(--warn)}
.ovlolc.dim .ovstem{background:var(--line-2)}
.ovlolc.dim .ovdot{background:var(--paper-2);box-shadow:0 0 0 1px var(--line-2)}
.ovlolc.dim .ovlv{color:var(--ink-3)}
.ovll{font-size:10.5px;color:var(--ink-3);text-align:center;margin-top:11px;line-height:1.3}
.ovll b{display:block;color:var(--ink-2);font-weight:600}
/* Bullet chart */
.ovbullet{display:flex;flex-direction:column;gap:13px;padding-top:28px}
.ovbrow{display:grid;grid-template-columns:92px 1fr;align-items:center;gap:12px}
.ovblabel{font-size:11.5px;color:var(--ink-2);text-align:right;line-height:1.2}
.ovbtrack{position:relative;height:22px;background:var(--paper-2);border-radius:5px}
.ovbfill{height:100%;background:var(--accent-soft);border-right:3px solid var(--accent);border-radius:5px}
.ovbfill.dim{background:var(--paper-2);border-right-color:var(--line-2)}
.ovbval{position:absolute;top:50%;transform:translateY(-50%);margin-left:8px;font-size:11px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.ovbtline{position:absolute;top:-7px;bottom:-7px;width:0;border-left:2px dashed var(--warn);z-index:2}
.ovbtflag{position:absolute;bottom:calc(100% + 3px);right:6px;font-size:10.5px;font-weight:700;color:var(--warn);white-space:nowrap}
/* ABOUT / PARTNERS */
.crf-cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px}
.crf-soon{font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink-3);background:var(--paper-2);border:1px dashed var(--line-2);border-radius:999px;padding:5px 11px}
.partners{margin-top:4px}
.partner{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(32px,5vw,76px);align-items:start;padding:52px 0;border-top:1px solid var(--line)}
.partner-logo{display:block}
.partner-logo-ph{width:260px;max-width:100%;height:132px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--line);background:var(--paper-2);color:var(--ink-3)}
.partner-logo-ph .ti{font-size:40px;opacity:0.4}
.partner-eyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3)}
.partner-name{font-family:'Newsreader',serif;font-size:27px;line-height:1.14;letter-spacing:-0.01em;margin:11px 0 14px;color:var(--ink);text-wrap:balance}
.partner-desc{font-size:15.5px;line-height:1.68;color:var(--ink-2);margin:0 0 13px;max-width:38em}
.partner-facts{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0 0}
.partner-fact{font-size:12.5px;color:var(--ink-2);background:var(--card);border:1px solid var(--line-2);border-radius:999px;padding:6px 13px}
.partner-cta{margin-top:22px}
.partner-recent{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}
.partner-recent-h{font-size:10.5px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}
.partner-recent ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:11px}
.partner-recent li{display:flex;gap:9px;align-items:baseline}
.partner-recent li>.ti{color:var(--accent);font-size:14px;flex:none;position:relative;top:2px}
.partner-recent a{font-size:14px;line-height:1.45;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-2);transition:color .15s,border-color .15s}
.partner-recent a:hover{color:var(--accent);border-color:var(--accent-line)}
/* DATA LIBRARY */
.dlib-hero{max-width:880px;margin:0 auto;text-align:center;padding:6px 0 4px}
.dlib-badge{display:inline-block;font-family:'Hanken Grotesk',sans-serif;font-size:14px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);background:var(--accent-soft);padding:7px 16px;border-radius:4px}
.dlib-title{font-family:'Newsreader',serif;font-weight:500;font-size:clamp(30px,4.2vw,46px);line-height:1.08;letter-spacing:-.01em;color:var(--ink);margin:24px 0 18px;text-wrap:balance}
.dlib-intro{font-size:16.5px;line-height:1.72;color:var(--ink-2);max-width:50em;margin:0 auto}
.dlib-filter{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin:56px 0 6px}
.dlib-filter-label{font-family:'Newsreader',serif;font-style:italic;font-size:23px;color:var(--ink);margin-right:6px}
.dlib-search{flex:1 1 220px;min-width:170px;max-width:340px}
.dlib-search input{width:100%;border:none;border-bottom:2px solid var(--accent);background:transparent;font-family:'Hanken Grotesk',sans-serif;font-size:15px;color:var(--ink);padding:9px 2px;outline:none}
.dlib-search input::placeholder{color:var(--ink-3)}
.dlib-dd{position:relative}
.dlib-dd-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:18px;min-width:188px;width:100%;font-family:'Hanken Grotesk',sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line-2);border-radius:6px;padding:13px 15px;cursor:pointer;transition:.15s}
.dlib-dd-btn:hover{border-color:var(--ink-3);color:var(--ink)}
.dlib-dd-btn .ti{font-size:16px;transition:transform .18s}
.dlib-dd.open .dlib-dd-btn{border-color:var(--accent);color:var(--ink)}
.dlib-dd.open .dlib-dd-btn .ti{transform:rotate(180deg)}
.dlib-dd-btn.active{color:var(--accent-deep);border-color:var(--accent-line);background:var(--accent-soft)}
.dlib-dd-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:100%;background:var(--card);border:1px solid var(--line-2);border-radius:8px;box-shadow:0 18px 46px oklch(0.27 0.012 60 / .16);padding:6px;z-index:60;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .16s,transform .16s,visibility .16s}
.dlib-dd.open .dlib-dd-menu{opacity:1;visibility:visible;transform:none}
.dlib-dd-opt{display:flex;align-items:center;justify-content:space-between;gap:14px;font-family:'Hanken Grotesk',sans-serif;font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);padding:10px 12px;border-radius:6px;cursor:pointer;transition:.12s;white-space:nowrap}
.dlib-dd-opt:hover{background:var(--accent-soft);color:var(--ink)}
.dlib-dd-opt.on{color:var(--accent-deep);font-weight:600}
.dlib-dd-opt.on::after{content:"\2713";font-size:12px}
.dlib-results{margin-top:36px}
.dlib-section{margin-bottom:44px}
.dlib-section-h{font-family:'Hanken Grotesk',sans-serif;font-size:19px;font-weight:700;color:var(--ink);margin:0 0 4px;letter-spacing:-.01em}
.dlib-row{display:flex;align-items:stretch;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:18px 0}
.dlib-section .dlib-row:last-child{border-bottom:1px solid var(--line)}
.dlib-row-info{flex:1 1 auto;display:flex;flex-direction:column;gap:5px;padding-right:12px}
.dlib-row-name{font-size:15.5px;font-weight:600;color:var(--ink);line-height:1.4}
.dlib-row-desc{font-size:13.5px;color:var(--ink-2);line-height:1.6}
.dlib-row-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.dlib-tag{font-size:11.5px;font-weight:500;letter-spacing:.06em;color:var(--ink-3);background:var(--paper-2);border:1px solid var(--line-2);border-radius:4px;padding:2px 8px}
.dlib-row-actions{flex:none;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:130px}
.dlib-dl{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:8px 14px;font-family:'Hanken Grotesk',sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line-2);border-radius:6px;cursor:pointer;transition:.14s}
.dlib-dl:hover{color:#fff;background:var(--accent);border-color:var(--accent)}
.dlib-dl.loading{opacity:.6;pointer-events:none}
.dlib-cb{color:var(--accent-deep);border-color:var(--accent-line);background:var(--accent-soft)}
.dlib-cb:hover{color:#fff;background:var(--accent);border-color:var(--accent)}
.dlib-empty{display:none;padding:46px 0;text-align:center;color:var(--ink-2);font-size:15px}
.dlib-clear{margin-left:6px;color:var(--accent);background:none;border:none;font:inherit;cursor:pointer;text-decoration:underline}
.dlib-toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;font-size:13.5px;padding:11px 18px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.26);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:1200;font-family:'Hanken Grotesk',sans-serif}
.dlib-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
@keyframes spin{to{transform:rotate(360deg)}}
/* VIZ EXPAND */
.viz-host{position:relative}
.viz-host svg text.label{font-weight:700;font-size:12px}
.viz-tools{position:absolute;top:12px;right:12px;z-index:6;display:flex;align-items:center;gap:7px;opacity:0;transform:translateY(-3px);transition:opacity .17s,transform .17s}
.viz-host:hover>.viz-tools,.viz-host:focus-within>.viz-tools{opacity:1;transform:none}
#vizBody .viz-tools{display:none!important}
.viz-expand,.viz-share{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:999px;cursor:pointer;font-family:inherit;font-size:11.5px;font-weight:600;line-height:1;background:var(--accent);color:#fff;box-shadow:0 2px 9px oklch(0.40 0.066 252 / 0.28);transition:background .15s,transform .12s}
.viz-expand{padding:6px 11px 6px 9px}
.viz-share{width:30px;height:30px;padding:0;border-radius:50%;justify-content:center}
.viz-expand:hover,.viz-share:hover{background:var(--accent-deep)}
.viz-expand .ti{font-size:14px}
.viz-share .ti{font-size:15px}
.minichart.viz-host>.viz-tools{top:9px;right:9px}
.theme-pill{font-family:inherit;font-size:11px;font-weight:600;line-height:1;padding:5px 10px;border-radius:999px;border:none}
.viz-theme-tag{display:inline-block;position:static;margin:0 0 8px;cursor:pointer}
.theme-affordability{background:oklch(0.945 0.03 230);color:oklch(0.42 0.09 230)}
.theme-economic-mobility{background:oklch(0.945 0.03 145);color:oklch(0.40 0.09 145)}
.theme-racial-equity{background:oklch(0.945 0.03 330);color:oklch(0.42 0.09 330)}
.theme-demographics{background:oklch(0.945 0.02 60);color:oklch(0.42 0.05 60)}
.viz-theme-tip{position:fixed;z-index:80;max-width:240px;background:var(--dark);color:var(--on-dark);font-size:12.5px;line-height:1.5;padding:9px 12px;border-radius:8px;box-shadow:0 6px 20px oklch(0.27 0.012 60 / 0.28)}
.viz-theme-tip strong{display:block;font-weight:700;margin-bottom:2px}
.dlib-theme-tag{cursor:default;margin-right:6px}
.modal.viz-modal{width:880px;padding:30px 34px 28px}
.viz-modal-head{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:20px;display:flex;align-items:center;gap:8px}
.viz-modal-head .ti{font-size:15px}
.modal-share-btn{margin-left:auto;margin-right:40px;display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:999px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer;font-family:inherit;font-size:12.5px;font-weight:600;line-height:1;transition:border-color .15s,background .15s}
.modal-share-btn .ti{font-size:15px;color:var(--accent)}
.modal-share-btn:hover{border-color:var(--accent)}
.viz-clone{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;margin:0!important}
.viz-clone .card-t{font-size:23px}
.viz-clone .card-s{font-size:15px;margin-bottom:34px}
.viz-clone.card .bars{height:340px;gap:clamp(10px,3vw,26px);margin-bottom:26px}
.viz-clone.card .bar{max-width:74px}
.viz-clone .bc-lbl{font-size:14px;margin-top:13px}
.viz-clone .bc-lbl b{font-size:18px}
.viz-clone .callout{padding:18px 20px;margin-top:4px}
.card > .callout,.card > div > .callout{margin-top:20px}
.viz-clone .callout-t{font-size:15.5px}
.viz-clone .callout-s{font-size:12.5px;margin-top:7px}
.viz-clone.minichart .minichart-h{font-size:19px;margin-bottom:34px}
.viz-clone.minichart .bars{height:300px;gap:clamp(12px,4vw,40px)}
.viz-clone.minichart .bar{max-width:86px;margin-inline:auto}
.viz-clone.minichart .bar .bv{top:-25px;font-size:15px}
.viz-clone.minichart .bars-x{margin-top:12px}
.viz-clone.minichart .bars-x span{font-size:14px}
.viz-clone.minichart .minichart-cap{font-size:14px;margin-top:20px}
.viz-clone.map-ph{min-height:440px}
.table-host{position:relative}
.viz-clone.srow-viz,.viz-clone.table-host{padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
.viz-clone.srow-viz .ovchart-h{font-size:16px;margin-bottom:30px}
.viz-clone.srow-viz .ovarea{padding-top:38px}
.viz-clone.srow-viz .ovarea-plot{height:320px}
.viz-clone.srow-viz .ovlolly{height:360px;padding-top:50px}
.viz-clone.srow-viz .ovbullet{gap:22px}
.viz-clone.srow-viz .ovbrow{grid-template-columns:150px 1fr;gap:18px}
.viz-clone.srow-viz .ovblabel{font-size:15px}
.viz-clone.srow-viz .ovbtrack{height:36px}
.viz-clone.table-host{overflow-x:auto}
.viz-clone.table-host table{font-size:16px}
.viz-clone.table-host th{font-size:12.5px;padding:15px 18px}
.viz-clone.table-host td{padding:18px;font-size:15.5px}
/* CHART TOOLTIP (from v1) */
.chart-tooltip{position:fixed;z-index:500;pointer-events:none;background:var(--ink);color:#fff;padding:10px 14px;border-radius:9px;font-size:13px;line-height:1.5;box-shadow:0 8px 24px oklch(0.27 0.012 60 / 0.3);opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;max-width:220px}
.chart-tooltip.visible{opacity:1;transform:none}
.chart-tooltip .tt-val{font-size:18px;font-family:'Newsreader',serif;font-weight:400;margin-bottom:2px}
.chart-tooltip .tt-src{font-size:11px;color:rgba(255,255,255,0.5);margin-top:4px}
/* MAP MODAL */
.nmap-modal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:24px}
.nmap-modal.open{display:flex}
.nmap-backdrop{position:absolute;inset:0;background:oklch(0.27 0.012 60 / 0.55);backdrop-filter:blur(4px);animation:nmapFade .25s ease}
.nmap-dialog{position:relative;background:var(--card);border:1px solid var(--line-2);border-radius:18px;box-shadow:0 30px 80px oklch(0.27 0.012 60 / .30);width:min(900px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:30px 34px 26px;animation:nmapPop .28s cubic-bezier(.2,.7,.3,1)}
@keyframes nmapFade{from{opacity:0}to{opacity:1}}
@keyframes nmapPop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.nmap-close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-2);background:var(--paper);color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;transition:.15s}
.nmap-close:hover{color:var(--ink);border-color:var(--ink-3)}
.nmap-head .eyebrow{font-size:13px}
.nmap-head h3{font-family:'Newsreader',serif;font-size:27px;margin:7px 0 8px;color:var(--ink);font-weight:500}
.nmap-head p{font-size:14.5px;color:var(--ink-2);line-height:1.62;max-width:48em;margin:0 0 16px}
.nmap-stage{position:relative}
.nmap-stage svg{width:100%;height:auto;display:block;overflow:visible}
.nmap-town{transition:filter .18s;stroke-linejoin:round}
.nmap-town:hover{filter:brightness(1.05) saturate(1.06)}
.nmap-tlabel{font-family:'Newsreader',serif;font-size:19px;letter-spacing:.05em;fill:oklch(0.30 0.018 60 / .82);font-weight:500;pointer-events:none;text-transform:uppercase;text-anchor:middle}
.nmap-pin{cursor:pointer;filter:drop-shadow(0 1.5px 2px rgba(40,30,20,.28))}
.nmap-pin .ring{fill:#fff;stroke:var(--accent);stroke-width:2.5;transition:stroke-width .15s}
.nmap-pin .dot{fill:var(--accent)}
.nmap-pin:hover .ring{stroke-width:3.4}
.nmap-pin-label{font-family:'Hanken Grotesk',sans-serif;font-size:14px;font-weight:600;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:var(--card);stroke-width:3.5px;stroke-linejoin:round}
.nmap-water{fill:#cadfe9}
.nmap-water-label{font-family:'Hanken Grotesk',sans-serif;font-size:12px;fill:#6f93a6;letter-spacing:.10em;pointer-events:none;text-transform:uppercase}
.nmap-tip{position:absolute;pointer-events:none;left:0;top:0;background:var(--ink);color:#fff;font-size:12.5px;padding:7px 11px;border-radius:9px;transform:translate(-50%,calc(-100% - 12px));opacity:0;transition:opacity .12s;white-space:nowrap;z-index:5;box-shadow:0 8px 20px rgba(0,0,0,.22)}
.nmap-tip.on{opacity:1}
.nmap-tip b{display:block;font-size:13.5px;font-weight:600;margin-bottom:1px}
.nmap-tip span{opacity:.72;font-size:11.5px}
.nmap-legend{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;margin-top:16px;padding-top:15px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-2)}
.nmap-legend span{display:inline-flex;align-items:center;gap:7px}
.nmap-legend i{width:14px;height:14px;border-radius:4px;display:inline-block}
.nmap-legend .pinkey{width:13px;height:13px;border-radius:50%;background:#fff;border:2.5px solid var(--accent);box-sizing:border-box}
.nmap-legend .sep{width:1px;height:15px;background:var(--line-2);border-radius:0}
/* RESPONSIVE */
@media(max-width:900px){
  .hero-grid,.split{grid-template-columns:1fr}
  .hero-media{aspect-ratio:16/10;max-height:320px}
  .stats,.blog-grid,.expl-grid{grid-template-columns:1fr}
  .stat+.stat{padding-left:0;border-left:none;border-top:1px solid var(--line);padding-top:24px;margin-top:24px}
  .g2{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .member-grid{grid-template-columns:1fr 1fr}
  .stats.stats-4{grid-template-columns:1fr 1fr}
  .stat-row{grid-template-columns:1fr;gap:26px}
  .nav-links{display:none}
  .nav-burger{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:none;background:oklch(1 0 0 / 0.12);color:#fff;font-size:18px;cursor:pointer;flex:none}
  .nav-burger:hover{background:oklch(1 0 0 / 0.22)}
  .nav-links.mobile-open{display:flex;flex-direction:column;position:fixed;top:66px;left:0;right:0;bottom:0;background:#fff;padding:12px 16px 40px;gap:2px;overflow-y:auto;z-index:199}
  .nav-links.mobile-open .nav-link{font-size:16px;padding:14px 16px;border-radius:10px;width:100%;box-sizing:border-box;white-space:normal;color:var(--accent-deep)}
  .nav-links.mobile-open .nav-link:hover{background:oklch(0.52 0.066 252 / 0.08);color:var(--accent-deep)}
  .nav-links.mobile-open .nav-link.active{color:var(--accent-deep)}
  .nav-links.mobile-open .nav-link.active::after{background:var(--accent)}
  .nav-links.mobile-open .nav-dd{width:100%}
  .nav-links.mobile-open .nav-dd>.nav-link{display:flex;justify-content:space-between;align-items:center}
  .nav-links.mobile-open .nav-dd>.nav-link .nav-link-ic{display:inline-block;color:var(--accent)}
  .nav-links.mobile-open .nav-dd.open>.nav-link{background:oklch(0.52 0.066 252 / 0.08);color:var(--accent-deep)}
  .nav-links.mobile-open .dd-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:none;border-radius:10px;background:oklch(0.52 0.066 252 / 0.05);margin:4px 0;padding:4px;display:none;min-width:unset}
  .nav-links.mobile-open .nav-dd.open .dd-menu{display:block}
  .nav-links.mobile-open .dd-item{color:var(--accent-deep);border-radius:8px}
  .nav-links.mobile-open .dd-item:hover{background:oklch(0.52 0.066 252 / 0.1)}
  .nav-links.mobile-open .dd-t{color:var(--accent-deep)}
  .nav-links.mobile-open .dd-s{color:var(--ink-3)}
  .nav-links.mobile-open .dd-ic{color:var(--accent)}
  .topics{margin-inline:0;flex-direction:column;overflow-x:visible}
  .topics .tcard{flex:0 0 auto;width:100%}
  .blog-track{margin-inline:0;flex-direction:column;overflow-x:visible}
  .blog-track .bcard{flex:0 0 auto;width:100%}
  .blog-prev,.blog-next{display:none}
  .topics-prev,.topics-next{display:none}
  .nbhd-grid{grid-template-columns:1fr}
  .spot-arrow{display:none}
  .spot-prev,.spot-next{display:flex;width:42px;height:42px;top:38%}
  .spot-prev{left:8px}
  .nav-inner:has(.nav-search.expanded) .brand{display:none}
  .nav-search.expanded{flex:1;min-width:0}
  .nav-search.expanded input{width:auto;max-width:none;flex:1;min-width:0}
  .nav-search-dd{position:fixed;left:12px;right:12px;top:66px;min-width:0}
  .mobile-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;background:oklch(0.52 0.066 252 / 0.1);border-bottom:1px solid var(--accent-line);padding:11px var(--gut)}
  .mobile-notice-text{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.45;color:var(--accent-deep)}
  .mobile-notice-text i{flex:none;margin-top:2px;font-size:16px}
  .mobile-notice-close{flex:none;background:none;border:0;color:var(--accent-deep);cursor:pointer;padding:4px;font-size:16px;border-radius:50%;line-height:1}
  .mobile-notice-close:hover{background:oklch(0.52 0.066 252 / 0.14)}
  .spot-next{right:8px}
  .tabs{position:sticky;top:66px;z-index:150;background:var(--paper)}
  .filterbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .filterbar::-webkit-scrollbar{display:none}
  .filterbar .chip,.filterbar .lbl{flex-shrink:0}
  .partner{grid-template-columns:1fr;gap:28px;padding:40px 0}
  .nbhd-grid2{grid-template-columns:1fr;gap:30px}
  .loc{grid-template-columns:1fr}
}
@media(max-width:640px){
  .foot-grid{grid-template-columns:1fr}
  .topic-grid{grid-template-columns:1fr}
  .stats.stats-4{grid-template-columns:1fr}
  .dlib-filter{gap:12px}
  .dlib-search{flex-basis:100%;max-width:none;order:-1}
  .dlib-dd{flex:1 1 100%}
  .dlib-row{flex-direction:column;gap:0;align-items:stretch}
  .dlib-row-name{padding:14px 0 10px}
  .dlib-row-actions{width:100%}
  .dlib-dl{flex:1;min-width:0;padding:14px 4px}
  .rs-rotator{max-width:58vw}
  .rs-text{overflow:hidden;text-overflow:ellipsis}
  .fab{right:16px;bottom:16px}
  .a11y-btn{left:16px;bottom:16px}
  .factsbar{display:none}
}
@media(max-width:720px){.factsbar-label,.factsbar-sep{display:none}.fact-dash{display:none}}
@media(max-width:880px){.nbhd-grid2{grid-template-columns:1fr;gap:30px}}
@media(max-width:820px){.partner{grid-template-columns:1fr;gap:28px;padding:40px 0}.partner-aside{order:2}}
@media(max-width:760px){.loc{grid-template-columns:1fr}}
/* NEIGHBORHOOD DATA PAGE */
.nbhd-selector{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:0}
.nbhd-sel-btn{padding:8px 16px;border-radius:8px;border:1.5px solid var(--line-2);background:var(--card);font-size:13.5px;font-weight:500;color:var(--ink-2);cursor:pointer;transition:background .14s,border-color .14s,color .14s;white-space:nowrap}
.nbhd-sel-btn:hover{background:var(--accent-soft);border-color:var(--accent)}
.nbhd-sel-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.nbhd-sel-btn.no-data{border-style:dashed;color:var(--ink-3)}
.nbhd-disclaimer{display:flex;gap:12px;align-items:flex-start;background:oklch(0.96 0.012 252);border:1px solid oklch(0.88 0.022 252);border-radius:10px;padding:14px 16px;margin-bottom:28px;font-size:13px;color:var(--ink-2);line-height:1.55}
.nbhd-disclaimer .ti{color:var(--accent);font-size:17px;flex:none;margin-top:1px}
.nbhd-panel{display:none}.nbhd-panel.active{display:block}
.nbhd-no-data{text-align:center;padding:72px 24px;color:var(--ink-3)}
.nbhd-no-data .ti{font-size:40px;display:block;margin-bottom:16px;color:var(--line-2)}
.nbhd-no-data-h{font-size:20px;font-weight:600;color:var(--ink-2);margin-bottom:10px}
.nbhd-no-data-p{font-size:14px;line-height:1.6;max-width:44ch;margin:0 auto}
.nbhd-sub-section{margin-bottom:52px}
.nbhd-sub-h{font-family:'Newsreader',Georgia,serif;font-size:22px;font-weight:400;color:var(--ink);margin-bottom:6px;letter-spacing:-0.012em}
.nbhd-sub-lead{font-size:14px;color:var(--ink-2);margin-bottom:22px;max-width:72ch;line-height:1.6}
/* SHARE POPOVER */
.share-pop{position:fixed;z-index:6000;min-width:254px;background:var(--paper);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 18px 50px oklch(0.27 0.012 60 / 0.26),0 2px 8px oklch(0.27 0.012 60 / 0.12);padding:7px;opacity:0;transform:translateY(-6px) scale(.98);transition:opacity .15s,transform .15s;pointer-events:none}
.share-pop.open{opacity:1;transform:none;pointer-events:auto}
.share-pop-h{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);padding:8px 10px 6px}
.share-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:0;border-radius:9px;background:none;cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;color:var(--ink);text-align:left;transition:background .13s,color .13s}
.share-row .ti{font-size:18px;color:var(--accent);flex-shrink:0;transition:color .13s}
.share-row:hover{background:oklch(0.52 0.066 252 / 0.07)}
.share-row.ok{color:var(--ok)}
.share-row.ok .ti{color:var(--ok)}
.share-row.busy{opacity:.6;cursor:default}
.share-row-label{white-space:nowrap}
.share-pop-back{position:fixed;inset:0;z-index:5999;display:none}
.share-pop-back.open{display:block}
@keyframes shareFlash{0%{box-shadow:0 0 0 0 oklch(0.52 0.066 252 / 0.0)}18%{box-shadow:0 0 0 5px oklch(0.52 0.066 252 / 0.28)}100%{box-shadow:0 0 0 0 oklch(0.52 0.066 252 / 0.0)}}
.share-flash{animation:shareFlash 1.7s ease;border-radius:var(--r)}
/* BLOG CARD share button — hover-only, top-right of thumbnail */
.bcard{position:relative}
.bcard-share{position:absolute;top:28px;right:28px;z-index:4;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .16s ease;width:30px;height:30px;border-radius:50%;border:0;padding:0;display:flex;align-items:center;justify-content:center;background:oklch(1 0 0 / 0.92);color:var(--accent);cursor:pointer;box-shadow:0 2px 10px oklch(0.27 0.012 60 / 0.22);font-size:15px}
.bcard-share:hover{background:#fff;color:var(--accent-deep)}
.bcard:hover .bcard-share,.bcard:focus-within .bcard-share{opacity:1;transform:none}
/* STORY share bar */
.share-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0 30px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.share-bar-lbl{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-right:4px;display:inline-flex;align-items:center;gap:7px}
.share-bar-lbl .ti{font-size:16px;color:var(--accent)}
.share-act{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:999px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:500;line-height:1;transition:border-color .15s,background .15s,transform .12s}
.share-act .ti{font-size:16px;color:var(--accent)}
.share-act:hover{border-color:var(--accent);background:oklch(0.52 0.066 252 / 0.06)}
.share-act:active{transform:scale(.97)}
.share-act.ok{border-color:var(--ok);color:var(--ok)}
.share-act.ok .ti{color:var(--ok)}

/* HELP MODAL (Report an issue / Give feedback) */
.help-modal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:24px}
.help-modal.open{display:flex}
.help-backdrop{position:absolute;inset:0;background:oklch(0.27 0.012 60 / 0.55);backdrop-filter:blur(4px);animation:nmapFade .25s ease}
.help-dialog{position:relative;background:var(--card);border:1px solid var(--line-2);border-radius:18px;box-shadow:0 30px 80px oklch(0.27 0.012 60 / .30);width:min(560px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:30px 34px 26px;animation:nmapPop .28s cubic-bezier(.2,.7,.3,1)}
.help-close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-2);background:var(--paper);color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;transition:.15s}
.help-close:hover{color:var(--ink);border-color:var(--ink-3)}
.help-tabs{display:flex;gap:8px;margin:4px 0 20px;border-bottom:1px solid var(--line);padding-bottom:0}
.help-tab{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:500;color:var(--ink-3);background:none;border:none;border-bottom:2px solid transparent;padding:10px 4px 12px;margin-right:14px;cursor:pointer;transition:.15s}
.help-tab:hover{color:var(--ink)}
.help-tab.active{color:var(--accent-deep);border-bottom-color:var(--accent)}
.help-head h3{font-family:'Newsreader',serif;font-size:24px;margin:2px 0 6px;color:var(--ink);font-weight:500}
.help-head p{font-size:14px;color:var(--ink-2);line-height:1.55;margin:0 0 18px}
.help-field{margin-bottom:15px}
.help-field label{display:block;font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:6px}
.help-field .req{color:var(--warn)}
.help-field .opt{font-weight:400;color:var(--ink-3)}
.help-field input,.help-field select,.help-field textarea{width:100%;font-family:inherit;font-size:14.5px;color:var(--ink);background:var(--paper);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;transition:.15s}
.help-field input:focus,.help-field select:focus,.help-field textarea:focus{outline:none;border-color:var(--accent);background:var(--card)}
.help-field textarea{resize:vertical;min-height:80px;font-family:inherit}
.help-submit{width:100%;background:var(--accent);color:var(--on-dark);border:none;border-radius:10px;padding:12px;font-size:14.5px;font-weight:600;cursor:pointer;transition:.15s}
.help-submit:hover{background:var(--accent-deep)}
.help-form.sent .help-field,.help-form.sent .help-submit,.help-form.sent .help-head{display:none}
.help-success{display:none;align-items:center;gap:8px;font-size:14.5px;color:var(--ok);background:var(--ok-s);border-radius:10px;padding:14px 16px}
.help-form.sent .help-success{display:flex}
@media(max-width:640px){.help-dialog{padding:24px 20px 20px}.help-tabs{flex-wrap:wrap}}

/* HELP MODAL: mood scale (feedback form) */
.mood-scale{display:flex;gap:8px;margin-top:2px}
.mood-btn{flex:1;font-size:28px;line-height:1;padding:12px 0;background:var(--paper);border:1.5px solid var(--line-2);border-radius:10px;cursor:pointer;transition:.15s;filter:grayscale(1) opacity(0.55)}
.mood-btn:hover{border-color:var(--mood-color);filter:grayscale(0.4) opacity(0.8)}
.mood-btn.active{border-color:var(--mood-color);background:color-mix(in oklch, var(--mood-color) 12%, var(--paper));filter:grayscale(0) opacity(1);box-shadow:0 0 0 2px color-mix(in oklch, var(--mood-color) 30%, transparent)}
@media(max-width:480px){.mood-btn{font-size:22px;padding:10px 0}}

/* VIZ MODAL: download-data footer link (shown under every expanded chart) */
.viz-modal-foot{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.viz-download-link{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:600;color:var(--accent-deep);text-decoration:none;transition:.15s}
.viz-download-link:hover{color:var(--accent);text-decoration:underline}
.viz-download-link .ti{font-size:16px}

/* SEARCH: highlight flash for a chart jumped to from search results */
.search-highlight{animation:searchFlash 2.2s ease}
@keyframes searchFlash{
  0%{box-shadow:0 0 0 3px var(--accent);}
  70%{box-shadow:0 0 0 3px var(--accent);}
  100%{box-shadow:0 0 0 0 transparent;}
}
