/* ════════════════════════════════════════════════════════════════════════
   CITY POLICY DATABASE
   Aged bronze and verdigris on warm near-black.
   A vitrine is lit from one side only: nothing glows here but the evidence.
   ═══════════════════════════════════════════════════════════════════════ */
:root{
  /* warm near-black — never blue-black, never neutral grey */
  --ground:#0B0A08; --surface:#14120F; --surface-2:#1C1915; --surface-3:#241F19;
  --hairline:#2E2922; --hairline-lit:#453C2E;

  /* 古铜 aged bronze */
  --bronze:#C6A664; --bronze-hi:#E4D2A8; --bronze-lo:#8A7440; --bronze-deep:#5A4A28;
  /* 铜绿 verdigris — the only cold light on the page */
  --patina:#8FD8D2; --patina-lo:#4E8B87; --patina-deep:#2C5B57;

  --ink:#F1ECE3; --ink-2:#B8AFA2; --ink-3:#908678; --ink-4:#625A4E;
  --pass:#7FB685; --fail:#C2695A; --pend:#B9955A;

  --f-display:"Bodoni Moda",'Didot','Bodoni MT',Georgia,serif;
  --f-ui:"Archivo","Avenir Next","Gill Sans",sans-serif;
  --f-data:"IBM Plex Mono","Courier Prime",monospace;

  --glow-patina:0 0 22px rgba(143,216,210,.20);
  --glow-bronze:0 0 24px rgba(198,166,100,.16);
  --lift:0 18px 46px rgba(0,0,0,.6);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  background:var(--ground);color:var(--ink);
  font:400 1rem/1.55 var(--f-ui);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
button,input,select{font:inherit;color:inherit;background:none;border:0}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
:disabled{cursor:not-allowed;opacity:.52}
[hidden]{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:1px solid var(--patina);outline-offset:3px}
::selection{background:rgba(143,216,210,.22);color:var(--ink)}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--hairline-lit)}
::-webkit-scrollbar-track{background:transparent}

.num{font-family:var(--f-data);font-variant-numeric:tabular-nums}
.eyebrow{font:500 .875rem/1 var(--f-data);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}
.icon{width:15px;height:15px;stroke-width:1.6;flex:0 0 auto}

/* ── shell ───────────────────────────────────────────────────────────── */
#app{position:relative;display:grid;grid-template-columns:296px minmax(0,1fr);height:calc(100svh - 76px);min-height:700px}
#app:focus{outline:0}

/* ── rail ────────────────────────────────────────────────────────────── */
#rail{
  background:linear-gradient(180deg,var(--surface) 0%,var(--ground) 58%);
  border-right:1px solid var(--hairline);
  display:flex;flex-direction:column;min-height:0;position:relative;z-index:45;
}
#rail::after{content:"";position:absolute;top:0;bottom:0;right:-1px;width:1px;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(198,166,100,.32) 22%,transparent 68%)}
.railclose{display:none}

.brand{padding:26px 24px 0}
.brandline{display:flex;gap:14px;align-items:flex-start}
.monogram{
  width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;
  border:1px solid var(--bronze-lo);color:var(--bronze-hi);
  font:500 .875rem var(--f-data);letter-spacing:.06em;
  background:radial-gradient(circle at 50% 130%,rgba(198,166,100,.22),transparent 72%);
  box-shadow:var(--glow-bronze);transform:translateY(2px);
}
.brand h1{font:400 26px/.98 var(--f-display);letter-spacing:.004em}
.brand h1 em{font-style:italic;color:var(--bronze-hi)}
.brand .sub{margin:11px 0 20px 52px;color:var(--ink-3);font-size:.875rem;line-height:1.45;max-width:25ch}

.tally{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}
.tally div{padding:13px 12px 14px}
.tally div+div{border-left:1px solid var(--hairline)}
.tally b{display:block;font:500 18px var(--f-data);color:var(--bronze-hi);line-height:1}
.tally span{display:block;margin-top:5px;font:500 .875rem var(--f-data);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3)}

.boundary{margin:14px 18px 10px;padding:11px 13px;border-left:2px solid var(--patina-lo);background:rgba(20,18,15,.58)}
.boundary strong{display:flex;align-items:center;gap:7px;font:500 .875rem var(--f-data);letter-spacing:.14em;text-transform:uppercase;color:var(--patina)}
.boundary p{font-size:.875rem;color:var(--ink-2);margin-top:6px;line-height:1.45}
.boundary p b{font-weight:500;color:var(--ink)}
.boundary p+p{margin-top:6px}
.boundary a{display:inline-flex;align-items:center;gap:5px;margin-top:9px;color:var(--bronze-hi);font:500 .875rem var(--f-data);letter-spacing:.05em}
.boundary a:hover{color:var(--patina)}

