
/* Layout: a cool, document-like reference page. Controls on top, map and detail panel side by side on wide screens, rules table below. */
:root{
  --bg:#F3F5F8; --surface:#FFFFFF; --ink:#15202B; --muted:#586577; --line:#D6DDE5; --accent:#1558B0; --chip:#E9EEF4;
  --k1:#24497A; --k2:#2F9E6E; --k3:#C98A1B; --k4:#7B5AA8; --k5:#D4604C; --k6:#2FA3B5; --k7:#8E9138; --k8:#B24A8B; --k9:#8995A2;
  --s1:#2F9E6E; --s2:#C98A1B; --s3:#8995A2;
  --good:#1E7A4F; --warn:#9A6A00; --bad:#A33A2E;
  --font-display:"Libre Franklin","Helvetica Neue",Arial,sans-serif;
  --font-body:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0F151B; --surface:#17202A; --ink:#E5EAF0; --muted:#9AA8B8; --line:#2B3744; --accent:#79B0F5; --chip:#202B37;
  --k1:#5B88C4; --k2:#4DBB8B; --k3:#E0A640; --k4:#A184D0; --k5:#EC7E6B; --k6:#4CC0D2; --k7:#B0B455; --k8:#D26BAA; --k9:#7C8896;
  --s1:#4DBB8B; --s2:#E0A640; --s3:#7C8896;
  --good:#58C98D; --warn:#E3B23D; --bad:#F08A7C; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F151B; --surface:#17202A; --ink:#E5EAF0; --muted:#9AA8B8; --line:#2B3744; --accent:#79B0F5; --chip:#202B37;
  --k1:#5B88C4; --k2:#4DBB8B; --k3:#E0A640; --k4:#A184D0; --k5:#EC7E6B; --k6:#4CC0D2; --k7:#B0B455; --k8:#D26BAA; --k9:#7C8896;
  --s1:#4DBB8B; --s2:#E0A640; --s3:#7C8896;
  --good:#58C98D; --warn:#E3B23D; --bad:#F08A7C; color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.5;padding-inline:max(16px,3vw);padding-block:20px 48px;margin:0}
a{color:var(--accent)}
.wrap{max-width:1280px;margin:0 auto}
header.top{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between;padding-bottom:14px;border-bottom:2px solid var(--ink)}
h1{font-family:var(--font-display);font-weight:800;font-size:clamp(1.55rem,3.2vw,2.2rem);letter-spacing:-.01em;margin:0;line-height:1.1;text-wrap:balance}
.sub{margin:6px 0 0;color:var(--muted);max-width:62ch}
.stamp{font-family:var(--font-mono);font-size:12px;color:var(--muted);text-align:right}
.controls{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:16px 0}
.seg{display:inline-flex;border:1px solid var(--ink);border-radius:6px;overflow:hidden}
.seg button{font:600 14px var(--font-body);padding:8px 16px;background:var(--surface);color:var(--ink);border:0;cursor:pointer}
.seg button+button{border-left:1px solid var(--ink)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,th button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.search{flex:1 1 220px;max-width:380px;font:15px var(--font-body);padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}
.grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:980px){.grid{grid-template-columns:minmax(0,1fr)}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:8px}
.mapcard{padding:10px 10px 12px;position:relative}
svg.map{display:block;width:100%;height:auto}
.reg{stroke:var(--surface);stroke-width:.6;cursor:pointer;transition:opacity .15s}
.reg:hover{stroke:var(--ink);stroke-width:1.6}
.reg.sel{stroke:var(--ink);stroke-width:2.4}
.reg.dim{opacity:.18}
.k1{fill:var(--k1)}.k2{fill:var(--k2)}.k3{fill:var(--k3)}.k4{fill:var(--k4)}.k5{fill:var(--k5)}.k6{fill:var(--k6)}.k7{fill:var(--k7)}.k8{fill:var(--k8)}.k9{fill:var(--k9)}
.s1{fill:var(--s1)}.s2{fill:var(--s2)}.s3{fill:var(--s3)}
.mesh{fill:none;stroke:var(--surface);stroke-width:1.1;pointer-events:none}
.inset-label{font:500 10px var(--font-mono);fill:var(--muted)}
.inset-box{fill:none;stroke:var(--line)}
.srcq summary{cursor:pointer;color:var(--accent);font-weight:600;margin:2px 0 8px}.q{margin:0 0 12px}.ql{font:600 12px var(--font-display);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}.q blockquote{margin:0 0 3px}.q .ext{font-size:12px}
.tip{position:absolute;pointer-events:none;z-index:5;width:min(400px,86%);background:var(--surface);color:var(--ink);border:1px solid var(--ink);border-radius:6px;padding:10px 12px;font-size:13px;line-height:1.4;box-shadow:0 6px 20px rgba(0,0,0,.18)}
.tip h3{margin:0 0 4px;font:700 15px var(--font-display)}
.tip dl{margin:6px 0 0;display:grid;grid-template-columns:auto 1fr;gap:2px 8px}
.tip dt{color:var(--muted)} .tip dd{margin:0}
.legend{display:flex;flex-wrap:wrap;gap:6px 8px;margin:10px 4px 0}
.legend button{display:inline-flex;align-items:center;gap:7px;font:500 13px var(--font-body);padding:4px 10px 4px 8px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink);cursor:pointer}
.legend button[aria-pressed="true"]{border-color:var(--ink);background:var(--chip)}
.sw{width:12px;height:12px;border-radius:3px;flex:none}
.legend .n{font-family:var(--font-mono);font-size:12px;color:var(--muted)}
.detail{padding:16px 18px;min-height:240px}
.detail h2{font:800 1.35rem var(--font-display);margin:0 0 2px}
.detail .meta{color:var(--muted);font-size:13px;margin-bottom:10px}
.detail h4{font:700 12px var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 6px;border-top:1px solid var(--line);padding-top:10px}
.detail dl{display:grid;grid-template-columns:minmax(92px,.4fr) 1fr;gap:5px 12px;margin:0}
.detail dt{color:var(--muted);font-size:13px} .detail dd{margin:0;overflow-wrap:anywhere}
.nf{color:var(--muted);font-style:italic}.none{font-weight:600}.gaps{margin:6px 0 0}.gaps summary{cursor:pointer;color:var(--accent);font-size:13px;margin-bottom:6px}
.cite{font-family:var(--font-mono);font-size:12.5px}
blockquote{margin:8px 0 0;padding:8px 12px;border-left:3px solid var(--good);background:var(--chip);font-size:13px;overflow-wrap:anywhere}
.links{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px}
.badge{display:inline-block;font:600 11.5px var(--font-mono);padding:2px 8px;border-radius:99px;border:1px solid currentColor;white-space:nowrap}
.b-H{color:var(--good)}.b-M{color:var(--warn)}.b-L{color:var(--bad)}
.empty{color:var(--muted);padding:6px 0}
section.tbl{margin-top:26px}
section.tbl h2{font:800 1.3rem var(--font-display);margin:0 0 8px}
.tools{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-bottom:10px}
.tools select{font:14px var(--font-body);padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}
.count{font-family:var(--font-mono);font-size:12.5px;color:var(--muted)}
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:900px;font-size:14px}
th,td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{position:sticky;top:0;background:var(--chip);font:700 12px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
th button{all:unset;cursor:pointer;display:inline-flex;gap:4px;align-items:center}
th button[data-dir="asc"]::after{content:"\25B2";font-size:9px} th button[data-dir="desc"]::after{content:"\25BC";font-size:9px}
tbody tr{cursor:pointer} tbody tr:hover{background:var(--chip)} tbody tr.sel{background:var(--chip);box-shadow:inset 3px 0 0 var(--ink)}
td.name{font-weight:600;white-space:nowrap}
td .dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px;vertical-align:-1px}
td.lk a{margin-right:8px;white-space:nowrap}
footer{margin-top:30px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;max-width:90ch}
footer p{margin:0 0 8px}

