/* N84 layout v2 shared CSS, lane db. Generated 2026-10-16 by build/design-v2/vendor.py from the layout v2 canvas (identical on all 7 boards) plus responsive.css. Fixes: sizes under 13px raised to 13px; interactive heights raised to 44px. Do not hand-edit; regenerate. */
:root{--ink:#000000;--paper:#FFFFFF;--mist:#F3F4F6;--wash:#F7F8FA;--canvas:#F1F2F4;--rule:#E3E5E8;--ctl:#8C929A;--t2:#4B5159;--t3:#5F6670;--change:#1F3BFF;--night:#0B0D10;--night-2:#151920;--night-rule:#262C35;--night-t:#A3ABB5;--flair:#1F3BFF;--disruption:#E8A33D;--violet-900:#4B2A9E;--violet-700:#7348E0;--violet-500:#A77BFF;--violet-300:#D4BFFF;--violet-100:#EEE6FF;--violet-accent:#E05FC9;--lagoon:#2BB3A8;--db-900:#0B2E8A;--db-300:#8EA0FF;--db-100:#D7DEFF;--shadow-panel:0 1px 2px rgba(16,24,40,.05)}
body{margin:0}
.n84{width:100%;min-height:100%;font-family:'Atkinson Hyperlegible Next',system-ui,sans-serif;font-variant-numeric:tabular-nums;background:var(--paper);color:var(--ink);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
.n84 *{box-sizing:border-box}
.n84 ::selection{background:var(--ink);color:var(--paper)}
.n84 a{color:var(--ink)}
.n84 a:hover{color:var(--change)}
.n84 a:focus-visible,.n84 button:focus-visible,.n84 input:focus-visible,.n84 select:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.mono{font-family:'Atkinson Hyperlegible Mono',ui-monospace,monospace;font-weight:500}
.wrap{max-width:1184px;margin:0 auto;padding:0 32px}

.hdr{background:var(--paper);border-bottom:1px solid var(--rule)}
.hdr-in{display:flex;align-items:center;gap:40px;min-height:72px}
.lock{display:inline-flex;align-items:center;gap:6px;min-height:44px;text-decoration:none}
.lock img{height:24px;width:auto;display:block}
.tile{display:inline-flex;align-items:center;height:24px;padding:0 6px;background:var(--ink);color:var(--paper);border-radius:4px;font-size:19px;font-weight:800;line-height:1}
.nav{display:flex;gap:4px}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font-size:16px;font-weight:500;text-decoration:none;border-bottom:2px solid transparent}
.nav a.on{border-bottom-color:var(--ink);font-weight:700}
.hdr-r{margin-left:auto;display:flex;align-items:center;gap:20px}
.hdr-r a.plain{display:inline-flex;align-items:center;min-height:44px;font-size:16px;font-weight:500;text-decoration:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:8px;font-family:inherit;font-size:16px;font-weight:700;text-decoration:none;cursor:pointer;border:1px solid var(--ink);background:var(--ink);color:var(--paper);white-space:nowrap}
.n84 a.btn{color:var(--paper)}
.n84 a.btn:hover,.btn:hover{background:#2B3036;color:var(--paper)}
.btn.sec{background:var(--paper);color:var(--ink);border-color:var(--ctl)}
.n84 a.btn.sec{color:var(--ink)}
.n84 a.btn.sec:hover,.btn.sec:hover{background:var(--mist);color:var(--ink)}.btn.sm{min-height:44px;padding:0 12px;font-size:14px}

.h1{margin:0;font-size:60px;line-height:1.03;font-weight:800;letter-spacing:-0.03em;text-wrap:balance}
.lede{margin:24px 0 0;max-width:600px;font-size:20px;line-height:1.5;color:var(--t2)}
.h2{margin:0;font-size:30px;line-height:1.2;font-weight:800;letter-spacing:-0.02em}
.sub{margin:12px 0 0;max-width:620px;font-size:18px;color:var(--t2)}
.sec-gap{margin-top:24px}
.shelf{background:var(--wash);border-radius:16px;padding:64px}
.shelf-hd{max-width:760px}

.hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;align-items:end}
.search{margin-top:40px}
.search label{display:block;font-size:15px;font-weight:700;margin-bottom:10px}
.search-row{display:flex;gap:10px}
.search input{flex:1;min-width:0;height:56px;padding:0 18px;border:1px solid var(--ctl);border-radius:8px;font-family:inherit;font-size:17px;color:var(--ink);background:var(--paper)}
.search input::placeholder{color:var(--t3)}
.search .btn{height:56px;padding:0 26px;font-size:17px}
.tries{margin-top:16px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;color:var(--t3)}.chip{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border:1px solid var(--rule);border-radius:999px;font-size:15px;text-decoration:none;background:var(--paper)}
.facts{margin:0;background:var(--paper);border:1px solid var(--rule);border-radius:12px;padding:8px 24px}
.facts div{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--rule)}.facts div:last-child{border-bottom:0}
.facts dt{font-size:14px;font-weight:700}
.facts dd{margin:0;font-size:15px;color:var(--t2)}

