/* Blog pages (gen-blog.mjs). Loaded after /latex/style.css, whose tokens (colours, radii, shadows, fonts)
   it reuses, so the blog matches the app and the LaTeX reference. */
.post{max-width:720px;margin:0 auto}
.post h1{font-size:clamp(28px,5vw,40px);line-height:1.15;margin:0 0 12px}
.post .lede{margin:0 0 14px}
.post-back{display:inline-flex;align-items:center;gap:7px;margin:0 0 22px;padding:6px 12px 6px 9px;border:1px solid var(--border);
border-radius:999px;background:var(--surface);color:var(--text-2);font-size:14px;font-weight:500}
.post-back:hover{color:var(--accent);border-color:var(--accent-line);text-decoration:none}
.post-back:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.post-cat{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
.post-meta{font-size:14px;color:var(--text-3);margin:0 0 26px}

.tldr{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-xl);padding:18px 22px;margin:0 0 20px}
.tldr-h,.toc-h{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-press);margin:0 0 10px}
.tldr ul{margin:0;padding-left:20px}
.tldr li{margin:0 0 7px;line-height:1.55}
.tldr li:last-child{margin:0}
.tldr strong{font-weight:600}

.toc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 22px;margin:0 0 34px}
.toc ol{margin:0;padding-left:20px;columns:2;column-gap:32px}
.toc li{margin:0 0 6px;break-inside:avoid;font-size:15px;color:var(--text-3)}
.toc a{color:var(--text-2)}
.toc a:hover{color:var(--accent)}

.post-body{font-size:17.5px;line-height:1.75}
.post-body h2,.post-faq h2,.related h2{font-size:24px;line-height:1.25;margin:46px 0 14px;letter-spacing:-.01em;scroll-margin-top:84px;text-wrap:balance}
.post-body h3{font-size:19px;margin:30px 0 10px}
.post-body p{margin:0 0 18px}
.post-body ul,.post-body ol{margin:0 0 22px;padding-left:24px}
.post-body li{margin:0 0 10px}
.post-body li::marker{color:var(--text-3)}
.post-body strong{font-weight:600}
.post-body :not(pre)>code{font-family:var(--mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--border);
border-radius:5px;padding:1px 5px;color:var(--accent-press);overflow-wrap:anywhere}
.post-body .katex{font-size:1.04em}
.post-body .katex-display{margin:14px 0;overflow-x:auto;overflow-y:hidden}

.codeblock{margin:0 0 18px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;box-shadow:var(--sh-1)}
.codebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px 8px 16px;
border-bottom:1px solid var(--border-2);background:var(--surface-2);font-size:12.5px;font-weight:600;color:var(--text-2);
letter-spacing:.02em}
.codebar .copybtn{height:32px;padding:0 14px;font-size:13px}
.codeblock pre{margin:0;padding:14px 16px;overflow:auto;max-height:480px;font-family:var(--mono);font-size:13.5px;line-height:1.55;color:var(--text)}
.codeblock pre code{font-family:inherit;font-size:inherit;background:none;border:0;padding:0;color:inherit}

.fig{margin:10px 0 28px;text-align:center}
.fig img{display:block;max-width:100%;height:auto;margin:0 auto;border:1px solid var(--border);border-radius:var(--r);
box-shadow:var(--sh-2);background:#fff}
.fig figcaption{font-size:14px;line-height:1.5;color:var(--text-3);margin:12px auto 0;max-width:56ch}
.svgwrap{max-width:360px;margin:0 auto}
.svgwrap svg{display:block;width:100%;height:auto}

.tablewrap{overflow-x:auto;margin:0 0 24px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-1)}
.post-body table{border-collapse:collapse;width:100%;min-width:520px;font-size:15.5px;line-height:1.5}
.post-body th,.post-body td{text-align:left;vertical-align:top;padding:11px 15px;border-top:1px solid var(--border-2)}
.post-body thead th{border-top:0;background:var(--surface-2);font-weight:600;font-size:14px;color:var(--text-2)}

.post-sources h2{font-size:24px;line-height:1.25;margin:46px 0 14px;letter-spacing:-.01em;scroll-margin-top:84px}
.post-sources ul{margin:0;padding-left:22px;color:var(--text-2);font-size:15px;line-height:1.6}
.post-sources li{margin:0 0 8px}
.post-faq .faq{gap:18px}
.post-faq .qa .a{line-height:1.65}

.post-action{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:0 0 24px}
.post-action .go{display:inline-block;background:var(--accent);color:#fff;font-weight:600;font-size:16px;
padding:12px 20px;border-radius:var(--r);box-shadow:var(--sh-1)}
.post-action .go:hover{background:var(--accent-press);text-decoration:none}
.post-action .go:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.post-action p{flex:1 1 260px;margin:0;font-size:14.5px;line-height:1.5;color:var(--text-2)}

.postlist{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.postcard{display:grid;grid-template-columns:240px 1fr;gap:22px;align-items:center;background:var(--surface);
border:1px solid var(--border);border-radius:var(--r-xl);padding:16px;box-shadow:var(--sh-1);color:var(--text);
transition:border-color .12s,box-shadow .12s,transform .12s}
.postcard:hover{border-color:var(--accent-line);box-shadow:var(--sh-2);transform:translateY(-1px);text-decoration:none}
.postcard-img{display:block;width:100%;height:auto;aspect-ratio:1200/630;object-fit:cover;border-radius:var(--r);
border:1px solid var(--border-2);background:var(--surface-2)}
.postcard-text{display:flex;flex-direction:column;gap:8px;padding:4px 8px 4px 0}
.postcard .post-cat{margin:0}
.postcard-title{font-size:21px;font-weight:600;line-height:1.3;text-wrap:balance}
.postcard-desc{color:var(--text-2);line-height:1.55}
.postcard .post-meta{margin:2px 0 0}
.related{margin-top:8px}

@media (max-width:620px){
  .toc ol{columns:1}
  .post-body{font-size:17px}
  .post-body h2,.post-faq h2,.related h2{font-size:22px;margin-top:38px}
  .postcard{grid-template-columns:1fr;gap:14px;padding:14px}
  .postcard-text{padding:0 4px 4px}
}
@media (prefers-reduced-motion:reduce){.postcard{transition:none}.postcard:hover{transform:none}}