.rptb{all:unset;cursor:pointer;color:var(--accent);text-decoration:underline;font:inherit}
.rptb:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
dialog#rpt{border:1px solid var(--ink);border-radius:8px;background:var(--surface);color:var(--ink);padding:18px 20px;width:min(520px,calc(100vw - 32px))}
dialog#rpt::backdrop{background:rgba(0,0,0,.45)}
dialog#rpt h2{font:800 1.15rem var(--font-display);margin:0 0 10px}
dialog#rpt label{display:block;font:600 13px var(--font-body);margin:10px 0 4px}
dialog#rpt input,dialog#rpt textarea{width:100%;font:15px var(--font-body);padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
dialog#rpt textarea{min-height:120px;resize:vertical}
dialog#rpt .row{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
dialog#rpt .row button{font:600 14px var(--font-body);padding:8px 16px;border-radius:6px;border:1px solid var(--ink);cursor:pointer;background:var(--surface);color:var(--ink)}
dialog#rpt .row button.go{background:var(--ink);color:var(--bg)}
dialog#rpt .note{font-size:12.5px;color:var(--muted);margin:8px 0 0}
dialog#rpt .msg{margin-top:10px;font-size:14px}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

nav.site{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;padding:2px 0 12px;font:600 14px var(--font-display)}
nav.site .brand{font-weight:800;font-size:16px;margin-right:auto;color:var(--ink);text-decoration:none}
nav.site a{text-decoration:none}
.crumbs{font-size:13px;color:var(--muted);margin:4px 0 12px}
.page{padding:22px 24px;max-width:960px;margin:0 auto}
.page h1{font:800 1.7rem var(--font-display);margin:0 0 4px;line-height:1.15}
.page h2{font:800 1.15rem var(--font-display);margin:22px 0 6px;border-top:1px solid var(--line);padding-top:12px}
.prose{max-width:78ch}.prose h2{font:800 1.2rem var(--font-display);margin:24px 0 6px}.prose p{margin:0 0 10px}
.prose dl.terms{display:block}.prose dl.terms dt{font-weight:700;color:var(--ink);margin-top:8px}.prose dl.terms dd{margin:0 0 4px}
section.prose{margin:28px 0}
ul.cols{columns:3 200px;column-gap:24px;list-style:none;padding:0;margin:8px 0 18px}
ul.cols li{break-inside:avoid;margin:0 0 4px}
.faq h3{font:700 1rem var(--font-display);margin:14px 0 4px}.faq p{margin:0 0 8px}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.tbl td.name .meta{font-size:12px;color:var(--muted)}
