.blog-main{padding:148px 0 90px}.blog-main .wrap{max-width:var(--maxw)}.blog-grid{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:64px;align-items:start}.blog-grid>*{min-width:0}.blog-hero{margin-bottom:58px;max-width:780px}.blog-hero h1{font-family:var(--font-display);font-weight:600;font-size:clamp(2.2rem,4.6vw,3.4rem);line-height:1.05;letter-spacing:-.02em;margin-top:20px;text-wrap:balance}.blog-hero p{color:var(--ink-3);font-size:1.12rem;margin-top:18px;max-width:640px}.post-list{display:flex;flex-direction:column;gap:26px}.post-card{display:block;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);padding:30px 32px;transition:transform .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease)}.post-card:hover{transform:translateY(-3px);border-color:var(--accent);background:var(--surface-2)}.post-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-4)}.post-cat{color:var(--accent);border:1px solid oklch(.88 .19 128 / .35);border-radius:999px;padding:3px 12px;letter-spacing:.06em;text-transform:uppercase;font-size:.72rem}.post-card h2{font-family:var(--font-display);font-weight:600;font-size:1.45rem;line-height:1.2;letter-spacing:-.01em;margin-top:16px}.post-card p{color:var(--ink-3);margin-top:12px;font-size:1rem}.post-card .post-read{display:inline-flex;align-items:center;gap:8px;margin-top:18px;color:var(--accent);font-family:var(--font-mono);font-size:.85rem}.post-card .post-read .arrow{transition:transform .25s var(--ease)}.post-card:hover .post-read .arrow{transform:translate(4px)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:38px;font-family:var(--font-mono);font-size:.85rem}.page-step{display:inline-flex;align-items:center;gap:8px;color:var(--ink-3);border:1px solid var(--line-soft);border-radius:999px;padding:9px 18px;transition:color .25s,border-color .25s,background .25s}.page-step .arrow{transition:transform .25s var(--ease)}a.page-step:hover{color:var(--accent);border-color:var(--accent)}a.page-step:hover .arrow:first-child{transform:translate(-3px)}a.page-step:hover .arrow:last-child{transform:translate(3px)}.page-step.disabled{opacity:.35;cursor:default}.page-nums{display:flex;align-items:center;gap:8px}.page-num{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line-soft);border-radius:50%;color:var(--ink-3);transition:color .25s,border-color .25s,background .25s}a.page-num:hover{color:var(--ink);border-color:var(--ink-4)}.page-num.current{color:#0c1108;background:var(--accent);border-color:var(--accent);font-weight:600}.blog-side{position:sticky;top:104px;display:flex;flex-direction:column;gap:22px}.side-box{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:22px 22px 24px}.side-box .side-title{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.side-box p{color:var(--ink-3);font-size:.92rem}.side-nav{display:flex;flex-direction:column;gap:2px}.side-nav a{color:var(--ink-3);font-size:.92rem;line-height:1.4;padding:7px 10px 7px 14px;border-left:2px solid var(--line-soft);transition:color .2s,border-color .2s,background .2s}.side-nav a:hover{color:var(--ink);border-left-color:var(--ink-4)}.side-nav a.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-glow);border-radius:0 8px 8px 0}.side-nav a.toc-h3{padding-left:30px;font-size:.86rem}.side-tags{display:flex;flex-wrap:wrap;gap:8px}.side-tags span{font-family:var(--font-mono);font-size:.76rem;color:var(--ink-3);border:1px solid var(--line-soft);border-radius:999px;padding:4px 12px}.side-cta{text-align:left}.side-cta .btn{margin-top:14px;width:100%;justify-content:center}.post-hero{margin-bottom:46px;max-width:820px}.post-crumb{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-4);display:inline-flex;gap:8px;align-items:center}.post-crumb a{color:var(--ink-3);transition:color .2s}.post-crumb a:hover{color:var(--accent)}.post-hero h1{font-family:var(--font-display);font-weight:600;font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.08;letter-spacing:-.02em;margin-top:22px;text-wrap:balance}.post-hero .post-lede{color:var(--ink-3);font-size:1.13rem;margin-top:16px;max-width:680px}.post-hero .post-meta{margin-top:22px}.post-byline{display:flex;align-items:center;gap:10px}.post-byline img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}.prose{max-width:720px;font-size:1.04rem;color:var(--ink-2);overflow-wrap:break-word}.prose>*+*{margin-top:1.15em}.prose h2,.prose h3{font-family:var(--font-display);font-weight:600;color:var(--ink);letter-spacing:-.015em;line-height:1.15;scroll-margin-top:110px}.prose h2{font-size:1.65rem;margin-top:2.1em}.prose h3{font-size:1.22rem;margin-top:1.7em}.prose h2+p,.prose h3+p{margin-top:.8em}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--accent);border-bottom:1px solid oklch(.88 .19 128 / .35)}.prose a:hover{border-bottom-color:var(--accent)}.prose ul,.prose ol{padding-left:1.35em}.prose li{margin-top:.5em}.prose li::marker{color:var(--accent)}.prose blockquote{position:relative;background:var(--surface);border:1px solid var(--line-soft);border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:40px 28px 22px;margin:1.8em 0}.prose blockquote:before{content:"❝ Quote";position:absolute;top:14px;left:28px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}.prose blockquote p{font-family:var(--font-display);font-size:1.14rem;line-height:1.45;color:var(--ink)}.prose blockquote p+p{margin-top:.7em}.prose blockquote em{display:block;margin-top:2px;font-family:var(--font-mono);font-style:normal;font-size:.8rem;color:var(--ink-3)}.prose code{font-family:var(--font-mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:6px;padding:.12em .42em;color:var(--ink)}.prose pre{border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:20px 22px;overflow-x:auto;max-width:100%;font-size:.88rem;line-height:1.55}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.prose table{width:100%;border-collapse:collapse;font-size:.92rem;margin:1.6em 0}.prose th,.prose td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line-soft)}.prose th{font-family:var(--font-mono);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.prose td{color:var(--ink-2)}.prose hr{border:0;border-top:1px solid var(--line-soft);margin:2.2em 0}.post-cta{margin-top:64px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);padding:36px;max-width:720px}.post-cta h2{font-family:var(--font-display);font-weight:600;font-size:1.5rem;letter-spacing:-.01em;margin-top:14px}.post-cta p{color:var(--ink-3);margin-top:12px}.post-cta .contact-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:22px}.post-pager{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:26px;max-width:720px}.post-pager a{border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:18px 20px;transition:border-color .25s,background .25s}.post-pager a:hover{border-color:var(--accent);background:var(--surface)}.post-pager .pager-label{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4)}.post-pager .pager-title{display:block;margin-top:8px;font-family:var(--font-display);font-weight:600;font-size:.98rem;line-height:1.3;color:var(--ink-2)}.post-pager a:hover .pager-title{color:var(--ink)}.post-pager .pager-next{text-align:right}@media(max-width:1080px){.blog-main{padding:120px 0 70px}.blog-grid{grid-template-columns:minmax(0,1fr);gap:36px}.blog-side{position:static;order:-1}.blog-side .side-box{display:none}.blog-side .side-box.side-keep{display:block}}@media(max-width:620px){.post-card{padding:24px 22px}.post-cta{padding:28px 24px}.post-pager{grid-template-columns:1fr}.post-pager .pager-next{text-align:left}.prose table{display:block;overflow-x:auto}.pagination{flex-wrap:wrap;justify-content:center;row-gap:12px}}
