/*
Theme Name: dklaas — Security Research
Theme URI: https://dklaas.com
Author: Dustin Klaas
Author URI: https://dklaas.com
Description: A dark, editorial, terminal-adjacent theme for technical security writing — CVE advisories, reverse engineering, malware analysis, infrastructure and tooling. Monospace chrome over a serif reading column, native advisory and callout blocks, self-hosted everything, no third-party calls.
Version: 1.0.0
Requires at least: 6.5
Requires PHP: 8.1
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dklaas
Tags: blog, one-column, custom-logo, custom-menu, editor-style, threaded-comments, translation-ready
*/

/* ---- Fonts (self-hosted, latin subset incl. Western-European diacritics) ---- */
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/jetbrains-mono/jetbrains-mono-400.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/jetbrains-mono/jetbrains-mono-500.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("assets/fonts/jetbrains-mono/jetbrains-mono-700.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:400;font-display:swap;src:url("assets/fonts/jetbrains-mono/jetbrains-mono-400-italic.woff2") format("woff2")}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/newsreader/newsreader-400.woff2") format("woff2")}
@font-face{font-family:"Newsreader";font-style:italic;font-weight:400;font-display:swap;src:url("assets/fonts/newsreader/newsreader-400-italic.woff2") format("woff2")}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:600;font-display:swap;src:url("assets/fonts/newsreader/newsreader-600.woff2") format("woff2")}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:700;font-display:swap;src:url("assets/fonts/newsreader/newsreader-700.woff2") format("woff2")}

/* ---- Tokens ---- */
:root{
  --bg:#0b0d10;
  --surface:#13161b;
  --surface-2:#181c22;
  --text:#e4e6e9;
  --muted:#8b9097;
  --line:rgba(255,255,255,.08);
  --line-2:rgba(255,255,255,.16);
  --accent:#ff3b21;
  --accent-ink:#0b0d10;

  --sev-critical:#b3122a;
  --sev-high:#ff3b21;
  --sev-medium:#e0992b;
  --sev-low:#5b7a99;
  --sev-none:#6b7178;
  --ok:#4f9d77;

  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  --serif:"Newsreader",Georgia,Cambria,"Times New Roman",serif;

  --measure:70ch;
  --maxw:64rem;
  --gutter:clamp(1.1rem,.7rem + 1.6vw,1.75rem);
  --space:clamp(1.5rem,1.1rem + 1.6vw,2.4rem);
  --rail:15.5rem;
  --header-h:3.65rem;

  --fs--2:clamp(.72rem,.70rem + .10vw,.78rem);
  --fs--1:clamp(.82rem,.78rem + .18vw,.90rem);
  --fs-0:clamp(1.06rem,1.01rem + .22vw,1.15rem);
  --fs-1:clamp(1.2rem,1.11rem + .42vw,1.42rem);
  --fs-2:clamp(1.45rem,1.27rem + .78vw,1.9rem);
  --fs-3:clamp(1.78rem,1.45rem + 1.45vw,2.6rem);
  --fs-4:clamp(2.1rem,1.6rem + 2.4vw,3.3rem);
}

[data-theme="light"]{
  --bg:#faf9f6;
  --surface:#ffffff;
  --surface-2:#f1eee8;
  --text:#16181c;
  --muted:#565b62;
  --line:rgba(0,0,0,.10);
  --line-2:rgba(0,0,0,.20);
  --accent:#b3261a;
  --accent-ink:#ffffff;

  --sev-critical:#9c0f24;
  --sev-high:#c92b18;
  --sev-medium:#9a6614;
  --sev-low:#3f5e7d;
  --sev-none:#5b6066;
  --ok:#2f7d57;
}

