/* Industrial Cyber Brief site styles. Re-skinned 24 Oct 2026 to match girder.in: black and signal green, dark by
   default with a light theme the reader can pick, Inter for all text (24 Oct 2026, chosen for readability). Tokens first; both themes; no
   external requests; no inline styles anywhere (the CSP forbids them).

   The look: a plant control room, not a news site. The chrome is black, like an operator screen; colour is reserved for what an operator must notice, so severity is the only loud thing on
   the page (ISA-101 HMI practice). The one signature element is the Purdue ladder: seven cells, enterprise
   on the left and the physical process on the right, lit where a story bites. Green is the interaction colour
   because it is never an alarm colour. */
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/inter-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/inter-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/inter-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/inter-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/jetbrains-mono-latin-500-normal.woff2") format("woff2")}

:root{
  --bg:#060807; --panel:#0C110E; --panel-2:#121A15; --fg:#EAF0EC; --fg-2:#A3B2A9; --line:#2B3830; --line-2:#1E2823;
  --steel:#060807; --steel-2:#16201A; --steel-fg:#EAF0EC; --steel-muted:#86978C;
  --accent:#5BBF8A; --accent-fg:#04140A; --accent-bg:#10261A; --link:#7CCFA0;
  --p1:#FF6F75; --p2:#F3A24A; --p2-ink:#F3A24A; --p3:#E3C654; --p4:#8CB7F7; --kev:#F08C86; --kev-fg:#1A0B0A;
  --p1-bg:#3B151A; --p2-bg:#3A2708; --p3-bg:#332B08; --p4-bg:#13284A;
  --ladder:#1E2823; --ladder-fg:#86978C; --on-sev:#060807;
  --display:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"JetBrains Mono",Consolas,"Courier New",monospace;
  --r:6px; --r-lg:12px; --focus:#5FE89A; --focus-on-steel:#5FE89A; --field-line:#4A5A50;
  --shadow:none; color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#F3F5F1; --panel:#FFFFFF; --panel-2:#F7F9F6; --fg:#0C1510; --fg-2:#46564C; --line:#D6DDD7; --line-2:#E6EBE6;
  --steel:#0C1510; --steel-2:#1B2620; --steel-fg:#EAF0EC; --steel-muted:#A3B2A9;
  --accent:#0A7A3F; --accent-fg:#FFFFFF; --accent-bg:#E3F2E8; --link:#0A7A3F;
  --p1:#BE1E2D; --p2:#B5530A; --p2-ink:#93430A; --p3:#876600; --p4:#1F5FBF; --kev:#7A1A1A; --kev-fg:#FFFFFF;
  --p1-bg:#FCE8EA; --p2-bg:#FFEFDF; --p3-bg:#FFF5D1; --p4-bg:#E3ECFC;
  --ladder:#DDE4DE; --ladder-fg:#46564C; --on-sev:#FFFFFF; --focus:#0A7A3F; --field-line:#7A8A80;
  --shadow:0 1px 2px rgba(12,21,16,.06),0 4px 14px rgba(12,21,16,.05); color-scheme:light;
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-padding-top:16px}
body{margin:0;background:var(--bg);color:var(--fg);font:16.5px/1.6 var(--sans);font-feature-settings:"cv11","ss03";-webkit-font-smoothing:antialiased}
a{color:var(--link);text-underline-offset:3px}
h1,h2,h3{margin:0;text-wrap:balance}
p{margin:0}
button{font:inherit;cursor:pointer;color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.mast :focus-visible,.sub :focus-visible,.foot :focus-visible{outline-color:var(--focus-on-steel)}
.offscreen{position:fixed;left:-9999px;top:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-60px;background:var(--accent);color:var(--accent-fg);padding:8px 12px;border-radius:var(--r);z-index:50;font-weight:600}
.skip:focus{top:8px}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.eyebrow{font:600 14px/1.3 var(--sans);color:var(--accent)}
.mono{font-family:var(--mono);font-size:.86em}
.mt0{margin-top:0}.mt10{margin-top:10px}.mt12{margin-top:12px}

/* masthead */
.mast{background:var(--steel);color:var(--steel-fg)}
.mast .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;padding-block:14px;flex-wrap:wrap}
.brand{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;color:inherit}
.brand .home{display:contents;text-decoration:none;color:inherit}
.brand svg{width:52px;height:52px;flex:none;grid-row:1/span 2}
.brand .n{font:700 22px/1.1 var(--display);letter-spacing:-.025em;align-self:end}
.brand .t{display:block;font:400 13px/1.3 var(--sans);color:var(--steel-muted);margin-top:3px;letter-spacing:0;text-transform:none;align-self:start}
.brand .t .co{color:#5FE89A;font-weight:600;text-decoration:none}
.brand .t .co:hover{text-decoration:underline}
.nav{display:flex;gap:2px;align-items:center;flex-wrap:wrap}
.nav a{color:var(--steel-fg);text-decoration:none;padding:9px 11px;border-radius:var(--r);font-weight:600;font-size:14.5px;min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}
.nav a:hover{background:var(--steel-2)}
.nav a[aria-current="page"]{box-shadow:inset 0 -3px 0 var(--accent)}
.nav .cta{background:var(--accent);color:var(--accent-fg);margin-left:6px}
.nav .cta:hover{filter:brightness(1.08)}
.mast .theme-top,.mast .cta-top{display:none}
.cta-top{background:var(--accent);color:var(--accent-fg);text-decoration:none;font-weight:600;font-size:14px;padding:0 12px;min-height:40px;border-radius:var(--r);align-items:center}
.theme{width:44px;height:44px;border-radius:50%;border:1px solid var(--steel-2);background:transparent;color:var(--steel-fg);display:inline-grid;place-items:center;margin-left:6px;padding:0}
.theme:hover{background:var(--steel-2)}
.theme svg{width:20px;height:20px;fill:currentColor}
.theme .sun{display:none}
:root[data-theme="light"] .theme .sun{display:block} :root[data-theme="light"] .theme .moon{display:none}

/* the status band: today's state at a glance */
.status{background:var(--panel);border-bottom:1px solid var(--line)}
.status .wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(340px,1fr);gap:44px;padding-block:32px 30px;align-items:start}
.status h1{font:700 clamp(28px,3.2vw,40px)/1.15 var(--display);letter-spacing:-.03em;margin-top:10px;max-width:30ch}
.status .lede{margin-top:14px;color:var(--fg-2);max-width:58ch;font-size:18px}
.tally{font-weight:600;color:var(--fg)}
.tally:empty{display:none}
.next{margin-top:14px;font-size:14px;font-weight:600;color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:7px 14px 7px 12px;display:inline-flex;align-items:center;gap:8px}
.next::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
/* One quiet row under the lede: when the next briefing lands, how long this one takes, and the report. */
.byline{margin-top:14px;color:var(--fg-2);font-size:14px;display:flex;gap:8px 14px;align-items:center;flex-wrap:wrap}
.byline .next{margin:0;padding:0;background:none;border-radius:0;font-weight:600}
.byline .next[hidden]{display:none}
.byline .next:not([hidden])+.readtime::before{content:"·";margin-right:14px;color:var(--fg-2)}
.byline .btn{margin-left:auto}
.pastnote{margin-top:10px;padding:8px 12px;border-left:4px solid var(--accent);background:var(--accent-bg);font-size:15px;max-width:60ch;color:var(--fg)}
.stale{margin-top:12px;padding:10px 12px;border-left:4px solid var(--p2);background:var(--p2-bg);color:var(--fg);max-width:60ch;font-size:15px}
.board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px 9px;display:grid;gap:2px;text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px;border-top-width:4px}
.cell.p1{border-top-color:var(--p1)} .cell.p2{border-top-color:var(--p2)} .cell.p3{border-top-color:var(--p3)} .cell.p4{border-top-color:var(--p4)}
.cell:hover:not(:disabled){box-shadow:var(--shadow);border-color:var(--fg-2)}
.cell:disabled{cursor:default;opacity:.55}
.cell[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--fg)}
.cell b{font:700 30px/1 var(--display);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.cell span{font-size:13px;font-weight:600;color:var(--fg-2)}

/* the Purdue ladder: L5 (enterprise) on the left, L0 (process) on the right */
.ladder{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;list-style:none;margin:0;padding:0}
.ladder i{display:grid;place-items:center;height:22px;border-radius:3px;background:var(--ladder);color:var(--ladder-fg);font:500 11px/1 var(--mono);font-style:normal;letter-spacing:0}
.ladder i.on{background:var(--fg);color:var(--panel)}
.story.critical .ladder i.on{background:var(--p1);color:var(--on-sev)} .story.high .ladder i.on{background:var(--p2);color:var(--on-sev)}
.story.medium .ladder i.on{background:var(--p3);color:var(--on-sev)} .story.low .ladder i.on{background:var(--p4);color:var(--on-sev)}
.ladder-wrap{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);gap:10px;align-items:center;font-size:13.5px;color:var(--fg-2)}
.ladder-wrap .ladder{min-width:0}

/* main column */
.main{display:grid;grid-template-columns:minmax(0,1fr) 332px;gap:40px;padding-block:22px 56px}
.main>*{min-width:0}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line)}
.toolbar .search{flex:1 1 100%;max-width:none}
.search svg{width:18px;height:18px;fill:var(--fg-2);flex:none}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--panel);color:var(--fg);border-radius:999px;padding:0 14px;font-size:14px;font-weight:600;min-height:40px;display:inline-flex;align-items:center;gap:7px}
.chip[aria-pressed="true"]{background:var(--steel);color:var(--steel-fg);border-color:var(--steel)}
.chip .sw{width:10px;height:10px;border-radius:50%;background:var(--line)}
.chip.p1 .sw{background:var(--p1)} .chip.p2 .sw{background:var(--p2)} .chip.p3 .sw{background:var(--p3)} .chip.p4 .sw{background:var(--p4)}
.search{display:flex;align-items:center;gap:8px;border:1px solid var(--field-line);background:var(--panel);border-radius:var(--r);padding:0 10px;min-height:40px;min-width:0}
.search input{border:0;background:transparent;color:var(--fg);font:inherit;width:100%;min-height:42px}
.search input::placeholder{color:var(--fg-2);opacity:1}
.search input:focus-visible{outline:none}
.search:focus-within{outline:3px solid var(--focus);outline-offset:2px}
.count{font-size:14px;color:var(--fg-2);padding:10px 0 4px}
.empty{color:var(--fg-2);padding:18px 0}

/* buttons */
.btn{border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:0 12px;font-weight:600;font-size:14px;min-height:40px;display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:var(--fg);cursor:pointer}
.btn:hover{border-color:var(--fg-2)}
.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.sm{min-height:30px;padding:0 8px;font-size:13px}
.btn svg{width:16px;height:16px;flex:none}