#facets{flex:1;overflow-y:auto;min-height:0}
.grp{border-bottom:1px solid var(--hairline)}
.grp>summary{padding:12px 22px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;
  font:500 .875rem var(--f-data);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-2)}
.grp>summary::-webkit-details-marker{display:none}
.grp>summary::after{content:"+";font-size:.875rem;color:var(--ink-3)}
.grp[open]>summary::after{content:"−"}
.grp>summary:hover{color:var(--bronze-hi)}
.opts{padding:0 22px 14px}
.opt{display:flex;align-items:flex-start;gap:10px;padding:5px 0;color:var(--ink-2);font-size:.875rem;cursor:pointer;line-height:1.32}
.opt:hover{color:var(--ink)}
.opt.on{color:var(--patina)}
.opt input{appearance:none;width:12px;height:12px;flex:0 0 12px;border:1px solid var(--hairline-lit);margin-top:2px;background:var(--ground)}
.opt input:checked{background:var(--patina);border-color:var(--patina);box-shadow:0 0 10px rgba(143,216,210,.45)}
.opt .c{margin-left:auto;font:.875rem var(--f-data);color:var(--ink-3)}
.opt .sw{width:7px;height:7px;border-radius:50%;margin-top:5px;flex:0 0 7px}
.opt .lg{display:block}
.opt .lg small{display:block;color:var(--ink-3);font-size:.875rem;line-height:1.3}

.railfoot{padding:15px 18px 19px;border-top:1px solid var(--hairline);display:grid;gap:9px}
.action{min-height:39px;display:flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--hairline-lit);padding:9px 12px;
  font:500 .875rem var(--f-data);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.action:hover{border-color:var(--bronze-lo);color:var(--bronze-hi);background:var(--surface-2)}
.action.primary{background:linear-gradient(180deg,var(--bronze) 0%,#A2854A 100%);border-color:var(--bronze);color:#17130A;font-weight:600;box-shadow:var(--glow-bronze)}
.action.primary:hover{background:linear-gradient(180deg,var(--bronze-hi) 0%,var(--bronze) 100%)}

/* ── stage ───────────────────────────────────────────────────────────── */
#stage{position:relative;overflow:hidden;background:var(--ground)}
#map{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:default;touch-action:manipulation}
#vignette{position:absolute;inset:0;pointer-events:none;z-index:5;
  background:radial-gradient(ellipse at 50% 46%,transparent 40%,rgba(5,4,3,.60) 100%)}
.mobilebar{position:absolute;top:18px;left:18px;z-index:25;display:none}
.iconbtn{min-width:70px;height:40px;padding:0 13px;border:1px solid var(--hairline-lit);background:rgba(20,18,15,.9);
  display:grid;place-items:center;font:500 .875rem var(--f-data);letter-spacing:.12em;text-transform:uppercase;color:var(--bronze-hi)}
.iconbtn:hover{border-color:var(--bronze-lo);background:var(--surface-2)}
#railShade{display:none}

/* ── search ──────────────────────────────────────────────────────────── */
#searchwrap{position:absolute;top:20px;left:50%;transform:translateX(-50%);width:min(700px,calc(100% - 260px));z-index:20}
.sbar{height:48px;display:flex;align-items:center;gap:13px;padding:0 15px;position:relative;
  background:rgba(20,18,15,.88);backdrop-filter:blur(20px) saturate(1.15);
  border:1px solid var(--hairline-lit);box-shadow:var(--lift)}
.sbar::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(228,210,168,.32),transparent)}
.sbar:focus-within{border-color:var(--patina-lo);box-shadow:var(--lift),0 0 0 1px rgba(143,216,210,.16)}
.sbar .icon{color:var(--ink-3)}
.sbar input{flex:1;min-width:0;font-size:.875rem}
.sbar input::placeholder{color:var(--ink-3)}
.kbd{font:.875rem var(--f-data);color:var(--ink-3);border:1px solid var(--hairline-lit);padding:2px 5px}
.deeptoggle{border-left:1px solid var(--hairline-lit);padding-left:13px;color:var(--bronze-hi);
  font:500 .875rem var(--f-data);letter-spacing:.11em;text-transform:uppercase;white-space:nowrap}
