.narrow{width:min(760px,100% - 40px);margin-inline:auto}
.post-hero,.blog-hero{position:relative;padding:140px 0 64px;overflow:hidden}
.post-hero::before,.blog-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(620px 420px at 85% 20%,rgba(91,79,211,.32),transparent 60%),radial-gradient(500px 400px at 5% 95%,rgba(157,148,255,.12),transparent 60%);pointer-events:none}
.post-hero .narrow,.blog-hero .wrap{position:relative}
.post-hero h1{font-size:clamp(2rem,4.6vw,3.2rem);font-weight:800;margin:16px 0 18px;letter-spacing:-.03em}
.blog-hero h1{font-size:clamp(2.3rem,5vw,3.8rem);font-weight:800;margin:16px 0 18px;letter-spacing:-.03em;max-width:820px}
.post-hero .lead,.blog-hero .lead{font-size:1.12rem;color:var(--muted);max-width:640px}
.post-meta{display:flex;gap:10px 18px;flex-wrap:wrap;color:var(--muted);font-size:.88rem;margin-top:24px}
.post-meta span{display:inline-flex;align-items:center;gap:8px}
.post-meta span+span::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--line);margin-right:10px}
.prose-wrap{background:var(--paper);color:var(--ink);padding:64px 0 90px}
.prose{font-size:1.07rem;line-height:1.8;color:#2B2940}
.prose h2{font-family:var(--display);font-size:clamp(1.45rem,3vw,1.8rem);font-weight:800;margin:48px 0 14px;color:var(--ink);line-height:1.2;letter-spacing:-.02em}
.prose h3{font-family:var(--display);font-size:1.22rem;font-weight:700;margin:32px 0 10px;color:var(--ink)}
.prose p{margin:0 0 18px}
.prose ul,.prose ol{margin:0 0 22px 22px}
.prose li{margin-bottom:8px;padding-left:4px}
.prose a{color:var(--brand-d);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.prose a:hover{color:var(--brand)}
.prose strong{color:var(--ink)}
.table-scroll{overflow-x:auto;margin:8px 0 26px;border-radius:14px;border:1px solid var(--paper-2)}
.prose table{width:100%;border-collapse:collapse;font-size:.95rem;background:#fff;min-width:520px}
.prose th,.prose td{padding:12px 14px;border-bottom:1px solid var(--paper-2);text-align:left;vertical-align:top;line-height:1.5}
.prose th{background:var(--tile);font-family:var(--display);font-weight:700;color:var(--ink)}
.prose tr:last-child td{border-bottom:0}
.callout{background:#fff;border-left:4px solid var(--brand);border-radius:12px;padding:18px 22px;margin:28px 0}
.callout p:last-child{margin:0}
.toc{background:#fff;border:1px solid var(--paper-2);border-radius:16px;padding:20px 24px;margin:0 0 36px;font-size:.98rem}
.toc strong{display:block;margin-bottom:8px;font-family:var(--display)}
.toc ol{margin:0 0 0 20px}
.toc li{margin-bottom:4px}
.post-cta{background:var(--ink);color:var(--text);border-radius:20px;padding:32px;margin-top:52px}
.post-cta h2{color:#fff;margin:0 0 10px;font-size:1.5rem}
.post-cta p{color:var(--muted);margin-bottom:20px}
.post-cta .btn{text-decoration:none}
.post-cta .btn-brand{color:#fff}
.post-cta .actions{display:flex;flex-wrap:wrap;gap:12px}
.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.post-card{display:flex;flex-direction:column;background:var(--ink-2);border:1px solid var(--line);border-radius:20px;padding:26px;transition:border-color .25s,transform .25s}
.post-card:hover{border-color:var(--brand-l);transform:translateY(-4px)}
.post-card .cat{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brand-l);margin-bottom:12px}
.post-card h3{font-size:1.2rem;font-weight:700;margin-bottom:10px;line-height:1.3}
.post-card p{color:var(--muted);font-size:.94rem;margin-bottom:18px;flex:1}
.post-card .read{font-size:.85rem;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
.post-card .read b{color:var(--brand-l);font-weight:600}
.cat-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px}
.cat-nav a{padding:8px 16px;border-radius:999px;border:1px solid var(--line);font-size:.88rem;color:var(--text);transition:all .2s}
.cat-nav a:hover{border-color:var(--brand-l);color:var(--brand-l)}
.blog-section{padding:70px 0 0}
.blog-section:last-of-type{padding-bottom:100px}
.blog-section h2{font-size:clamp(1.6rem,3.4vw,2.2rem);font-weight:800;margin-bottom:26px}
.related{padding:80px 0 100px}
.related h2{font-size:clamp(1.6rem,3.4vw,2.2rem);font-weight:800;margin-bottom:26px}
@media (max-width:980px){.post-grid{grid-template-columns:1fr 1fr}.post-hero,.blog-hero{padding-top:120px}}
@media (max-width:600px){.post-grid{grid-template-columns:1fr}.prose{font-size:1.02rem}.post-cta{padding:26px}.narrow{width:calc(100% - 32px)}}