/* a story */
.story{position:relative;background:var(--panel);border:1px solid var(--line);border-left:6px solid var(--line);border-radius:var(--r-lg);padding:18px 22px 16px;margin-top:14px;box-shadow:var(--shadow)}
.story.critical{border-left-color:var(--p1)} .story.high{border-left-color:var(--p2)} .story.medium{border-left-color:var(--p3)} .story.low{border-left-color:var(--p4)}
.story.lead{padding:26px 26px 22px}
.story.target{outline:3px solid var(--accent);outline-offset:3px}
.tags{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{font:700 12.5px/1 var(--sans);padding:6px 9px;border-radius:3px;border:1px solid transparent;letter-spacing:.01em}
.tag.critical{background:var(--p1);color:var(--on-sev)} .tag.high{background:var(--p2);color:var(--on-sev)}
.tag.medium{background:var(--p3);color:var(--on-sev)} .tag.low{background:var(--p4);color:var(--on-sev)}
.tag.action{background:var(--panel-2);color:var(--fg);border-color:var(--line)}
.tag.kev{background:var(--kev);color:var(--kev-fg)}
.tag.cvss{background:var(--steel);color:var(--steel-fg);font-family:var(--mono);font-weight:500}
.tag.lead{background:transparent;color:var(--accent);border-color:var(--accent)}
.tag.update{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}
.story h2{font:700 23px/1.25 var(--display);margin-top:12px;letter-spacing:-.02em;max-width:44ch}
.story.lead h2{font-size:29px;max-width:40ch}
.story h2 a{color:inherit;text-decoration:none}
.story h2 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.src{font-size:14px;color:var(--fg-2);margin-top:8px;display:flex;gap:12px;flex-wrap:wrap;align-items:baseline}
.src b{color:var(--fg);font-weight:600}
.three{margin-top:12px;display:grid;gap:6px;max-width:76ch}
.story.lead .three{font-size:17.5px}
.three b{font-weight:700}
.three strong{font-weight:700;color:var(--fg)}
.correction,.update{margin-top:10px;padding:8px 12px;border-left:4px solid var(--accent);background:var(--accent-bg);font-size:15px;max-width:70ch}
.related{margin-top:10px;font-size:15px;max-width:70ch}
.related ul{margin:4px 0 0 18px;padding:0}
.related li{margin-top:3px}
.related a{color:var(--link)}

/* the insight block: the editor's reading, labelled. A green rail and one icon per row so each kind of advice is
   recognisable at a glance; the rail colour never changes with severity, because this is guidance, not an alarm. */
.insight{margin-top:16px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r);background:var(--panel-2);padding:12px 16px 12px 14px;display:grid;gap:10px;max-width:76ch}
.insight .head{display:flex;justify-content:space-between;gap:8px 14px;flex-wrap:wrap;align-items:center}
.insight h3{display:flex;align-items:center;gap:7px;font:600 14px/1.2 var(--sans);color:var(--accent)}
.insight svg{width:17px;height:17px;fill:currentColor;flex:none}
.insight .roles{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:13px;color:var(--fg-2)}
.insight .roles .lbl{font-weight:600}
.insight .role{font-size:12.5px;font-weight:600;color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:3px 9px;line-height:1.2}
.insight .rows{margin:0;display:grid;gap:9px;font-size:15.5px}
.insight .row{display:grid;grid-template-columns:186px minmax(0,1fr);gap:4px 12px;align-items:start}
.insight dt{display:flex;align-items:center;gap:7px;font-weight:700;color:var(--fg);padding-top:1px}
.insight dt svg{color:var(--accent)}
.insight dd{margin:0;display:grid;gap:5px}
.insight .why{font-size:14.5px;color:var(--fg-2)} .insight .why b{color:var(--fg);font-weight:600}
.insight ul{margin:0;padding-left:20px}
.insight li{margin:2px 0}
.insight .note{font-size:13px;color:var(--fg-2);border-top:1px dashed var(--line);padding-top:8px}
.attack{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.attack .t{font:500 12.5px/1 var(--mono);background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:5px 7px;color:var(--fg)}
.attack .t b{font-weight:500;color:var(--accent);margin-right:5px}

/* the quiet-day note and the why page */
.quiet{margin:8px 0 0;font-size:15px;max-width:70ch;color:var(--fg-2)}
.box.why p:last-child{margin:0}
.why-grid .box h3{margin:0 0 6px;font:700 19px/1.2 var(--display)}
.why-grid .box p{margin:0;font-size:15px}
.usp{padding-left:22px;display:grid;gap:10px} .usp li{padding-left:4px}
.roles-table{width:100%;border-collapse:collapse;font-size:15px;margin:8px 0 12px}
.roles-table th,.roles-table td{text-align:left;vertical-align:top;padding:9px 10px;border-bottom:1px solid var(--line)}
.roles-table thead th{font-size:13.5px;color:var(--fg-2);border-bottom:2px solid var(--line)}
.roles-table tbody th{font-weight:700;white-space:nowrap;width:1%;padding-right:18px}
@media (max-width:640px){ .roles-table,.roles-table tbody,.roles-table tr,.roles-table th,.roles-table td{display:block;width:auto;white-space:normal} .roles-table thead{display:none} .roles-table tbody th{padding-bottom:2px;border:0} .roles-table td{padding-top:0} }

.sub .hint{margin:10px 0 0;font-size:13px;color:var(--steel-muted)}

/* past issues page */
.month{margin-top:26px}
.month h2,.month h3{font:700 22px/1.2 var(--display);margin:0 0 8px;padding:0;border:0}
.issue-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.issue-list a{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:4px 16px;align-items:center;text-decoration:none;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px}
.issue-list a:hover{border-color:var(--fg-2)}
.issue-list .when{font:500 14px/1.3 var(--mono);color:var(--fg-2)}
.issue-list .head{font-weight:600;font-size:16px}
.issue-list .meta{grid-column:2;display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--fg-2)}
.issue-list .meta .tag{font-size:11.5px;padding:4px 7px}
.issue-list .more{grid-column:3;grid-row:1/span 2;color:var(--link);font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.social-row{display:flex;gap:8px;margin:4px 0 6px}
@media (max-width:640px){ .issue-list a{grid-template-columns:1fr} .issue-list .meta{grid-column:1} .issue-list .more{grid-column:1;grid-row:auto} }

/* brand page */
.dl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:12px 0 8px}
.dl{display:grid;gap:4px;text-decoration:none;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px;box-shadow:var(--shadow)}
.dl:hover{border-color:var(--fg-2)}
.dl-pic{display:grid;place-items:center;height:160px;border-radius:var(--r);background:var(--steel);overflow:hidden}
.dl-pic.light{background:var(--panel-2)} .dl-pic.tile{background:#E3F2E8}
.dl-pic img{max-width:100%;height:auto}
.dl-name{font-weight:700;margin-top:6px}
.dl-meta{font-size:13.5px;color:var(--fg-2)}
.swatches{list-style:none;padding:0;margin:8px 0 14px;display:grid;gap:8px;font-size:15px}
.swatches li{display:flex;align-items:center;gap:10px}
.sw-chip{width:28px;height:28px;border-radius:6px;border:1px solid var(--line);flex:none}
.sw-chip[data-hex="060807"]{background:#060807} .sw-chip[data-hex="3DDC84"]{background:#3DDC84} .sw-chip[data-hex="0A7A3F"]{background:#0A7A3F}
.sw-chip[data-hex="0C1510"]{background:#0C1510} .sw-chip[data-hex="F3F5F1"]{background:#F3F5F1} .sw-chip[data-hex="BE1E2D"]{background:#BE1E2D}
.merch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:12px}
.merch-grid figure{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.merch-grid img{display:block;width:100%;height:auto}
.merch-grid figcaption{padding:10px 14px;font-size:14px;color:var(--fg-2)}

/* actions and sharing */
.acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:12px}
.acts .lbl{font-size:13px;color:var(--fg-2);margin-right:4px}
.ico{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--panel);display:inline-grid;place-items:center;color:var(--fg);text-decoration:none;padding:0}
.ico:hover{border-color:var(--fg);background:var(--panel-2)}
.ico svg{width:18px;height:18px;fill:currentColor}
.ico.li,.ico.wa,.ico.fb,.ico.tg{color:var(--fg)}
:root[data-theme="light"] .ico.li:hover{color:#0A66C2} :root[data-theme="light"] .ico.wa:hover{color:#1FA855} :root[data-theme="light"] .ico.fb:hover{color:#1877F2} :root[data-theme="light"] .ico.tg:hover{color:#229ED9}
.acts .more{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.acts .more button,.acts .more a{background:none;border:0;padding:6px 4px;color:var(--fg-2);text-decoration:underline;text-underline-offset:3px;font-size:14px;min-height:36px}
.origin{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line);font-size:13px;color:var(--fg-2)}
/* routine items: below the bar, compact */
.routine{margin-top:34px;padding-top:18px;border-top:2px solid var(--line)}
.routine h2{font:700 24px/1.15 var(--display)}
.routine>p{color:var(--fg-2);font-size:15px;margin-top:6px;max-width:70ch}
.story.compact{padding:12px 16px 10px;margin-top:10px;border-left-width:4px}
.story.compact h2{font-size:20px;margin-top:8px}
.story.compact .three{font-size:15px;gap:4px}
.story.compact .src{margin-top:4px}
.origin a{color:var(--fg-2)}
.sheet{margin-top:12px;border:1px solid var(--line);background:var(--panel-2);border-radius:var(--r);padding:14px;display:grid;gap:10px}
.sheet label{font-weight:600;font-size:14px}
.sheet textarea{width:100%;min-height:150px;font:14px/1.5 var(--sans);border:1px solid var(--line);border-radius:var(--r);padding:10px;background:var(--panel);color:var(--fg);resize:vertical}
.sheet small{color:var(--fg-2)}
.sheet .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* the panel */
.side{display:grid;gap:18px;align-content:start}
.box{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow)}
.box h2{font:700 21px/1.1 var(--display);margin-bottom:8px}
.box p{color:var(--fg-2);font-size:15px}
.sub{background:var(--steel);color:var(--steel-fg);border-color:var(--steel)}
.sub h2{color:var(--steel-fg)} .sub p{color:var(--steel-muted)}
.sub form{display:grid;gap:8px;margin-top:12px}
.sub label{font-size:14px;color:var(--steel-muted)}
.sub input{font:inherit;padding:10px 12px;border-radius:var(--r);border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.06);color:var(--steel-fg);min-height:44px}
.sub input::placeholder{color:var(--steel-muted)}
.sub button{font-weight:700;min-height:44px;border-radius:var(--r);border:0;background:var(--accent);color:var(--accent-fg)}
.sub small{color:var(--steel-muted);font-size:13px;line-height:1.4}
.sub .done{background:rgba(255,255,255,.1);padding:10px 12px;border-radius:var(--r);font-size:14px;margin-top:12px}
.sub .err{color:var(--focus-on-steel);font-size:14px;min-height:0}
.sub .err:empty{display:none}


.key{display:grid;gap:10px;font-size:14px}
.key div{display:grid;grid-template-columns:104px 1fr;gap:10px;align-items:start;color:var(--fg-2)}
.key .tag{justify-self:start}
.key-h{font:600 14px/1.3 var(--sans);color:var(--fg-2);margin:14px 0 8px}
.foot .addr{margin:0 0 4px} .foot .addr a{font-weight:600}
.issues{display:grid;gap:6px;font-size:14px}
.issues a{text-decoration:none;color:var(--fg);display:flex;justify-content:space-between;gap:10px;min-height:30px;align-items:center;padding:2px 0}
.issues a span,.issues .row span{color:var(--fg-2);font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:12px}
.issues a:hover{color:var(--link)}
.issues a[aria-current="page"]{font-weight:700}
.issues .row{display:flex;justify-content:space-between;gap:10px;min-height:30px;align-items:center}

/* footer */
.foot{background:var(--steel);color:var(--steel-muted);font-size:14px;margin-top:0}
.foot .wrap{display:grid;grid-template-columns:1.6fr .8fr .8fr 1fr;gap:32px;padding-block:34px 38px}
.foot b{color:var(--steel-fg)} .foot a{color:var(--steel-fg)}
.foot p{margin-bottom:8px;max-width:62ch}
.foot .foot-nav a{text-decoration:none;line-height:1.9}
.foot .foot-nav a:hover{text-decoration:underline}
.foot .social{display:flex;gap:8px;margin:6px 0 14px}
.foot .ico{background:var(--steel-2);border-color:var(--steel-2);color:var(--steel-fg)}
.foot .ico:hover{border-color:var(--steel-fg);background:var(--steel-2)}
.foot .ico.li,.foot .ico.x{color:var(--steel-fg)}
.foot .legal{font-size:13px}