.deeptoggle:hover{color:var(--patina)}

#deep{display:none;background:rgba(17,15,12,.965);backdrop-filter:blur(20px);
  border:1px solid var(--hairline-lit);border-top:0;padding:19px;box-shadow:var(--lift);
  max-height:calc(100vh - 88px);overflow-y:auto;overscroll-behavior:contain}
#deep.open{display:block}
#deep h4{font:500 .875rem var(--f-data);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
.filter-intro{margin:-4px 0 16px;max-width:66ch;color:var(--ink-2);font-size:.875rem;line-height:1.5}
.dgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.date-place{margin-top:18px;padding-top:16px;border-top:1px solid var(--hairline)}
.filter-definitions{margin-right:auto;font-size:.875rem;color:var(--bronze-hi)}
.fld{min-width:0}
.fld.wide{grid-column:span 3}
.fld label,.fld .fieldlabel{display:block;font:500 .875rem var(--f-data);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
.fld select,.fld input{width:100%;min-height:44px;background:var(--ground);border:1px solid var(--hairline);padding:8px 9px;font-size:.875rem;color:var(--ink)}
.fld select:focus,.fld input:focus{border-color:var(--patina-lo);outline:0}
.fld select option{background:var(--surface);color:var(--ink)}
.drow{display:flex;gap:8px}
.deepfoot{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--hairline)}
.btn{border:1px solid var(--hairline-lit);padding:9px 13px;font:500 .875rem var(--f-data);letter-spacing:.11em;text-transform:uppercase;white-space:nowrap;color:var(--ink-2)}
.btn:hover{border-color:var(--bronze-lo);color:var(--bronze-hi);background:var(--surface-2)}
.btn.pri{background:var(--patina);border-color:var(--patina);color:#06100F;font-weight:600;box-shadow:var(--glow-patina)}
.btn.pri:hover{background:#A9E7E1}

.essentials{position:absolute;top:78px;left:50%;transform:translateX(-50%);z-index:15;display:flex;align-items:stretch;gap:8px;
  width:max-content;max-width:calc(100% - 160px)}
.essential-group,.essential-select{min-height:44px;border:1px solid var(--hairline-lit);background:rgba(20,18,15,.82);
  backdrop-filter:blur(14px) saturate(1.08);box-shadow:0 12px 30px rgba(0,0,0,.3)}
.essential-group{display:flex;align-items:stretch}
.essential-name,.essential-select span{display:flex;align-items:center;padding:0 12px;color:var(--ink-3);
  font:500 .875rem var(--f-data);letter-spacing:.11em;text-transform:uppercase;white-space:nowrap}
.essential-name{border-right:1px solid var(--hairline)}
.top-choice{min-height:44px;padding:0 13px;border-left:1px solid var(--hairline);color:var(--ink-2);
  font:500 .875rem var(--f-data);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.essential-name+.top-choice{border-left:0}
.top-choice:hover{color:var(--bronze-hi);background:var(--surface-2)}
.top-choice.active{color:#091210;background:var(--patina);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.essential-select{display:flex;align-items:stretch}
.essential-select span{border-right:1px solid var(--hairline)}
.essential-select select{min-width:146px;height:44px;padding:0 30px 0 11px;background:var(--surface);color:var(--ink-2);
  font:500 .875rem var(--f-ui);border-radius:0}
.essential-select select:hover,.essential-select select.active{color:var(--bronze-hi);background:var(--surface-2)}
.essential-select select option{background:var(--surface);color:var(--ink)}

/* ── readout ─────────────────────────────────────────────────────────── */
#readout{position:absolute;left:26px;bottom:24px;z-index:15;display:flex;align-items:flex-end;gap:18px 26px;flex-wrap:wrap;max-width:min(760px,calc(100% - 52px))}
#readout .big{font:400 46px/.86 var(--f-display);color:var(--bronze-hi);text-shadow:0 0 32px rgba(228,210,168,.20)}
#readout .lbl{font:500 .875rem var(--f-data);letter-spacing:.17em;text-transform:uppercase;color:var(--ink-3);margin-top:8px}
#emptyState{flex:1 0 100%;display:flex;align-items:center;justify-content:space-between;gap:18px;max-width:590px;padding:13px 14px;background:rgba(20,18,15,.92);border:1px solid var(--hairline-lit);box-shadow:var(--lift)}
#emptyState strong{display:block;font:500 .875rem var(--f-data);letter-spacing:.13em;text-transform:uppercase;color:var(--bronze-hi)}
#emptyState p{margin-top:4px;max-width:56ch;font-size:.875rem;line-height:1.42;color:var(--ink-2)}
#emptyState button{flex:0 0 auto;min-height:34px;padding:7px 10px;border:1px solid var(--bronze-lo);font:500 .875rem var(--f-data);letter-spacing:.1em;text-transform:uppercase;color:var(--bronze-hi)}
#emptyState button:hover{background:var(--surface-2);border-color:var(--bronze-hi)}
#legend{display:flex;flex-direction:column;gap:6px;padding-bottom:4px}
#legend div{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--ink-3)}
#legend i{width:7px;height:7px;border-radius:50%;display:block;flex:0 0 7px}
#legend div{color:var(--ink-2);line-height:1.35;max-width:230px}
#legend i{width:8px;height:8px;flex-basis:8px}

#tip{position:absolute;z-index:30;pointer-events:none;display:none;max-width:252px;
  background:rgba(11,10,8,.96);border:1px solid var(--hairline-lit);padding:11px 13px;box-shadow:var(--lift)}
#tip .n{font:400 17px/1.12 var(--f-display);color:var(--bronze-hi)}
#tip .nn{font-size:.875rem;color:var(--ink-3);margin-top:2px}
#tip .c{font-size:.875rem;color:var(--ink-3);margin-top:6px}
#tip .t{display:flex;gap:5px;margin-top:9px;flex-wrap:wrap}
#tip .t span{font:.875rem var(--f-data);letter-spacing:.07em;border:1px solid var(--patina-lo);color:var(--patina);padding:1px 5px}
#tip .alt{margin-top:8px;font-size:.875rem;color:var(--pend);line-height:1.4}
.tip-files{display:grid;gap:7px;margin-top:10px}
.tip-files>div{display:flex;gap:8px;align-items:flex-start;justify-content:space-between}
.tip-files strong{font:500 .75rem/1.5 var(--f-ui);color:var(--ink)}
.tip-files>div>span{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.tip-mark{font:.6875rem/1.5 var(--f-ui);color:var(--mark-color);border:1px solid var(--mark-color);padding:1px 4px}

/* ── dossier ─────────────────────────────────────────────────────────── */
#dossier{position:absolute;top:0;right:0;bottom:0;width:470px;max-width:100%;z-index:40;
  background:var(--ground);border-left:1px solid var(--hairline);
  transform:translateX(100%);transition:transform .55s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column}
#dossier.open{transform:none;box-shadow:-30px 0 72px rgba(0,0,0,.62)}
.dhead{padding:26px 28px 22px;border-bottom:1px solid var(--hairline);position:relative;background:var(--surface)}
.dhead .close{position:absolute;top:17px;right:19px;color:var(--ink-3);display:grid;place-items:center;width:36px;height:36px}
.dhead .close:hover{color:var(--patina)}
.dhead h2{font:400 32px/1.02 var(--f-display);margin-top:9px;padding-right:34px}
.dhead .native{font-size:.875rem;color:var(--ink-2);margin-top:4px}
.dhead .meta{margin-top:11px;font-size:.875rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:5px 13px}
.dhead .meta b{color:var(--ink-2);font-weight:400}
.dmethod{display:inline-flex;margin-top:12px;color:var(--bronze-hi);font:500 .875rem var(--f-data);letter-spacing:.06em}
.dmethod:hover{color:var(--patina)}
.dhelp{margin-top:13px;max-width:39ch;font-size:.875rem;line-height:1.45;color:var(--ink-3)}

#dbody{flex:1;overflow-y:auto;min-height:0;padding:4px 28px 36px}
.doc{padding:21px 0;border-bottom:1px solid var(--hairline)}
.doc .top{display:flex;align-items:center;gap:10px}
.doc .code{font:500 .875rem var(--f-data);letter-spacing:.12em;border:1px solid var(--bronze-lo);color:var(--bronze-hi);padding:2px 7px}
.doc .yr{margin-left:auto;font:.875rem var(--f-data);color:var(--ink-3)}
.doc h3{font-size:14px;font-weight:500;line-height:1.42;margin-top:11px;color:var(--ink)}
.doc .tr{margin-top:7px;padding-left:11px;border-left:1px solid var(--hairline-lit)}
.doc .tr .trtag{font:.875rem var(--f-data);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:3px}
.doc .tr .trtag.official{color:var(--patina-lo)}
.doc .tr p{font-size:.875rem;line-height:1.45;color:var(--ink-2)}
.doc .facts{margin-top:10px;font:.875rem var(--f-data);color:var(--ink-3);display:flex;flex-wrap:wrap;gap:4px 12px}
.fileflags{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:11px}
.fileflags span{padding-left:8px;border-left:1px solid var(--bronze-lo);color:var(--bronze-hi);
  font:500 .875rem/1.35 var(--f-data);letter-spacing:.04em}
.dlrow{display:flex;gap:9px;margin-top:13px;flex-wrap:wrap}
.dlrow a{display:inline-flex;align-items:center;gap:6px;font:500 .875rem var(--f-data);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--hairline-lit);padding:8px 12px}
.dlrow a:hover{border-color:var(--bronze-lo);color:var(--bronze-hi)}
.dlrow a.primary{border-color:var(--patina-lo);color:var(--patina);background:rgba(143,216,210,.06)}
.dlrow a.primary:hover{background:rgba(143,216,210,.12);color:var(--ink)}

/* ── results sheet ───────────────────────────────────────────────────── */
#sheet{position:absolute;left:0;right:0;bottom:0;z-index:35;height:min(70vh,620px);
  background:var(--ground);border-top:1px solid var(--hairline-lit);
  transform:translateY(100%);transition:transform .55s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column}
#sheet.open{transform:none;box-shadow:0 -26px 62px rgba(0,0,0,.58)}
.shead{display:flex;align-items:center;gap:16px;padding:15px 26px;border-bottom:1px solid var(--hairline);background:var(--surface)}
.shead .n{font:400 24px var(--f-display);color:var(--bronze-hi)}
.shead .lbl{font:500 .875rem var(--f-data);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3)}
.shead .x{margin-left:auto;color:var(--ink-3);display:grid;place-items:center;width:36px;height:36px}
.shead .x:hover{color:var(--patina)}
#tbl{flex:1;overflow:auto;min-height:0}
#tbl table{min-width:1180px}
table{width:100%;border-collapse:collapse;font-size:.875rem}
th{position:sticky;top:0;background:var(--surface-2);text-align:left;font:500 .875rem var(--f-data);
  letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);padding:10px 15px;
  border-bottom:1px solid var(--hairline-lit);white-space:nowrap;z-index:1}
