:root{
  --ground:#F7F5EE;
  --surface:#FFFFFF;
  --ink:#1C2420;
  --muted:#666F67;
  --line:#DEDACB;
  --accent:#256B4C;
  --accent-soft:#DEEEE3;
  --accent-ink:#0F3D2A;
  --band-a:#009A44;
  --band-b:#4CB648;
  --band-c:#9AC93B;
  --band-d:#F2D200;
  --band-e:#F5A623;
  --band-f:#E8712A;
  --band-g:#D93A2B;
  --radius:10px;
  --err:#C23B2E;
  --err-soft:#FBE7E4;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#141815; --surface:#1C211D; --ink:#ECEAE1; --muted:#9AA39A;
    --line:#333A33; --accent:#5FBB8F; --accent-soft:#213329; --accent-ink:#BFE9D3;
    --err-soft:#3A211E;
  }
}
:root[data-theme="dark"]{
  --ground:#141815; --surface:#1C211D; --ink:#ECEAE1; --muted:#9AA39A;
  --line:#333A33; --accent:#5FBB8F; --accent-soft:#213329; --accent-ink:#BFE9D3;
  --err-soft:#3A211E;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--ground); color:var(--ink);
  font-family:"Public Sans","Segoe UI",system-ui,sans-serif;
  line-height:1.55; -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:"Libre Franklin","Public Sans",system-ui,sans-serif;font-weight:700;text-wrap:balance;margin:0;}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums;}
a{color:inherit;}
.wrap{max-width:920px;margin:0 auto;padding:0 24px;}

header.site{border-bottom:1px solid var(--line);padding:18px 0;position:sticky;top:0;background:var(--ground);z-index:10;}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.brand{display:flex;align-items:center;gap:10px;font-family:"Libre Franklin",sans-serif;font-weight:700;font-size:1.05rem;letter-spacing:-0.01em;text-decoration:none;color:var(--ink);}
.brand-mark{width:28px;height:28px;border-radius:6px;background:linear-gradient(135deg,var(--band-a),var(--band-d) 60%,var(--band-g));flex:none;}
nav.site-nav{display:flex;gap:22px;font-size:0.92rem;color:var(--muted);}
nav.site-nav a{text-decoration:none;}
nav.site-nav a:hover{color:var(--ink);}

.hero{padding:56px 0 36px;}
.eyebrow{color:var(--accent-ink);background:var(--accent-soft);display:inline-block;font-size:0.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:5px 11px;border-radius:100px;margin-bottom:18px;}
.hero h1{font-size:2.5rem;letter-spacing:-0.02em;max-width:16ch;}
.hero p.lede{color:var(--muted);font-size:1.12rem;max-width:48ch;margin:16px 0 0;}

.search-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-top:32px;box-shadow:0 1px 2px rgba(20,24,20,0.04);}
.search-row{display:flex;gap:10px;flex-wrap:wrap;}
.search-row input{flex:1 1 220px;font:inherit;font-family:"IBM Plex Mono",monospace;font-size:1.05rem;letter-spacing:.03em;padding:13px 14px;border:1.5px solid var(--line);border-radius:7px;background:var(--ground);color:var(--ink);text-transform:uppercase;}
.search-row input::placeholder{color:var(--muted);text-transform:none;font-family:"Public Sans",sans-serif;letter-spacing:normal;}
.search-row input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent);}
.search-row button{font:inherit;font-weight:700;font-size:0.98rem;background:var(--accent);color:#fff;border:none;border-radius:7px;padding:13px 22px;cursor:pointer;display:flex;align-items:center;gap:8px;}
.search-row button:hover{filter:brightness(1.08);}
.search-row button:disabled{opacity:.7;cursor:progress;}
.search-help{font-size:0.85rem;color:var(--muted);margin-top:10px;}
.err-msg{display:none;background:var(--err-soft);color:var(--err);border-radius:7px;padding:10px 13px;font-size:0.88rem;margin-top:12px;}
.err-msg.show{display:block;}

.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite;display:none;}
.spinner.show{display:inline-block;}
@keyframes spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion: reduce){.spinner{animation:none;}}

#result{margin-top:40px;display:none;}
#result.show{display:block;animation:fadeUp .35s ease both;}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){#result.show{animation:none;}}
.result-label{font-size:0.85rem;color:var(--muted);margin-bottom:10px;}
.result-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.result-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line);gap:12px;flex-wrap:wrap;}
.result-head .addr{font-weight:700;font-size:1.05rem;}
.result-head .addr .pc{color:var(--muted);font-weight:500;font-size:0.92rem;display:block;margin-top:2px;}
.pill{font-size:0.78rem;font-weight:700;letter-spacing:.03em;padding:5px 11px;border-radius:100px;background:var(--accent-soft);color:var(--accent-ink);}

.band-scale{padding:32px 24px 24px;}
.band-track{display:flex;border-radius:6px;overflow:hidden;height:44px;font-family:"Libre Franklin",sans-serif;}
.band-track > div{flex:1;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1.05rem;position:relative;}
.band-a{background:var(--band-a);flex:1.5 !important;}
.band-b{background:var(--band-b);}
.band-c{background:var(--band-c);}
.band-d{background:var(--band-d);color:#3a3006 !important;}
.band-e{background:var(--band-e);}
.band-f{background:var(--band-f);}
.band-g{background:var(--band-g);flex:1.5 !important;}
.marker{position:absolute;top:-32px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;transition:left .5s cubic-bezier(.2,.7,.3,1);}
.marker .tag{background:var(--ink);color:var(--ground);font-size:0.72rem;font-weight:700;padding:2px 7px;border-radius:5px;white-space:nowrap;}
.marker::after{content:"";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--ink);}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line);}
.stat{background:var(--surface);padding:18px 24px;}
.stat .k{font-size:0.78rem;color:var(--muted);margin-bottom:6px;}
.stat .v{font-size:1.15rem;font-weight:700;font-family:"IBM Plex Mono",monospace;}

.cluster{padding:56px 0 72px;}
.cluster h2{font-size:1.5rem;margin-bottom:6px;}
.cluster p.sub{color:var(--muted);margin:0 0 24px;}
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;}
.link-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:6px;transition:border-color .15s ease, transform .15s ease;}
.link-card:hover{border-color:var(--accent);transform:translateY(-1px);}
.link-card .tag{font-size:0.74rem;color:var(--accent-ink);font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.link-card .t{font-weight:700;}
.link-card .d{font-size:0.88rem;color:var(--muted);}

.article{padding:48px 0 72px;}
.article h1{font-size:2.1rem;margin-bottom:14px;max-width:20ch;}
.article .standfirst{color:var(--muted);font-size:1.08rem;max-width:60ch;margin-bottom:32px;}
.article h2{font-size:1.3rem;margin:36px 0 12px;}
.article p{max-width:66ch;margin:0 0 14px;}
.article ol,.article ul{max-width:66ch;padding-left:22px;}
.article li{margin-bottom:8px;}
.mini-tool{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin:32px 0;max-width:66ch;}
.mini-tool p{margin:0 0 12px;font-size:0.95rem;color:var(--muted);}

footer{border-top:1px solid var(--line);padding:24px 0 40px;color:var(--muted);font-size:0.85rem;}