/* reading pages (How it works, About, Sources, Legal) */
.prose{max-width:780px;padding-block:30px 60px}
.prose.wide{max-width:1180px}
.prose h1{font:700 clamp(28px,3.6vw,40px)/1.15 var(--display);letter-spacing:-.03em;margin:6px 0 10px}
.prose h2{font:700 23px/1.25 var(--display);letter-spacing:-.02em;margin:36px 0 10px;padding-top:16px;border-top:1px solid var(--line)}
.prose h3{font:700 19px/1.25 var(--sans);margin:20px 0 6px}
.prose p{margin:0 0 12px}
.prose .story p,.prose .insight p{margin:0}
.prose .story h1{font:700 clamp(24px,3vw,32px)/1.2 var(--display);letter-spacing:-.025em;margin:12px 0 0;max-width:30ch}
.prose p,.prose li,.prose dd{max-width:72ch}
.prose .lede{font-size:19px;color:var(--fg-2);margin:0 0 14px}
.prose ul,.prose ol{padding-left:22px}
.prose li{margin:4px 0}
.toc{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 18px;margin:18px 0}
.toc ol{margin:0}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.grid3 section{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px}
.grid3 h3{margin-top:4px}
.grid3 ul{font-size:16px}
.steps li{margin:8px 0}
.sevdefs{display:grid;grid-template-columns:auto 1fr;gap:10px 14px;align-items:baseline}
.sevdefs dt,.sevdefs dd{margin:0}
.about{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:36px;align-items:start;margin-top:26px}
.editor{display:grid;gap:14px;padding:22px 22px 18px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.editor h3{margin-top:14px}
.editor ul{padding-left:18px;font-size:15px}
.editor p{font-size:15.5px}
.about-text>h2:first-child{margin-top:0;padding-top:0;border-top:0}
.editor h2{margin-top:0;padding-top:0;border-top:0}
.portrait{width:140px;height:140px;border-radius:12px;object-fit:cover;display:block}
.note{color:var(--fg-2);font-size:15px}
.feeds{font-size:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 28px}
.feeds section{break-inside:avoid}
.feeds h2{font:700 20px/1.2 var(--display);margin:18px 0 4px;padding:0;border:0}
.feeds ul{margin:0;padding-left:18px;color:var(--fg)}
.feeds li{margin:2px 0}
.purdue-table{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:15px;margin:10px 0 14px}
.purdue-table b{font-family:var(--mono);font-weight:500;color:var(--accent)}

html:not(.js) .board,html:not(.js) .toolbar,html:not(.js) #copyContact,html:not(.js) .tally,html:not(.js) .levels,html:not(.js) .theme{display:none}

@media (max-width:900px){
  .status .wrap{grid-template-columns:1fr;gap:22px}
  .status h1{max-width:none}
  .main{grid-template-columns:1fr;gap:26px}
  .toolbar .search{width:100%}
  .foot .wrap{grid-template-columns:1fr 1fr;gap:26px 20px}
  .foot .foot-about,.foot .foot-contact{grid-column:1/-1}
  .brand svg{width:38px;height:38px} .brand .n{font-size:21px;white-space:nowrap;align-self:end} .brand .t .tg{display:none} .brand .t{margin-top:1px}
  .mast .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px 8px;padding-block:10px 6px;align-items:center}
  .mast .nav{grid-column:1/-1;min-width:0;display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px;gap:0}
  .mast .nav::-webkit-scrollbar{display:none}
  .nav a{padding:10px 10px;min-height:42px}
  .nav .theme,.nav .cta{display:none}
  .mast .theme-top,.mast .cta-top{display:inline-flex}
  .board{grid-template-columns:repeat(4,1fr)}
  .cell b{font-size:30px}
  .story{padding:16px 16px 14px;border-radius:6px} .story.lead{padding:20px 18px 16px}
  .story.lead h2{font-size:24px} .story h2{font-size:20px}
  .grid3{grid-template-columns:1fr}
  .about{grid-template-columns:1fr}
  .editor{position:static;order:2}
  .portrait{width:120px;height:120px}
  .feeds{grid-template-columns:1fr}
  .acts .more{margin-left:0;width:100%}
  .ladder-wrap{grid-template-columns:1fr}
  .acts{gap:5px} .ico{width:36px;height:36px}
  .insight{padding:10px 12px 10px 11px}
  .insight .row{grid-template-columns:1fr}
}
@media (max-width:420px){
  .board{grid-template-columns:repeat(2,1fr)}
  .brand .n{font-size:15px;letter-spacing:-.015em} .brand svg{width:30px;height:30px} .brand{gap:7px;min-width:0}
  .cta-top{padding:0 10px;font-size:13px;min-height:36px}
  .mast .theme-top{display:none} .nav .theme{display:inline-grid;width:40px;height:40px;flex:none;margin-left:4px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* When to act (fixed rules, otb/priority.py) and "My site" (kept in the reader's browser) */
.pri{margin:8px 0 0;font-size:14.5px;color:var(--fg-2)}
.pri b{font-weight:700;letter-spacing:.01em}
.pri.act b{color:var(--p1)} .pri.plan b{color:var(--p2-ink)} .pri.track b{color:var(--fg-2)}
.chip.pr-act .sw{background:var(--p1)} .chip.pr-plan .sw{background:var(--p2)}
.chip[disabled]{opacity:.55;cursor:not-allowed}
.tag.mine{background:var(--accent-bg, var(--panel));color:var(--fg);border-color:var(--accent)}
.chips.mine{align-items:center}
.linkish{background:none;border:0;padding:6px 4px;color:var(--accent);text-decoration:underline;text-underline-offset:3px;font:inherit;font-size:14px;font-weight:600;cursor:pointer;min-height:40px}
.minepanel{flex:1 1 100%;display:grid;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.minepanel label{font-weight:600;font-size:14.5px}
.minepanel input{border:1px solid var(--field-line);background:var(--bg);color:var(--fg);font:inherit;border-radius:var(--r);padding:8px 10px;min-height:42px;width:100%}
.minepanel .row{display:flex;gap:8px}
.minepanel .small{font-size:13.5px;color:var(--fg-2);margin:0}
.btn.ghost{background:transparent}
.acts .more a{color:var(--fg-2)}
.key .pri{margin:0;font-size:14px}
.table-wrap{overflow-x:auto;margin:12px 0}
table.plain{border-collapse:collapse;width:100%;font-size:15.5px}
table.plain th,table.plain td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.plain th{font-weight:700;color:var(--fg);border-bottom:2px solid var(--line)}
.pri a{color:inherit;text-decoration:none}
.pri a:hover b,.pri a:focus-visible b{text-decoration:underline;text-underline-offset:3px}

/* 24 Oct 2026 re-skin: on the dark theme the chrome and the page share one black, so edges carry the structure */
.mast{border-bottom:1px solid var(--line-2)}
.foot{border-top:1px solid var(--line-2)}
.sub{border:1px solid var(--line)}
.chip[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.tag.cvss{background:var(--panel-2);color:var(--fg);border-color:var(--line)}
.ladder i.on{background:var(--accent);color:var(--accent-fg)}
@media (min-width:1100px){.mast .wrap{flex-wrap:nowrap}.brand{min-width:0;flex:1 1 auto}.nav{flex:none}}
.side,.side>*{min-width:0}
.box{overflow-wrap:break-word}
/* About: the evidence under the problem, the five steps and the value levers */
.evidence{margin-top:14px;padding:10px 14px;border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0 var(--r) var(--r) 0;font-size:15px;color:var(--fg-2);max-width:76ch}
.steps5 li,.levers li{margin:8px 0;max-width:76ch}

/* Methodology and Sources (24 Oct 2026): one numbered document, a pipeline table that names who does each step */
.method{counter-reset:sec}
.method>h2{counter-increment:sec}
.method>h2::before{content:counter(sec,decimal-leading-zero);display:block;font:500 12.5px/1 var(--mono);letter-spacing:.06em;color:var(--accent-ink,var(--accent));margin-bottom:8px}
.principle{margin:6px 0 4px;padding:12px 16px;border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0 var(--r) var(--r) 0;font-size:16.5px;max-width:76ch}
.toc ol{columns:2;column-gap:28px;padding-left:24px}
.toc li{break-inside:avoid;margin:3px 0}
.method h3{font-size:17px;margin:22px 0 6px}
.method table.plain th[scope="row"]{white-space:nowrap;font-weight:600;border-bottom:1px solid var(--line)}
.method table.plain.pipeline th[scope="row"]{white-space:normal;min-width:9.5em}
.by{display:inline-block;font:600 12px/1 var(--sans);letter-spacing:.03em;padding:4px 7px;border-radius:999px;border:1px solid var(--line);color:var(--fg);vertical-align:1px;margin:0 2px 2px 0}
.by.code{background:var(--panel-2)}
.by.ai{border-color:var(--accent);color:var(--fg)}
.note-line{font-size:15.5px;color:var(--fg-2)}
.method .grid3 ul{padding-left:18px;margin:0}
.srcrules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0 6px}
.srcrules section{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px}
.srcrules h2{font:700 16px/1.3 var(--sans);margin:0 0 4px;padding:0;border:0;letter-spacing:0}
.srcrules p{margin:0;font-size:15px;color:var(--fg-2)}
.srcpage .feeds{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
.srcpage .feeds section{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 18px 12px}
.srcpage .feeds h2{font:700 18px/1.25 var(--sans);margin:0 0 4px;letter-spacing:-.01em}
.srcpage .feeds .about-g{font-size:14.5px;color:var(--fg-2);margin:0 0 8px}
.srcpage .feeds ul{padding-left:18px;font-size:15.5px}
.suggest{margin-top:24px;padding:14px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel-2)}
.suggest h2{font:700 18px/1.3 var(--sans);margin:0 0 4px;padding:0;border:0}
.suggest p{margin:0;max-width:72ch}
@media (max-width:900px){.toc ol{columns:1}.srcrules,.srcpage .feeds{grid-template-columns:1fr}}
@media print{.method>h2{break-after:avoid}.method table{break-inside:avoid}}

/* Navigation (24 Oct 2026): three pages on the left, the rest under More. No script needed to open the menu. */
.nav .more{position:relative}
.nav .more summary{list-style:none;cursor:pointer;color:var(--steel-fg);padding:9px 11px;border-radius:var(--r);font-weight:600;font-size:14.5px;min-height:44px;display:inline-flex;align-items:center;gap:6px;user-select:none}
.nav .more summary::-webkit-details-marker{display:none}
.nav .more summary::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.nav .more[open] summary::after{transform:rotate(-135deg) translateY(-1px)}
.nav .more summary:hover,.nav .more[open] summary{background:var(--steel-2)}
.nav .more.on summary{box-shadow:inset 0 -3px 0 var(--accent)}
.nav .menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:210px;display:grid;padding:6px;background:var(--steel);border:1px solid #2B3830;border-radius:var(--r-lg);box-shadow:0 8px 24px rgba(0,0,0,.35)}
.nav .menu a{border-radius:6px;font-weight:500}
.nav .mi{display:none}
@media (max-width:900px){.nav .more{display:none}.nav .mi{display:contents}}

/* Standard news layout and phones (24 Oct 2026): sticky bar on wide screens, a Menu button on phones, folded filters and
   editor's reading on phones so a story is a headline and three facts. Nothing here changes what a story says. */
.menu-btn{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid #2B3830;border-radius:var(--r);background:transparent;color:var(--steel-fg);cursor:pointer}
.menu-btn .bars{width:18px;height:2px;background:currentColor;position:relative;border-radius:2px;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor}
.mast.open .menu-btn .bars{box-shadow:none;transform:rotate(45deg)}
.mast.open .menu-btn .bars::after{content:"";position:absolute;inset:0;background:currentColor;transform:rotate(90deg);border-radius:2px}
.filters{display:contents}
.filters>summary,.readwrap>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel-2);font-weight:600;font-size:15px}
.filters>summary::-webkit-details-marker,.readwrap>summary::-webkit-details-marker{display:none}
.filters>summary::after,.readwrap>summary::after{content:"+";font:500 20px/1 var(--mono);color:var(--fg-2)}
.filters[open]>summary::after,.readwrap[open]>summary::after{content:"\2212"}
.readwrap{margin:12px 0 4px}
.readwrap[open]>summary{margin-bottom:10px}
@media (min-width:901px){
  .mast{position:sticky;top:0;z-index:40}
  html{scroll-padding-top:90px}
  .readwrap>summary{display:none}
  /* The filters fold away on every screen, so the stories start right under the search box. */
  .filters{display:block;flex:1 1 100%}
  .filters:not([open])>*:not(summary){display:none}
  .filters[open]>.chips{margin-top:10px}
  .filters>summary{min-height:40px;font-size:14px}
}
@media (max-width:900px){
  .filters{display:block;flex:1 1 100%}
  .filters:not([open])>*:not(summary){display:none}
  .filters[open]>.chips{margin-top:10px}
  .mast .wrap{grid-template-columns:minmax(0,1fr) auto auto auto}
  .menu-btn{display:inline-flex}
  .js .mast .nav{display:none}
  .js .mast.open .nav{display:grid;grid-column:1/-1;overflow:visible;margin:4px -16px 0;padding:4px 16px 14px;border-top:1px solid #2B3830;gap:0}
  .js .mast.open .nav a,.js .mast.open .nav .more summary{padding:13px 4px;min-height:48px;border-bottom:1px solid var(--line-2);border-radius:0;box-shadow:none}
  .js .mast.open .nav .cta{display:flex;justify-content:center;margin:12px 0 0;border-radius:var(--r)}
  .js .mast.open .nav .theme{display:inline-grid;margin:10px 0 0}
  .status .wrap{padding-block:22px 20px}
  .status h1{font-size:clamp(25px,7vw,32px);line-height:1.18}
  .status .lede{font-size:16.5px;margin-top:10px}
  .byline .btn{margin-left:0}
  .byline{gap:10px}
  .board,.board{grid-template-columns:repeat(4,1fr);gap:6px}
  .cell{padding:8px 8px 7px}
  .cell b{font-size:24px}
  .cell span{font-size:12px}
  .ladder{gap:4px}
  .wrap{padding-inline:16px}
  .story h2{font-size:20px;line-height:1.25}
  .three p{font-size:16px}
  .acts{flex-wrap:wrap}
  .tag,.pri{max-width:100%;white-space:normal}
}
@media (max-width:420px){.board{grid-template-columns:repeat(4,1fr)}.cell b{font-size:22px}.brand .t{display:none}.mast .wrap{gap:6px}}

.foldbox>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px}
.foldbox>summary::-webkit-details-marker{display:none}
.foldbox>summary h2{margin:0}
.foldbox>summary::after{content:"+";font:500 22px/1 var(--mono);color:var(--fg-2)}
.foldbox[open]>summary::after{content:"\2212"}
.foldbox[open]>summary{margin-bottom:8px}

/* One Menu (25 Oct 2026): every link lives in a single menu at every width, so the bar holds only the logo, Subscribe,
   the theme switch and the Menu button. Without script the links stay in a row. */
@media (min-width:901px){
  .mast .wrap{position:relative}
  .brand{margin-right:auto}
  .mast .theme-top,.mast .cta-top{display:inline-flex}
  .menu-btn{display:inline-flex}
  .js .mast .nav{display:none}
  .js .nav .more{display:none}
  .js .nav .mi{display:contents}
  .js .mast.open .nav{display:grid;position:absolute;right:16px;top:calc(100% + 1px);width:264px;padding:6px;gap:0;background:var(--steel);border:1px solid #2B3830;border-radius:var(--r);box-shadow:0 14px 34px rgba(0,0,0,.4);z-index:50}
  .js .mast.open .nav a{border-radius:6px;min-height:46px;padding:10px 12px}
  .js .mast.open .nav .cta,.js .mast.open .nav .theme{display:none}
}

/* Watchlist (28 Oct 2026): the reader's asset list against the archive, in the browser */
.wl-private{border-left:3px solid var(--accent);padding:8px 12px;background:var(--accent-bg);border-radius:0 var(--r) var(--r) 0}
.wl-form{display:grid;gap:8px;margin:18px 0}
.wl-form textarea{width:100%;font:14px/1.5 var(--mono);color:var(--fg);background:var(--panel);border:1px solid var(--field-line);border-radius:var(--r);padding:10px;resize:vertical}
.wl-form textarea:focus-visible,.wl-file:focus-within{outline:2px solid var(--focus);outline-offset:2px}
.wl-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wl-file{position:relative;overflow:hidden}
.wl-file input{position:absolute;inset:0;opacity:0;cursor:pointer}
.wl-remember{display:inline-flex;gap:6px;align-items:center;font-size:14px;color:var(--fg-2)}
.wl-meta{font-size:13px;color:var(--fg-2);margin-top:2px}
.wl-sum{font-size:16px}
.wl-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700;white-space:nowrap;border:1px solid var(--line)}
.wl-badge.wl-affected{background:var(--p1-bg);color:var(--p1);border-color:var(--p1)}
.wl-badge.wl-check{background:var(--p3-bg);color:var(--p3);border-color:var(--p3)}
.wl-badge.wl-clear{color:var(--fg-2)}
.wl-table td:nth-child(2){font-family:var(--mono);font-size:13.5px}
@media (max-width:640px){ .wl-table,.wl-table tbody,.wl-table tr,.wl-table td{display:block;width:auto} .wl-table thead{display:none} .wl-table tr{border-bottom:1px solid var(--line);padding:8px 0} table.plain.wl-table td{border:0;padding:3px 0} }
/* Phone: the next-briefing line gets its own row. */
@media (max-width:640px){
  .byline{gap:6px 12px}
  .byline .next{flex-basis:100%}
  .byline .next:not([hidden])+.readtime::before{content:none}
}
/* Previous, weekly and next briefing: one slim row under the search and filters (29 Oct 2026). Small icons,
   the dates in words; the weekly link sits in the middle. */
.daybar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:10px 0 2px;font-size:14px}
.daybar[hidden],.daybar .db[hidden]{display:none}
.daybar .db{display:inline-flex;align-items:center;gap:5px;min-height:32px;color:var(--fg-2);text-decoration:none;white-space:nowrap}
.daybar a.db:hover{color:var(--fg)}
.daybar a.db:hover b{text-decoration:underline}
.daybar .db b{font-weight:600;color:var(--fg)}
.daybar .db svg{width:16px;height:16px;flex:none}
.daybar .db-prev{order:0}.daybar .db-next{order:2;margin-left:auto}
.daybar .db-week{order:1;margin-left:auto}
@media (max-width:640px){
  .daybar{font-size:13px;gap:4px 8px}
  .daybar .lg{display:none}
}
@media (max-width:420px){.daybar .db-soon svg{display:none}}
/* ---------- Blog (29 Oct 2026): Analysis in the site's green, Guides in blue; the newest post is featured ---------- */
.kind{display:inline-block;font:700 12px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;padding:5px 8px;border-radius:3px;border:1px solid currentColor}
.kind.analysis{color:var(--accent)}
.kind.guide{color:var(--p4)}
.blog{max-width:980px;padding-block:30px 60px}
.blog h1{font:700 clamp(28px,3.4vw,40px)/1.15 var(--display);letter-spacing:-.03em;margin-top:8px}
.blog .lede{margin-top:12px;font-size:18px;color:var(--fg-2);max-width:62ch}
.ai-note{margin-top:14px;padding:10px 14px;border-left:4px solid var(--fg-2);background:var(--panel-2);font-size:14.5px;color:var(--fg-2);max-width:70ch}
.blog .empty{margin-top:24px;padding:18px;border:1px dashed var(--line);border-radius:var(--r-lg);color:var(--fg-2)}
.post-feature{margin-top:26px;padding:24px 26px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);border-top:5px solid var(--accent)}
.post-feature.guide{border-top-color:var(--p4)}
.post-feature .label{font-size:13px;font-weight:600;color:var(--fg-2);display:flex;gap:8px;align-items:center}
.post-feature h2{font:700 clamp(24px,2.6vw,32px)/1.2 var(--display);letter-spacing:-.02em;margin-top:12px}
.post-feature h2 a,.post-card h3 a,.fromblog h3 a{color:var(--fg);text-decoration:none}
.post-feature h2 a:hover,.post-card h3 a:hover,.fromblog h3 a:hover{text-decoration:underline}
.post-feature .dek{margin-top:10px;font-size:18px;color:var(--fg-2);max-width:62ch}
.post-feature .meta,.post-card .meta,.post-body .meta{margin-top:10px;font-size:14px;color:var(--fg-2)}
.inshort-h{margin-top:18px;font:600 14px/1.3 var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-2)}
.inshort{margin:8px 0 18px 1.1em;display:grid;gap:6px;max-width:68ch}
.post-group{margin-top:34px}
.post-group h2{font:700 22px/1.25 var(--display);letter-spacing:-.02em;padding-top:14px;border-top:1px solid var(--line)}
.post-list{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.post-card{padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.post-card h3{font:700 19px/1.3 var(--display);margin-top:10px}
.post-card .dek{margin-top:6px;color:var(--fg-2);font-size:15.5px}
.crumbs{font-size:14px;color:var(--fg-2);margin-bottom:14px}
.crumbs a{color:var(--fg-2)}
.post-body h1{margin-top:12px}
.post-body .dek{margin-top:10px;font-size:19px;color:var(--fg-2)}
.inshort-box{margin:20px 0 6px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel-2)}
.prose .inshort-box h2{margin:0 0 8px;padding:0;border:0;font-size:16px;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-2)}
.inshort-box ul{margin:0 0 0 1.1em;display:grid;gap:6px}
.ref{font-size:.72em;margin-left:2px}
.ref a{text-decoration:none;padding:0 2px}
.refs ol{display:grid;gap:10px;margin-left:1.3em}
.refs li .tag{font-size:11.5px;padding:3px 6px;margin:0 6px}
.refs li time{font-size:14px;color:var(--fg-2)}
.post-nav{display:flex;justify-content:space-between;gap:14px;margin-top:30px;padding-top:14px;border-top:1px solid var(--line);font-size:15px}
.post-nav .newer{margin-left:auto;text-align:right}
.fromblog h2{font:600 15px/1.3 var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-2)}
.fromblog .fb-kind{margin-top:10px}
.fromblog h3{font:700 19px/1.3 var(--display);margin-top:8px}
.fromblog .dek{margin-top:6px;color:var(--fg-2);font-size:15px}
.fromblog .small{margin-top:8px;font-size:13.5px;color:var(--fg-2)}
@media (max-width:640px){
  .post-list{grid-template-columns:1fr}
  .post-feature{padding:18px 16px}
  .blog .lede,.post-feature .dek{font-size:16.5px}
}