/* ---- Reset / base ---- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 1.25rem)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--serif);
  font-size:var(--fs-0);
  line-height:1.72;
  font-kerning:normal;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"liga" 1,"calt" 1;
}
img,svg,video{max-width:100%;height:auto;display:block}
hr{border:0;border-top:1px solid var(--line);margin:var(--space) 0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
::selection{background:var(--accent);color:var(--accent-ink)}

a{color:var(--accent);text-decoration:none;text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover,a:focus-visible{text-decoration:underline}

.wrap{width:min(100% - (var(--gutter) * 2),var(--maxw));margin-inline:auto}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:.5rem;top:-3rem;z-index:1000;background:var(--accent);color:var(--accent-ink);font-family:var(--mono);font-size:var(--fs--1);padding:.5rem .8rem;border-radius:0;transition:top .15s ease}
.skip-link:focus{top:.5rem;text-decoration:none}

/* ---- Header ---- */
.site-header{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line)}
@supports not (backdrop-filter:blur(1px)){.site-header{background:var(--bg)}}
.header-inner{display:flex;align-items:center;gap:1rem;min-height:var(--header-h)}
.wordmark{display:inline-flex;align-items:baseline;font-family:var(--mono);font-weight:700;font-size:1.02rem;letter-spacing:-.01em;color:var(--text);margin-right:auto}
.wordmark:hover,.wordmark:focus-visible{text-decoration:none;color:var(--text)}
.wordmark__caret{display:inline-block;width:.55ch;height:1.05em;margin-left:.12ch;transform:translateY(.12em);background:var(--accent);animation:dk-blink 1.15s steps(1) infinite}
@keyframes dk-blink{50%{opacity:0}}

.primary-nav ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:.25rem}
.primary-nav a{display:block;font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);padding:.4rem .6rem;letter-spacing:-.01em}
.primary-nav a:hover,.primary-nav a:focus-visible,.primary-nav .current-menu-item>a{color:var(--text);text-decoration:none}
.primary-nav .current-menu-item>a{box-shadow:inset 0 -2px 0 var(--accent)}

.nav-toggle{display:none}
.theme-toggle{appearance:none;background:transparent;border:1px solid var(--line-2);color:var(--muted);font-family:var(--mono);font-size:var(--fs--1);line-height:1;padding:.45rem .55rem;cursor:pointer;border-radius:0}
.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--text);border-color:var(--text)}
.theme-toggle svg{width:1.05em;height:1.05em;display:block;fill:none;stroke:currentColor;stroke-width:1.6}
.theme-toggle .icon-sun{display:none}
[data-theme="light"] .theme-toggle .icon-sun{display:block}
[data-theme="light"] .theme-toggle .icon-moon{display:none}

/* ---- Typography ---- */
h1,h2,h3,h4,h5,h6{font-family:var(--mono);line-height:1.18;letter-spacing:-.012em;margin:0 0 .6em;color:var(--text);font-weight:700}
h1{font-size:var(--fs-4)}
h2{font-size:var(--fs-3);margin-top:1.7em}
h3{font-size:var(--fs-2);font-weight:600;margin-top:1.5em}
h4{font-size:var(--fs-1);font-weight:600;margin-top:1.4em}
h5,h6{font-size:var(--fs-0);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
p{margin:0 0 1.15em}
strong,b{font-weight:700}
em,i{font-style:italic}
small{font-size:var(--fs--1)}
sup,sub{font-size:.72em;line-height:0}

ul,ol{margin:0 0 1.15em;padding-left:1.4em}
li{margin:.3em 0}
li::marker{color:var(--muted)}
ul.post-list,.no-results ul{list-style:none;padding:0}

blockquote{margin:1.6em 0;padding:.2em 0 .2em 1.25em;border-left:2px solid var(--accent);color:var(--text);font-style:italic}
blockquote cite{display:block;margin-top:.5em;font-style:normal;font-family:var(--mono);font-size:var(--fs--1);color:var(--muted)}

abbr[title]{text-decoration-style:dotted;cursor:help}
mark{background:color-mix(in srgb,var(--sev-medium) 30%,transparent);color:inherit;padding:0 .15em}

table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:var(--fs--1)}
th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-family:var(--mono);font-weight:600;color:var(--muted);font-size:var(--fs--2);text-transform:uppercase;letter-spacing:.04em}

:not(pre)>code,kbd{font-family:var(--mono);font-size:.88em;background:var(--surface);border:1px solid var(--line);padding:.08em .35em;border-radius:0;word-break:break-word}
kbd{border-bottom-width:2px}