td{padding:10px 15px;border-bottom:1px solid var(--hairline);color:var(--ink-2);vertical-align:top}
tr:hover td{background:var(--surface);color:var(--ink)}
#tbl th:first-child,#tbl td:first-child{position:sticky;left:0;min-width:145px;background:var(--ground);z-index:2;
  border-right:1px solid var(--hairline);box-shadow:10px 0 16px rgba(5,5,4,.34)}
#tbl th:first-child{background:var(--surface-2);z-index:3}
#tbl tr:hover td:first-child{background:var(--surface)}
td.mono{font:.875rem var(--f-data)}
td .code{font:.875rem var(--f-data);border:1px solid var(--bronze-lo);color:var(--bronze-hi);padding:1px 5px;white-space:nowrap}
td .tr2{display:block;margin-top:3px;font-size:.875rem;color:var(--ink-3);line-height:1.35}
.ttl{max-width:430px;line-height:1.4}
.actions{position:sticky;right:0;z-index:2;white-space:nowrap;background:var(--ground);
  border-left:1px solid var(--hairline);box-shadow:-12px 0 18px rgba(5,5,4,.42)}
th:last-child{right:0;z-index:3;border-left:1px solid var(--hairline-lit);box-shadow:-12px 0 18px rgba(5,5,4,.42)}
tr:hover td.actions{background:var(--surface)}
.actions button,.actions a{display:inline-flex;align-items:center;min-height:28px;padding:5px 8px;border:1px solid var(--hairline-lit);
  color:var(--ink-2);font:500 .875rem var(--f-data);letter-spacing:.08em;text-transform:uppercase}