/* ---------- Watchlist results (29 Oct 2026): one card per asset, one block per advisory, the detail to act on ---------- */
.wl-sum{margin:18px 0 6px}
.wl-total{font-size:15px;color:var(--fg-2)}
.wl-tiles{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.wl-tiles li{border:1px solid var(--line);border-top-width:4px;border-radius:var(--r);padding:10px 12px;background:var(--panel);display:grid;gap:2px}
.wl-tiles b{font:700 26px/1 var(--display);font-variant-numeric:tabular-nums}
.wl-tiles span{font-size:13px;color:var(--fg-2);font-weight:600}
.wl-tiles .wl-affected{border-top-color:var(--p1)}.wl-tiles .wl-check{border-top-color:var(--p3)}
.wl-tiles .wl-clear{border-top-color:var(--accent)}.wl-tiles .wl-none{border-top-color:var(--line)}
.wl-asset{margin-top:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}
.wl-asset.wl-affected{border-left:5px solid var(--p1)}.wl-asset.wl-check{border-left:5px solid var(--p3)}.wl-asset.wl-clear{border-left:5px solid var(--accent)}
.wl-asset-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 16px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.wl-asset-name{font:600 15px/1.3 var(--mono);margin:0;flex:1 1 240px;min-width:0;overflow-wrap:anywhere}
.wl-hit{padding:14px 16px;border-top:1px solid var(--line)}
.wl-hit:first-of-type{border-top:0}
.wl-hit-head{display:flex;gap:10px;align-items:flex-start}
.wl-hit-head h4{font:700 17px/1.3 var(--display);margin:0}
.wl-hit-head h4 a{color:var(--fg);text-decoration:none}.wl-hit-head h4 a:hover{text-decoration:underline}
.wl-tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.wl-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;margin:10px 0 4px;font-size:15px}
.wl-facts dt{color:var(--fg-2);font-weight:600}
.wl-facts dd{margin:0}
.wl-fold{margin-top:8px;border:1px solid var(--line);border-radius:var(--r);padding:0 12px}
.wl-fold>summary{cursor:pointer;padding:9px 0;font-weight:600;font-size:14.5px}
.wl-fold[open]>summary{border-bottom:1px solid var(--line);margin-bottom:8px}
.wl-fold ul{margin:0 0 10px 1.1em;display:grid;gap:4px}.wl-fold p{margin:0 0 10px}
.wl-also{margin-top:8px}.wl-also ul{margin:4px 0 0 1.1em;display:grid;gap:3px;font-size:14.5px}
.wl-links{margin-top:10px;font-size:14px}
.wl-none-list{margin-top:18px}
@media (max-width:640px){
  .wl-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wl-facts{grid-template-columns:1fr;gap:2px}
  .wl-facts dd{margin-bottom:6px}
  .wl-hit,.wl-asset-head{padding-inline:12px}
}

/* ---------- Archive calendar (29 Oct 2026) ---------- */
.cal{margin-top:22px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);padding:16px 18px;max-width:560px}
.cal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.prose .cal h2{margin:0;padding:0;border:0;font:600 17px/1.3 var(--sans)}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-nav b{min-width:9.5em;text-align:center;font-weight:600}
.cal-nav .btn{width:34px;justify-content:center;padding:0}
.cal-nav .btn svg{width:16px;height:16px}
.cal-nav .btn:disabled{opacity:.4;cursor:default}
.cal-table{width:100%;border-collapse:collapse;margin-top:12px;table-layout:fixed}
.cal-table th{font-size:12.5px;font-weight:600;color:var(--fg-2);padding:4px 0;text-align:center}
.cal-table td{padding:3px;text-align:center}
.cal-day{display:grid;place-items:center;height:40px;border-radius:8px;font-variant-numeric:tabular-nums;color:var(--fg-2);font-size:14.5px;position:relative}
a.cal-day{color:var(--fg);font-weight:600;text-decoration:none;background:var(--panel-2);border:1px solid var(--line)}
a.cal-day:hover{border-color:var(--fg-2)}
a.cal-day i{position:absolute;bottom:5px;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--fg-2)}
a.cal-day.sev-critical i{background:var(--p1)}a.cal-day.sev-high i{background:var(--p2)}a.cal-day.sev-medium i{background:var(--p3)}a.cal-day.sev-low i{background:var(--p4)}
.cal-wk{border-left:1px solid var(--line);font-size:13px}
.cal-wk a{font-weight:600}
.cal-foot{margin-top:10px;font-size:14px;color:var(--fg-2)}
@media (max-width:640px){.cal{padding:12px}.cal-day{height:36px;font-size:13.5px}.cal-table th{font-size:11.5px}.cal-wk{font-size:12px}}
/* ---------- Analytics (29 Oct 2026) ---------- */
.analytics{padding-block:30px 60px}
.analytics h1{font:700 clamp(28px,3.4vw,40px)/1.15 var(--display);letter-spacing:-.03em;margin-top:8px}
.analytics .lede{margin-top:12px;font-size:18px;color:var(--fg-2);max-width:66ch}
.an-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:20px 0 4px}
.an-span{font-size:14px;color:var(--fg-2);margin-left:6px}
.an-empty{margin-top:16px;color:var(--fg-2)}
.an-tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:16px}
.an-tile{border:1px solid var(--line);border-top:4px solid var(--fg-2);border-radius:var(--r);background:var(--panel);padding:12px 14px;display:grid;gap:2px}
.an-tile b{font:700 30px/1 var(--display);font-variant-numeric:tabular-nums}
.an-tile span{font-size:14px;font-weight:600}
.an-tile small{font-size:13px;color:var(--fg-2)}
.an-tile.p1{border-top-color:var(--p1)}.an-tile.kev{border-top-color:var(--kev)}.an-tile.act{border-top-color:var(--p2)}.an-tile.ok{border-top-color:var(--accent)}
.an-group{font:700 24px/1.25 var(--display);letter-spacing:-.02em;margin:34px 0 0;padding-top:14px;border-top:1px solid var(--line)}
.an-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.an-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);padding:16px 18px;min-width:0}
.an-wide{margin-top:16px}
.an-card h2{font:600 16px/1.3 var(--sans);margin:0 0 10px}
.an-note{font-size:13px;color:var(--fg-2);margin:-4px 0 10px}
.an-chart svg{width:100%;height:auto;display:block}
.an-grid-line{stroke:var(--line);stroke-width:1}
.an-axis{fill:var(--fg-2);font:500 11px var(--sans)}
rect.an-critical{fill:var(--p1)}rect.an-high{fill:var(--p2)}rect.an-medium{fill:var(--p3)}rect.an-low{fill:var(--p4)}
.an-key{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:var(--fg-2);margin-top:8px}
.an-k{display:inline-flex;align-items:center;gap:6px}.an-k i{width:10px;height:10px;border-radius:2px;display:inline-block}
.an-k.an-critical i{background:var(--p1)}.an-k.an-high i{background:var(--p2)}.an-k.an-medium i{background:var(--p3)}.an-k.an-low i{background:var(--p4)}
.an-bars{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.an-bars summary{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(60px,1fr) 34px;gap:10px;align-items:center;cursor:pointer;list-style:none;padding:6px 4px;border-radius:6px;font-size:14.5px}
.an-bars summary::-webkit-details-marker{display:none}
.an-bars summary:hover{background:var(--panel-2)}
.an-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-track{height:10px;border-radius:5px;background:var(--panel-2);overflow:hidden;display:block}
.an-fill{display:block;height:100%;background:var(--accent);border-radius:5px}
.an-count{text-align:right;font-variant-numeric:tabular-nums}
.an-stories{margin:4px 0 10px 1.1em;display:grid;gap:4px;font-size:14px}
.an-stories .an-more{list-style:none;color:var(--fg-2)}
.an-none{font-size:14px;color:var(--fg-2)}
.an-how{margin-top:34px;padding-top:14px;border-top:1px solid var(--line);max-width:76ch}
.an-how h2{font:600 16px/1.3 var(--sans)}
.an-how p{margin-top:8px;font-size:14.5px;color:var(--fg-2)}
@media (max-width:900px){.an-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}.an-grid{grid-template-columns:1fr}}
@media (max-width:640px){.an-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.an-card{padding:14px}.an-bars summary{grid-template-columns:minmax(0,1.4fr) minmax(40px,.8fr) 28px;gap:8px}}

/* ---------- Design pass (29 Oct 2026, from the independent design review) ----------
   Flatter story cards with a thin severity bar, a shorter masthead with matching controls, quieter tags and share
   icons, an unboxed editor's reading, stronger surfaces and field borders in dark mode, sentence-case labels, and
   a shorter path to the first story on a phone. Later rules on purpose: they override the older ones above. */
