/* Democracy Analysis: Civic Dashboard. Light instrument panel chrome. */
:root{
  --bg:#F6F8FB;--card:#FFFFFF;--ink:#151C28;--ink2:#34405A;--muted:#4F5B6E;
  --line:#D6DCE6;--line2:#E7EBF1;--navy:#1D3C6E;--navy2:#14294D;--slate:#5E6B7E;
  --tint:#EAF0F8;--lamp:#D9A23A;--ok:#2F7D5B;--panel:#0E1626;--panel2:#16223A;
  --focus:#1D3C6E;--wrap:1240px;--r:14px;
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --sans:'Public Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:96px}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video,svg{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.12;margin:0;letter-spacing:-.01em;text-wrap:balance;color:var(--ink)}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;text-decoration:none;font-weight:700}
.skip:focus{top:12px}
.mono{font-family:var(--mono);font-size:12px;letter-spacing:.04em}
.kick{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);display:inline-flex;align-items:center;gap:10px}
.kick::before{content:"";width:22px;height:2px;background:currentColor}

/* Top strip and launcher */
.strip{background:var(--card);border-bottom:1px solid var(--line);font-size:13.5px;position:relative;z-index:40}
.strip .wrap{display:flex;align-items:center;gap:18px;min-height:42px}
.strip .r{margin-left:auto;display:flex;align-items:center;gap:18px}
.strip .r a{text-decoration:none;color:var(--ink2)}
.strip .r a:hover{color:var(--navy);text-decoration:underline}
.strip .clock{font-family:var(--mono);font-size:12px;color:var(--muted);display:inline-flex;gap:8px;align-items:center}
.strip .clock::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px rgba(47,125,91,.18)}
.launch{position:relative}
.launch summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;font-weight:600;font-size:13px;background:var(--bg)}
.launch summary::-webkit-details-marker{display:none}
.launch summary .dots{display:grid;grid-template-columns:repeat(3,4px);gap:2px}
.launch summary .dots i{width:4px;height:4px;border-radius:1px;background:var(--navy)}
.launch[open] summary{background:var(--navy);color:#fff;border-color:var(--navy)}
.launch[open] summary .dots i{background:#fff}
.launch-panel{position:absolute;left:0;top:calc(100% + 10px);width:min(860px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 24px 60px rgba(21,28,40,.18);padding:22px;display:grid;grid-template-columns:repeat(4,1fr);gap:18px 22px;max-height:70vh;overflow:auto}
.launch-panel .lg-h{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line2)}
.launch-panel li a{display:block;padding:3px 0;text-decoration:none;font-size:14px;color:var(--ink2)}
.launch-panel li a:hover{color:var(--navy);text-decoration:underline}
.launch-panel li a[aria-current="page"]{color:var(--navy);font-weight:700}
.launch-panel li a[aria-current="page"]::after{content:" (you are here)";font-family:var(--mono);font-size:10.5px;color:var(--muted);font-weight:400}

/* Masthead */
.mast{position:sticky;top:0;z-index:30;background:rgba(246,248,251,.92);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line);transition:box-shadow .3s}
.mast.stuck{box-shadow:0 8px 30px rgba(21,28,40,.08)}
.mast .wrap{display:flex;align-items:center;gap:24px;min-height:76px}
.logo{display:block;flex:none;line-height:0;border-radius:6px}
.logo img{height:50px;width:auto}
.mnav{margin-left:auto;display:flex;align-items:center;gap:4px}
.mnav a{text-decoration:none;font-size:14.5px;font-weight:600;color:var(--ink2);padding:8px 12px;border-radius:8px;position:relative}
.mnav a:hover,.mnav a[aria-current="page"]{color:var(--navy);background:var(--tint)}
.mtoggle{display:none;margin-left:auto;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 13px;font-weight:700;font-size:14px;cursor:pointer;align-items:center;gap:8px}
.mtoggle .bars{width:16px;display:grid;gap:3px}
.mtoggle .bars i{height:2px;background:var(--ink)}
.dial-rule{height:6px;background:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px 12px);opacity:.9}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:10px;font-weight:700;font-size:15px;text-decoration:none;border:1px solid var(--navy);background:var(--navy);color:#fff;cursor:pointer;transition:transform .2s,background .2s}
.btn:hover{background:var(--navy2);transform:translateY(-1px)}
.btn.ghost{background:transparent;color:var(--navy)}
.btn.ghost:hover{background:var(--tint)}
.btn .ar{transition:transform .2s}.btn:hover .ar{transform:translateX(3px)}

/* Module headings */
.mod{padding:88px 0;position:relative}
.mod-h{display:grid;grid-template-columns:150px 1fr;gap:28px;align-items:end;margin-bottom:38px}
.mod-n{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.08em;border-top:2px solid var(--navy);padding-top:10px}
.mod-n b{display:block;font-size:40px;line-height:1;color:var(--navy);font-weight:500;letter-spacing:-.02em;margin-top:6px}
.mod-h h2{font-size:clamp(30px,2.2vw + 16px,50px)}
.mod-h p{color:var(--muted);max-width:62ch;margin:12px 0 0;font-size:17.5px}

