/* Boston Energy Atlas — shared styles for the catalogue, gap register, charter and methods pages.
   Same language as the reading in index.html: white ground, Work Sans UI, Source Serif for reading. */
:root{
  --paper:#ffffff; --paper-2:#f6f5f2; --paper-3:#efedE8;
  --ink:#303030; --ink-2:#616161; --ink-3:#9a9a9a; --rule:#e4e2dc;
  --accent:#2f4fd0; --navy:#1b2a4a;
  --verified:#1f6f4a; --secondary:#8a6d1f; --unverified:#a33b2a; --modeled:#4a4a8a;
  --sans:"Work Sans",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none;border-bottom:1px solid #c5cff3}
a:hover{border-bottom-color:var(--accent)}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;background:var(--paper-2);padding:1px 5px;border-radius:3px}

/* ---------- chrome ---------- */
.topbar{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule)}
.topbar .in{max-width:1180px;margin:0 auto;padding:11px 24px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.topbar .brand{font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:-.01em;color:var(--ink);border:0;margin-right:auto}
.topbar .brand span{font-weight:400;color:var(--ink-3)}
.topbar nav{display:flex;gap:4px;flex-wrap:wrap}
.topbar nav a{font-family:var(--sans);font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);border:0;padding:5px 9px;border-radius:5px}
.topbar nav a:hover{background:var(--paper-2);color:var(--ink)}
.topbar nav a[aria-current]{background:var(--ink);color:#fff}

.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.narrow{max-width:760px}

header.page{padding:56px 0 30px;border-bottom:1px solid var(--rule)}
header.page .kicker{font-family:var(--sans);font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
header.page h1{font-family:var(--sans);font-weight:700;font-size:clamp(30px,4.2vw,50px);line-height:1.05;letter-spacing:-.018em;margin:0 0 16px}
header.page .lede{font-size:20px;line-height:1.5;max-width:720px;color:var(--ink)}
header.page .lede.small{font-size:17px;color:var(--ink-2)}

.counts{display:flex;gap:26px;flex-wrap:wrap;font-family:var(--sans);margin-top:26px}
.counts div{min-width:74px}
.counts b{display:block;font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.counts span{font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3)}

/* ---------- facets ---------- */
.facets{position:sticky;top:var(--topbar-h,45px);z-index:10;background:var(--paper);border-bottom:1px solid var(--rule);padding:14px 0 12px;margin-bottom:6px}
.facets .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:5px 0}
.facets .lbl{font-family:var(--sans);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);min-width:74px}
.chip{font-family:var(--sans);font-size:12px;padding:5px 11px;border:1px solid var(--rule);background:var(--paper);border-radius:99px;cursor:pointer;color:var(--ink-2);white-space:nowrap}
.chip:hover{border-color:var(--ink-3);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.chip .n{opacity:.55;margin-left:5px;font-variant-numeric:tabular-nums}
input.search{font-family:var(--sans);font-size:13px;padding:7px 12px;border:1px solid var(--rule);border-radius:99px;min-width:230px;color:var(--ink)}
input.search:focus{outline:none;border-color:var(--accent)}
.resultline{font-family:var(--sans);font-size:12px;color:var(--ink-3);margin:10px 0 0}

/* ---------- entry cards ---------- */
.list{margin:26px 0 70px}
.entry{border-top:1px solid var(--rule);padding:20px 0;display:grid;grid-template-columns:132px 1fr;gap:24px;align-items:start}
.entry .meta{font-family:var(--sans);font-size:11px;color:var(--ink-3);line-height:1.55;padding-top:3px}
.entry .meta .kind{display:block;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);margin-bottom:5px}
.entry h3{font-family:var(--sans);font-size:17px;font-weight:600;letter-spacing:-.008em;margin:0 0 7px;line-height:1.3}
.entry h3 a{color:var(--ink);border:0}
.entry h3 a:hover{color:var(--accent)}
.entry p{margin:0 0 9px;font-size:16px;color:var(--ink-2);max-width:74ch}
.entry .tags{display:flex;gap:6px;flex-wrap:wrap;font-family:var(--sans);font-size:10.5px;margin-top:9px}
.tag{border:1px solid var(--rule);border-radius:4px;padding:2px 7px;color:var(--ink-2);letter-spacing:.05em}
.tag.era{background:var(--paper-2)}
.tag.tier{border-color:currentColor;font-weight:600}
.tier-verified{color:var(--verified)} .tier-secondary{color:var(--secondary)}
.tier-unverified{color:var(--unverified)} .tier-modeled{color:var(--modeled)}
.tag.warn{color:var(--unverified);border-color:currentColor;font-weight:600}
.tag.ok{color:var(--verified);border-color:currentColor}
.entry .stat{font-family:var(--sans);font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}

