/* me0wpy — "Swiss Index" (mockup I6): strict 12-col grid, black / paper / one red, giant numerals. */
:root{--k:#0d0d0d;--w:#f5f4f0;--r:#ff2a00;--g:#8a8a85;--line:#0d0d0d;--soft:#e8e6df;--code:#111;--codefg:#e9e7df;--mark:#ffe14d}
[data-theme="dark"]{--k:#f1efe9;--w:#0f0f0f;--g:#8f8f8a;--line:#f1efe9;--soft:#1d1d1c;--code:#050505;--codefg:#e9e7df;--mark:#6b5a00}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--k:#f1efe9;--w:#0f0f0f;--g:#8f8f8a;--line:#f1efe9;--soft:#1d1d1c;--code:#050505;--mark:#6b5a00}}
*{box-sizing:border-box}
html{scroll-padding-top:20px}
body{margin:0;background:var(--w);color:var(--k);font:16px/1.6 "Inter Tight",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}
img{max-width:100%}
.mono{font-family:"JetBrains Mono",monospace}.small{font-size:12px}.dim{color:var(--g)}
.w{max-width:1240px;margin:0 auto;padding:0 24px}
.g12{display:grid;grid-template-columns:repeat(12,1fr);gap:24px}
.btn{display:inline-flex;gap:10px;align-items:center;padding:12px 18px;background:var(--k);color:var(--w);text-decoration:none;font:600 13px "JetBrains Mono";text-transform:uppercase}
.btn:hover{background:var(--r)}

/* header */
.top{padding:20px 0;border-bottom:2px solid var(--line);font:600 13px "JetBrains Mono";text-transform:uppercase;align-items:center}
.top>*{grid-column:span 3}
.top a{text-decoration:none}.top a:hover{color:var(--r)}
.top .dot{color:var(--r)}
.top nav{display:flex;gap:14px;justify-content:flex-end;align-items:center}
.theme{background:none;border:0;color:inherit;cursor:pointer;font-size:14px;padding:0}.theme:hover{color:var(--r)}

/* home hero */
.hero{padding:40px 0 30px}
.hero h1{grid-column:1/9;font:900 clamp(56px,10.5vw,200px)/.8 "Inter Tight";letter-spacing:-.06em;margin:0;overflow-wrap:anywhere}
.hero h1 span{color:var(--r)}
.hero .meta{grid-column:9/13;align-self:end;font:13px/1.6 "JetBrains Mono"}
.hero .meta p{margin:0 0 12px}

/* category band */
.band{display:grid;grid-template-columns:repeat(var(--n,5),1fr);border-top:2px solid var(--line);border-bottom:2px solid var(--line)}
.band a{padding:18px 16px;border-right:1px solid var(--line);text-decoration:none;display:flex;flex-direction:column;gap:28px}
.band a:last-child{border-right:0}
.band .n{font:600 12px "JetBrains Mono";display:flex;justify-content:space-between}
.band i{font-size:30px}
.band b{font:900 26px/1 "Inter Tight";letter-spacing:-.02em}
.band a:hover{background:var(--k);color:var(--w)}.band a:hover i{color:var(--r)}

/* entry list */
.list{padding:30px 0 40px}
.entry{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;padding:22px 0;border-bottom:1px solid var(--line);align-items:start}
.entry .no{grid-column:1/2;font:900 54px/.8 "Inter Tight";color:var(--r);letter-spacing:-.04em}
.entry .tx{grid-column:2/8}
.entry h2{font:900 36px/1 "Inter Tight";letter-spacing:-.03em;margin:0 0 10px}
.entry h2 a{text-decoration:none}.entry h2 a:hover{color:var(--r)}
.entry .tx p{margin:0;opacity:.85;max-width:560px}
.entry .mt{grid-column:8/10;font:12px/1.7 "JetBrains Mono";color:var(--g);text-transform:uppercase}
.entry .im{grid-column:10/13;aspect-ratio:4/3;overflow:hidden;background:var(--k);position:relative;display:block}
.entry .im img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.15);transition:filter .3s}
.entry .im::after{content:"";position:absolute;inset:0;background:radial-gradient(#000 35%,transparent 37%) 0 0/5px 5px;mix-blend-mode:multiply;opacity:.35;pointer-events:none;transition:opacity .3s}
.entry .im i{position:absolute;inset:0;display:grid;place-items:center;font-size:64px;color:var(--k)}
.entry .im:not(:has(img)){background:var(--soft)}.entry .im:not(:has(img))::after{display:none}
.entry:hover .im:not(:has(img)) i{color:var(--r)}
.entry:hover .no{color:var(--k)}
.entry:hover .im img{filter:none}.entry:hover .im::after{opacity:0}
.kp{border-left:6px solid var(--r);padding:4px 12px;margin-top:12px;font:600 14px "JetBrains Mono"}
.skulls i{font-size:11px;color:var(--soft);margin-right:2px}.skulls i.on{color:var(--r)}
.more{text-align:center;padding-bottom:30px}
.empty{padding:40px 0}

/* page heads */
.phead{padding:44px 0 26px;border-bottom:2px solid var(--line);align-items:end}
.phead .k{grid-column:1/-1;font:600 13px "JetBrains Mono";text-transform:uppercase;color:var(--r)}
.phead .k a{text-decoration:none}
.phead h1{grid-column:1/9;font:900 clamp(56px,9vw,128px)/.85 "Inter Tight";letter-spacing:-.05em;margin:0}
.phead h1 i{font-size:.6em;vertical-align:.12em}
.phead .d{grid-column:9/13;font-size:15px}
.phead .d p{margin:0 0 8px}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:18px 0;border-bottom:1px solid var(--line)}
.chips a{border:1px solid var(--line);padding:6px 12px;text-decoration:none;font:600 13px "JetBrains Mono"}.chips a:hover{background:var(--k);color:var(--w)}
.search input{width:100%;font:600 22px "JetBrains Mono";padding:12px 14px;border:2px solid var(--line);background:var(--w);color:var(--k);outline:none}
.search input:focus{border-color:var(--r)}
.archive .year{padding:24px 0;border-bottom:1px solid var(--line)}
.archive h2{grid-column:1/3;font:900 54px/.9 "Inter Tight";color:var(--r);margin:0;letter-spacing:-.04em}
.archive ol{grid-column:3/13;list-style:none;margin:0;padding:0}
.archive li{display:grid;grid-template-columns:70px 1fr auto;gap:16px;padding:6px 0;border-bottom:1px dashed var(--soft);align-items:baseline}
.archive li a{font-weight:600;text-decoration:none}.archive li a:hover{color:var(--r)}
.tagcloud{display:flex;flex-wrap:wrap;gap:10px;padding:30px 0 50px}
.tagcloud a{font:900 28px "Inter Tight";text-decoration:none;letter-spacing:-.02em}.tagcloud a:hover{color:var(--r)}
.tagcloud sup{font:600 12px "JetBrains Mono";color:var(--g);margin-left:2px}
.about{padding:30px 0 50px}
.about .av{grid-column:1/5;aspect-ratio:1;background:var(--k);display:grid;place-items:center;font-size:120px;color:var(--w);overflow:hidden}
.about .av img{width:100%;height:100%;object-fit:cover}
.about .links{grid-column:5/13;display:flex;flex-direction:column}
.about .links a{display:grid;grid-template-columns:40px 1fr auto;align-items:center;padding:16px 0;border-bottom:1px solid var(--line);font:900 28px "Inter Tight";text-decoration:none}
.about .links a:hover{color:var(--r)}
.nf h1 i{color:var(--r)}

/* single post */
.progress{position:fixed;top:0;left:0;right:0;height:4px;z-index:20;pointer-events:none}
.progress span{display:block;height:100%;width:0;background:var(--r)}
.progress i{position:absolute;top:5px;left:0;font-size:14px;color:var(--r);transform:translateX(-50%);transition:opacity .2s}
.post{padding:40px 0 60px}
/* Article pages: wider container, slim meta column, text column sits left of centre (like Project Zero). */
.single .w{max-width:1480px}
.pmeta{grid-column:1/3;font:12px/1.7 "JetBrains Mono";text-transform:uppercase;position:sticky;top:16px;align-self:start;max-height:calc(100vh - 32px);overflow:auto}
.pmeta .crumbs{color:var(--r);font-weight:600;margin-bottom:16px}.pmeta .crumbs a{text-decoration:none}
.pmeta dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 16px}.pmeta dt{color:var(--g)}.pmeta dd{margin:0}
.pmeta .tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}
.pmeta .tags a{text-decoration:none;border:1px solid var(--line);padding:1px 7px;text-transform:none}.pmeta .tags a:hover{background:var(--k);color:var(--w)}
.toc{border-top:2px solid var(--line);padding-top:10px;text-transform:none}
.toc h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;color:var(--g)}
.toc ol{list-style:none;margin:0;padding:0;counter-reset:t}
.toc li{padding:3px 0}.toc li.l3{padding-left:14px;opacity:.8}
.toc a{text-decoration:none}.toc a:hover,.toc a.on{color:var(--r)}
.toc a.on::before{content:"→ "}
.pmain{grid-column:3/11;min-width:0}
.pmain h1{font:900 clamp(40px,6vw,76px)/.95 "Inter Tight";letter-spacing:-.04em;margin:0 0 18px}
.lede{font-size:21px;line-height:1.45;margin:0 0 24px;max-width:860px}
.cover{margin:0 0 28px;border:2px solid var(--line)}.cover img{display:block;width:100%;max-height:520px;object-fit:cover}
.keypoints{border:2px solid var(--line);padding:16px 20px;margin:0 0 30px;position:relative}
.keypoints h4{margin:0 0 8px;font:600 12px "JetBrains Mono";text-transform:uppercase;color:var(--r)}
.keypoints ul{margin:0;padding-left:20px}.keypoints li{margin:4px 0;font-weight:500}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:24px;border-top:2px solid var(--line);margin-top:50px;padding-top:16px}
.pn a{text-decoration:none;font:900 22px/1.1 "Inter Tight";letter-spacing:-.02em}.pn a:hover{color:var(--r)}
.pn small{display:block;font:600 11px "JetBrains Mono";text-transform:uppercase;color:var(--g);margin-bottom:4px}
.pn .r{text-align:right}

