/* blog.css — blog-specific styles, loaded after main.css */

/* Override SPA layout lock — blog pages must scroll freely */
html,body{height:auto!important;overflow:auto!important}

/* ── Layout ───────────────────────────────────────────────────────────────── */
.blog-root{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--sans)}
.blog-nav{display:flex;align-items:center;gap:16px;padding:0 24px;height:52px;border-bottom:1px solid var(--border);background:var(--bg2);position:sticky;top:0;z-index:50}
.blog-nav-logo{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--text);font-weight:700;font-size:15px}
.blog-nav-logo-icon{width:28px;height:28px;background:var(--accent);border-radius:6px;display:grid;place-items:center;font-size:16px;flex-shrink:0}
.blog-nav-back{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text2);text-decoration:none;padding:5px 10px;border-radius:var(--r);border:1px solid var(--border2);background:var(--bg3);transition:all .15s;white-space:nowrap}
.blog-nav-back:hover{color:var(--text);background:var(--bg4)}
.blog-nav-spacer{flex:1}

/* ── Blog index ───────────────────────────────────────────────────────────── */
.blog-index-hero{max-width:860px;margin:60px auto 40px;padding:0 24px;text-align:center}
.blog-index-hero h1{font-size:clamp(28px,5vw,42px);font-weight:700;margin:0 0 12px}
.blog-index-hero p{color:var(--text2);font-size:16px;margin:0}
.blog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;max-width:1100px;margin:0 auto 60px;padding:0 24px}

/* ── Post card ───────────────────────────────────────────────────────────── */
.blog-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}
.blog-card:hover{border-color:var(--border3);transform:translateY(-2px)}
.blog-card-cover{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center;background:var(--bg3);display:block}
.blog-card-cover-placeholder{width:100%;aspect-ratio:3/4;background:linear-gradient(135deg,var(--bg3) 0%,var(--bg4) 100%);display:flex;align-items:center;justify-content:center;font-size:36px;color:var(--border3)}
.blog-card-body{padding:16px;flex:1;display:flex;flex-direction:column}
.blog-card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}
.blog-tag{font-size:11px;font-weight:500;padding:2px 8px;border-radius:20px;background:var(--accent-bg);color:var(--accent);border:1px solid rgba(245,200,66,0.2)}
.blog-card-title{font-size:16px;font-weight:600;line-height:1.4;margin:0 0 8px;color:var(--text)}
.blog-card-excerpt{font-size:13px;color:var(--text2);line-height:1.6;flex:1;margin:0 0 12px}
.blog-card-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text3)}
.blog-card-meta-dot{color:var(--border3)}

/* ── Post page layout ─────────────────────────────────────────────────────── */
.blog-post-wrap{display:grid;grid-template-columns:1fr min(720px,100%) 1fr;column-gap:0;max-width:1200px;margin:0 auto;padding:0 0 80px}
.blog-post-wrap > *{grid-column:2}
.blog-post-wide{grid-column:1/-1}
.blog-post-cover{width:100%;max-height:420px;object-fit:cover;display:block;border-radius:var(--r2);margin:32px 0}
.blog-post-cover-wrap{grid-column:1/-1;padding:0 24px}

/* ── Post header ─────────────────────────────────────────────────────────── */
.blog-post-header{padding:32px 24px 0}
.blog-post-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.blog-post-title{font-size:clamp(24px,4.5vw,38px);font-weight:700;line-height:1.25;margin:0 0 16px}
.blog-post-byline{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:13px;color:var(--text2);padding-bottom:20px;border-bottom:1px solid var(--border)}
.blog-post-byline strong{color:var(--text)}
.blog-post-byline-sep{color:var(--border3)}

/* ── TOC ─────────────────────────────────────────────────────────────────── */
.blog-toc-aside{grid-column:3;padding:32px 24px 0 20px;position:relative}
.blog-toc{position:sticky;top:72px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:16px;font-size:13px;max-height:calc(100vh - 100px);overflow-y:auto}
.blog-toc-title{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);margin-bottom:12px}
.blog-toc-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.blog-toc-list li.toc-h3{padding-left:12px}
.blog-toc-list a{color:var(--text2);text-decoration:none;line-height:1.4;display:block;padding:3px 0;transition:color .15s}
.blog-toc-list a:hover{color:var(--accent)}