.frame{margin-top:56px;border:1px solid #DDE0E4;border-radius:16px;overflow:hidden;background:var(--canvas)}
.frame-bar{display:flex;align-items:center;gap:12px;height:44px;padding:0 16px;background:var(--paper);border-bottom:1px solid var(--rule)}
.frame-dots{display:flex;gap:6px}.frame-dots span{width:10px;height:10px;border-radius:50%;background:var(--rule)}
.frame-url{flex:1;max-width:520px;margin:0 auto;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:var(--mist);font-size:13px;color:var(--t3)}
.frame-body{display:grid;grid-template-columns:184px 1fr}
.frame .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
.frame-side{background:var(--wash);border-right:1px solid var(--rule);padding:20px 14px;font-size:14px}
.frame-side .it{padding:7px 10px;border-radius:6px;color:var(--t2)}
.frame-side .it.on{background:var(--paper);color:var(--ink);font-weight:700;box-shadow:inset 0 0 0 1px var(--rule)}
.frame-side .grp{margin:18px 10px 6px;font-size:13px;font-weight:700;color:var(--t3)}
.frame-main{padding:24px 28px 28px;background:var(--canvas)}
.cap{font-size:13px;line-height:1.45;color:var(--t3)}

.cols4{margin-top:32px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.col{background:var(--paper);border:1px solid var(--rule);border-radius:12px;padding:24px;display:flex;flex-direction:column}
.col h3{margin:0;font-size:20px;font-weight:800}
.col p{margin:6px 0 0;font-size:15px;color:var(--t2);min-height:46px}
.col ul{list-style:none;margin:16px 0 0;padding:0;font-size:15px}
.col li{display:flex;flex-direction:column;gap:1px;padding:9px 0;border-bottom:1px solid var(--rule)}.col li:last-child{border-bottom:0}
.col li span{min-width:0}.col li span:last-child{color:var(--t3);font-size:13px}
.col .mini{margin-top:18px}
.col a.more{display:inline-flex;min-height:44px;align-items:center;font-size:15px;font-weight:700;margin-top:auto}

.cov{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center}
.cov .mapcard{background:var(--paper);border:1px solid var(--rule);border-radius:12px;padding:32px}
.cov .tblcard{margin-top:24px;background:var(--paper);border:1px solid var(--rule);border-radius:12px;overflow:hidden}
.cov.dark-map .mapbox{background:var(--night);border-radius:16px;padding:24px}
.legend{list-style:none;margin:24px 0 0;padding:0;display:grid;gap:12px;font-size:15px}
.legend li{display:flex;align-items:center;gap:12px}
.sw{width:16px;height:16px;border-radius:4px;flex:none}


.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-weight:700;font-size:13px;color:var(--t2);padding:10px 12px;border-bottom:1px solid var(--rule);background:var(--wash);white-space:nowrap}
.tbl th.r,.tbl td.r{text-align:right}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--rule);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:var(--wash)}
.sort{display:inline-flex;align-items:center;gap:4px}

