/* Blog index + single post */
.bloghead{padding:72px 0 0}
.bloghead .bc{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 18px}
.bloghead .bc a{color:var(--accent-deep);text-decoration:none}
.bloghead h1{font-size:44px}
.bloghead .lede{font-size:19px;color:var(--ink-soft);margin:20px 0 0;max-width:62ch}
.bsec{padding:44px 0 0}
.bsec.last{padding-bottom:80px}
.meta{font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);display:flex;gap:14px;flex-wrap:wrap;margin:0 0 16px}
.meta .tag{color:var(--accent-deep)}
.more{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--accent-deep);letter-spacing:.03em;display:inline-flex;align-items:center;gap:8px;text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:3px}
.bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.bcard{background:#fff;border:1px solid var(--line-2);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s,box-shadow .15s}
.bcard:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 18px 40px rgba(19,24,32,.07)}
.bcard .ph{aspect-ratio:16/10}
.bcard .thumb{aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid var(--line)}
.bcard .thumb img{width:100%;height:100%;object-fit:cover}
.bcard .cb{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1}
.bcard h3{font-size:19px;line-height:1.25;margin-bottom:10px}
.bcard p{font-size:14.5px;color:var(--ink-soft);margin:0 0 20px;line-height:1.55}
.bcard .more{margin-top:auto;align-self:flex-start}
.bempty{color:var(--ink-soft);font-size:17px}
.bpager{margin-top:44px;display:flex;gap:10px;flex-wrap:wrap;font-family:"IBM Plex Mono",monospace;font-size:13px}
.bpager .page-numbers{padding:10px 14px;border:1px solid var(--line-2);border-radius:7px;text-decoration:none;color:var(--ink)}
.bpager .page-numbers.current{background:var(--accent);border-color:var(--accent);color:#fff}
/* single article */
.art-head{padding:40px 0 0}
.art-head .wrap>*{max-width:720px;margin-left:auto;margin-right:auto}
.art-head .bc{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:0 auto 28px}
.art-head .bc a{color:var(--accent-deep);text-decoration:none}
.art-meta{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-family:"IBM Plex Mono",monospace;font-size:12.5px;color:var(--ink-soft);margin:0 auto 22px}
.art-meta .tag{background:var(--accent-tint);color:var(--accent-deep);padding:5px 10px;border-radius:999px;letter-spacing:.04em}
.art-meta .br{flex-basis:100%;height:0}
.art-meta a{color:var(--accent-deep)}
.art-head h1{font-size:clamp(30px,3.6vw,42px);line-height:1.12;letter-spacing:-.025em;text-wrap:balance}
.art-lede{margin-top:24px}
.art-lede p{font-size:19px;line-height:1.6;color:var(--ink-soft);margin:0;text-wrap:pretty}
.art-lede a{color:var(--accent-deep)}
.art-lede sup a{font-family:"IBM Plex Mono",monospace;font-size:11px;text-decoration:none;padding:0 2px}
.art-hero{margin:44px 0 0;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;aspect-ratio:16/9;background:var(--bg-soft)}
.art-hero img{width:100%;height:100%;object-fit:cover;border-radius:0}
.art-layout{display:flex;flex-direction:column;align-items:center;padding-top:48px;padding-bottom:96px}
.art-layout>*{width:100%;max-width:720px}
.toc{background:#fff;border:1px solid var(--line-2);border-radius:12px;padding:26px 30px 20px;margin-bottom:56px}
.toc p{font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 14px}
.toc ol{list-style:none;margin:0;padding:0;display:grid;gap:2px;counter-reset:t}
.toc li{counter-increment:t}
.toc a{display:grid;grid-template-columns:30px 1fr;padding:13px 4px;font-size:14.5px;line-height:1.4;color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line);transition:color .15s}
.toc a::before{content:counter(t,decimal-leading-zero);font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--accent-deep);padding-top:2px}
.toc li:last-child a{border-bottom:none}
.toc a:hover{color:var(--accent-deep)}
.prose.entry{max-width:720px;font-size:17.5px;line-height:1.72;color:var(--ink)}
.prose p{margin:0 0 22px;text-wrap:pretty}
.prose h2{font-size:clamp(26px,2.8vw,32px);line-height:1.18;margin:64px 0 20px;scroll-margin-top:110px;text-wrap:balance}
.prose h3{margin:40px 0 14px;scroll-margin-top:110px}
.prose>h2:first-child{margin-top:0}
.prose a{color:var(--accent-deep);text-underline-offset:3px}
.prose sup a,.bib sup a{font-family:"IBM Plex Mono",monospace;font-size:11px;text-decoration:none;padding:0 2px}
.prose ul,.prose ol{margin:0 0 22px}
/* Optional block styles editors can use in posts */
.prose .is-style-callout,.prose .is-style-callout-warn{background:var(--accent-tint-2);border:1px solid var(--line-2);border-radius:12px;padding:24px 28px;margin:30px 0 34px}
.prose .is-style-callout-warn{background:#fff;border-color:var(--accent)}
.prose .is-style-callout>:last-child,.prose .is-style-callout-warn>:last-child{margin-bottom:0}
.prose .is-style-callout>h4:first-child,.prose .is-style-callout-warn>h4:first-child,.prose .is-style-callout>p.k,.prose .is-style-callout-warn>p.k{font-family:"IBM Plex Mono",monospace;font-size:11.5px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 8px}
.prose ul.is-style-tips{list-style:none;margin:8px 0 28px;padding:0;border-top:1px solid var(--line-2)}
.prose ul.is-style-tips li{position:relative;padding:18px 0 18px 224px;border-bottom:1px solid var(--line-2);font-size:16.5px;line-height:1.6;color:var(--ink-soft)}
.prose ul.is-style-tips li>strong:first-child{position:absolute;left:0;top:18px;width:200px;color:var(--ink);font-weight:600}
/* author + bibliography */
.author{font-size:17.5px;display:grid;grid-template-columns:72px 1fr;gap:20px;align-items:center;border:1px solid var(--line-2);border-radius:12px;padding:22px 24px;margin:56px 0 0;background:#fff}
.author .av{width:72px;height:72px;border-radius:50%;overflow:hidden;background:var(--accent-tint-2)}
.author .av img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;border-radius:0}
.author .av{position:relative}
.author .av img.av-photo{position:absolute;left:-8%;top:0;width:116%;max-width:none;height:auto;object-fit:initial}
.author .nm{font-weight:600;font-size:17px;margin:0}
.author .rl{font-size:14.5px;color:var(--ink-soft);margin:2px 0 6px}
.author a{font-family:"IBM Plex Mono",monospace;font-size:12.5px;color:var(--accent-deep);text-decoration:none}
.bib.entry{max-width:720px;margin:64px 0 0;padding-top:24px;border-top:2px solid var(--ink);font-size:14.5px;color:var(--ink-soft)}
.bib h2{font-size:22px;margin:0 0 18px;scroll-margin-top:110px}
.bib .wp-block-separator{display:none}
.bib ol,.bib ul,.bib .wp-block-footnotes{margin:0;padding-left:22px;display:grid;gap:12px;font-size:14.5px;line-height:1.6}
.bib li{scroll-margin-top:110px}
.bib li a{color:var(--accent-deep);text-decoration:none;word-break:break-word}
.bib li a:hover{text-decoration:underline;text-underline-offset:3px}
.bib li::marker{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--accent-deep)}
.bib li:target{color:var(--ink)}
/* related */
.related{background:var(--bg-soft);border-top:1px solid var(--line);padding:72px 0 88px}
.related .rh{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:28px}
.related h2{font-size:30px}
.related .rh a{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--accent-deep);text-decoration:none}
.related .bgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1000px){.bgrid{grid-template-columns:1fr 1fr}.art-layout{padding-top:36px}.related .bgrid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.art-hero{aspect-ratio:4/3}.prose.entry{font-size:16.5px}.toc{padding:20px 20px 14px}.prose ul.is-style-tips li{padding-left:0}.prose ul.is-style-tips li>strong:first-child{position:static;display:block;width:auto;margin-bottom:4px}.related .bgrid{grid-template-columns:1fr}}
@media(max-width:640px){.bloghead h1{font-size:32px}.bgrid{grid-template-columns:1fr}}
.art-hero .wp-block-image{margin:0;height:100%}
.art-hero figcaption{display:none}