/* ---- Inline metadata ("// $" terminal cues, used sparingly) ---- */
.entry-meta{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:.55rem 0;letter-spacing:-.01em}
.entry-meta .sep{margin:0 .55rem;color:var(--line-2)}
.entry-meta a{color:var(--muted)}
.entry-meta a:hover{color:var(--accent)}
.entry-meta .cat::before{content:"// ";color:var(--accent)}

/* ---- Site main ---- */
.site-main{padding:var(--space) 0 calc(var(--space) * 1.6)}

/* ---- Front-page intro ---- */
.intro{padding:calc(var(--space) * 1.1) 0 var(--space);border-bottom:1px solid var(--line);margin-bottom:var(--space)}
.intro p{max-width:var(--measure);margin:0 0 .6em;font-size:var(--fs-1);line-height:1.55}
.intro .intro-contact{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);margin:0}
.intro .intro-contact a{color:var(--muted)}
.intro .intro-contact a:hover{color:var(--accent)}

.list-heading{font-family:var(--mono);font-size:var(--fs--1);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;margin:0 0 1.1em}
.list-heading::before{content:"$ ";color:var(--accent)}

/* ---- Editorial post list ---- */
.post-list{display:flex;flex-direction:column}
.post-list__item{padding:1.15rem 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:9.5rem 1fr;gap:.2rem 1.5rem}
.post-list__item:first-child{padding-top:0}
.post-list__meta{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);padding-top:.35em;line-height:1.5}
.post-list__meta time{display:block;color:var(--text)}
.post-list__meta .cat{display:block;color:var(--accent);margin-top:.15em}
.post-list__body{min-width:0}
.post-list__title{font-family:var(--mono);font-size:var(--fs-1);font-weight:600;line-height:1.25;margin:0 0 .25em}
.post-list__title a{color:var(--text)}
.post-list__title a:hover,.post-list__title a:focus-visible{color:var(--accent);text-decoration:none}
.post-list__excerpt{margin:0;color:var(--muted);max-width:var(--measure)}
.post-list__excerpt p{margin:0}

/* ---- Archive / taxonomy header ---- */
.page-header{padding-bottom:var(--space);margin-bottom:var(--space);border-bottom:1px solid var(--line)}
.page-header .kicker{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .5rem}
.page-header .kicker::before{content:"// ";color:var(--accent)}
.page-header h1{font-size:var(--fs-3);margin:0}
.page-header .archive-description{margin:.9rem 0 0;color:var(--muted);max-width:var(--measure)}

/* ---- Single / page layout ---- */
.single-grid{display:grid;gap:var(--space);grid-template-columns:minmax(0,1fr)}
@media (min-width:60rem){
  .single-grid.has-toc{grid-template-columns:minmax(0,1fr) var(--rail);grid-template-areas:"content toc";align-items:start}
  .single-grid.has-toc>.entry{grid-area:content}
  .single-grid.has-toc>.toc-rail{grid-area:toc}
}
.entry{min-width:0}
.entry-header{margin-bottom:var(--space)}
.entry-header .entry-meta{margin-bottom:.9rem}
.entry-title{font-size:var(--fs-4);margin:0;max-width:24ch}
.page .entry-title{max-width:none}

.entry-content{max-width:var(--measure)}
.entry-content>*{margin-left:0;margin-right:0}
.entry-content> p:first-of-type{font-size:1.04em}
.entry-content :is(h2,h3,h4):target{scroll-margin-top:calc(var(--header-h) + 1rem)}
.entry-content figure{margin:1.6em 0}
.entry-content figcaption{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);margin-top:.5rem}
.entry-content .alignwide{max-width:min(100%,52rem)}
.entry-content .alignfull{max-width:none}

/* anchor link affordance on headings */
.entry-content :is(h2,h3) .dk-anchor{opacity:0;margin-left:.4ch;font-family:var(--mono);color:var(--muted);text-decoration:none;font-size:.7em}
.entry-content :is(h2,h3):hover .dk-anchor,.entry-content .dk-anchor:focus-visible{opacity:1}