:root{--fg-3:#7D8F84}
:root:not([data-theme="light"]){--panel:#0E1411;--line:#26352D;--field-line:#6B7D72}
:root[data-theme="light"]{--fg-3:#5E6E64}

/* masthead */
.mast .wrap{padding-block:10px;min-height:64px}
.brand{column-gap:10px}
.brand svg{width:38px;height:38px}
.brand .n{font-size:19px;letter-spacing:-.02em}
.brand .t{font-size:12.5px;margin-top:1px}
.brand .t .tg{display:none}
.theme,.menu-btn{width:40px;height:40px;border-radius:8px;border:0;background:transparent}
.theme:hover,.menu-btn:hover{background:var(--steel-2)}
.cta-top{min-height:40px;border-radius:8px}

/* story cards: no box, a thin severity bar; only severity is filled */
.story{background:none;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;margin:0;padding:26px 0 26px 22px}
.story::before{content:"";position:absolute;left:0;top:26px;bottom:26px;width:3px;border-radius:2px;background:var(--sev,var(--line))}
.story.critical{--sev:var(--p1)}.story.high{--sev:var(--p2)}.story.medium{--sev:var(--p3)}.story.low{--sev:var(--p4)}
.story.lead{padding:30px 0 30px 24px}
.story.lead::before{top:30px;bottom:30px;width:4px}
#list>.story:first-child,#list>:first-child .story{border-top:0}
.story.target{outline-offset:8px;border-radius:6px}
.story h2,.story.lead h2{max-width:none}
.tag.kev{background:transparent;color:var(--p1);border-color:currentColor}
.tag.action{background:transparent;color:var(--fg-2);border-color:var(--line)}
.prose .story h2{margin:12px 0 0;padding:0;border:0}

/* editor's reading: one level, no icon per row */
.insight{border:0;border-top:1px solid var(--line);border-radius:0;background:none;padding:14px 0 0;margin-top:18px}
.insight .row{grid-template-columns:160px minmax(0,1fr)}
.insight dt{font:600 13px/1.45 var(--sans);color:var(--fg-2)}
.insight dt svg{display:none}
.insight .rows{font-size:15px;line-height:1.55}
.insight .note{border-top:0;padding-top:2px}
.attack .t{background:none;border:0;padding:0}

/* share row: small square ghost icons */
.ico{width:32px;height:32px;border-radius:8px;border-color:transparent;background:transparent;color:var(--fg-2)}
.ico:hover{background:var(--panel-2);color:var(--fg);border-color:var(--line)}
.ico svg{width:17px;height:17px}
.ico.li,.ico.wa,.ico.fb,.ico.tg{color:var(--fg-2)}

/* search and the Filters button share a row; the open filters take the full width below */
.toolbar{flex-wrap:wrap}
.toolbar .search{flex:1 1 220px;width:auto}
.filters{flex:0 0 auto}
.filters[open]{flex:1 1 100%}
.count.idle{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* labels in sentence case, one badge style */
.kind{font:600 12px/1 var(--sans);letter-spacing:0;text-transform:none;padding:5px 8px;border-radius:4px}
.inshort-h,.fromblog h2,.prose .inshort-box h2{text-transform:none;letter-spacing:0}

/* the reading key folds on every screen; the phone hint only on phones */
@media (min-width:901px){.sub .hint{display:none}}

@media (max-width:640px){
  .mast .wrap{min-height:56px;padding-block:8px}
  .brand svg{width:32px;height:32px}
  .brand .n{font-size:17px}
  .board .cell{padding:6px 8px 5px;border-top-width:3px;min-height:0}
  .board .cell b{font-size:20px}
  .board .cell span{font-size:11.5px}
  .story{padding:22px 0 22px 16px}
  .story::before{top:22px;bottom:22px}
  .story.lead{padding:24px 0 24px 16px}
  .story.lead::before{top:24px;bottom:24px}
  .acts .lbl{display:none}
}

/* ---------- Reading first (31 Oct 2026) ----------
   The editor asked for a calmer page that is easy on the eye and lets the reader focus on the news. So: softer
   surfaces in both themes and the system theme by default; a serif (Source Serif 4) for page and story titles,
   Inter for everything else; one column of text no wider than a comfortable line; severity as a coloured word,
   not a coloured block; the editor's reading and the share options closed until asked for; Also today folded to
   headlines. Later rules on purpose: they override the older ones above. */
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/source-serif-4-latin-600-normal.woff2") format("woff2")}
:root{--serif:"Source Serif 4",Georgia,"Times New Roman",serif;--measure:46rem}
:root:not([data-theme="light"]){
  --bg:#111513; --panel:#161B18; --panel-2:#1B211D; --fg:#E4E9E5; --fg-2:#A9B4AD; --fg-3:#808C85;
  --line:#272F2A; --line-2:#1F2622; --steel:#111513; --steel-2:#1B211D; --steel-fg:#E4E9E5; --steel-muted:#97A39B;
  --link:#86D9A8; --field-line:#4D5A52;
}
:root[data-theme="light"]{
  --bg:#FBFAF7; --panel:#FFFFFF; --panel-2:#F2F1EC; --fg:#1A1F1C; --fg-2:#4F5953; --fg-3:#5F6862;
  --line:#E2E0D9; --line-2:#ECEAE4; --steel:#FBFAF7; --steel-2:#EFEEE8; --steel-fg:#1A1F1C; --steel-muted:#5E6862;
  --accent:#0B7A40; --link:#0B6B3A; --field-line:#B9BDB6; --shadow:none;
}
body{font-size:17px;line-height:1.65}
:root[data-theme="light"] .menu-btn{border-color:var(--line)}
:root[data-theme="light"] .js .mast.open .nav{box-shadow:0 14px 34px rgba(26,31,28,.12)}
.mast{border-bottom:1px solid var(--line)}

/* the top: the date, one sentence, the counts, and when the next briefing lands */
.status{background:none;border-bottom:0;padding:22px 0 26px}
.issue-head{max-width:var(--measure)}
.status .eyebrow{font:600 13.5px/1.3 var(--sans);color:var(--fg-2);letter-spacing:0}
.status h1{font:600 clamp(30px,3.6vw,44px)/1.12 var(--serif);letter-spacing:-.012em;margin-top:6px;max-width:none}
.status .lede{font-size:18.5px;line-height:1.55;color:var(--fg-2);margin-top:12px;max-width:60ch}
.tally{font-weight:500}
.board{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.board .cell{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px 0 10px;border:1px solid var(--line);border-top-width:1px;border-radius:999px;background:transparent;font-size:14px;color:var(--fg)}
.board .cell::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--sev,var(--fg-3))}
.board .cell.p1{--sev:var(--p1)} .board .cell.p2{--sev:var(--p2)} .board .cell.p3{--sev:var(--p3)} .board .cell.p4{--sev:var(--p4)}
.board .cell b{font:700 14px/1 var(--sans);letter-spacing:0}
.board .cell span{font-size:14px;font-weight:500;color:var(--fg-2)}
.board .cell:hover:not(:disabled){border-color:var(--fg-3);box-shadow:none}
.board .cell[aria-pressed="true"]{box-shadow:none;border-color:var(--fg);background:var(--panel-2)}
.byline{margin-top:14px;font-size:14px;color:var(--fg-3)}
.byline .next{color:var(--fg-2);font-weight:500}
.byline .next::before{width:7px;height:7px}
.byline .btn{margin-left:0;border:0;background:none;min-height:30px;padding:0;color:var(--fg-2);font-weight:500;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.byline .btn:hover{color:var(--fg);text-decoration-color:currentColor}
.byline .btn svg{width:15px;height:15px}
.quiet{color:var(--fg-3);font-size:15px}

/* the column of stories and the side column */
@media (min-width:901px){.main{grid-template-columns:minmax(0,1fr) 300px;gap:64px;padding-block:22px 64px}.side{padding-top:26px}}
#main>*{max-width:var(--measure)}
.toolbar{border-bottom:0;padding-bottom:4px}
.search{border-color:var(--line);background:transparent}
.filters>summary{background:transparent;border-color:var(--line);font-weight:500;color:var(--fg-2)}
.daybar{border-bottom:1px solid var(--line);padding-bottom:10px}

/* a story */
.story,.story.lead{padding:30px 0 30px;border-top:1px solid var(--line);max-width:var(--measure)}
.story::before,.story.lead::before{content:none}
#list>.story:first-child{border-top:0;padding-top:22px}
.kick{display:flex;flex-wrap:wrap;align-items:center;gap:2px 0;font:600 13px/1.5 var(--sans);color:var(--fg-2);margin:0}
.kick>span+span::before{content:"·";margin:0 8px;color:var(--fg-3);font-weight:400}
.kick .sev{display:inline-flex;align-items:center;gap:6px;color:var(--sev,var(--fg-2))}
.kick .sev::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.story.critical,.kick.critical{--sev:var(--p1)} .story.high,.kick.high{--sev:var(--p2-ink)} .story.medium,.kick.medium{--sev:var(--p3)} .story.low,.kick.low{--sev:var(--p4)}
.kick .kev{color:var(--p1)}
.kick .upd{color:var(--accent)}
.kick .num{font-weight:500;color:var(--fg-3);font-variant-numeric:tabular-nums}
.kick .mine{background:var(--accent-bg);color:var(--fg);border-radius:4px;padding:0 6px}
.story h2,.story.lead h2{font:600 25px/1.22 var(--serif);letter-spacing:-.008em;margin-top:8px;max-width:none}
.story.lead h2{font-size:31px;line-height:1.16}
.story h2 a,.story h3 a{color:inherit;text-decoration:none}
.story h2 a:hover,.story h3 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.src{font-size:14px;color:var(--fg-3);margin-top:8px;gap:2px 12px}
.src b{color:var(--fg-2);font-weight:600}
.src .cves a{color:var(--fg-3);text-decoration:none;border-bottom:1px dotted var(--line)}
.src .cves a:hover{color:var(--fg)}
.three{margin-top:14px;gap:10px;max-width:none}
.three p,.story.lead .three{font-size:17px;line-height:1.65}
.three b{font-weight:600}
.three .pri{margin:0;color:inherit;font-size:inherit}
.three .pri b{color:var(--fg)}
.three .pri a{font-weight:600;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.three .pri.act a{color:var(--p1)} .three .pri.plan a{color:var(--p2-ink)} .three .pri.track a{color:var(--fg-2)}
.correction,.update{border-left-width:3px;border-radius:0 6px 6px 0}

/* the foot of a story: two quiet buttons and the source; their panels open underneath */
.sfoot{display:flex;flex-wrap:wrap;align-items:center;gap:4px 22px;margin-top:16px;font-size:14px}
.tgl{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 0;min-height:36px;color:var(--fg-2);font-weight:600}
.tgl::after{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s}
.tgl[aria-expanded="true"]::after{transform:translateY(1px) rotate(-135deg)}
.tgl:hover,.tgl[aria-expanded="true"]{color:var(--fg)}
.origin{margin:0 0 0 auto;padding:0;border:0;font-size:13.5px;color:var(--fg-3);text-decoration:none}
.origin::after{content:" \2197"}
.origin:hover{color:var(--fg);text-decoration:underline;text-underline-offset:3px}
.panel{margin-top:10px;padding:16px 18px;background:var(--panel-2);border-radius:10px}
.readpanel .insight{margin:0;padding:0;border:0}
.readpanel .insight .head h3{display:none}
.readpanel .insight .head{justify-content:flex-start}
.insight .rows{font-size:15.5px}
.sharepanel .acts{margin:0}
.sharepanel .sheet{margin-top:12px;background:var(--panel)}

/* Also today: headlines; the facts fold under each */
.routine{border-top:1px solid var(--line);margin-top:20px;padding-top:28px;max-width:var(--measure)}
.routine h2{font:600 22px/1.2 var(--serif)}
.routine>p{font-size:14.5px;color:var(--fg-3)}
.routine>p a{color:var(--fg-2)}
.story.compact{padding:18px 0;border-top:1px solid var(--line-2);margin:0}
.story.compact::before{content:none}
.story.compact h3,.story.compact h2{font:600 19px/1.3 var(--serif);margin-top:6px}
.prose .story{max-width:none}
.prose .story h1{max-width:none}
.fold3{margin-top:6px}
.fold3>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--fg-3);font-size:13.5px;font-weight:500;min-height:32px}
.fold3>summary::-webkit-details-marker{display:none}
.fold3>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.fold3[open]>summary::after{transform:translateY(1px) rotate(-135deg)}
.fold3>summary:hover{color:var(--fg)}
.fold3 .three p{font-size:15.5px}
.fold3 .sfoot{margin-top:8px}
#list .story.compact{max-width:var(--measure)}

/* the side column: no heavy boxes */
.box{background:var(--panel-2);border:0;box-shadow:none;border-radius:12px}
.sub{background:var(--panel-2);color:var(--fg);border:0}
.sub h2{color:var(--fg)} .sub p,.sub label,.sub small,.sub .hint{color:var(--fg-2)}
.sub input{background:var(--bg);border:1px solid var(--field-line);color:var(--fg)}
.sub input::placeholder{color:var(--fg-3)}
.box h2{font:600 20px/1.2 var(--serif)}
.fromblog h3{font-family:var(--serif);font-weight:600}
.foldbox>summary h2{font:600 18px/1.2 var(--serif)}
.key .kick{font-size:13px}

/* titles elsewhere use the same serif */
.prose h1,.blog h1,.analytics h1,.prose .story h1{font-family:var(--serif);font-weight:600;letter-spacing:-.01em}
.post-feature h2,.post-card h3{font-family:var(--serif);font-weight:600}
.post-body p{font-size:17.5px;line-height:1.7}

@media (max-width:900px){
  .main{gap:36px;padding-top:8px}
  .status{padding:14px 0 20px}
}
@media (max-width:640px){
  .status h1{font-size:28px}
  .status .lede{font-size:17px}
  .board{gap:6px;margin-top:12px}
  .board .cell{min-height:30px;font-size:13.5px}
  .story,.story.lead{padding:24px 0}
  .story h2{font-size:21.5px}
  .story.lead h2{font-size:24.5px}
  .three p,.story.lead .three{font-size:16.5px}
  .sfoot{gap:2px 18px}
  .origin{flex-basis:100%;margin:2px 0 0}
  .panel{padding:14px;margin-inline:-4px}
  .insight .row{grid-template-columns:1fr}
}

/* Monthly patterns post: the month's counts as bars (widths in 5% steps: the CSP allows no style attributes) */
.figs{margin:32px 0 8px;padding-top:4px}
.figs-grid,.figs{display:block}
.figs .fig{margin:14px 0 0}
.figs figcaption{font:600 14.5px/1.3 var(--sans);color:var(--fg);margin-bottom:8px}
.figs ol{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.figs li{display:grid;grid-template-columns:minmax(96px,150px) minmax(0,1fr) 28px;gap:10px;align-items:center;font-size:14px;line-height:1.35}
.fig-name{color:var(--fg-2);overflow-wrap:anywhere}
.fig-track{height:10px;background:var(--line-2);border-radius:5px;overflow:hidden}
.fig-fill{display:block;height:100%;background:var(--accent);border-radius:5px}
.fig-n{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.prose .fig-more{font-size:14px;color:var(--fg-3);margin-top:16px}
.w1{width:5%}.w2{width:10%}.w3{width:15%}.w4{width:20%}.w5{width:25%}.w6{width:30%}.w7{width:35%}.w8{width:40%}.w9{width:45%}.w10{width:50%}
.w11{width:55%}.w12{width:60%}.w13{width:65%}.w14{width:70%}.w15{width:75%}.w16{width:80%}.w17{width:85%}.w18{width:90%}.w19{width:95%}.w20{width:100%}
.kind.patterns{background:var(--panel-2);color:var(--fg);border:1px solid var(--line)}
.an-read{margin:10px 0 0;font-size:15px;color:var(--fg-2)}
.an-read a{font-weight:600}
:root[data-theme="light"] .brand .t .co{color:var(--accent)}
/* Phones (31 Oct 2026, the editor's screenshot): on an iPhone the name ran under the Subscribe button, because it
   was kept on one line. On narrow screens the name may now wrap to two lines and Subscribe is a little smaller, so
   the two never touch, whatever the phone's font. */
@media (max-width:480px){
  .mast .wrap{grid-template-columns:minmax(0,1fr) auto auto;column-gap:10px}
  .brand{min-width:0;column-gap:8px}
  .brand .n{white-space:normal;font-size:16px;line-height:1.15;overflow-wrap:anywhere}
  .cta-top{padding:0 12px;font-size:13.5px;min-height:36px}
}
.quietday{margin:0 0 14px;padding:10px 14px;border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0 8px 8px 0;font-size:15px;color:var(--fg-2);max-width:var(--measure)}
.quietday b{color:var(--fg)}
/* Dashboard (6 Nov 2026): filters, one trend chart with four lines, the latest Now stories. */
.db-filters{margin:20px 0 0;display:grid;gap:10px}
.db-filters .an-bar{margin:0}
.db-selects{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}
.db-selects label{display:grid;gap:4px;font-size:13px;font-weight:600;color:var(--fg-2)}
.db-selects select{font:500 14.5px var(--sans);color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 30px 7px 10px;max-width:220px;min-height:38px}
.db-selects .db-check{display:flex;align-items:center;gap:8px;font-size:14.5px;color:var(--fg);min-height:38px}
.db-check input{width:18px;height:18px;accent-color:var(--accent)}
.db-span{display:block;margin:12px 0 0}
.db-line{fill:none;stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.db-l-all{stroke:var(--fg)}.db-l-crit{stroke:var(--p1)}.db-l-kev{stroke:var(--kev);stroke-dasharray:6 4}.db-l-act{stroke:var(--accent);stroke-dasharray:2 4}
.db-dot{stroke:none}.db-dot.db-l-all{fill:var(--fg)}.db-dot.db-l-crit{fill:var(--p1)}.db-dot.db-l-kev{fill:var(--kev)}.db-dot.db-l-act{fill:var(--accent)}
.db-hit{fill:transparent}.db-pt:hover .db-hit{fill:var(--panel-2);opacity:.6}
.db-key .an-k i{width:18px;height:0;border-radius:0;border-top:3px solid}
.db-key .db-l-all i{border-color:var(--fg)}.db-key .db-l-crit i{border-color:var(--p1)}.db-key .db-l-kev i{border-top-style:dashed;border-color:var(--kev)}.db-key .db-l-act i{border-top-style:dotted;border-color:var(--accent)}
.db-act{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.db-act li{font-size:15px;line-height:1.45}
.db-act a{font-weight:600}
.db-meta{color:var(--fg-2);font-size:13.5px}
.dash .an-grid{margin-top:16px}
@media (max-width:640px){.db-selects label{flex:1 1 calc(50% - 7px)}.db-selects select{max-width:none;width:100%}}
/* Monthly post evidence (6 Nov 2026): one trend chart and short most-named lines. */
.fig-trend{margin:14px 0 0}
.fig-trend figcaption{font:600 14.5px/1.3 var(--sans);margin-bottom:6px}
.post-trend{width:100%;height:auto;display:block}
.pt-axis{font-size:14px}
.fig-list{margin:18px 0 0;display:grid;gap:10px}
.fig-row{display:grid;gap:2px}
.fig-list dt{font:600 14px/1.3 var(--sans);color:var(--fg)}
.fig-list dd{margin:0;font-size:14.5px;line-height:1.5;color:var(--fg-2)}
.fig-list dd b{color:var(--fg);font-variant-numeric:tabular-nums}
@media (max-width:640px){.pt-axis{font-size:20px}.post-trend .db-line{stroke-width:3.4}}
.figs .fig-trend .an-key{font-size:13.5px;margin-top:6px}
/* Dashboard beside Subscribe (6 Nov 2026, the editor wants the dashboard promoted): on every page, at every width.
   Icon only on narrow phones; the name stays readable to screen readers. */
.mast .dash-top{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border:1px solid var(--line);border-radius:8px;color:var(--fg);text-decoration:none;font-weight:600;font-size:14px;white-space:nowrap}
.mast .dash-top svg{width:18px;height:18px;flex:none}
.mast .dash-top:hover{border-color:var(--accent);color:var(--accent)}
.mast .dash-top[aria-current="page"]{border-color:var(--accent);color:var(--accent)}
@media (max-width:900px){.mast .wrap{grid-template-columns:minmax(0,1fr) repeat(4,auto)}}
@media (max-width:480px){
  .mast .dash-top{min-height:36px;padding:0 9px}
  .mast .dash-top span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
@media (max-width:400px){
  .mast .wrap{column-gap:6px}
  .mast .dash-top{padding:0 7px}
  .cta-top{padding:0 10px}
}
/* Dashboard v2 (6 Nov 2026, after the editor's review): key numbers, three trend charts, bar charts.
   Series colours: three categorical slots that pass colour-blind and normal-vision separation in both themes
   (checked with the data-viz palette validator against each theme's panel colour). */
:root{--viz-1:#3987e5;--viz-2:#d95926;--viz-3:#199e70;--viz-bar:#3DDC84}
:root[data-theme="light"]{--viz-1:#2a78d6;--viz-2:#eb6834;--viz-3:#1baf7a;--viz-bar:#0B7A40}
.db-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-top:16px}
.db-kpi{border:1px solid var(--line);border-top:3px solid var(--fg-2);border-radius:var(--r);background:var(--panel);padding:12px 14px;display:grid;gap:3px;align-content:start}
.db-kpi.act{border-top-color:var(--p2)}.db-kpi.kev{border-top-color:var(--kev)}.db-kpi.p1{border-top-color:var(--p1)}.db-kpi.dmz{border-top-color:var(--p4)}.db-kpi.ok{border-top-color:var(--accent)}
.db-kpi-label{font-size:13.5px;font-weight:600;color:var(--fg-2);line-height:1.3}
.db-kpi-value{font:700 32px/1.05 var(--sans);color:var(--fg)}
.db-kpi-note,.db-kpi-delta{font-size:12.5px;color:var(--fg-2);line-height:1.35}
.db-kpi-delta{color:var(--fg)}
.db-trends{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.db-wide{grid-column:1/-1}
.db-chart-card h3,.db-bars-grid h3{font:600 16px/1.3 var(--sans);margin:0 0 6px}
.db-chart-card .an-note{margin:0 0 8px}
.db-plotwrap{position:relative}
.db-svg{width:100%;height:auto;display:block;touch-action:pan-y}
.db-svg:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}
.db-grid{stroke:var(--line);stroke-width:1}
.db-base{stroke:var(--fg-3,var(--fg-2));stroke-width:1;opacity:.6}
.db-axis{fill:var(--fg-2);font:500 12px var(--sans);font-variant-numeric:tabular-nums}
.db-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.db-line.db-s1,.db-dot.db-s1{stroke:var(--viz-1)}.db-line.db-s2,.db-dot.db-s2{stroke:var(--viz-2)}.db-line.db-s3,.db-dot.db-s3{stroke:var(--viz-3)}
.db-dot.db-s1{fill:var(--viz-1)}.db-dot.db-s2{fill:var(--viz-2)}.db-dot.db-s3{fill:var(--viz-3)}
.db-hover-dot{stroke:var(--panel)!important;stroke-width:2}
.db-cross{stroke:var(--fg-2);stroke-width:1}
.db-hit{fill:transparent;cursor:crosshair}
.db-tip{position:absolute;top:0;transform:translateX(12px);background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.18);padding:8px 10px;font-size:13px;pointer-events:none;min-width:150px;z-index:2}
.db-tip.flip{transform:translateX(calc(-100% - 12px))}
.db-tip-when{margin:0 0 4px;color:var(--fg-2);font-weight:600}
.db-tip-row{margin:2px 0;display:flex;align-items:center;gap:6px;color:var(--fg-2)}
.db-tip-row b{color:var(--fg);font-variant-numeric:tabular-nums}
.db-key-line{display:inline-block;width:14px;height:0;border-top:2px solid;flex:none}
.db-key-line.db-s1{border-color:var(--viz-1)}.db-key-line.db-s2{border-color:var(--viz-2)}.db-key-line.db-s3{border-color:var(--viz-3)}
.db-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13.5px;color:var(--fg-2);margin:8px 0 0}
.db-legend span{display:inline-flex;align-items:center;gap:6px}
.db-legend b{color:var(--fg)}
.db-tablewrap{margin-top:8px;font-size:13.5px}
.db-tablewrap summary{cursor:pointer;color:var(--link);font-weight:600}
.db-table{border-collapse:collapse;margin-top:8px;width:100%;font-variant-numeric:tabular-nums}
.db-table th,.db-table td{text-align:right;padding:4px 8px;border-bottom:1px solid var(--line-2)}
.db-table th:first-child,.db-table thead th:first-child{text-align:left}
.db-table thead th{color:var(--fg-2);font-weight:600}
.db-group-note{margin:6px 0 0}
.db-bars{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.db-bars li{display:grid;gap:3px;padding:4px 0}
.db-bar-btn{all:unset;display:grid;gap:3px;width:100%;cursor:pointer;border-radius:6px;padding:4px 6px;margin:-4px -6px;box-sizing:content-box}
.db-bar-btn:hover{background:var(--panel-2)}
.db-bar-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.db-bar-btn.on{background:var(--accent-bg)}
.db-bar-name{font-size:14px;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-bar-row{display:flex;align-items:center;gap:8px}
.db-bar{display:block;height:14px;background:var(--viz-bar);border-radius:0 4px 4px 0;min-width:3px}
.db-bar-n{font-size:13.5px;color:var(--fg);font-variant-numeric:tabular-nums}
.db-act .tag{vertical-align:1px}
.db-more{color:var(--fg-2);font-size:14px}
.db-list-card{margin-top:22px}
@media (max-width:1000px){.db-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.db-trends{grid-template-columns:1fr}}
@media (max-width:520px){.db-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.db-kpi-value{font-size:28px}}
/* Dashboard v3 (6 Nov 2026, the editor: bigger charts, a note on what each says, cleaner bars). The dashboard uses
   the full page width, not the reading measure. */
#main.dash>*{max-width:none}
#main.dash>.lede,#main.dash>.an-read{max-width:66ch}
.db-trends{grid-template-columns:1fr}
/* Wide screens: the first two charts side by side, When to act full width under them (9 Nov 2026). */
@media (min-width:1180px){.db-trends{grid-template-columns:repeat(2,minmax(0,1fr))}.db-trends>.db-chart-card:nth-child(3){grid-column:1/-1}}
.db-chart-main{min-width:0}
/* In short, above each chart: the takeaway first, full width for the chart (9 Nov 2026). */
.db-say{margin:4px 0 10px;padding:10px 14px;border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0 8px 8px 0;max-width:80ch}
.db-say p{margin:0}
.db-say-key{font-size:15.5px;line-height:1.5;font-weight:600;color:var(--fg)}
.db-say-h{display:inline-block;margin-right:8px;font:700 11.5px/1 var(--sans);text-transform:uppercase;letter-spacing:.07em;color:var(--accent-ink,var(--accent))}
.db-say-more{margin-top:4px!important;font-size:14px;line-height:1.5;color:var(--fg-2)}




.db-axis{font-size:13px}
.db-line{stroke-width:2.5}

.db-bar-say{margin:0 0 10px;font-size:14px;color:var(--fg-2)}
.db-bars{gap:2px}
.db-bars li.db-bar-li{padding:0;display:block}
.db-bar-line{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr) 2.6em;align-items:center;gap:10px;min-height:32px;width:100%;box-sizing:border-box;padding:2px 6px;border-radius:6px}
button.db-bar-line{all:unset;display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr) 2.6em;align-items:center;gap:10px;min-height:32px;width:100%;box-sizing:border-box;padding:2px 6px;border-radius:6px;cursor:pointer}
.db-bar-line .db-bar-name{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-bar-track{display:block;position:relative;height:18px;background:repeating-linear-gradient(90deg,transparent 0 calc(50% - .5px),var(--line) calc(50% - .5px) calc(50% + .5px),transparent calc(50% + .5px) 100%)}
.db-bar-track .db-bar{height:18px;border-radius:0 4px 4px 0}
.db-bar-line .db-bar-n{text-align:right;font-size:14px}
.db-bar-scale{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr) 2.6em;gap:10px;padding:4px 6px 0;font-size:12px;color:var(--fg-2)}
.db-bar-ticks{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:3px;font-variant-numeric:tabular-nums}
button.db-bar-line:hover{background:var(--panel-2)}
button.db-bar-line:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button.db-bar-line.on{background:var(--accent-bg)}
@media (min-width:1000px){.db-bars-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.db-legend .db-key-line,.db-tip .db-key-line{width:20px;border-top-width:3px}
.db-legend{font-size:14px}
/* Who and where as top lists (6 Nov 2026 night): tabs, one table with a trend line and a severity strip per row. */
.db-top-card{margin-top:14px}
.db-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--line);margin:-4px 0 14px}
.db-tabs [role=tab]{all:unset;cursor:pointer;padding:9px 14px;font:600 14.5px var(--sans);color:var(--fg-2);border-bottom:3px solid transparent;margin-bottom:-1px}
.db-tabs [role=tab][aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent)}
.db-tabs [role=tab]:hover{color:var(--fg)}
.db-tabs [role=tab]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:6px}
.db-top-say{margin:0 0 10px;font-size:15px;color:var(--fg-2)}
.db-top-say b{color:var(--fg)}
.db-top-wrap{overflow-x:auto}
.db-top{width:100%;border-collapse:collapse;font-size:14.5px}
.db-top th,.db-top td{padding:9px 10px;border-bottom:1px solid var(--line-2,var(--line));text-align:left;vertical-align:middle}
.db-top thead th{font:600 12.5px var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-2);border-bottom:1px solid var(--line)}
.db-top tbody tr:hover{background:var(--panel-2)}
.db-top tbody tr.on{background:var(--accent-bg)}
.db-top .db-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.db-top-rank{width:2em;color:var(--fg-2);font-variant-numeric:tabular-nums}
.db-top tbody th{font-weight:500}
.db-top-name{all:unset;cursor:pointer;color:var(--fg);font-weight:600;border-bottom:1px dotted var(--fg-2)}
.db-top-name:hover,.db-top-name[aria-pressed=true]{color:var(--accent);border-bottom-color:var(--accent)}
.db-top-name:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.db-share{color:var(--fg-2);font-size:12.5px;font-weight:400}
.db-top-trend{width:110px}
.db-spark{width:96px;height:26px;display:block}
.db-spark-line{fill:none;stroke:var(--viz-1);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.db-spark-base{stroke:var(--line);stroke-width:1}
.db-spark-dot{fill:var(--viz-1)}
.db-top-mix{width:30%;min-width:120px}
.db-mix{display:flex;gap:2px;height:12px;border-radius:3px;overflow:hidden}
.db-mix>span{display:block;min-width:4px}
.db-mix-critical{background:var(--p1)}.db-mix-high{background:var(--p2)}.db-mix-medium{background:var(--p3)}.db-mix-low{background:var(--p4)}
.db-mix-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:10px 0 0;font-size:13px;color:var(--fg-2)}
.db-mix-key span{display:inline-flex;align-items:center;gap:5px}
.db-mix-key i{display:inline-block;width:12px;height:12px;border-radius:2px}
.db-top-hint{margin:8px 0 0}
@media (max-width:640px){.db-top-trend,.db-top-rank{display:none}.db-top th,.db-top td{padding:8px 6px}.db-top-mix{min-width:80px}}
@media (max-width:640px){.db-share{display:none}.db-top-mix{width:auto;min-width:64px}.db-top{font-size:14px}.db-top thead th{font-size:11.5px;letter-spacing:.03em}}
.db-sm{display:none}
@media (max-width:640px){.db-lg{display:none}.db-sm{display:inline}.db-top th,.db-top td{padding:8px 4px}.db-top-name{font-weight:600}}
@media (max-width:640px){.db-mix-note{display:none}}
/* Monthly report figures (7 Nov 2026): drawn by code at build time; no inline styles (widths are .w classes). */
.rep-fig{margin:18px 0 26px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.rep-fig figcaption{font:600 15px/1.3 var(--sans);color:var(--fg);margin:0 0 12px}
.rep-note{margin:10px 0 0;font-size:13px;color:var(--fg-2)}
.rep-kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin:0}
.rep-kpis .db-kpi{border-top-color:var(--accent)}
.rep-ladder{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.rep-ladder li{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 2em;align-items:center;gap:12px;font-size:14px}
.rep-lv{color:var(--fg-2);line-height:1.3}
.rep-lv b{color:var(--fg);display:inline-block;min-width:4.6em}
.rep-track{display:block;height:16px;border-left:1px solid var(--line)}
.rep-bar{display:block;height:16px;background:var(--viz-1);border-radius:0 4px 4px 0}
.rep-bar.w0{width:0}
.rep-n{text-align:right;font-variant-numeric:tabular-nums}
.rep-act{display:flex;gap:2px;height:22px;border-radius:4px;overflow:hidden}
.rep-act>span,.post-body .db-mix>span{display:block;flex:none}
.rep-act-key b{color:var(--fg);margin-left:2px}
.rep-kev{margin:0;padding-left:1.4em;display:grid;gap:8px;font-size:14.5px;line-height:1.45}
.rep-kev time{color:var(--fg-2);font-size:13px;margin-right:4px}
.rep-v{color:var(--fg-2);font-size:13px}
.post-body .db-top{font-size:14px}
.post-body .db-top th,.post-body .db-top td{padding:7px 8px}
/* Monthly report, full month (7 Nov 2026): running totals, known-exploited groups, CISA advisories, timeline */
.rep-line{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}
.rep-l1{stroke:var(--viz-1)}.rep-l2{stroke:var(--viz-2);stroke-dasharray:7 4}.rep-l3{stroke:var(--viz-3)}
.rep-mark{stroke:var(--fg-2);stroke-width:1;stroke-dasharray:3 3}
.rep-mark-t{font-size:13px;fill:var(--fg-2)}
.rep-key{gap:8px 18px}
.rep-k{display:inline-flex;align-items:center;gap:7px}
.rep-k i{display:inline-block;width:20px;height:0;border-top:3px solid}
.rep-k.rep-l1 i{border-color:var(--viz-1)}.rep-k.rep-l2 i{border-color:var(--viz-2);border-top-style:dashed}.rep-k.rep-l3 i{border-color:var(--viz-3)}
.rep-k b{color:var(--fg)}
.rep-kgs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.rep-kg{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;background:var(--bg)}
.rep-kg h3{font:600 14px/1.3 var(--sans);margin:0 0 6px;color:var(--fg)}
.rep-kg h3 b{font-size:20px;margin-right:4px;font-variant-numeric:tabular-nums}
.rep-kg ul{list-style:none;margin:0;padding:0;display:grid;gap:3px;font-size:13.5px;line-height:1.35;color:var(--fg)}
.rep-kg time{display:inline-block;min-width:3.6em;color:var(--fg-2);font-size:12.5px;font-variant-numeric:tabular-nums}
.rep-sectors{margin:12px 0 0;font-size:14px;line-height:1.5}
.rep-sectors span{color:var(--fg-2)}
.rep-time{list-style:none;margin:0;padding:0;border-left:2px solid var(--line);display:grid;gap:10px}
.rep-time li{display:grid;grid-template-columns:4.2em minmax(0,1fr);gap:10px;padding-left:12px;position:relative;font-size:14.5px;line-height:1.45}
.rep-time li::before{content:"";position:absolute;left:-6px;top:7px;width:10px;height:10px;border-radius:50%;background:var(--panel);border:2px solid var(--fg-2)}
.rep-time li.rep-t-mark::before{background:var(--viz-2);border-color:var(--viz-2)}
.rep-time time{color:var(--fg-2);font-size:13px;font-variant-numeric:tabular-nums;padding-top:1px}
.post-body .rep-adv td,.post-body .rep-adv th{white-space:nowrap}
.post-body .rep-adv th[scope=row]{white-space:normal}
@media (max-width:760px){.rep-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.rep-ladder li{grid-template-columns:1fr 2em;gap:4px 10px}.rep-ladder .rep-track{grid-column:1/2}.rep-ladder .rep-n{grid-row:1/3;grid-column:2}}
@media (max-width:640px){.rep-fig{padding:12px}.rep-kgs{grid-template-columns:1fr}.rep-mark-t{font-size:18px}.rep-line{stroke-width:3.4}}
/* ---------- Blog on the home page and sharing a post (7 Nov 2026, the editor asked for both) ---------- */
.kind.report{background:var(--accent-bg);color:var(--fg);border:1px solid var(--accent)}
.fromblog{border-top:0}
.fromblog .fb-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.post-share{margin-top:14px}
.post-share.end{margin-top:28px;padding-top:14px;border-top:1px solid var(--line)}
.post-share .lbl{font-weight:600;color:var(--fg-2)}
@media (max-width:640px){.post-share .lbl{display:inline}}
/* ---------- The editor's UI review (7 Nov 2026) ---------- */
/* The lead story stands apart: a panel with its severity edge. */
/* Other stories fold who is affected and what to do. */
.more3{margin-top:10px}
.more3>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:7px;font-size:14.5px;font-weight:600;color:var(--link);min-height:36px}
.more3>summary::-webkit-details-marker{display:none}
.more3>summary::after{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.more3[open]>summary::after{transform:translateY(1px) rotate(-135deg)}
.more3>summary:hover{text-decoration:underline;text-underline-offset:3px}
.more3 .three{margin-top:4px}
/* Headlines break where the words do, not into two balanced halves that leave the right side empty. */
.story h2,.story h3,.prose .story h1,.post-body h1,.post-feature h2{text-wrap:pretty}
/* Phones: a CVE id never breaks mid-number, and the scores never start a line with a stray dot. */
.cves a{white-space:nowrap}
@media (max-width:520px){.kick .num{flex-basis:100%}.kick>.num::before{content:none}}
/* The blog list sits centred at reading width; a lone card takes the full row. */
.blog{max-width:calc(var(--measure) + 32px)}
.post-list>li:only-child{grid-column:1/-1}
/* A story's own page: room under the headline, plain CVE ids. */
.prose .story .src{margin-top:12px}
.prose .story .three{margin-top:18px}
.src .mono.cves{font-family:inherit;font-size:inherit}
/* The smallest phones: the name wraps between words, never inside "Industrial". */
@media (max-width:360px){.brand .n{overflow-wrap:normal;word-break:normal;font-size:15px}.brand{gap:6px}.brand svg{width:28px;height:28px}}
/* The editor (7 Nov 2026, the editor asked for his details back on the Brief): portrait beside the name. */
.editor-hero{display:flex;gap:24px;align-items:center;margin-top:10px}
.editor-hero h1{margin:0}
.editor-hero .lede{margin-top:10px}
.editor-hero .ed-links{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.editor-hero .portrait{width:160px;height:160px;border-radius:50%}
.editor-card{display:flex;gap:18px;align-items:flex-start;margin-top:12px;padding:16px 18px;background:var(--panel-2);border-radius:12px}
.editor-card .portrait{width:96px;height:96px;border-radius:50%;flex:none}
.editor-card p{margin:0 0 8px}
@media (max-width:560px){.editor-hero{flex-direction:column;align-items:flex-start}.editor-hero .portrait{width:120px;height:120px}.editor-card .portrait{width:72px;height:72px}}
/* A quiet footer (7 Nov 2026, the editor: the four columns repeated the menu). Two short lines: who is behind
   the Brief, then the few links the menu does not carry, and the legal links. */
.foot .wrap{display:block;padding-block:22px 26px}
.foot .foot-about{max-width:none;margin:0 0 10px;font-size:13.5px;line-height:1.55}
.foot .foot-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 24px;font-size:13.5px}
.foot .foot-links p{margin:0;max-width:none}
.foot .foot-links a{text-decoration:none}
.foot .foot-links a:hover{text-decoration:underline;text-underline-offset:3px}
.foot .legal{font-size:13.5px}
/* The monthly report, tidied (7 Nov 2026, the editor found it hard to read): notes small and quiet under each
   figure, Purdue levels on one line, sectors as bars, the known-exploited groups only as tall as their lists, and a
   contents list at the top. */
.post-body .rep-fig p.rep-note{font-size:13.5px;line-height:1.5;color:var(--fg-2);margin:12px 0 0;max-width:none}
.post-body .rep-fig figcaption{font:600 15.5px/1.3 var(--sans)}
.rep-kgs{display:block;columns:2;column-gap:12px}
.rep-kgs .rep-kg{break-inside:avoid;margin:0 0 12px}
@media (max-width:640px){.rep-kgs{columns:1}}
.rep-ladder:not(.rep-secs) li{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) 2.2em}
.rep-ladder:not(.rep-secs) .rep-lv{display:grid;grid-template-columns:5.6em minmax(0,1fr);gap:0 8px;align-items:baseline}
.rep-ladder:not(.rep-secs) .rep-lv b{min-width:0}
.rep-secs li{grid-template-columns:minmax(0,1.2fr) minmax(0,1.4fr) 2.2em}
.rep-secs .rep-lv{color:var(--fg)}
.post-body .rep-subcap{font:600 14px/1.3 var(--sans);color:var(--fg);margin:22px 0 10px;padding:0;border:0}
.post-body .toc{margin:22px 0 8px;padding:16px 20px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.post-body .toc h2{font:600 15px/1.3 var(--sans);margin:0 0 8px;padding:0;border:0}
.post-body .toc h2::before{content:none}
.post-body .toc ul{margin:0;padding:0;list-style:none;columns:2;column-gap:28px;font-size:15px;line-height:1.5}
.post-body .toc li{margin:0 0 4px;break-inside:avoid}
.post-body .toc a{color:var(--fg);text-decoration:none}
.post-body .toc a:hover{text-decoration:underline;text-underline-offset:3px}
.post-body h2[id^="sec-"]{scroll-margin-top:80px}
@media (max-width:640px){.post-body .toc ul{columns:1}.rep-ladder:not(.rep-secs) .rep-lv{grid-template-columns:1fr}}
/* The vendor's advisory beside the source (8 Nov 2026) */
.sfoot .origin.vendor~.origin{margin-left:18px}
.three .matters b{font-weight:600}

/* The weekly's share page (site/w/<week end>.html): the week's stories as one ranked list. */
.week-list{margin:18px 0 6px;padding-left:1.4em}
.week-list li{margin:0 0 10px;line-height:1.45}
.week-list .sev{display:inline-block;min-width:64px;margin-right:6px;padding:1px 6px;border-radius:4px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--fg-2);text-align:center}
.week-list .sev.critical{background:#c8102e}.week-list .sev.high{background:#a14a07}.week-list .sev.medium{background:#755600}.week-list .sev.low{background:#1d4ed8}
.week-list .kev{margin-left:6px;font-size:12px;color:#c8102e;text-transform:uppercase;letter-spacing:.04em}

/* When to act leads each story's labels (the key is under "How to read a story") */
.kick .pk{font-weight:700;border:1.5px solid currentColor;border-radius:4px;padding:0 6px;line-height:1.45}
.pk.act{color:var(--p1)} .pk.plan{color:var(--p2-ink)} .pk.track{color:var(--fg-2)}

/* A short sign-up at the end of the reading pages: a reader who got this far is the one most likely to subscribe */
.signup{max-width:var(--measure);margin:36px 0 8px;padding:16px 18px;background:var(--panel-2);border-radius:12px}
.signup h2{font:600 20px/1.2 var(--serif);margin:0 0 6px}
.signup p{margin:0 0 12px;color:var(--fg-2);font-size:15px}

/* Downloads are for subscribers (9 Nov 2026): the sign-up step before a PDF or CSV, and a print that has not been
   through it shows the sign-up note instead of the page (the print shortcut skips the button). */
dialog.gate{max-width:min(460px,calc(100vw - 32px));border:1px solid var(--line);border-radius:14px;padding:22px 22px 18px;background:var(--panel,#fff);color:var(--fg);font-family:var(--sans)}
dialog.gate::backdrop{background:rgba(8,12,16,.55)}
.gate h2{margin:0 0 6px;font-size:21px;line-height:1.2}
.gate>p{margin:0 0 12px;color:var(--fg-2);font-size:15px;line-height:1.5}
.gate form{display:grid;gap:8px}
.gate-f{display:grid;gap:4px;font-size:14px;color:var(--fg-2)}
.gate input,.gate select{font:inherit;font-size:16px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);background:var(--bg,#fff);color:var(--fg);min-height:44px}
.gate-err,.signin-msg.bad{margin:0;color:var(--p1);font-size:14px}
.signin-msg{margin:0;color:var(--accent);font-size:14px;font-weight:600}
.signin-msg:empty{display:none}
.gate-err:empty{display:none}
.gate-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.gate-acts .btn{min-height:44px}
.gate-note{margin:4px 0 0;font-size:13px;line-height:1.45;color:var(--fg-2)}
@media print{dialog.gate{display:none}}
.gate .gate-switch{display:block;margin:10px auto 0}
.gate form.signin[hidden],.gate form[hidden]{display:none}
.lock-card .linkish.lock-note{display:block;margin:10px auto 0}

/* The plain sign-up form on story, weekly and blog pages (needs no script), and the archive's stamped lists */
.sub-inline{max-width:var(--measure);margin:28px 0 8px;padding:16px 18px;background:var(--panel-2);border-radius:12px;display:grid;gap:10px}
.sub-inline label{font-size:15px;color:var(--fg-2);line-height:1.5}
.sub-inline label b{color:var(--fg)}
.sub-inline .row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.sub-inline input{font:inherit;padding:10px 12px;border-radius:var(--r);border:1px solid var(--field-line);background:var(--bg);color:var(--fg);min-height:44px;min-width:0}
.sub-inline small{font-size:13px;color:var(--fg-2)}
@media (max-width:480px){.sub-inline .row{grid-template-columns:1fr}}
.arc-day{margin:14px 0 0}
.arc-day h3{font:600 17px/1.3 var(--serif);margin:0 0 6px}
.arc-day h3 a{color:var(--fg);text-decoration:none}
.arc-stories{list-style:none;margin:0;padding:0 0 0 2px;display:grid;gap:5px;font-size:15px}
.arc-stories .sev{font-weight:700;font-size:13px;margin-right:4px}
.arc-stories .kev{color:var(--p1);font-size:13px;margin-left:6px}

/* Vendor, sector and CVE pages (scripts/build_topics.py) and the topic links on story pages */
.topics{margin:16px 0 0;font-size:14px;display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.topics .lbl{color:var(--fg-2);font-weight:600;margin-right:2px}
.topics a{background:var(--panel-2);border-radius:999px;padding:2px 10px;color:var(--fg);text-decoration:none}
.topics a:hover{text-decoration:underline}
.topic-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:14px}
.topic-list li{border-top:1px solid var(--line);padding-top:12px}
.topic-list .tk{margin:0;font-size:13px;color:var(--fg-2);display:flex;flex-wrap:wrap;gap:2px 10px;align-items:baseline}
.topic-list .tk .sev{font-weight:700}
.topic-list .tk .kev{color:var(--p1)}
.topic-list h3{font:600 18px/1.3 var(--serif);margin:4px 0}
.topic-list h3 a{color:var(--fg);text-decoration:none}
.topic-list h3 a:hover{text-decoration:underline}
.topic-list .tw{margin:0;color:var(--fg-2);font-size:15px}
.cve-facts{margin:12px 0 0;padding-left:18px;display:grid;gap:4px}
.topic-related,.topic-hub{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.topic-related a,.topic-hub a{display:inline-block;background:var(--panel-2);border-radius:999px;padding:4px 12px;color:var(--fg);text-decoration:none}
.topic-hub .n{font-size:12px;color:var(--fg-2);margin-left:-4px}

/* The one line under the counts: when the next briefing comes, read time, and how to read a story */
.byline .howto{font-size:14px;color:var(--fg-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.byline .howto:hover{color:var(--fg)}

/* Archive: the calendar leads; the full lists fold under one control */

/* One heading face (9 Nov 2026 design review): section headings in the serif, like the titles */
.prose h2,.post-body h2,.topic-hub+h2,main.prose section>h2{font:600 22px/1.25 var(--serif);letter-spacing:0}

/* The end of the day's briefing: a clear "you're done", the next time, and the sign-up */
.done-line{margin:32px 0 8px;padding:16px 0 0;border-top:1px solid var(--line);color:var(--fg-2);font-size:15.5px}
.done-line b{color:var(--fg)}
.done-line a{font-weight:600}

/* The read time belongs to the briefing: "Today's briefing · 1 min read" (9 Nov 2026, the editor) */
.eyebrow .readtime:not(:empty)::before{content:"·";margin:0 8px;color:var(--fg-3)}
.eyebrow .readtime{color:var(--fg-2);font-weight:500}

/* The sections in a row on wide screens (9 Nov 2026, the editor, after a design review: every section was behind
   the menu button at full width, and Weekly and Topics were in no menu). The menu button stays for the rest; on
   narrower screens the row is not shown and the menu holds everything, as before. */
.topnav{display:none}
@media (min-width:1100px){
  .js .topnav{display:flex;gap:2px;align-items:center;margin:0 8px 0 auto}
  .js .brand{margin-right:0}
  .topnav a{color:var(--fg-2);text-decoration:none;font-weight:600;font-size:14.5px;padding:8px 10px;border-radius:8px;white-space:nowrap}
  .topnav a:hover{color:var(--fg);background:var(--panel-2)}
  .topnav a[aria-current="page"]{color:var(--fg);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}
}

/* One colour per meaning on every page (9 Nov 2026 design review): the dashboard's severity and when-to-act
   lines use the same colours as the labels on the stories (Critical and Now in red, Next in amber, Later and
   "all stories" in grey, known exploited in its own red), not a separate chart palette. Green stays the colour
   of links and buttons. */
.db-line.db-sall,.db-dot.db-sall{stroke:var(--fg-2)}.db-dot.db-sall{fill:var(--fg-2)}.db-key-line.db-sall{border-color:var(--fg-2)}
.db-line.db-scrit,.db-dot.db-scrit,.db-line.db-snow,.db-dot.db-snow{stroke:var(--p1)}
.db-dot.db-scrit,.db-dot.db-snow{fill:var(--p1)}.db-key-line.db-scrit,.db-key-line.db-snow{border-color:var(--p1)}
.db-line.db-skev,.db-dot.db-skev{stroke:var(--kev);stroke-dasharray:6 4}.db-dot.db-skev{fill:var(--kev);stroke-dasharray:none}
.db-key-line.db-skev{border-color:var(--kev);border-top-style:dashed}
.db-line.db-snext,.db-dot.db-snext{stroke:var(--p2-ink)}.db-dot.db-snext{fill:var(--p2-ink)}.db-key-line.db-snext{border-color:var(--p2-ink)}
.db-line.db-slater,.db-dot.db-slater{stroke:var(--fg-3)}.db-dot.db-slater{fill:var(--fg-3)}.db-key-line.db-slater{border-color:var(--fg-3)}

/* Severity reads the same everywhere (9 Nov 2026 design review): the coloured word with a dot that the stories
   use, never a filled block. Known exploited is red text; the score stays quiet. Now, Next and Later keep the
   outlined label of the stories. */
.tag.critical,.tag.high,.tag.medium,.tag.low{background:none;border:0;padding:0 2px 0 0;display:inline-flex;align-items:center;gap:6px;font-weight:700}
.tag.critical::before,.tag.high::before,.tag.medium::before,.tag.low::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.tag.critical{color:var(--p1)} .tag.high{color:var(--p2-ink)} .tag.medium{color:var(--p3)} .tag.low{color:var(--p4)}
.tag.kev{background:none;color:var(--kev);border:0;padding:0}
.tag.cvss{background:none;color:var(--fg-2);border:0;padding:0}
.wl-asset .pri b,.wl-asset .pri.act b,.wl-asset .pri.plan b,.wl-asset .pri.track b{display:inline-block;border:1.5px solid currentColor;border-radius:4px;padding:0 6px;line-height:1.45}

/* The end of a story page: more from the same briefing */
.more-from{margin:28px 0 0;padding-top:16px;border-top:1px solid var(--line)}
.more-from h2{font:600 20px/1.25 var(--serif);margin:0 0 8px}
.more-from ul{margin:0;padding-left:18px;display:grid;gap:6px}
.more-from a{color:var(--fg)}
/* Sections for subscribers: the report and the watchlist behind a blur until the reader subscribes. */
.lock-wrap{position:relative}
.locked{filter:blur(7px);user-select:none;pointer-events:none;max-height:900px;overflow:hidden;opacity:.75}
.lock-card{position:absolute;z-index:5;top:48px;left:50%;transform:translateX(-50%);width:min(440px,calc(100% - 32px));background:var(--panel,#fff);color:var(--fg);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:0 12px 40px rgba(0,0,0,.18);text-align:center;font-family:var(--sans)}
.lock-card h2{margin:0 0 6px;font-size:21px;line-height:1.25}
.lock-card p{margin:0 0 14px;color:var(--fg-2);font-size:15px;line-height:1.5}
.lock-card .btn{min-height:44px}
.lock-card .lock-note{margin:10px 0 0;font-size:13px}
@media print{.locked,.lock-card{display:none!important}}
/* Tabs inside a section (10 Nov 2026): Reports = Dashboard | Executive report; Lookup = Vendors, sectors and CVEs |
   Your watchlist. One row of links with the current one underlined, the same on every page that has one. */
.subnav{display:flex;flex-wrap:wrap;gap:4px 22px;border-bottom:1px solid var(--line);margin:4px 0 18px;font-family:var(--sans)}
.subnav a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--fg-2);text-decoration:none;font-weight:600;font-size:15px;border-bottom:3px solid transparent;margin-bottom:-1px}
.subnav a:hover{color:var(--fg)}
.subnav a[aria-current="page"]{color:var(--fg);border-bottom-color:var(--accent)}
.subnav .sub-lock{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-2);border:1px solid var(--line);border-radius:999px;padding:1px 7px}
.dl-ok .sub-lock{display:none}
/* Lookup (10 Nov 2026): search, cards and tables that hold at any size, in place of one page of every link. */
.lookup .crumbs a{color:var(--fg-2)}
.lk-search{margin:18px 0 8px;display:grid;gap:6px}
.lk-search[hidden]{display:none}
.lk-search label{font-weight:600}
.lk-box{display:flex;gap:8px}
.lk-box input{flex:1;min-width:0;font:inherit;font-size:16px;min-height:46px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg)}
.lk-box input:focus{outline:2px solid var(--accent);outline-offset:1px}
.lk-res{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.lk-res:empty{display:none}
.lk-res li+li{border-top:1px solid var(--line)}
.lk-res a{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;color:var(--fg);text-decoration:none}
.lk-res a:hover,.lk-res a:focus{background:var(--panel)}
.lk-res span,.lk-res .none{color:var(--fg-2);font-size:14px}
.lk-res .none{padding:10px 14px}
.lk-stats{margin:14px 0 6px;color:var(--fg-2);font-size:14px}
.lk-stats b{color:var(--fg)}
.lookup h2{margin-top:30px}
.lk-cards{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.lk-cards a{display:grid;gap:3px;height:100%;padding:12px 14px;border:1px solid var(--line);border-radius:8px;color:var(--fg);text-decoration:none}
.lk-cards a:hover{border-color:var(--accent)}
.lk-cards b{font-size:16px}
.lk-cards span{font-size:13px;color:var(--fg-2)}
.lk-more{margin:12px 0 0;font-size:15px}
.tbl-scroll{overflow-x:auto;margin-top:10px}
.lk-table{width:100%;border-collapse:collapse;font-size:15px}
.lk-table th,.lk-table td{text-align:left;padding:9px 12px 9px 0;border-bottom:1px solid var(--line);white-space:nowrap}
.lk-table thead th{font-size:13px;font-weight:600;color:var(--fg-2)}
.lk-table tbody th{font-weight:600;font-family:var(--mono,monospace);font-size:14px}
.lk-table .kev{color:var(--p1)}
.lk-table .muted{color:var(--fg-2)}
.lk-letters{display:flex;flex-wrap:wrap;gap:4px;margin:14px 0}
.lk-letters a{min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;text-decoration:none;font-weight:600}
.lk-az{list-style:none;margin:6px 0 0;padding:0;columns:3 220px;column-gap:24px}
.lk-az li{break-inside:avoid;padding:4px 0}
.lk-az .n,.topic-hub .n{color:var(--fg-2);font-size:13px}
.pager{display:flex;flex-wrap:wrap;gap:6px;margin:22px 0}
.pager a{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;text-decoration:none}
.pager a[aria-current="page"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.prose .lk-cards,.prose .lk-az,.prose .lk-res{padding-left:0;margin-left:0}
.prose .lk-cards li,.prose .lk-az li,.prose .lk-res li{margin:0}
.prose .lk-cards li::marker,.prose .lk-az li::marker{content:none}
/* Wide screens show Today's news and Live monitor in a row: the Live button would say it twice. */
@media (min-width:1100px){.js .mast .dash-top{display:none}}
/* Methodology workflow (10 Nov 2026): the daily steps as one row of cards, a column on phones. */
.prose ol.flow{list-style:none;counter-reset:fl;padding:0;margin:14px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:640px){.prose ol.flow{grid-template-columns:1fr}}
.prose ol.flow li{counter-increment:fl;position:relative;margin:0;display:grid;align-content:start;gap:6px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.prose ol.flow li::before{content:counter(fl);width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;font:700 13px/26px var(--sans);text-align:center}
.prose ol.flow b{font-size:16px}
.prose ol.flow span{font-size:14px;line-height:1.45;color:var(--fg-2)}
.prose ol.flow i{font-style:normal;font-size:12px;font-weight:600;color:var(--fg);border-top:1px solid var(--line);padding-top:6px;margin-top:auto}
.method dl.levels{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;align-items:baseline}
.method dl.levels dd{margin:0}
.method .callout{border-left:3px solid var(--accent);padding:8px 14px;background:var(--panel-2)}
@media (max-width:480px){.subnav{flex-wrap:nowrap;overflow-x:auto;gap:18px}.subnav a{white-space:nowrap}.subnav .sub-lock{display:none}}
.lk-search{grid-template-columns:minmax(0,1fr)}
/* The archive list (10 Nov 2026): ten a page, 25 or 50 on request, Newer and Older. */
.arc-list{margin-top:28px}
.arc-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px}
.arc-head h2{margin:0}
.arc-size{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;color:var(--fg-2)}
.arc-size select{font:inherit;font-size:15px;min-height:40px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg)}
.arc-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 6px;font-size:14px;color:var(--fg-2)}
.arc-pager[hidden],.arc-size[hidden]{display:none}
.arc-pager .btn{min-height:44px}
.arc-pager .btn:disabled{opacity:.45;cursor:default}
.prose .issue-list{padding-left:0;margin-left:0}.prose .issue-list li{margin:0}

/* The Live page (10 Nov 2026): site/live.html, assets/live.js, assets/livemap.js. */
.lv-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--p1);animation:lvp 1.6s ease-in-out infinite}
@keyframes lvp{50%{opacity:.25}}
.lv h1{display:flex;align-items:center;gap:12px}
.lv-status{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;font-size:14px;color:var(--fg-2)}
.lv-status b{color:var(--fg)}
.lv-load{margin-top:20px;color:var(--fg-2)}
.lv-stage{position:relative;border:1px solid #1E2823;border-radius:14px;background:radial-gradient(120% 90% at 50% 0%,#0F1A14 0%,#060807 70%);overflow:hidden;color:#E4E9E5}
.lv-map{display:block;width:100%;height:auto}
.lv-map .land{fill:#2A3A31}
.lv-map .mk{cursor:pointer;outline:none}
.lv-map .mk .core{fill:#7D8F84;stroke:#060807;stroke-width:.5;transform-box:fill-box;transform-origin:center}
.lv-map .mk .ring{fill:none;stroke:#7D8F84;stroke-width:.7;opacity:0;transform-box:fill-box;transform-origin:center;animation:lvring 2.4s ease-out infinite}
.lv-map .mk .ring.r2{animation-delay:1.2s}
.lv-map .mk.act .core{fill:#FF6F75}.lv-map .mk.act .ring{stroke:#FF6F75}
.lv-map .mk.plan .core{fill:#F3A24A}.lv-map .mk.plan .ring{stroke:#F3A24A}
.lv-map .mk.hit .core{animation:lvhit .9s ease-out}
.lv-map .mk.sel .core,.lv-map .mk:focus-visible .core{stroke:#5FE89A;stroke-width:1.1}
.lv-map .mk text{font:600 3.6px var(--display);fill:#E4E9E5;paint-order:stroke;stroke:#060807;stroke-width:1px;pointer-events:none}
.lv-map .arc{fill:none;stroke:#7D8F84;stroke-width:.6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:.8;animation:lvarc 1.1s ease-out forwards,lvarcfade 8s linear 1.1s forwards}
.lv-map .comet{fill:none;stroke:#E4E9E5;stroke-width:1.2;stroke-linecap:round;stroke-dasharray:.07 1;stroke-dashoffset:.07;animation:lvcomet 1.1s ease-out forwards}
.lv-map .arc.act{stroke:#FF6F75}.lv-map .arc.plan{stroke:#F3A24A}
.lv-map .comet.act{stroke:#FFC2C5}.lv-map .comet.plan{stroke:#FFD9A8}
@keyframes lvarc{to{stroke-dashoffset:0}}
@keyframes lvarcfade{to{opacity:.22}}
@keyframes lvcomet{0%{stroke-dashoffset:.07;opacity:1}85%{opacity:1}100%{stroke-dashoffset:-1;opacity:0}}
@keyframes lvring{0%{transform:scale(.6);opacity:.9}100%{transform:scale(4.2);opacity:0}}
@keyframes lvhit{0%{transform:scale(3.2)}100%{transform:scale(1)}}
.lv-stats{display:flex;flex-wrap:wrap;gap:4px 20px;margin:10px 2px 0;font-size:14.5px;color:var(--fg-2)}
.lv-stats b{color:var(--fg);font-variant-numeric:tabular-nums}
.lv-stats .act b{color:var(--p1)}.lv-stats .plan b{color:var(--p2-ink)}.lv-stats .kev b{color:var(--p1)}
.lv-filters{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:10px 0 4px}
.lv-filters label{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--fg-2)}
.lv-filters select,.lv-filters input{min-height:40px;border:1px solid var(--field-line);border-radius:var(--r);background:var(--panel);color:var(--fg);padding:0 10px;font:inherit;font-size:15px}
.lv-filters input{flex:1 1 180px;min-width:0}
.lv-ctl button:focus-visible{outline:2px solid #5FE89A;outline-offset:2px}
.lv-ctl{position:absolute;right:14px;top:12px}
.lv-ctl button{background:rgba(6,8,7,.78);border:1px solid #26352D;border-radius:999px;min-height:40px;padding:0 16px;color:#E4E9E5;font:600 14px var(--display);cursor:pointer}
.lv-leg{position:absolute;right:14px;bottom:10px;margin:0;display:flex;gap:14px;font-size:12.5px;color:#A3B2A9}
.lv-leg span:before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;background:#7D8F84}
.lv-leg .act:before{background:#FF6F75}.lv-leg .plan:before{background:#F3A24A}
.lv-pop{position:absolute;left:14px;bottom:12px;width:min(430px,calc(100% - 28px));display:grid;gap:8px;pointer-events:none}
.lv-toast{background:rgba(13,20,16,.95);border:1px solid #26352D;border-left:3px solid #7D8F84;border-radius:10px;padding:9px 12px;animation:lvpop .45s cubic-bezier(.2,.9,.3,1.2);box-shadow:0 8px 24px rgba(0,0,0,.45)}
.lv-toast.act{border-left-color:#FF6F75}.lv-toast.plan{border-left-color:#F3A24A}
.lv-toast small{display:block;font:600 12px var(--mono);color:#A3B2A9}
.lv-toast small b.act{color:#FF6F75}.lv-toast small b.plan{color:#F3A24A}
.lv-toast span{display:block;font-weight:600;font-size:14.5px;line-height:1.3;margin-top:2px}
.lv-toast.out{animation:lvgone .4s ease-in forwards}
@keyframes lvpop{from{transform:translateY(24px);opacity:0}}
@keyframes lvgone{to{transform:translateX(-20px);opacity:0}}
.lv-tick{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);margin-top:10px;overflow:hidden;font-size:14px}
.lv-tick>b{flex:none;display:flex;align-items:center;color:var(--p1);font-size:12.5px;letter-spacing:.06em;position:relative;z-index:1;background:var(--panel);padding:0 12px;box-shadow:8px 0 8px var(--panel)}
.lv-tick div{padding:8px 0;white-space:nowrap;animation:lvtick 70s linear infinite;color:var(--fg-2)}
.lv-tick:hover div{animation-play-state:paused}
.lv-tick div span{margin-right:38px}
.lv-tick div span b{color:var(--fg)}
@keyframes lvtick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.lv-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;margin-top:24px;align-items:start}
.lv-h2{font-size:20px;margin:0}
.lv-sub{margin:4px 0 6px;color:var(--fg-2);font-size:14.5px;min-height:1.4em}
.lv-list{list-style:none;margin:6px 0 0;padding:0;position:relative}
.lv-list:before{content:"";position:absolute;left:70px;top:8px;bottom:8px;width:2px;background:var(--line)}
.lv-item{display:grid;grid-template-columns:58px 26px minmax(0,1fr);padding:8px 0}
.lv-item.in{animation:lvslide .5s cubic-bezier(.2,.9,.3,1.1)}
@keyframes lvslide{from{transform:translateY(-14px);opacity:0}}
.lv-time{font:600 13.5px var(--mono);color:var(--fg-2);padding-top:14px;text-align:right}
.lv-pin{position:relative}
.lv-pin:before{content:"";position:absolute;left:8px;top:17px;width:10px;height:10px;border-radius:50%;background:var(--fg-3);border:2px solid var(--bg)}
.lv-item.act .lv-pin:before{background:var(--p1)}.lv-item.plan .lv-pin:before{background:var(--p2)}
.lv-card{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:12px 14px}
.lv-item.act .lv-card{border-left:3px solid var(--p1)}.lv-item.plan .lv-card{border-left:3px solid var(--p2)}
.lv-top{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13px}
.lv-when{font-weight:700;color:var(--fg-2)}
.act .lv-when{color:var(--p1)}.plan .lv-when{color:var(--p2-ink)}
.lv-b{border:1px solid var(--line);border-radius:999px;padding:1px 9px;font-size:12.5px;color:var(--fg-2);background:none}
.lv-b.kev{background:var(--kev);color:var(--kev-fg);border-color:var(--kev);font-weight:600}
.lv-b.new{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:700}
.lv-b.early{border-style:dashed}
.lv-b.geo{font:inherit;font-size:12.5px;cursor:pointer;min-height:24px}
.lv-b.geo:hover{border-color:var(--accent);color:var(--fg)}
.lv-card h3{font:700 17.5px/1.3 var(--display);margin:6px 0 4px}
.lv-card h3 a{color:var(--fg);text-decoration:none}
.lv-card h3 a:hover,.lv-card h3 a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.lv-why{margin:0;color:var(--fg-2);font-size:15px}
.lv-more{margin-top:8px;font-size:15px}
.lv-more summary{cursor:pointer;color:var(--link);font-weight:600;font-size:14px}
.lv-more p{margin:8px 0 0}
.lv-foot{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px;font-size:13px;color:var(--fg-3)}
.lv-side{display:grid;gap:14px;position:sticky;top:76px}
.lv-box{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:14px}
.lv-box h2{font:600 14px var(--display);margin:0 0 8px;color:var(--fg-2)}
.lv-box p{margin:0 0 10px;font-size:14.5px;color:var(--fg-2)}
.lv-box .lv-note{margin:10px 0 0;font-size:13px;color:var(--fg-3)}
.lv-where{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.lv-where button{display:grid;grid-template-columns:1fr auto;gap:8px;width:100%;min-height:34px;align-items:center;background:none;border:0;border-radius:6px;padding:5px 6px;color:var(--fg);font:inherit;font-size:14.5px;text-align:left;cursor:pointer;position:relative}
.lv-where button:disabled{cursor:default;color:var(--fg-2)}
.lv-where button i{position:absolute;left:0;bottom:0;height:2px;background:var(--accent);border-radius:2px}
.lv-where button[aria-pressed="true"]{background:var(--accent-bg)}
.lv-where .rest{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.lv-where .rest i{display:none}
.lv-none{padding:14px 4px;color:var(--fg-2)}
@media (max-width:900px){.lv-grid{grid-template-columns:1fr}.lv-side{position:static}.lv-leg{display:none}}
@media (max-width:620px){
  .lv-ctl{position:static;padding:8px 10px 0;display:flex;justify-content:flex-end}
  .lv-pop{position:static;width:auto;padding:0 10px 10px;min-height:78px}
  .lv-map .mk text{font-size:8px;stroke-width:1.6px}
  .lv-item{grid-template-columns:44px 20px minmax(0,1fr)}.lv-list:before{left:53px}.lv-pin:before{left:5px}.lv-time{font-size:12px}.lv-card h3{font-size:16.5px}
}
@media (prefers-reduced-motion:reduce){
  .lv-dot,.lv-map .mk .ring,.lv-map .mk.hit .core,.lv-tick div,.lv-toast,.lv-item.in{animation:none}
  .lv-map .arc,.lv-map .comet{display:none}
  .lv-map .mk .ring{opacity:.45;transform:scale(2)}.lv-map .mk .ring.r2{display:none}
  .lv-tick div{overflow:hidden;text-overflow:ellipsis}
}