.actions a{margin-left:5px;border-color:var(--patina-lo);color:var(--patina)}
.actions button:hover,.actions a:hover{color:var(--ink);border-color:var(--bronze-lo);background:var(--surface-2)}

#toast{position:absolute;left:50%;bottom:26px;transform:translate(-50%,20px);z-index:60;
  background:var(--surface-2);border:1px solid var(--hairline-lit);padding:11px 18px;
  font:500 .875rem var(--f-data);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);
  opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;box-shadow:var(--lift)}
#toast.on{opacity:1;transform:translate(-50%,0)}

@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms !important;animation-duration:.01ms !important}}
@media (max-width:1080px){
  #app{grid-template-columns:1fr}
  #rail{position:absolute;left:0;top:0;bottom:0;width:296px;transform:translateX(-100%);transition:transform .4s cubic-bezier(.16,1,.3,1)}
  #rail.open{transform:none;box-shadow:26px 0 60px rgba(0,0,0,.6)}
  .railclose{display:block;position:absolute;top:17px;right:16px;z-index:2;min-height:36px;padding:7px 10px;border:1px solid var(--hairline-lit);
    font:500 .875rem var(--f-data);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);background:var(--surface)}
  .railclose:hover{color:var(--patina);border-color:var(--patina-lo)}
  #railShade{display:block;position:absolute;inset:0;z-index:44;background:rgba(5,4,3,.6);opacity:0;pointer-events:none;transition:opacity .3s}
  #railShade.on{opacity:1;pointer-events:auto}
  .mobilebar{display:block}
  #searchwrap{width:calc(100% - 36px);top:70px}
  .essentials{top:130px;max-width:calc(100% - 36px)}
  #dossier{width:100%}
  .dgrid{grid-template-columns:1fr 1fr}
  .fld.wide{grid-column:span 2}
}
@media (max-width:640px){
  .dgrid{grid-template-columns:1fr}
  .fld.wide{grid-column:1/-1}
  .kbd{display:none}
  .essentials{width:calc(100% - 36px);display:grid;grid-template-columns:1fr;gap:6px}
  .essential-group{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .essential-name{display:none}
  .top-choice{min-width:0;padding:0 5px;font-size:.875rem;letter-spacing:.045em}
  .top-choice:nth-child(2){border-left:0}
  .essential-select{display:grid;grid-template-columns:auto minmax(0,1fr)}
  .essential-select select{min-width:0;width:100%}
  #readout{left:18px;right:18px;bottom:18px;gap:14px 18px;max-width:none}
  #readout .big{font-size:36px}
  #emptyState{align-items:flex-start;gap:10px;padding:11px 12px}
  #emptyState button{min-height:36px}
  #legend{flex-basis:100%}
  .actions button,.actions a{min-height:36px}
}
@media (max-width:420px){
  #emptyState{flex-direction:column;align-items:stretch}
  #emptyState button{align-self:flex-start}
}

.doc.dim{opacity:.6}
.doc .dimtag{font:500 .875rem/1 var(--f-ui);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);border:1px solid var(--hairline);display:inline-block;padding:4px 8px;
  border-radius:2px;margin-bottom:10px}