/* ---- Table of contents ---- */
.toc-rail{font-size:var(--fs--1)}
.toc{margin:0;border:0}
.toc>summary{font-family:var(--mono);font-size:var(--fs--2);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);cursor:pointer;list-style:none;padding:.6rem 0;border-bottom:1px solid var(--line)}
.toc>summary::-webkit-details-marker{display:none}
.toc>summary::before{content:"▸ ";color:var(--accent)}
.toc[open]>summary::before{content:"▾ "}
.toc-list{list-style:none;margin:.75rem 0 0;padding:0}
.toc-list li{margin:0}
.toc-list .lvl-3{padding-left:1rem}
.toc-list a{display:block;color:var(--muted);padding:.28rem 0;line-height:1.4;border-left:2px solid transparent;padding-left:.7rem;font-family:var(--mono);letter-spacing:-.01em}
.toc-list a:hover{color:var(--text);text-decoration:none}
.toc-list a.is-active{color:var(--text);border-left-color:var(--accent)}
@media (min-width:60rem){
  .toc-rail .toc{position:sticky;top:calc(var(--header-h) + 1.25rem);max-height:calc(100vh - var(--header-h) - 2.5rem);overflow:auto}
  .toc>summary{display:none}
  .toc-list{margin-top:0}
}

/* ---- Code blocks ---- */
.entry-content pre,.dk-code{max-width:none}
.dk-code{margin:1.7em 0;border:1px solid var(--line);background:var(--surface);border-radius:0}
.dk-code__bar{display:flex;align-items:center;gap:.75rem;padding:.4rem .75rem;border-bottom:1px solid var(--line);background:var(--surface-2);font-family:var(--mono);font-size:var(--fs--2)}
.dk-code__lang{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-right:auto;white-space:nowrap}
.dk-code__copy{appearance:none;background:transparent;border:1px solid var(--line-2);color:var(--muted);font:inherit;cursor:pointer;padding:.18rem .5rem;border-radius:0;letter-spacing:.04em;text-transform:uppercase}
.dk-code__copy:hover,.dk-code__copy:focus-visible{color:var(--text);border-color:var(--text)}
.dk-code__copy.is-done{color:var(--ok);border-color:var(--ok)}
.dk-code__body{display:grid;grid-template-columns:1fr}
.dk-code--numbered .dk-code__body{grid-template-columns:auto 1fr}
.dk-gutter{font-family:var(--mono);font-size:var(--fs--1);line-height:1.65;text-align:right;color:var(--sev-none);background:var(--surface);padding:.85rem .65rem .85rem .85rem;white-space:pre;-webkit-user-select:none;user-select:none;border-right:1px solid var(--line)}
.dk-code pre{margin:0;padding:.85rem 1rem;overflow-x:auto;background:transparent}
.dk-code pre code{font-family:var(--mono);font-size:var(--fs--1);line-height:1.65;display:block;white-space:pre;background:none;border:0;padding:0}
.entry-content pre{margin:1.7em 0;padding:.85rem 1rem;overflow-x:auto;background:var(--surface);border:1px solid var(--line)}
.entry-content pre code{font-family:var(--mono);font-size:var(--fs--1);line-height:1.65;white-space:pre}

/* diff line tinting */
.dk-dl{display:block}
.dk-dl.is-add{background:color-mix(in srgb,var(--ok) 16%,transparent);box-shadow:inset 2px 0 0 var(--ok)}
.dk-dl.is-del{background:color-mix(in srgb,var(--sev-high) 15%,transparent);box-shadow:inset 2px 0 0 var(--sev-high)}
.dk-dl.is-meta{color:var(--muted)}