/* ── Article body ─────────────────────────────────────────────────────────── */
.blog-article{padding:28px 24px 0;line-height:1.75;font-size:16px}
.blog-article h2{font-size:22px;font-weight:700;margin:2em 0 .6em;padding-top:.2em;border-top:1px solid var(--border)}
.blog-article h3{font-size:18px;font-weight:600;margin:1.6em 0 .5em}
.blog-article h4{font-size:15px;font-weight:600;margin:1.4em 0 .4em}
.blog-article p{margin:0 0 1em}
.blog-article ul,.blog-article ol{padding-left:1.4em;margin:0 0 1em}
.blog-article li{margin-bottom:.35em}
.blog-article blockquote{border-left:3px solid var(--accent);margin:1.2em 0;padding:.6em 1.2em;background:var(--accent-bg);border-radius:0 var(--r) var(--r) 0;color:var(--text2)}
.blog-article pre{position:relative;background:#282c34;border:1px solid #3e4451;border-radius:8px;padding:20px 20px 20px 20px;overflow-x:auto;margin-bottom:24px;line-height:1.6}
.blog-article pre code{background:none;border:none;padding:0;font-size:13px;line-height:1.65;color:#abb2bf}
.blog-article code{background:#1e2127;border:1px solid #3e4451;border-radius:4px;padding:2px 7px;font-size:13px;font-family:var(--mono);color:#e5c07b}
.code-copy-btn{position:absolute;top:10px;right:10px;background:#3e4451;border:1px solid #4b5263;border-radius:5px;color:#abb2bf;font-size:11px;font-family:var(--sans,system-ui);padding:4px 10px;cursor:pointer;transition:all .15s;z-index:2}
.code-copy-btn:hover{background:#f5c842;color:#000;border-color:#f5c842}
.code-copy-btn:active{transform:scale(.96)}
.blog-article a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(245,200,66,.35);text-underline-offset:3px}
.blog-article a:hover{color:var(--accent2)}
.blog-article a[target="_blank"]::after{content:" ↗";font-size:.75em;opacity:.6}
.blog-article img{max-width:100%;border-radius:var(--r);margin:1em 0}
.blog-article table{width:100%;border-collapse:collapse;margin:1em 0;font-size:14px}
.blog-article th{text-align:left;padding:8px 12px;background:var(--bg3);border:1px solid var(--border2);font-weight:600}
.blog-article td{padding:8px 12px;border:1px solid var(--border2)}
.blog-article hr{border:none;border-top:1px solid var(--border2);margin:2em 0}

/* ── Related sections ─────────────────────────────────────────────────────── */
.blog-related{padding:32px 24px 0}
.blog-related h2{font-size:18px;font-weight:700;margin:0 0 14px}
.blog-related-tools{display:flex;flex-wrap:wrap;gap:8px}
.blog-related-posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:4px}
.blog-related-post-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px;text-decoration:none;color:inherit;display:block;transition:border-color .15s}
.blog-related-post-card:hover{border-color:var(--border3)}
.blog-related-post-card-title{font-size:14px;font-weight:600;margin:0 0 4px;color:var(--text)}
.blog-related-post-card-meta{font-size:12px;color:var(--text3)}

/* ── Engagement placeholder ───────────────────────────────────────────────── */
#blog-engagement{padding:32px 24px 0;min-height:1px}

/* ── Footer ───────────────────────────────────────────────────────────────── */
.blog-footer{border-top:1px solid var(--border);padding:20px 24px;text-align:center;font-size:13px;color:var(--text3)}
.blog-footer a{color:var(--text2);text-decoration:none}
.blog-footer a:hover{color:var(--text)}

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media(max-width:1024px){
  .blog-post-wrap{grid-template-columns:1fr;padding:0 0 60px}
  .blog-post-wrap > *,.blog-post-wide,.blog-post-cover-wrap{grid-column:1}
  .blog-toc-aside{display:none}
}
@media(max-width:640px){
  .blog-grid{grid-template-columns:1fr}
  .blog-index-hero{margin:32px auto 24px}
  .blog-post-header,.blog-article,.blog-related,.blog-post-cover-wrap{padding-left:16px;padding-right:16px}
}