.api{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:56px;align-items:start}
.code{margin:0;background:var(--night);color:#E6E8EB;border-radius:12px;padding:24px 26px;font-family:'Atkinson Hyperlegible Mono',ui-monospace,monospace;font-size:14px;line-height:1.65;overflow:auto;white-space:pre}
.code .k{color:#A3ABB5}.code .s{color:var(--flair)}.code .n{color:#FFFFFF}
.code .req{color:#FFFFFF;display:block;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--night-rule)}
.ticks{list-style:none;margin:24px 0 0;padding:0;display:grid;gap:12px;font-size:16px}
.ticks li{display:flex;gap:12px;align-items:flex-start}
.ticks svg{flex:none;margin-top:4px}

.plans{margin-top:32px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.plan{padding:28px 24px;border:1px solid var(--rule);border-radius:12px;display:flex;flex-direction:column;background:var(--paper)}

.plan.paid-hl{background:var(--wash)}
.plan h3{margin:0;font-size:18px;font-weight:800}
.price{margin-top:14px;font-size:40px;font-weight:800;letter-spacing:-0.02em;line-height:1}
.price small{font-size:15px;font-weight:500;color:var(--t3);letter-spacing:0}
.plan p{margin:12px 0 0;font-size:15px;color:var(--t2);min-height:46px}
.plan ul{list-style:none;margin:18px 0 24px;padding:0;font-size:15px;display:grid;gap:10px}
.plan li{display:flex;gap:10px}
.plan li svg{flex:none;margin-top:5px}
.plan .btn{margin-top:auto}
.plan-foot{margin-top:16px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;font-size:14px;color:var(--t3)}

.band{background:var(--mist);border-radius:16px;padding:64px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:center}
.band form{display:flex;gap:10px}
.band input{flex:1;min-width:0;height:52px;padding:0 16px;border:1px solid var(--ctl);border-radius:8px;font-family:inherit;font-size:16px;background:var(--paper)}
.band .btn{height:52px}

.ftr{margin-top:96px;background:var(--mist)}
.ftr-in{padding:64px 0 48px}
.ftr-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}
.ftr nav{display:flex;flex-direction:column;font-size:15px}
.ftr nav b{font-size:14px;margin-bottom:6px}.ftr nav a{min-height:44px;display:inline-flex;align-items:center;text-decoration:none}
.ftr-note{margin:16px 0 0;font-size:14px;color:var(--t2);max-width:340px}
.ftr-base{margin-top:48px;padding-top:20px;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:8px 32px;font-size:13px;color:var(--t3)}

.app{background:var(--canvas);min-height:100%}
.app .hdr{border-bottom-color:#DDE0E4}.app .hdr-in{min-height:64px;padding:0 24px;max-width:none;gap:32px}.app-search{width:300px;height:44px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--rule);border-radius:8px;background:var(--wash);font-size:14px;color:var(--t3)}
.kbd{margin-left:auto;font-size:13px;border:1px solid var(--rule);border-radius:4px;padding:1px 6px;background:var(--paper)}.avatar{width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--paper);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}
.shell{display:grid;grid-template-columns:256px minmax(0,1fr)}
.side{background:var(--wash);border-right:1px solid #DDE0E4;padding:20px 16px 40px;font-size:15px}
.switch{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--rule);border-radius:8px;background:var(--paper)}
.switch b{display:block;font-size:15px}
.switch span{display:block;font-size:13px;color:var(--t3)}
.side .grp{margin:24px 12px 6px;font-size:13px;font-weight:700;color:var(--t3)}.side a.it{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:0 12px;border-radius:6px;text-decoration:none;color:var(--t2)}
.side a.it:hover{background:var(--mist);color:var(--ink)}
.side a.it.on{background:var(--paper);color:var(--ink);font-weight:700;box-shadow:inset 0 0 0 1px var(--rule)}.side a.it.sub{padding-left:24px;font-size:14px;min-height:44px}
.cnt{font-size:13px;color:var(--t3);font-weight:500}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.main{padding:24px 32px 48px;min-width:0}
.crumb{font-size:14px;color:var(--t3)}
.crumb a{color:var(--t3);text-decoration:none}
.titlebar{margin-top:10px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.titlebar h1{margin:0;font-size:30px;line-height:1.15;font-weight:800;letter-spacing:-0.02em}
.titlebar p{margin:6px 0 0;font-size:15px;color:var(--t2)}
.acts{display:flex;gap:8px}
.tabs{margin-top:20px;display:flex;gap:4px;border-bottom:1px solid var(--rule)}
.tabs a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;font-size:15px;font-weight:500;text-decoration:none;color:var(--t2);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--ink);font-weight:700;border-bottom-color:var(--ink)}
.toolbar{margin-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:8px;background:var(--paper);padding:2px}.seg a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font-size:14px;text-decoration:none;border-radius:6px;color:var(--t2)}
.seg a.on{background:var(--ink);color:var(--paper);font-weight:700}.sel{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--rule);border-radius:8px;background:var(--paper);font-size:14px;color:var(--t2)}
.sel b{color:var(--ink);font-weight:700}
.asof{margin-left:auto;font-size:13px;color:var(--t3)}
.kpis{margin-top:16px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.kpi{background:var(--paper);border:1px solid #DDE0E4;border-radius:12px;padding:16px 18px;box-shadow:0 1px 2px rgba(16,24,40,.05)}
.kpi-l{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--t2)}
.kpi-v{margin-top:10px;font-size:30px;font-weight:800;letter-spacing:-0.02em;line-height:1.05}
.kpi-v small{font-size:15px;font-weight:500;color:var(--t3);letter-spacing:0}
.kpi-d{margin-top:8px;font-size:13px;color:var(--t2);display:flex;align-items:center;gap:6px}
.kpi-s{margin-top:10px;padding-top:10px;border-top:1px solid var(--rule);font-size:13px;color:var(--t3)}
.up{color:var(--change);font-weight:700}
.basis{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;font-size:13px;font-weight:700;background:var(--mist);color:#2B3036;border:1px solid #D9DCE1;white-space:nowrap}
.basis::before{content:"";width:7px;height:7px;background:#2B3036}
.basis.pub{}
.basis.obs{background:#F1F8F4;color:#1F5C3A;border-color:#CFE3D7}.basis.obs::before{background:#1F7A47;border-radius:50%}
.basis.est{background:#FBF5EA;color:#6E4300;border-color:#EED9B5}.basis.est::before{background:#B26B00;transform:rotate(45deg) scale(.85)}
.grid2{margin-top:12px;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;align-items:start}
.panel{background:var(--paper);border:1px solid #DDE0E4;border-radius:12px;min-width:0;box-shadow:0 1px 2px rgba(16,24,40,.05)}
.panel.night{background:var(--night);border-color:var(--night);color:#FFFFFF}
.ph{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 18px 0}
.ph h2{margin:0;font-size:17px;font-weight:800}
.ph p{margin:3px 0 0;font-size:13px;color:var(--t3)}
.panel.night .ph p{color:var(--night-t)}
.pb{padding:12px 18px 8px}
.pf{display:flex;justify-content:space-between;gap:16px;padding:10px 18px 12px;border-top:1px solid var(--rule);font-size:13px;color:var(--t3)}
.panel.night .pf{border-top-color:var(--night-rule);color:var(--night-t)}
.panel.night .pf a{color:#FFFFFF}
.lg{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--t2)}
.panel.night .lg{color:var(--night-t)}
.lg span{display:inline-flex;align-items:center;gap:6px}
.lg i{width:10px;height:10px;border-radius:2px;display:inline-block}
.lg i.ln{height:3px;width:14px;border-radius:2px}
.rank{list-style:none;margin:0;padding:0;font-size:14px}
.rank li{padding:9px 0;border-bottom:1px solid var(--rule)}
.rank li:last-child{border-bottom:0}
.rank .top{display:flex;justify-content:space-between;gap:12px}
.bar{margin-top:6px;height:8px;border-radius:4px;background:var(--mist);overflow:hidden}
.bar i{display:block;height:100%;border-radius:4px}
.panel.night .rank li{border-bottom-color:var(--night-rule)}
.panel.night .bar{background:var(--night-2)}
.st{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700}
.pager{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 18px;border-top:1px solid var(--rule);font-size:13px;color:var(--t3)}
.srcs{list-style:none;margin:0;padding:0;font-size:14px}
.srcs li{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:11px 0;border-bottom:1px solid var(--rule)}
.srcs li:last-child{border-bottom:0}
.srcs small{grid-column:1/-1;font-size:13px;color:var(--t3)}
.notice{margin-top:12px;display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px solid var(--rule);border-radius:10px;background:var(--paper);font-size:14px;color:var(--t2)}
.appfoot{margin-top:28px;display:flex;flex-wrap:wrap;gap:8px 28px;font-size:13px;color:var(--t3)}
.readout{list-style:none;margin:0;padding:0}
.readout li{display:grid;grid-template-columns:120px 1fr auto;gap:16px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--rule);font-size:15px}
.readout li:last-child{border-bottom:0}
.readout .when{font-size:13px;color:var(--t3)}
.tiles5{margin-top:12px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
/* N84 layout v2: responsive rules (from brand kit v2 Layout and Wireframes boards).
   Phone under 640px; tablet 640-1023px; desktop 1024px and up. App sidebar becomes a bottom tab bar under 900px. */
.n84 img,.n84 svg{max-width:100%;height:auto}
.tblwrap,.tblcard{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (max-width:1023px){
  .wrap{padding:0 clamp(16px,4vw,32px)}
  .hero,.cov,.api,.band{grid-template-columns:minmax(0,1fr);gap:32px}
  .cols4,.plans{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tiles5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ftr-grid{grid-template-columns:1fr 1fr}
  .grid2{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:899px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:20;width:auto;height:auto;max-height:none;display:flex;flex-direction:row;overflow-x:auto;padding:0 8px env(safe-area-inset-bottom);border-right:0;border-top:1px solid #DDE0E4;background:var(--wash)}
  .side > :not(nav):not(.tabbar){display:none}
  .side nav,.side .tabbar{display:flex;flex-direction:row;gap:4px;width:100%}
  .side a.it{flex:1 0 auto;justify-content:center;min-height:56px;padding:0 12px;white-space:nowrap}
  .side a.it.sub{display:none}
  .app-main,.shell > main{padding-bottom:80px}
  .app-search{width:auto;flex:1}
  .frame-body{grid-template-columns:minmax(0,1fr)}
  .frame-body > :first-child{display:none}
}
@media (max-width:639px){
  .shelf,.band{padding:32px 20px;border-radius:16px}
  .sec-gap{margin-top:24px}
  .cols4,.plans,.tiles5{grid-template-columns:minmax(0,1fr)}
  .kpis,.frame .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ftr-grid{grid-template-columns:minmax(0,1fr)}
  .hdr-in{gap:16px;flex-wrap:wrap}
  .nav{order:3;width:100%;overflow-x:auto;flex-wrap:nowrap}
  .nav a{white-space:nowrap}
  .search,.search input{width:100%}
  .chips,.ex{flex-wrap:wrap}
  .readout li{grid-template-columns:minmax(0,1fr);gap:4px}
  .facts div{grid-template-columns:80px 1fr}
  .code{font-size:13px;padding:16px;overflow-x:auto}
}
@media (max-width:639px){
  .kpi-v,.stat,.tile-v,.kpi .v{font-size:26px;line-height:1.1;overflow-wrap:normal;word-break:keep-all}
  .frame .kpis{grid-template-columns:minmax(0,1fr)}
  .frame-url{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .lock img{height:24px;width:auto}
}
.lock img,.ftr .lock img{height:24px;width:auto;max-width:none}

/* N84 module layer (layout v2). Appended after build/design-v2/n84-v2.css by scripts/build-tokens.mjs.
   Holds only what v2 lacks: fonts, legacy token names, base elements, console and grid widgets, forms, map,
   and legacy class names the pages still emit. Sodium (#E8A33D) is a disruption colour only. */
:root{--rule-panel:#DDE0E4;--rule-inner:#EEF0F2;--rule-control:#8C929A;--text-2:#4B5159;--text-3:#5F6670;--graphite:#2B3036;--night-rule:#1C2128;--night-text:#A3ABB5;--night-text-2:#8C96A3;--live:#2E9E5B;--paid-bg:#EEF2FA;--paid-border:#DCE3F2;--paid-text:#2A3140;--observed:#1F7A47;--observed-bg:#F1F8F4;--observed-border:#CFE3D7;--observed-text:#1F5C3A;--published:#2B3036;--published-bg:#F3F4F6;--published-border:#D9DCE1;--estimated:#B26B00;--estimated-bg:#FBF5EA;--estimated-border:#EED9B5;--estimated-text:#6E4300;--sev-normal:#5F6670;--sev-notable:#1F3BFF;--sev-elevated:#B54708;--sev-elevated-bg:#FEF0C7;--sev-elevated-border:#F5C77E;--sev-elevated-text:#7A3006;--sev-critical:#C2412D;--sev-critical-bg:#FDECE8;--sev-critical-border:#F4B5A8;--sev-critical-text:#8A2617;--flair-db-900:#0B2E8A;--flair-db-600:#1F3BFF;--flair-db-300:#8EA0FF;--flair-db-100:#D7DEFF;--focus:#000000;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-16:64px;--space-24:96px;--radius-tile:4px;--radius-control:8px;--radius-panel:12px;--radius-feature:16px;--radius-pill:999px;--container:1184px;--container-app:1280px;--sidebar:256px;--measure:760px;--measure-lead:640px;--target:44px;--font-sans:"Atkinson Hyperlegible Next",system-ui,sans-serif;--font-mono:"Atkinson Hyperlegible Mono",ui-monospace,monospace}
@font-face { font-family: "Atkinson Hyperlegible Next"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible Next"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/atkinson-hyperlegible-next-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible Next"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/atkinson-hyperlegible-next-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible Next"; font-style: normal; font-weight: 800; font-display: swap; src: url("/fonts/atkinson-hyperlegible-next-latin-800-normal.woff2") format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/atkinson-hyperlegible-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/atkinson-hyperlegible-mono-latin-500-normal.woff2") format("woff2"); }
.t-display { font-family: var(--font-sans); font-size: 64px; line-height: 1.02; font-weight: 800; letter-spacing: -0.03em; }
.t-h1 { font-family: var(--font-sans); font-size: 52px; line-height: 1.05; font-weight: 800; letter-spacing: -0.025em; }
.t-h2 { font-family: var(--font-sans); font-size: 30px; line-height: 1.2; font-weight: 800; letter-spacing: -0.02em; }
.t-h3 { font-family: var(--font-sans); font-size: 20px; line-height: 1.3; font-weight: 700; }
.t-lead { font-family: var(--font-sans); font-size: 20px; line-height: 1.5; font-weight: 400; }
.t-body { font-family: var(--font-sans); font-size: 17px; line-height: 1.5; font-weight: 400; }
.t-small { font-family: var(--font-sans); font-size: 15px; line-height: 1.5; font-weight: 400; }
.t-caption { font-family: var(--font-sans); font-size: 14px; line-height: 1.45; font-weight: 400; }
.t-label { font-family: var(--font-sans); font-size: 13px; line-height: 1.3; font-weight: 700; }
.t-nav { font-family: var(--font-sans); font-size: 16px; line-height: 1.3; font-weight: 500; }
.t-stat { font-family: var(--font-sans); font-size: 40px; line-height: 1.05; font-weight: 800; letter-spacing: -0.02em; }
.t-tile-value { font-family: var(--font-sans); font-size: 32px; line-height: 1.1; font-weight: 800; letter-spacing: -0.02em; }
.t-code { font-family: var(--font-mono); font-size: 15px; line-height: 1.5; font-weight: 500; }
.t-code-title { font-family: var(--font-mono); font-size: 52px; line-height: 1.05; font-weight: 500; }

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.5;font-variant-numeric:tabular-nums}
body.app{background:var(--canvas)}
a{color:var(--ink);text-underline-offset:3px}
a.data,.data a{color:var(--change)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
h1,h2,h3{margin:0}
h1{font-size:clamp(36px,5vw,52px);line-height:1.05;font-weight:800;letter-spacing:-0.025em}
h2{font-size:clamp(22px,2.6vw,30px);line-height:1.2;font-weight:800;letter-spacing:-0.02em}
h3{font-size:20px;line-height:1.3;font-weight:700}
p{margin:0}
.lead{font-size:20px;line-height:1.5;color:var(--text-2);max-width:var(--measure-lead)}
.small{font-size:15px}
.caption{font-size:14px;line-height:1.45;color:var(--text-3)}
.label{font-size:13px;line-height:1.3;font-weight:700}
.muted{color:var(--text-2)}
.faint{color:var(--text-3)}
code{font-family:var(--font-mono);font-weight:500}
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:8px;z-index:30;background:var(--paper);padding:10px 14px;border:2px solid var(--ink);border-radius:8px}
.skip:focus{left:8px}
.measure{max-width:var(--measure)}
.stack{display:flex;flex-direction:column;gap:var(--space-4)}
.section{margin-top:var(--space-16)}

:root{--ink: #000000}
/* Shell additions on top of v2 */
.site-main{padding-bottom:0}
.page-shelf{margin-top:24px}
.page-shelf>.stack,.page-shelf>section,.page-shelf>.pg-block{max-width:none}
.nav a[aria-current="page"]{border-bottom-color:var(--ink);font-weight:700}
.hdr-r a:not(.btn){display:inline-flex;align-items:center;min-height:44px;font-size:16px;font-weight:500;text-decoration:none}
.hdr-r a[aria-current="page"]{font-weight:700;text-decoration:underline;text-underline-offset:8px;text-decoration-thickness:2px}
.lock.lockup{color:var(--ink)}
.ftr nav a[aria-current="page"]{font-weight:700}
.ftr-base .legal{margin:0}
.app .hdr{position:sticky;top:0;z-index:5}
.app .hdr-in{flex-wrap:wrap;gap:8px 24px}
.app-search{width:300px;max-width:100%;padding:0 0 0 12px}
.app-search input{flex:1;min-width:0;height:42px;border:0;background:transparent;font:inherit;font-size:14px;color:var(--ink);outline-offset:0}
.app-search input::placeholder{color:var(--t3)}
.app-search:focus-within{border-color:var(--ink)}
.app-col{max-width:var(--container-app)}
.app .main{padding-bottom:96px}
.switch{text-decoration:none;color:var(--ink)}
.switch:hover{color:var(--ink);background:var(--mist)}
.switch .type{display:inline}
.side .grp:first-child{margin-top:20px}
.side a.sub{margin:0;max-width:none;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px 0 24px;border-radius:6px;text-decoration:none;color:var(--t2);font-size:14px}
.side a.sub:hover{background:var(--mist);color:var(--ink)}
.side a.sub[aria-current="page"]{background:var(--paper);color:var(--ink);font-weight:700;box-shadow:inset 0 0 0 1px var(--rule)}
.side a.it svg{flex:none}
.side a.it .lbl{display:inline-flex;align-items:center;gap:10px}
.side .n{font-size:13px;font-weight:700;color:var(--change)}
.side .none{font-size:13px;color:var(--t3);font-weight:400}
.side .empty-note{display:block;padding:0 12px;font-size:14px;color:var(--t3)}
.plan-card{margin:24px 0 0;padding:14px;background:var(--paper);border:1px solid var(--rule);border-radius:10px;display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--t2)}
.plan-card b{font-size:14px;color:var(--ink)}
.plan-card a{font-weight:700}
.menu-phone,.tabbar{display:none}

/* Buttons: ink is the single primary; every other button is outlined */
.n84 a.btn.btn-secondary,.btn.btn-secondary{background:var(--paper);color:var(--ink);border-color:var(--ctl)}
.n84 a.btn.btn-secondary:hover,.btn.btn-secondary:hover{background:var(--mist);color:var(--ink)}
.n84 a.btn.btn-paid,.btn.btn-paid{background:var(--wash);color:var(--ink);border-color:var(--ctl)}
.n84 a.btn.btn-paid:hover,.btn.btn-paid:hover{background:var(--mist);color:var(--ink)}
.btn:disabled,.btn[disabled]{opacity:.55;cursor:not-allowed}
.hdr-r .btn{min-height:44px}

/* Tags: non-interactive chips (severity, stale, tier, console tags) */
.tag,.chip.sev,.chip.stale,.chip.chip-paid,.chip.c-tag,span.chip{display:inline-flex;align-items:center;gap:6px;min-height:26px;height:auto;padding:2px 10px;border:1px solid var(--rule);border-radius:999px;background:var(--paper);font-size:13px;font-weight:700;line-height:1.3;white-space:nowrap;text-decoration:none;color:var(--ink)}
.chip.chip-paid{border-color:var(--paid-border);background:var(--paid-bg)}
.chip.stale{background:var(--wash);color:var(--text-2)}
.chip.sev-elevated-c{background:var(--sev-elevated-bg);border-color:var(--sev-elevated-border);color:var(--sev-elevated-text)}
.chip.sev-critical-c{background:var(--sev-critical-bg);border-color:var(--sev-critical-border);color:var(--sev-critical-text)}
.sev{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;white-space:nowrap}
.sev svg{flex:none}
.sev-normal-t{color:var(--text-3)}
.sev-notable-t{color:var(--sev-notable)}
.stale-note{font-size:14px;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--live)}

/* Panels: v2 .panel with .ph/.pb/.pf; a panel without .ph is a padded legacy panel */
.panel:not(:has(>.ph)){padding:22px;display:flex;flex-direction:column;gap:12px}
.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.panel-head p{margin-top:2px;font-size:14px;color:var(--text-3)}
.panel .takeaway{font-size:14px;color:var(--text-2)}
.panel .pb .takeaway{margin-top:8px}
.panel.locked{background:var(--wash);border-color:var(--rule)}
.panel.locked .panel-head p,.panel.locked .price{color:var(--t2);font-size:14px;margin-top:0;font-weight:400;letter-spacing:0;line-height:1.4}
.unlock{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.src{margin:0;padding-top:10px;border-top:1px solid var(--rule);font-size:13px;color:var(--t3)}
.pf .src,.pf p.src{border:0;padding:0}
.pb>.src{margin-top:8px}
.src q{quotes:none}
.ph h2.t-h3,.ph h3.t-h3{font-size:17px;font-weight:800}
.ph .tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.grid1{grid-template-columns:minmax(0,1fr)}
.stack-panels{display:flex;flex-direction:column;gap:12px}
.pg-sources{margin-top:12px}
.pg-sources .pb{padding-bottom:16px}

/* App pages: tighter rhythm than public shelves */
.app .section{margin-top:12px}
.app .section>h2:first-child{margin-bottom:8px}
.app .stack-panels>.panel,.app .app-col>.panel{margin-top:12px}
.app .app-col>.crumbs{margin-bottom:0}
.app .app-col>.empty{margin-top:12px}

/* Titles */
.crumbs{font-size:14px;color:var(--text-3);display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.crumbs a{color:var(--text-3);text-decoration:none}
.title-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px}
.title-row .actions{display:flex;flex-wrap:wrap;gap:8px}
.titlebar{flex-wrap:wrap}
.app .titlebar h1{font-size:30px}
.pg-readout{display:flex;flex-direction:column;gap:10px}
.app .pg-readout{margin-top:16px}

/* Status tiles and KPI strip: v2 KPI look */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.status-tile{display:flex;flex-direction:column;gap:2px;padding:16px 18px;background:var(--paper);border:1px solid var(--rule-panel);border-radius:12px;box-shadow:var(--shadow-panel);text-decoration:none;color:var(--ink)}
.status-tile:hover{color:var(--ink);border-color:var(--ctl)}
.status-tile.sev-elevated{border-top:4px solid var(--sev-elevated)}
.status-tile.sev-critical{border-top:4px solid var(--sev-critical)}
.status-tile .top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.status-tile .top b{font-size:14px;color:var(--t2)}
.status-tile .value{font-size:30px;line-height:1.1;font-weight:800;letter-spacing:-0.02em;margin-top:6px}
.status-tile .what{font-size:14px;color:var(--text-2)}
.status-tile .delta{font-size:13px;font-weight:700;color:var(--change)}
.status-tile .delta.flat{color:var(--text-2)}
.status-tile .when{font-size:13px;color:var(--text-3);margin-top:auto;padding-top:8px}
.kpis.stat-strip{margin-top:16px}
.kpi .kpi-v{overflow-wrap:anywhere}
.kpi .flat{color:var(--t2);font-weight:400}

/* Change list */
.changes{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.changes li{display:grid;grid-template-columns:14px minmax(0,1fr);gap:10px;padding:12px 0;border-bottom:1px solid var(--rule);font-size:15px}
.changes .dot{width:10px;height:10px;border-radius:50%;margin-top:6px;background:var(--change)}
.changes .body{display:flex;flex-direction:column;gap:2px}
.changes .meta{font-size:13px;color:var(--text-3)}

/* Basis badge: v2 .basis with a word */
.basis.basis-observed{background:var(--observed-bg);border-color:var(--observed-border);color:var(--observed-text)}
.basis::before{content:none}
.basis svg{flex:none}

/* Notes, empty states, banners */
.empty{background:var(--paper);border:1px solid var(--rule-panel);border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.empty .icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;border:1px solid var(--rule)}
.empty p{font-size:15px;color:var(--text-2)}
.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 18px;border-radius:12px;font-size:15px;border:1px solid var(--rule)}
.banner b{flex:1 1 360px}
.banner-info{background:var(--wash)}
.banner-elevated{background:var(--sev-elevated-bg);border-color:var(--sev-elevated-border);color:var(--sev-elevated-text)}
.banner-critical{background:var(--sev-critical-bg);border-color:var(--sev-critical-border);color:var(--sev-critical-text)}
.banner-paid{background:var(--wash);border-color:var(--rule)}

/* Filter bar: v2 toolbar */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;padding:12px 16px;background:var(--paper);border:1px solid var(--rule-panel);border-radius:12px;margin-top:16px}
.filters .lbl,.lbl{font-size:15px;font-weight:700}
.pills{display:flex;flex-wrap:wrap;gap:6px}
.pill{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--rule-control);background:var(--paper);color:var(--ink);font:inherit;font-size:15px;cursor:pointer;text-decoration:none}
.pill[aria-pressed="true"]{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.pill.paid{border-color:var(--rule-control);background:var(--wash)}
.filters .stamp,.stamp{margin-left:auto;font-size:13px;color:var(--text-3)}

/* Tables */
.table-wrap,.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-wrap{border:1px solid var(--rule);border-radius:12px;background:var(--paper)}
.panel .table-wrap{border:0;border-radius:0;border-top:1px solid var(--rule)}
.table-wrap table{width:100%;border-collapse:collapse;font-size:14px}
.table-wrap caption{text-align:left;padding:12px 18px;font-weight:700;caption-side:top}
.table-wrap th{text-align:left;background:var(--wash);color:var(--t2);padding:10px 12px;border-bottom:1px solid var(--rule);font-size:13px;white-space:nowrap}
.table-wrap td{padding:11px 12px;border-bottom:1px solid var(--rule);vertical-align:top}
.table-wrap th:first-child,.table-wrap td:first-child{padding-left:18px}
.table-wrap th:last-child,.table-wrap td:last-child{padding-right:18px}
.table-wrap .num{text-align:right}
.table-wrap tr:last-child td{border-bottom:0}
.table-wrap tbody tr:hover td{background:var(--wash)}

/* Charts: paper panel, blue ramp, Table view */
.chart{margin:0}
.chart svg{width:100%;height:auto;display:block;overflow:visible}
.chart text{font-family:var(--font-sans);font-size:13px;fill:var(--text-3)}
.chart .lbl-strong{fill:var(--ink);font-weight:700}
.chart figcaption{font-size:14px;color:var(--text-3);margin-top:6px}
.tview{margin-top:8px;border-top:1px solid var(--rule)}
.tview>summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-size:14px;font-weight:700;list-style:none}
.tview>summary::-webkit-details-marker{display:none}
.tview>summary::after{content:"";margin-left:8px;width:7px;height:7px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg) translateY(-2px)}
.tview[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.tview table.vh{position:static!important;width:100%;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal;border-collapse:collapse;font-size:14px;display:table}
.tview table.vh caption{text-align:left;font-weight:700;padding:6px 0}
.tview table.vh th,.tview table.vh td{padding:9px 12px;border-bottom:1px solid var(--rule);text-align:left;font-weight:400}
.tview table.vh thead th{background:var(--wash);color:var(--t2);font-size:13px;font-weight:700}
.tview .tblwrap{overflow-x:auto}

/* Page-level blocks used by home and shelf pages */
.pg-search-row{display:flex;gap:10px}
.sec-head{display:flex;flex-direction:column;gap:6px}
.cols4 .col h3{font-size:20px}
.cols4 .col p.cap{min-height:0}
.plan.soon .price{font-size:24px;line-height:1.2}
.plan.soon .btn{margin-top:auto}
.mapcard figure{margin:0}
.mapcard svg{width:100%;height:auto;display:block}

/* Forms (module) */
.pg-form{display:flex;flex-direction:column;gap:10px;max-width:520px}
input[type=email],input[type=search],input[type=text]{font:inherit}

/* Phone */
@media (max-width:899px){
  .nav{order:3;flex-basis:100%;overflow-x:auto;flex-wrap:nowrap}
  .shell{grid-template-columns:minmax(0,1fr)}
  .shell>.side{display:none}
  .side.side-in{display:block;position:static;border:0;padding:12px 16px 20px;overflow:visible;flex-direction:column;background:var(--wash)}
  .side.side-in>:not(nav):not(.tabbar){display:block}
  .side.side-in a.it{flex:none;justify-content:space-between;min-height:44px;padding:0 12px}
  .side.side-in a.it.sub,.side.side-in a.sub{display:flex}
  .menu-phone{display:block;background:var(--paper);border-bottom:1px solid var(--rule-panel)}
  .menu-phone summary{min-height:44px;display:flex;align-items:center;padding:0 16px;font-weight:700;cursor:pointer}
  .hdr .app-search{display:none}
  .app .hdr .hdr-r a:not(.btn){display:none}
  .side.side-in nav{flex-direction:column;width:auto;gap:2px}
  .side.side-in{max-height:none;height:auto;width:auto;left:auto;right:auto;bottom:auto}
  .side.side-in a.it{min-width:0}
  .hdr .hdr-r{margin-left:0}
  .app .main{padding:20px 16px 96px}
  .tabbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--paper);border-top:1px solid var(--rule-panel);padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;font-size:13px;text-decoration:none;color:var(--text-2)}
  .tabbar a[aria-current="page"]{color:var(--ink);font-weight:700}
  .tabbar a[aria-current="page"] svg{stroke-width:2.4}
  .panel-grid{grid-template-columns:minmax(0,1fr)}
  .pg-subpills{display:flex}
  .title-row .actions{width:100%}
  .app .ftr{margin-bottom:56px}
}
@media (max-width:639px){
  .pg-search-row{flex-direction:column}
  .search-row{flex-direction:column}
  .search .btn{width:100%}
  .band form{flex-direction:column}
  .band .btn{width:100%}
}
@media (min-width:900px){.pg-subpills{display:none}}

/* Overflow and hit areas (layout v2 follow-up) */
.n84{overflow-x:clip}
.hdr-r{flex-wrap:wrap;gap:4px 16px;min-width:0}
.hdr-in{min-width:0}
.kpi,.status-tile{min-width:0}
.kpi-v,.status-tile .value{overflow-wrap:normal;white-space:nowrap}
.n84 .lock img,.n84 .lockup img,.ftr .lock img{height:24px;width:auto;max-width:none}
.kpi-l{flex-wrap:wrap}
.side a.it,.side a.sub,.side .lbl{min-width:0}
.crumbs a,.crumbs span,.pf a,.ph a,.plan-card a,.src a,.caption a,.cap a,.pg-src-list a,.pg-readout a,.appfoot a,.notice a,.ftr-note a,.empty a:not(.btn){display:inline-flex;align-items:center;min-height:44px}
.crumbs{align-items:center}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select{min-height:44px}
.app-search input{height:44px}
@media (max-width:639px){
  .status-tile .value{font-size:26px}
  .hdr-in{gap:4px 16px}
  .hdr-r{margin-left:auto;gap:4px 12px}
  .lock{max-width:100%}
  .app .hdr-in{padding:0 16px}
}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