/* highlight.js token palette — tuned to the theme, not a stock scheme */
.hljs{color:var(--text);background:transparent}
.hljs-comment,.hljs-quote{color:var(--sev-none);font-style:italic}
.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-name,.hljs-tag{color:var(--accent)}
.hljs-string,.hljs-symbol,.hljs-bullet,.hljs-regexp,.hljs-addition{color:var(--ok)}
.hljs-number,.hljs-literal,.hljs-meta .hljs-number{color:var(--sev-medium)}
.hljs-title,.hljs-section,.hljs-function .hljs-title,.hljs-class .hljs-title{color:#d7c389}
[data-theme="light"] .hljs-title,[data-theme="light"] .hljs-section{color:#8a6d1c}
.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable,.hljs-class .hljs-keyword{color:var(--sev-low)}
[data-theme="light"] .hljs-attr,[data-theme="light"] .hljs-attribute{color:#3f5e7d}
.hljs-type,.hljs-params{color:#c9b8d8}
[data-theme="light"] .hljs-type,[data-theme="light"] .hljs-params{color:#6a567f}
.hljs-meta,.hljs-meta .hljs-keyword{color:var(--muted)}
.hljs-deletion{color:var(--sev-high)}
.hljs-emphasis{font-style:italic}
.hljs-strong{font-weight:700}
.hljs-link{text-decoration:underline}

/* ---- Advisory / CVE card ---- */
.dk-advisory{margin:1.8em 0;border:1px solid var(--line-2);background:var(--surface);border-left:3px solid var(--sev-medium);border-radius:0}
.dk-advisory[data-severity="critical"]{border-left-color:var(--sev-critical)}
.dk-advisory[data-severity="high"]{border-left-color:var(--sev-high)}
.dk-advisory[data-severity="medium"]{border-left-color:var(--sev-medium)}
.dk-advisory[data-severity="low"]{border-left-color:var(--sev-low)}
.dk-advisory[data-severity="none"]{border-left-color:var(--sev-none)}
.dk-advisory__head{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1rem;padding:.7rem .95rem;border-bottom:1px solid var(--line);font-family:var(--mono)}
.dk-advisory__id{font-size:var(--fs-0);font-weight:700;letter-spacing:.02em;color:var(--text);margin-right:auto}
.dk-advisory__id a{color:var(--text)}
.dk-advisory__sev{font-size:var(--fs--2);font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:.18rem .5rem;color:#fff;border-radius:0}
.dk-advisory[data-severity="critical"] .dk-advisory__sev{background:var(--sev-critical)}
.dk-advisory[data-severity="high"] .dk-advisory__sev{background:var(--sev-high);color:var(--accent-ink)}
.dk-advisory[data-severity="medium"] .dk-advisory__sev{background:var(--sev-medium);color:#1a130a}
.dk-advisory[data-severity="low"] .dk-advisory__sev{background:var(--sev-low)}
.dk-advisory[data-severity="none"] .dk-advisory__sev{background:var(--sev-none)}
.dk-advisory__score{font-size:var(--fs--1);color:var(--muted)}
.dk-advisory__score b{color:var(--text);font-weight:700}
.dk-advisory__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.1rem 1.4rem;padding:.85rem .95rem;font-family:var(--mono);font-size:var(--fs--1)}
.dk-advisory__row{display:grid;grid-template-columns:7.5rem 1fr;gap:.4rem;padding:.22rem 0;align-items:baseline}
.dk-advisory__row dt{color:var(--muted);text-transform:uppercase;font-size:var(--fs--2);letter-spacing:.05em;margin:0}
.dk-advisory__row dd{margin:0;color:var(--text);word-break:break-word}
.dk-advisory__vector{display:block;padding:0 .95rem .85rem;font-family:var(--mono);font-size:var(--fs--2);color:var(--muted);word-break:break-all}
.dk-advisory__vector b{color:var(--muted);font-weight:400}
.dk-advisory__refs{border-top:1px solid var(--line);padding:.75rem .95rem;font-family:var(--mono);font-size:var(--fs--1)}
.dk-advisory__refs .lbl{display:block;color:var(--muted);text-transform:uppercase;font-size:var(--fs--2);letter-spacing:.05em;margin-bottom:.4rem}
.dk-advisory__refs ol{margin:0;padding-left:1.4em}
.dk-advisory__refs a{word-break:break-all}
.dk-status{display:inline-block;font-size:.92em}
.dk-status::before{content:"● ";color:var(--ok)}
.dk-status[data-state="unpatched"]::before,.dk-status[data-state="0day"]::before{color:var(--sev-high)}
.dk-status[data-state="embargoed"]::before{color:var(--sev-medium)}

/* ---- Callouts / admonitions ---- */
.dk-callout{margin:1.7em 0;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--muted);border-radius:0}
.dk-callout__label{font-family:var(--mono);font-size:var(--fs--2);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:.5rem .95rem;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.5rem}
.dk-callout__label::before{content:attr(data-glyph);color:var(--muted)}
.dk-callout__body{padding:.85rem .95rem .2rem}
.dk-callout__body>:last-child{margin-bottom:.85rem}
.dk-callout--note{border-left-color:var(--sev-low)}
.dk-callout--note .dk-callout__label{color:var(--sev-low)}
.dk-callout--note .dk-callout__label::before{color:var(--sev-low)}
.dk-callout--tip{border-left-color:var(--ok)}
.dk-callout--tip .dk-callout__label,.dk-callout--tip .dk-callout__label::before{color:var(--ok)}
.dk-callout--mitigation{border-left-color:var(--ok)}
.dk-callout--mitigation .dk-callout__label,.dk-callout--mitigation .dk-callout__label::before{color:var(--ok)}
.dk-callout--warning{border-left-color:var(--sev-medium)}
.dk-callout--warning .dk-callout__label,.dk-callout--warning .dk-callout__label::before{color:var(--sev-medium)}
.dk-callout--danger{border-left-color:var(--sev-high)}
.dk-callout--danger .dk-callout__label,.dk-callout--danger .dk-callout__label::before{color:var(--sev-high)}
.dk-callout--exploit{border-left-color:var(--sev-critical)}
.dk-callout--exploit .dk-callout__label,.dk-callout--exploit .dk-callout__label::before{color:var(--sev-critical)}
.dk-callout--timeline{border-left-color:var(--muted)}
.dk-callout--timeline .dk-callout__body ol,.dk-callout--timeline .dk-callout__body ul{list-style:none;padding-left:0;margin:.2rem 0 .85rem}
.dk-callout--timeline .dk-callout__body li{padding-left:1.2em;position:relative;font-family:var(--mono);font-size:var(--fs--1)}
.dk-callout--timeline .dk-callout__body li::before{content:"▸";position:absolute;left:0;color:var(--accent)}

/* ---- PGP key block ---- */
.dk-pgp{margin:1.8em 0;border:1px solid var(--line);background:var(--surface);border-radius:0}
.dk-pgp__head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;padding:.6rem .95rem;border-bottom:1px solid var(--line);background:var(--surface-2);font-family:var(--mono);font-size:var(--fs--2)}
.dk-pgp__title{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-right:auto}
.dk-pgp__fpr{color:var(--text);letter-spacing:.02em;word-break:break-all}
.dk-pgp__copy{appearance:none;background:transparent;border:1px solid var(--line-2);color:var(--muted);font:inherit;cursor:pointer;padding:.18rem .5rem;text-transform:uppercase;letter-spacing:.04em}
.dk-pgp__copy:hover,.dk-pgp__copy:focus-visible{color:var(--text);border-color:var(--text)}
.dk-pgp__copy.is-done{color:var(--ok);border-color:var(--ok)}
.dk-pgp pre{margin:0;padding:.85rem .95rem;overflow-x:auto;font-family:var(--mono);font-size:var(--fs--2);line-height:1.5;color:var(--muted)}

/* ---- Footnotes / references ---- */
.entry-content sup a,a.footnote{color:var(--accent);font-family:var(--mono)}
.wp-block-footnotes{margin-top:calc(var(--space) * 1.2);padding-top:1.1rem;border-top:1px solid var(--line);font-size:var(--fs--1);color:var(--muted);counter-reset:none}
.wp-block-footnotes li{margin:.45em 0;font-family:var(--mono);line-height:1.55}
.wp-block-footnotes a{word-break:break-word}

/* ---- Entry footer / tags / author / post nav ---- */
.entry-footer{max-width:var(--measure);margin-top:var(--space);padding-top:var(--space);border-top:1px solid var(--line)}
.entry-tags{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);margin:0 0 var(--space)}
.entry-tags a{display:inline-block;color:var(--muted);border:1px solid var(--line-2);padding:.12rem .5rem;margin:.2rem .3rem .2rem 0}
.entry-tags a::before{content:"#";color:var(--accent)}
.entry-tags a:hover{color:var(--text);border-color:var(--text);text-decoration:none}

.author-bio{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start;padding:1.1rem;border:1px solid var(--line);background:var(--surface)}
.author-bio__mark{width:2.75rem;height:2.75rem;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line-2);font-family:var(--mono);font-weight:700;font-size:1.2rem;color:var(--accent)}
.author-bio__name{font-family:var(--mono);font-weight:700;font-size:var(--fs-0);margin:0 0 .25rem}
.author-bio__name a{color:var(--text)}
.author-bio__desc{margin:0 0 .5rem;color:var(--muted);font-size:var(--fs--1)}
.author-bio__links{font-family:var(--mono);font-size:var(--fs--1);margin:0}
.author-bio__links a{color:var(--muted);margin-right:1rem}
.author-bio__links a:hover{color:var(--accent)}

.post-nav{margin-top:var(--space);border-top:1px solid var(--line);padding-top:1.1rem}
.post-nav .nav-links{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.post-nav .nav-next{text-align:right}
.post-nav a{display:block;font-family:var(--mono)}
.post-nav .meta{display:block;font-size:var(--fs--2);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.3rem}
.post-nav .title{color:var(--text);font-size:var(--fs--1);line-height:1.3}
.post-nav a:hover .title{color:var(--accent)}

/* ---- Pagination ---- */
.pagination{margin-top:var(--space);border-top:1px solid var(--line);padding-top:1.2rem;font-family:var(--mono);font-size:var(--fs--1)}
.pagination .nav-links{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.pagination .page-numbers{display:inline-grid;place-items:center;min-width:2.2rem;padding:.4rem .55rem;border:1px solid var(--line-2);color:var(--muted)}
.pagination a.page-numbers:hover{color:var(--text);border-color:var(--text);text-decoration:none}
.pagination .page-numbers.current{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}
.pagination .dots{border-color:transparent}

/* ---- Search form ---- */
.search-form{display:flex;gap:0;max-width:30rem}
.search-form .search-field{flex:1;min-width:0;background:var(--surface);border:1px solid var(--line-2);border-right:0;color:var(--text);font-family:var(--mono);font-size:var(--fs--1);padding:.55rem .7rem;border-radius:0}
.search-form .search-field::placeholder{color:var(--sev-none)}
.search-form .search-submit{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);font-family:var(--mono);font-size:var(--fs--1);font-weight:600;padding:.55rem .9rem;cursor:pointer;border-radius:0;text-transform:uppercase;letter-spacing:.05em}
.search-form .search-submit:hover{filter:brightness(1.08)}
.search-form input:focus-visible{outline-offset:-2px}

/* ---- 404 / no results ---- */
.terminal-note{max-width:var(--measure);font-family:var(--mono);font-size:var(--fs--1);color:var(--text)}
.terminal-note .prompt{color:var(--muted)}
.terminal-note .prompt::before{content:"$ ";color:var(--accent)}
.terminal-note .err{color:var(--sev-high);margin:.4rem 0 1.4rem}
.error-404 .code{font-family:var(--mono);font-size:clamp(3rem,2rem + 8vw,7rem);font-weight:700;color:var(--surface-2);line-height:1;margin:0 0 .2em;letter-spacing:-.02em}

/* ---- Comments ---- */
.comments-area{max-width:var(--measure);margin-top:calc(var(--space) * 1.3);padding-top:var(--space);border-top:1px solid var(--line)}
.comments-title,.comment-reply-title{font-family:var(--mono);font-size:var(--fs-1);margin:0 0 1.2rem}
.comment-list{list-style:none;margin:0 0 var(--space);padding:0}
.comment-list ol{list-style:none;padding-left:1.4rem;border-left:1px solid var(--line)}
.comment-body{padding:1rem 0;border-bottom:1px solid var(--line)}
.comment-meta{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);margin-bottom:.5rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline}
.comment-author .fn{color:var(--text);font-style:normal;font-weight:600}
.comment-author .says{display:none}
.comment-metadata a{color:var(--muted)}
.comment-content{font-size:var(--fs--1)}
.comment .reply{font-family:var(--mono);font-size:var(--fs--2)}
.bypostauthor>.comment-body .comment-author .fn::after{content:" ◦ author";color:var(--accent);font-weight:400}
.comment-form{display:grid;gap:.9rem}
.comment-form label{font-family:var(--mono);font-size:var(--fs--1);color:var(--muted);display:block;margin-bottom:.35rem}
.comment-form input[type=text],.comment-form input[type=email],.comment-form input[type=url],.comment-form textarea{width:100%;background:var(--surface);border:1px solid var(--line-2);color:var(--text);font-family:var(--mono);font-size:var(--fs--1);padding:.55rem .7rem;border-radius:0}
.comment-form textarea{min-height:9rem;resize:vertical;line-height:1.55}
.comment-form .form-submit input{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);font-family:var(--mono);font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.6rem 1.1rem;cursor:pointer;border-radius:0}
.comment-form .comment-notes,.comment-form .comment-form-cookies-consent{font-size:var(--fs--2);color:var(--muted)}
.no-comments{color:var(--muted);font-family:var(--mono);font-size:var(--fs--1)}

/* ---- Footer ---- */
.site-footer{border-top:1px solid var(--line);margin-top:calc(var(--space) * 1.5);padding:var(--space) 0 calc(var(--space) * 1.4);font-family:var(--mono);font-size:var(--fs--1);color:var(--muted)}
.site-footer .footer-grid{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:baseline;justify-content:space-between}
.site-footer a{color:var(--muted)}
.site-footer a:hover{color:var(--accent)}
.footer-channels{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;margin:0;padding:0;list-style:none}
.footer-pgp{margin:1rem 0 0;font-size:var(--fs--2);color:var(--sev-none);word-break:break-all}
.footer-pgp b{color:var(--muted);font-weight:400}
.footer-colophon{margin:1rem 0 0;font-size:var(--fs--2);color:var(--sev-none)}

/* ---- Responsive ---- */
@media (max-width:48rem){
  .post-list__item{grid-template-columns:1fr;gap:.35rem}
  .post-list__meta{display:flex;gap:.7rem;padding-top:0}
  .post-list__meta time,.post-list__meta .cat{display:inline}
  .post-list__meta .cat{margin-top:0}
  .post-nav .nav-links{grid-template-columns:1fr}
  .post-nav .nav-next{text-align:left}
  .author-bio{grid-template-columns:1fr}
}
@media (max-width:52rem){
  .nav-toggle{display:inline-flex;align-items:center;gap:.45rem;order:3;appearance:none;background:transparent;border:1px solid var(--line-2);color:var(--text);font-family:var(--mono);font-size:var(--fs--1);padding:.42rem .6rem;cursor:pointer;border-radius:0}
  .nav-toggle .bars{width:1.05em;height:.7em;position:relative;display:inline-block}
  .nav-toggle .bars::before,.nav-toggle .bars::after,.nav-toggle .bars span{content:"";position:absolute;left:0;right:0;height:1.6px;background:currentColor}
  .nav-toggle .bars::before{top:0}.nav-toggle .bars span{top:50%;transform:translateY(-50%)}.nav-toggle .bars::after{bottom:0}
  .primary-nav{order:4;flex-basis:100%;display:none}
  .primary-nav.is-open{display:block}
  .primary-nav ul{flex-direction:column;align-items:stretch;gap:0;padding:.4rem 0 .6rem}
  .primary-nav a{padding:.6rem .2rem;border-bottom:1px solid var(--line)}
  .primary-nav .current-menu-item>a{box-shadow:inset 2px 0 0 var(--accent)}
  .header-inner{flex-wrap:wrap;padding:.4rem 0}
}

/* ---- Motion / print ---- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .wordmark__caret{animation:none;opacity:1}
}
@media print{
  .site-header,.site-footer,.toc-rail,.post-nav,.comments-area,.dk-code__copy,.dk-pgp__copy,.skip-link,.theme-toggle{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  .dk-code,.dk-advisory,.dk-callout{border-color:#999}
  a{color:#000;text-decoration:underline}
}