/* ---------- gap register ---------- */
.gap{border-top:1px solid var(--rule);padding:26px 0}
.gap h3{font-family:var(--sans);font-size:20px;font-weight:600;letter-spacing:-.012em;margin:0 0 4px;line-height:1.24}
.gap .state{font-family:var(--sans);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}
.gap .state b{color:var(--ink-2);font-weight:600}
.gap .missing{font-size:17px;margin:0 0 12px;max-width:76ch}
.gap .why{font-size:16px;color:var(--ink-2);margin:0 0 14px;max-width:76ch}
.gap details{margin:10px 0 0}
.gap summary{font-family:var(--sans);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);cursor:pointer;list-style:none;display:inline-block;padding:3px 0}
.gap summary::-webkit-details-marker{display:none}
.gap summary::before{content:"▸ ";font-size:10px}
.gap details[open] summary::before{content:"▾ "}
.gap details ul{margin:9px 0 0;padding-left:20px;font-size:15.5px;color:var(--ink-2);max-width:76ch}
.gap details li{margin:5px 0}
.gap .closes{background:var(--paper-2);border-left:2px solid var(--accent);padding:12px 16px;margin:14px 0 0;font-size:15.5px;max-width:76ch}
.gap .closes b{font-family:var(--sans);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:4px;font-weight:600}
.sev{display:inline-block;font-family:var(--sans);font-size:10.5px;letter-spacing:.06em;border:1px solid currentColor;border-radius:4px;padding:2px 7px;font-weight:600}
.sev-blocks-a-claim{color:var(--unverified)} .sev-weakens-a-claim{color:var(--secondary)}
.sev-limits-resolution{color:var(--modeled)} .sev-inconvenient{color:var(--ink-3)}

/* ---------- detail dialog ---------- */
dialog#detail{border:0;border-radius:10px;padding:0;max-width:820px;width:calc(100vw - 40px);max-height:88vh;box-shadow:0 20px 70px rgba(0,0,0,.3)}
dialog#detail::backdrop{background:rgba(24,26,32,.42)}
dialog#detail .head{position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--rule);padding:18px 26px 14px;display:flex;gap:14px;align-items:flex-start}
dialog#detail h2{font-family:var(--sans);font-size:20px;font-weight:600;margin:0;letter-spacing:-.012em;line-height:1.28}
dialog#detail .kindline{font-family:var(--sans);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
dialog#detail .close{margin-left:auto;background:var(--paper-2);border:1px solid var(--rule);border-radius:6px;font-family:var(--sans);font-size:12px;padding:6px 11px;cursor:pointer;color:var(--ink-2)}
dialog#detail .body{padding:20px 26px 30px;overflow:auto;max-height:calc(88vh - 70px)}
dialog#detail h4{font-family:var(--sans);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin:22px 0 7px;font-weight:600}
dialog#detail p{margin:0 0 10px;font-size:16px;max-width:none}
dialog#detail ul{margin:0;padding-left:20px;font-size:15.5px;color:var(--ink-2)}
dialog#detail li{margin:5px 0}
dialog#detail table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:13px;margin:4px 0 0}
dialog#detail td{border-top:1px solid var(--rule);padding:6px 10px 6px 0;vertical-align:top;color:var(--ink-2)}
dialog#detail td:first-child{width:170px;color:var(--ink-3);letter-spacing:.03em}
dialog#detail .src{font-size:14.5px;color:var(--ink-2);border-left:2px solid var(--rule);padding:2px 0 2px 13px;margin:9px 0}
dialog#detail .src b{color:var(--ink);font-weight:600}
dialog#detail .loc{font-family:var(--sans);font-size:12px;color:var(--ink-3)}

/* ---------- prose pages (charter, methods) ---------- */
.prose{padding:36px 0 90px;font-size:18px}
.prose h2{font-family:var(--sans);font-size:23px;font-weight:600;letter-spacing:-.014em;margin:44px 0 12px;line-height:1.25}
.prose h3{font-family:var(--sans);font-size:17px;font-weight:600;margin:30px 0 8px}
.prose h1{font-family:var(--sans);font-size:36px;font-weight:700;letter-spacing:-.02em;margin:0 0 10px;line-height:1.1}
.prose p{margin:0 0 15px}
.prose ul,.prose ol{padding-left:22px;margin:0 0 15px}
.prose li{margin:6px 0}
.prose blockquote{margin:20px 0;padding:2px 0 2px 18px;border-left:3px solid var(--accent);color:var(--ink);font-size:19px}
.prose blockquote p{margin:0 0 8px}
.prose hr{border:0;border-top:1px solid var(--rule);margin:36px 0}
.prose table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:14px;margin:0 0 20px}
.prose th{text-align:left;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--rule);padding:0 12px 7px 0;font-weight:600}
.prose td{border-bottom:1px solid var(--rule);padding:8px 12px 8px 0;vertical-align:top;color:var(--ink-2)}
.prose em{font-style:italic}
.prose td code,.prose td a,.prose td{overflow-wrap:anywhere}
.prose td:first-child{white-space:normal}
.tablewrap{overflow-x:auto}

footer.site{border-top:1px solid var(--rule);background:var(--paper-2);font-family:var(--sans);font-size:12.5px;color:var(--ink-2);line-height:1.6}
footer.site .in{max-width:1180px;margin:0 auto;padding:30px 24px 46px;display:flex;gap:40px;flex-wrap:wrap}
footer.site b{display:block;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}

@media(max-width:760px){
  body{font-size:16px}
  .entry{grid-template-columns:1fr;gap:8px}
  .entry .meta{display:flex;gap:10px;flex-wrap:wrap}
  .entry .meta .kind{margin:0}
  .facets{position:static}
  .prose{font-size:17px}
}

/* the strip beneath the catalogue header: the four reference pages that used to sit in the top bar */
.subnav{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;margin:22px 0 4px;font-family:var(--sans)}
.subnav .lbl{flex-basis:100%;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3)}
.subnav a{flex:1 1 200px;border:1px solid var(--rule);border-radius:7px;padding:10px 12px;color:var(--ink);text-decoration:none;background:var(--paper)}
.subnav a:hover{background:var(--paper-2)}
.subnav a b{display:block;font-size:13px;font-weight:600;margin-bottom:2px}
.subnav a span{display:block;font-size:12px;color:var(--ink-2);line-height:1.4}