/* prose */
.prose{font-size:18px;line-height:1.7;max-width:none}
.prose h2,.prose h3,.prose h4{font-family:"Inter Tight";letter-spacing:-.03em;line-height:1.05;position:relative;scroll-margin-top:20px}
.prose h2{font-size:38px;font-weight:900;margin:56px 0 14px;padding-top:14px;border-top:2px solid var(--line)}
.prose h3{font-size:26px;font-weight:900;margin:36px 0 10px}
.prose h4{font-size:19px;font-weight:600;margin:26px 0 8px}
.prose .anchor{position:absolute;left:-28px;color:var(--r);text-decoration:none;opacity:0;font-size:.7em;top:.25em}
.prose h2 .anchor{top:calc(14px + .25em)}
.prose h2:hover .anchor,.prose h3:hover .anchor{opacity:1}
.prose a{color:var(--r);text-underline-offset:3px}
.prose mark{background:var(--mark);color:inherit;padding:0 2px}
.prose code{font:400 .86em "Google Sans Code","JetBrains Mono",monospace;background:var(--soft);padding:1px 5px}
/* Code blocks: font, weight and token colours follow Project Zero's blog (Pygments classes from lib/highlight.js). */
.prose pre{position:relative;background:#000;color:#fff;padding:1em 1.2em;overflow:auto;font:300 14px/1.2em "Google Sans Code","JetBrains Mono",monospace;margin:22px 0;border-left:6px solid var(--r);white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4}
.prose pre code{background:none;padding:0;font:inherit;color:inherit}
.highlight .c,.highlight .ch,.highlight .cd,.highlight .cm,.highlight .cpf,.highlight .c1,.highlight .cs{color:#6d6e70;font-style:italic}
.highlight .cp{color:#41ff5b;font-weight:700}
.highlight .k,.highlight .kd,.highlight .kv,.highlight .sa{color:#fff02a;font-weight:700}
.highlight .o,.highlight .ow,.highlight .p,.highlight .pi,.highlight .nf,.highlight .fm,.highlight .py,.highlight .na{color:#41ff5b}
.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:#41ff5b;font-weight:700}
.highlight .kc,.highlight .nl,.highlight .nt,.highlight .m,.highlight .mi,.highlight .mh,.highlight .mf,.highlight .ss{color:#9f93e6;font-weight:700}
.highlight .kn,.highlight .kp,.highlight .kr,.highlight .nb{color:#fff;font-weight:700}
.highlight .kt,.highlight .no,.highlight .nc,.highlight .nd,.highlight .nn,.highlight .bp,.highlight .ne,.highlight .se,.highlight .sc,.highlight .si,.highlight .gp{color:#faaf4c;font-weight:700}
.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sd,.highlight .sh,.highlight .sx,.highlight .sr{color:#fff0a6;font-weight:700}
.highlight .err{color:#fff;background:#c00}
.prose pre[data-lang]::before{content:attr(data-lang);position:absolute;top:0;right:0;background:var(--r);color:#fff;font:600 10px "JetBrains Mono";text-transform:uppercase;padding:2px 8px}
.prose .copy{position:absolute;bottom:8px;right:8px;background:#ffffff1a;color:#fff;border:0;font:600 11px "JetBrains Mono";padding:4px 8px;cursor:pointer;opacity:0;transition:opacity .2s}
.prose pre:hover .copy{opacity:1}
.prose blockquote{margin:24px 0;padding:6px 20px;border-left:6px solid var(--k);font-size:20px;font-style:italic}
.prose img{display:block;height:auto;margin:20px 0;border:1px solid var(--line)}
.prose figure{margin:24px 0}.prose figcaption{font:12px "JetBrains Mono";color:var(--g);margin-top:6px}
.prose hr{border:0;border-top:2px solid var(--line);margin:40px 0}
.prose table{border-collapse:collapse;width:100%;font-size:15px;margin:22px 0;display:block;overflow-x:auto}
.prose th,.prose td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top;min-width:110px}
.prose th{background:var(--k);color:var(--w);font:600 12px "JetBrains Mono";text-transform:uppercase}
.prose ul,.prose ol{padding-left:24px}.prose li{margin:4px 0}
.prose details{border:1px solid var(--line);padding:10px 14px;margin:18px 0}.prose summary{cursor:pointer;font-weight:600}
.prose .kp-block{border-left:6px solid var(--r);background:var(--soft);padding:12px 16px;margin:22px 0;font-weight:500}
.prose .kp-block::before{content:"Key point";display:block;font:600 11px "JetBrains Mono";text-transform:uppercase;color:var(--r);margin-bottom:4px}
.prose .callout{border:2px solid var(--line);padding:12px 16px 12px 48px;margin:22px 0;position:relative}
.prose .callout::before{font:var(--fa-font-sharp-solid);font-family:"Font Awesome 7 Sharp";font-weight:900;position:absolute;left:16px;top:14px;font-size:18px}
.prose .callout.note{border-color:#2f6fed}.prose .callout.note::before{content:"\f05a";color:#2f6fed}
.prose .callout.tip{border-color:#1f9d55}.prose .callout.tip::before{content:"\f0eb";color:#1f9d55}
.prose .callout.warning{border-color:#e8a100}.prose .callout.warning::before{content:"\f071";color:#e8a100}
.prose .callout.danger{border-color:var(--r)}.prose .callout.danger::before{content:"\f7b9";color:var(--r)}

/* footer */
.foot{border-top:2px solid var(--line);padding:24px 0 50px}
.foot .a{grid-column:1/5}.foot .b{grid-column:5/9}.foot .c{grid-column:9/13}
.foot h4{font:600 12px "JetBrains Mono";text-transform:uppercase;margin:0 0 10px;color:var(--g)}
.foot .big{font:900 28px "Inter Tight";letter-spacing:-.02em}.foot p{margin:4px 0}
.soc{display:flex;flex-wrap:wrap}
.soc a{display:inline-grid;place-items:center;width:42px;height:42px;background:var(--k);color:var(--w);margin:0 4px 4px 0;font-size:18px;text-decoration:none}.soc a:hover{background:var(--r);color:#fff}

@media (max-width:900px){
  .g12,.entry{grid-template-columns:1fr}
  .g12>*,.entry>*{grid-column:1/-1!important}
  .hide-s{display:none}
  .top nav{justify-content:flex-start;flex-wrap:wrap}
  .band{grid-template-columns:repeat(2,1fr)}.band a{border-bottom:1px solid var(--line)}
  .entry .no{font-size:40px}.entry h2{font-size:28px}
  .entry .im{aspect-ratio:16/9}
  .pmeta{position:static;max-height:none;order:0}
  /* phones: title, lede and cover first, then meta/TOC, then the article */
  .post{display:flex;flex-direction:column;gap:18px}
  .pmain{display:contents}
  .pmain h1{order:-3;margin:0}.pmain .lede{order:-2;margin:0}.pmain .cover{order:-1;margin:0}
  .pmain .keypoints,.pmain .prose,.pmain .pn{order:1}
  .prose .anchor{display:none}
  .archive li{grid-template-columns:56px 1fr}.archive li .dim{display:none}
}