/* ── document navigation ───────────────────────────────────────────── */
/* No height:100% coupling and no overflow-x:hidden anywhere near html/body:
   either one quietly reroutes page scrolling from the window to an element.
   clip forbids horizontal overflow without creating a scroll container. */
html{scroll-behavior:smooth;overflow-x:clip}
.skip-link{position:fixed;top:-48px;left:16px;z-index:200;padding:10px 16px;background:var(--surface-2);
  color:var(--bronze-hi);border:1px solid var(--hairline-lit);font:500 .875rem var(--f-ui);transition:top .2s}
.skip-link:focus{top:12px}
/* loading overlay */
#loading{
  position:absolute;inset:0;z-index:14;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 46%,rgba(20,18,15,.68),rgba(11,10,8,.96) 68%);
  text-align:center;transition:opacity .28s ease,visibility .28s ease;
}
#loading.done{opacity:0;visibility:hidden;pointer-events:none}
#loading.failed{z-index:70}
#app.load-failed #searchwrap,#app.load-failed .essentials,#app.load-failed #rail{opacity:.45}
.loadmark{width:52px;height:52px;margin:0 auto 18px;border:1px solid var(--bronze-lo);display:grid;place-items:center;
  color:var(--bronze-hi);font:500 .875rem var(--f-data);letter-spacing:.12em;box-shadow:var(--glow-bronze)}
.loadcopy strong{display:block;font:400 27px/1.1 var(--f-display);color:var(--bronze-hi)}
.loadcopy span{display:block;margin-top:8px;color:var(--ink-2);font-size:.875rem}
.loadcopy small{display:block;margin-top:6px;color:var(--ink-3);font:.875rem var(--f-data);letter-spacing:.12em;text-transform:uppercase}
.loadcopy.error strong{color:var(--fail)}
@media(max-width:760px){.loadcopy strong{font-size:23px}}