/* Cards and panels */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r)}
.panel{background:var(--panel);color:#E8EDF5;border-radius:calc(var(--r) + 6px);position:relative;overflow:hidden}
.panel h2,.panel h3{color:#fff}

/* Reveal */
.rv{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.no-js .rv{opacity:1;transform:none}

/* Inner page shell */
.phead{padding:64px 0 34px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--card),var(--bg))}
.phead h1{font-size:clamp(34px,2.6vw + 18px,58px);margin-top:14px;max-width:22ch}
.phead .lede{color:var(--muted);max-width:60ch;margin-top:14px;font-size:18px}
.prose{max-width:70ch;font-size:18px}
.prose h3{font-size:24px;margin:34px 0 10px}
.prose a{color:var(--navy);text-underline-offset:3px}
.prose p{color:var(--ink2)}
.pgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:56px;padding:52px 0 80px}
.side .card{padding:22px;position:sticky;top:104px}
.side h2{font-size:20px;margin-bottom:12px}
.side li{border-top:1px solid var(--line2)}
.side li a{display:block;padding:10px 0;text-decoration:none;font-size:15px}
.side li a:hover{color:var(--navy);text-decoration:underline}

/* Post */
.post-h{padding:46px 0 10px}
.crumbs{font-family:var(--mono);font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.crumbs a{color:var(--navy);text-decoration:none}.crumbs a:hover{text-decoration:underline}
.catpill{display:inline-flex;align-items:center;gap:8px;background:var(--navy);color:#fff;font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;border-radius:999px;padding:5px 13px;text-decoration:none;margin-top:18px}
.catpill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--lamp)}
.post-h h1{font-size:clamp(34px,2.8vw + 18px,62px);margin:16px 0 12px;max-width:20ch}
.post-meta{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;display:flex;gap:16px;flex-wrap:wrap}
.post-fig{margin:28px 0 30px}
.post-fig .frame{border-radius:var(--r);overflow:hidden;background:var(--panel);position:relative}
.post-fig img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.post-fig .frame::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 3px);mix-blend-mode:overlay}
.post-fig:hover img{transform:scale(1.025)}
.post-fig figcaption{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:10px;line-height:1.6}
.post-body p{font-family:var(--serif);font-size:20px;line-height:1.72;color:#222B3B}
.post-body p:first-child::first-letter{float:left;font-size:3.4em;line-height:.9;padding:6px 10px 0 0;color:var(--navy);font-weight:600}
.backlink{display:inline-flex;gap:8px;align-items:center;margin-top:26px;color:var(--navy);font-weight:700;text-decoration:none}
.backlink:hover{text-decoration:underline}
.readout dl{display:grid;grid-template-columns:1fr auto;margin:0 0 16px;font-size:14px}
.readout dt{color:var(--muted);padding:8px 0;border-top:1px solid var(--line2)}
.readout dd{margin:0;padding:8px 0;border-top:1px solid var(--line2);font-family:var(--mono);font-size:13px;text-align:right}
.lenbars{display:flex;align-items:flex-end;gap:2px;height:54px;margin:4px 0 8px}
.lenbars span{flex:1;background:var(--line);border-radius:2px 2px 0 0;min-width:2px;transition:background .2s}

.lenbars span.cur{background:var(--lamp)}
.lencap{font-family:var(--mono);font-size:11px;color:var(--muted);margin:0 0 18px}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:40px}
.pn a{display:block;padding:16px 18px;text-decoration:none;border:1px solid var(--line);border-radius:12px;background:var(--card);transition:border-color .2s,transform .2s}
.pn a:hover{border-color:var(--navy);transform:translateY(-2px)}
.pn span{display:block;font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.pn b{font-family:var(--serif);font-weight:600;font-size:17px;line-height:1.3}
.pn .nx{text-align:right}

/* Share bar */
.sb{margin-top:38px;padding:18px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.sb-t{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.sb-l{display:flex;flex-wrap:wrap;gap:6px}
.sb-l a,.sb-l button{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:var(--bg);cursor:pointer;color:var(--ink2);text-decoration:none;gap:6px}
.sb-l .wide{width:auto;padding:0 12px;font-size:13.5px;font-weight:600}
.sb-l a:hover,.sb-l button:hover{border-color:var(--navy);color:var(--navy);background:var(--tint)}
.sb-l svg{width:17px;height:17px;fill:currentColor}
#sb-said{font-family:var(--mono);font-size:12px;color:var(--ok)}
.sb-note{flex-basis:100%;margin:0;font-size:13px;color:var(--muted)}
.printnote{display:none}

/* Footer */
.foot{margin-top:40px;background:var(--card);border-top:1px solid var(--line)}
.foot .top{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:36px;padding:56px 0 40px}
.foot .flogo img{height:96px;width:auto}
.foot .tag{color:var(--muted);margin-top:14px;max-width:34ch;font-size:15px}
.foot h2{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:12px}
.foot li a{display:block;padding:4px 0;text-decoration:none;font-size:15px;color:var(--ink2)}
.foot li a:hover{color:var(--navy);text-decoration:underline}
.foot .base{border-top:1px solid var(--line);padding:20px 0 30px;font-size:13.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:space-between}
.foot .base p{margin:0}

/* Library */
.lib-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:end;margin:34px 0 18px}
.lib-search{position:relative}
.lib-search label{display:block;font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.lib-search input{width:100%;padding:15px 16px 15px 46px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:17px}
.lib-search svg{position:absolute;left:15px;bottom:15px;width:20px;height:20px;fill:none;stroke:var(--slate);stroke-width:2}
.lib-sort label{display:block;font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.lib-sort select{padding:14px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:15px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;display:inline-flex;gap:8px;align-items:center}
.chip span{font-family:var(--mono);font-size:11.5px;color:var(--muted);font-weight:400}
.chip[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.chip[aria-pressed="true"] span{color:#C9D5EA}
.lib-count{font-family:var(--mono);font-size:12.5px;color:var(--muted);margin:0 0 16px}
.lib-res{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.lib-card{display:flex;flex-direction:column;padding:18px 18px 16px;text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:12px;transition:border-color .2s,transform .2s,box-shadow .2s;animation:pop .35s ease both}
.lib-card:hover{border-color:var(--navy);transform:translateY(-2px);box-shadow:0 10px 26px rgba(21,28,40,.08)}
.lib-card .c{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--navy)}
.lib-card h3{font-size:19px;margin:8px 0 8px;line-height:1.25}
.lib-card p{font-size:14.5px;color:var(--muted);margin:0 0 12px}
.lib-card .w{margin-top:auto;font-family:var(--mono);font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:8px}
.lib-card .w i{display:block;height:4px;background:var(--line);border-radius:2px;flex:1;position:relative;overflow:hidden}
.lib-card .w i b{position:absolute;left:0;top:0;bottom:0;background:var(--navy);border-radius:2px}
.lib-card mark{background:#FBE7B8;color:inherit;border-radius:2px}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.lib-fallback h2{font-size:26px;margin:40px 0 12px;scroll-margin-top:110px}
.lib-fallback h2 span{font-family:var(--mono);font-size:13px;color:var(--muted);font-weight:400}
.lib-fallback ul{columns:3;column-gap:28px}
.lib-fallback li{break-inside:avoid;padding:5px 0;border-bottom:1px solid var(--line2)}
.lib-fallback li a{text-decoration:none;font-size:15.5px}
.lib-fallback li a:hover{color:var(--navy);text-decoration:underline}
.js .lib-fallback{display:none}
.no-js .lib-live{display:none}
.credits{margin:46px 0 10px;font-size:13.5px;color:var(--muted)}
.credits summary{cursor:pointer;font-weight:600;color:var(--ink2)}
.credits ul{margin:10px 0 0 18px;list-style:disc}
.empty{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px}

@media (max-width:1080px){
  .launch-panel{grid-template-columns:repeat(2,1fr)}
  .pgrid{grid-template-columns:1fr;gap:30px}
  .side .card{position:static}
  .lib-res{grid-template-columns:repeat(2,minmax(0,1fr))}
  .foot .top{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .mtoggle{display:inline-flex}
  .mnav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--card);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:10px 16px 16px;box-shadow:0 20px 40px rgba(21,28,40,.12)}
  .mnav.open{display:flex}
  .mnav a{padding:12px}
  .mod{padding:64px 0}
  .mod-h{grid-template-columns:1fr;gap:14px}
  .lib-fallback ul{columns:2}
}
@media (max-width:640px){
  body{font-size:16px}
  .wrap{padding:0 16px}
  .strip .clock{display:none}
  .strip .r{gap:12px}
  .launch-panel{grid-template-columns:1fr 1fr;padding:16px;gap:14px;left:-4px}
  .logo img{height:40px}
  .mast .wrap{min-height:64px}
  .lib-tools{grid-template-columns:1fr}
  .lib-res{grid-template-columns:1fr}
  .lib-fallback ul{columns:1}
  .foot .top{grid-template-columns:1fr}
  .pn{grid-template-columns:1fr}
  .post-body p{font-size:18.5px}
}
@media (max-width:420px){.strip .r a.hide-s{display:none}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
}
@media print{
  .strip,.mast,.foot,.sb,.side,.pn,.dial-rule{display:none!important}
  .printnote{display:block;font-size:12px;color:#444}
  body{background:#fff}
}