/* Compact research workspace; controls reflow above the map. */
.database-header{min-height:76px;padding:14px 24px;display:flex;align-items:center;gap:12px 28px;flex-wrap:wrap;border-bottom:1px solid var(--hairline);background:var(--surface)}
.database-name{font:400 1.6rem/1.1 var(--f-display);color:var(--ink)}
.database-name em{color:var(--bronze-hi)}
.database-header p{font-size:.875rem;color:var(--ink-2)}
.spec-link{margin-left:auto;font-size:.875rem;color:var(--bronze-hi)}
#stage{display:flex;flex-direction:column}
.workspace-tools{position:relative;z-index:20;padding:20px 24px 14px;background:linear-gradient(var(--ground),rgba(11,10,8,.96));border-bottom:1px solid var(--hairline);flex:0 0 auto}
#searchwrap{position:relative;top:auto;left:auto;transform:none;width:100%;z-index:25}
.sbar{min-height:48px;height:auto;padding:8px 12px}
.sbar input{font-size:1rem}
#deep{position:absolute;left:0;right:0;top:100%;max-height:min(70svh,650px)}
.essentials{position:static;transform:none;width:100%;max-width:none;margin-top:12px;display:flex;flex-wrap:wrap;gap:8px}
.essential-group{flex-wrap:wrap}
.essential-name{display:none}
.essential-select select{min-width:0;max-width:100%;font-size:.875rem;flex:1;height:auto;min-height:44px}
.essential-select{min-width:0;max-width:100%}
.essential-select span{font-size:.875rem;padding:0 10px}
.essential-select select{width:200px}
.network-select select{width:165px}
.top-choice{padding:0 12px}
.btn,.action,.top-choice,.iconbtn,.deeptoggle,.essential-select span,.grp>summary,.fld label,.fld .fieldlabel,.railclose{font-family:var(--f-ui);font-size:.875rem;letter-spacing:0;text-transform:none}
.btn,.action,.iconbtn,.filter-tag{min-height:40px;white-space:normal}
.filter-actions{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin-top:12px}
#activeFilters{display:flex;gap:6px;flex-wrap:wrap;flex:1 1 200px}
.filter-tag{padding:7px 10px;color:var(--patina);border:1px solid var(--patina-deep);background:var(--surface);font-size:.875rem;text-align:left;overflow-wrap:anywhere}
.filter-tag:hover{border-color:var(--patina);background:var(--surface-2)}
.filter-tag span{margin-left:6px}
.network-note,.scope-note{font-size:.875rem;line-height:1.5;color:var(--ink-2)}
.network-note{margin-top:9px}
.network-note a{color:var(--patina);text-decoration:underline;text-underline-offset:3px}
.map-surface{position:relative;flex:1 1 auto;min-height:340px}
#readout{gap:14px 24px;max-width:calc(100% - 48px);pointer-events:none}
#emptyState{pointer-events:auto}
#readout .lbl,.tally span{font:400 .875rem/1.35 var(--f-ui);letter-spacing:0;text-transform:none}
.scope-note{flex-basis:100%}
#legend{flex-basis:100%}
#legend div{font-size:.75rem;line-height:1.4}
.boundary p,.brand .sub{font-size:.875rem}
.brand .sub{margin-left:0;max-width:none}
.boundary{margin:10px 18px;padding:8px 10px}
.boundary strong{font:.875rem var(--f-ui);letter-spacing:0;text-transform:none}
.brand{padding:22px 22px 0}
.brand .sub{margin-bottom:16px}
.tally div{padding:12px 8px}
.tally b{font-size:1.25rem}
.opt input{width:16px;height:16px;flex-basis:16px}
.opt{padding:7px 0}
.opt .lg small,.opt .c{font-size:.75rem}
#facets{min-height:100px}
.field-error{font-size:.875rem;color:#F0B5A9;margin-top:7px}
.fld input[aria-invalid=true]{border-color:var(--fail)}
.c40-badge{display:inline-block;padding:2px 7px;border:1px solid var(--patina-deep);color:var(--patina);font:500 .75rem/1.4 var(--f-ui)}
td .c40-badge{display:block;width:max-content;margin-top:5px}
.membership-note{flex-basis:100%;font-size:.875rem;color:var(--ink-2)}
.back-results{display:block;margin-bottom:14px;color:var(--patina);font-size:.875rem;min-height:36px;padding-right:30px}
.doc h3{font-size:1rem}
.doc .tr p{font-size:1rem}
.doc .facts,.doc .tr .trtag,.fileflags span{font-size:.75rem;line-height:1.5;letter-spacing:0;text-transform:none}
.dhelp{font-size:.875rem}
.shead{flex-wrap:wrap;gap:8px 12px;padding:12px 18px}
.shead .lbl{font-family:var(--f-ui);letter-spacing:0;text-transform:none}
#tbl table{font-size:.875rem}
#tbl th{font:.875rem/1.4 var(--f-ui);letter-spacing:0;text-transform:none;white-space:normal;min-width:90px}
.table-empty{padding:26px;font-size:1rem;color:var(--ink-2)}
.table-empty strong{display:block;color:var(--ink);margin-bottom:6px}
@media(max-width:1080px){
  .workspace-tools{padding:16px 18px 12px}
  .mobilebar{position:static;display:block;margin-bottom:10px}
  #searchwrap{width:100%;top:auto}
  #rail{width:min(340px,90vw)}
  #rail .brand{padding-top:65px}
}
@media(max-width:640px){
  .database-header{padding:12px 18px;gap:8px 12px}
  .database-name{font-size:1.35rem}
  .database-header p{order:3;flex-basis:100%;font-size:.75rem}
  .spec-link{font-size:.75rem}
  #app{height:auto;min-height:calc(100svh - 84px)}
  .workspace-tools{padding:12px}
  .essentials{display:grid;grid-template-columns:minmax(0,1fr);width:100%;gap:8px}
  .essential-group{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .top-choice{padding:4px;font-size:.875rem;white-space:normal;line-height:1.3}
  .essential-select{display:flex}
  .essential-select select{width:auto;flex:1}
  .map-surface{min-height:440px}
  #readout{max-width:calc(100% - 36px)}
  .dhead{padding:22px 18px 16px}
  #dbody{padding:4px 18px 24px}
  #sheet{height:min(80%,700px)}
  #tbl .actions,#tbl th:last-child{position:static;box-shadow:none}
  #tbl th:first-child,#tbl td:first-child{min-width:120px;max-width:150px}
  #activeFilters{flex-basis:100%}
}

@media(max-width:640px){.deeptoggle{max-width:100px;white-space:normal;line-height:1.3;padding-left:10px}.sbar{gap:8px}}
/* Research-copy notes remain readable beside each document action. */
.archive-note{font-size:.875rem;line-height:1.6;color:var(--muted,#b9b3a7);margin:12px 0;overflow-wrap:anywhere}
/* Page references accompany the original download, including shared files. */
.section-note{margin:12px 0;padding-left:12px;border-left:2px solid var(--patina-lo);font:400 .875rem/1.5 var(--f-ui);color:var(--ink-2)}
.section-note strong,.section-note span{display:block;overflow-wrap:anywhere}
.section-note strong{font-weight:500;color:var(--ink)}
.downloads{margin-top:13px}
.download-notes{white-space:normal}
.download-notes .section-note:first-child{margin-top:0}
.download-size{font:400 .75rem/1.5 var(--f-data);color:var(--ink-2);margin:8px 0}
.download-links{display:flex;flex-wrap:wrap;gap:6px}
.actions .download-notes{width:19rem;max-width:calc(100vw - 60px)}
.actions .download-links{max-width:19rem}
.actions .download-links a{margin-left:0}
.shared-note ul{list-style:none;margin:6px 0 0;padding:0}
.shared-note li+li{margin-top:5px}
.file-note{font-size:.875rem;line-height:1.5;color:var(--ink-2);margin:12px 0}
.shared-note{font-size:.875rem;line-height:1.5;margin:12px 0;color:var(--ink-2);overflow-wrap:anywhere}
.shared-note summary{cursor:pointer;color:var(--bronze-hi);padding:5px 0}
.shared-note p{margin-top:6px}
.coverage-warning{font-size:.875rem;line-height:1.5;color:#F0B5A9;border-left:2px solid #C2695A;padding-left:12px;margin:12px 0}
.deepfoot{flex-wrap:wrap}
@media(max-width:520px){.filter-definitions{flex-basis:100%}.deepfoot{gap:8px}}
.ttl .section-note{max-width:30ch}
