
body.article-page{background:var(--paper);color:var(--ink)}
.article-page .site-header{background:rgba(8,16,21,.94)}
.reading-progress{position:fixed;top:76px;left:0;right:0;height:2px;z-index:59;background:transparent}.reading-progress i{display:block;width:0;height:100%;background:var(--teal-2)}
.article-hero{padding:76px 0 50px;background:#0a1116;color:var(--text);border-bottom:1px solid rgba(255,255,255,.08)}
.article-hero__inner{max-width:980px}.article-series{font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--teal-3)}
.article-meta{font:12px var(--mono);color:var(--muted);margin:14px 0}
.article-hero h1{font-size:clamp(42px,6vw,76px);line-height:1.01;letter-spacing:-.055em;max-width:17ch}
.article-layout{display:grid;grid-template-columns:260px minmax(0,760px) 1fr;gap:40px;align-items:start;padding:58px var(--pad) 100px;max-width:1440px;margin:0 auto}
.article-toc{position:sticky;top:112px;align-self:start;border-top:1px solid #c8d2d3;padding-top:14px}
.article-toc h2{font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:10px}
.article-toc a{display:block;text-decoration:none;color:var(--ink-2);font-size:13px;line-height:1.35;padding:7px 0;border-bottom:1px solid #dbe1e1;transition:padding .2s ease,color .2s ease}
.article-toc a:hover{padding-left:6px;color:var(--teal)}
.blog-content{font-size:17px;line-height:1.78}
.blog-content>p:first-child{font-size:20px;line-height:1.7;color:#33444c}
.blog-content h2{font-size:clamp(30px,4vw,44px);line-height:1.08;letter-spacing:-.04em;margin:58px 0 18px;padding-top:10px;border-top:1px solid #ccd5d6}
.blog-content h3{font-size:24px;line-height:1.18;letter-spacing:-.025em;margin:34px 0 12px}
.blog-content p{margin:0 0 20px}.blog-content ul,.blog-content ol{margin:0 0 24px;padding-left:24px}.blog-content li{margin:7px 0}.blog-content li::marker{color:var(--teal)}
.blog-content a{color:var(--teal);text-underline-offset:3px}
.blog-content code{font:14px/1.5 var(--mono);background:#e4e9e8;padding:2px 5px}
.blog-content pre{background:#091015;color:#d9e5e9;border-left:3px solid var(--teal-2);padding:20px;overflow:auto;margin:22px 0 28px}
.blog-content pre code{background:transparent;color:inherit;padding:0}
.blog-content blockquote{border-left:3px solid var(--teal);background:#e8efee;padding:18px 20px;margin:24px 0}.blog-content blockquote p:last-child{margin-bottom:0}
.blog-content table{width:100%;border-collapse:collapse;margin:24px 0;font-size:14px}.blog-content th,.blog-content td{padding:12px;border:1px solid #cbd5d6;text-align:left;vertical-align:top}.blog-content th{background:#e5ebea}
.blog-content img{width:100%;height:auto;margin:28px 0 8px;border:1px solid #cad4d5;background:#0b1116}
.blog-content img+em,.blog-content .image-caption{display:block;color:var(--ink-2);font-size:13px;margin-bottom:22px}
.status-live{color:#15744a;font-weight:760}
.article-rail{position:sticky;top:112px;align-self:start}
.article-rail__line{border-left:1px solid #c8d2d3;padding-left:18px}
.article-rail strong{display:block;font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:8px}
.article-rail p{font-size:13px;color:var(--ink-2)}
.article-next{background:#0a1116;color:var(--text);padding:54px 0}.article-next__inner{display:flex;justify-content:space-between;gap:30px;align-items:center}.article-next h2{font-size:clamp(30px,4vw,50px);line-height:1.06;letter-spacing:-.04em}
@media(max-width:1180px){.article-layout{grid-template-columns:220px minmax(0,1fr)}.article-rail{display:none}}
@media(max-width:850px){.reading-progress{top:68px}.article-layout{grid-template-columns:1fr;padding-top:36px}.article-toc{position:relative;top:auto}.article-next__inner{display:grid}}
@media(max-width:620px){.article-layout{padding-inline:20px}.blog-content{font-size:16px}.blog-content table{display:block;overflow-x:auto}.article-hero{padding-top:58px}}

.blog-content .alert-box,.blog-content .findings-box{margin:24px 0;padding:20px 22px;border-left:3px solid var(--teal);background:#e7efee}
.blog-content .alert-box{border-left-color:#b97b33;background:#f2ece3}
.blog-content .alert-box h3,.blog-content .findings-box h3{margin-top:0}
.blog-content .ioc-table{display:block;overflow-x:auto}
.blog-content .img-caption{font-size:13px;color:var(--ink-2);margin-top:-2px;margin-bottom:24px}
@media(max-width:620px){
  .article-hero h1{font-size:clamp(40px,12vw,56px);max-width:none}.article-layout{padding:28px 20px 70px;gap:28px}.article-toc{max-height:280px;overflow:auto}.blog-content h2{font-size:clamp(29px,9vw,38px);margin-top:44px}.blog-content h3{font-size:22px}.blog-content pre{margin-inline:0;padding:16px;font-size:13px}.article-next__inner{gap:18px}.article-next .btn{width:100%}
}
.article-layout--single{display:block;max-width:900px;margin:0 auto;padding-inline:var(--pad)}.article-layout--single .blog-content{max-width:780px;margin:0 auto}.article-lead{font-size:1.22rem!important;line-height:1.7;color:var(--ink)!important}
@media(max-width:620px){
  .blog-content,.blog-content>*{min-width:0}
  .blog-content pre,.blog-content table,.blog-content .ioc-table{max-width:100%}
  .blog-content code{overflow-wrap:normal;word-break:normal}
  .article-toc a{overflow-wrap:anywhere}
}

/* v6 mobile article hardening */
.article-table-scroll{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:24px 0;border:1px solid #cbd5d6;background:#f7faf9;scrollbar-width:thin}
.article-table-scroll table{width:max-content;min-width:100%;margin:0;border:0;border-collapse:collapse}
.article-table-scroll th,.article-table-scroll td{white-space:nowrap;min-width:120px}
.article-table-scroll th:first-child,.article-table-scroll td:first-child{min-width:150px}
.blog-content pre{width:100%;max-width:100%;white-space:pre;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.blog-content pre code{white-space:pre;overflow-wrap:normal;word-break:normal}
.article-mobile-actions{display:none}
@media(max-width:620px){
  .article-layout{padding:28px var(--pad) 96px;gap:28px}
  .article-hero .wrap{padding-inline:var(--pad)}
  .blog-content pre{padding:16px 17px;border-left-width:2px;border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.6}
  .blog-content p code,.blog-content li code,.blog-content dd code{overflow-wrap:anywhere;word-break:break-word}
  .article-table-scroll{margin:20px 0;border-radius:8px}
  .article-table-scroll table{font-size:12.5px}
  .article-table-scroll th,.article-table-scroll td{padding:10px 12px;min-width:130px}
  .article-table-scroll th:first-child,.article-table-scroll td:first-child{min-width:160px}
  .article-mobile-actions{position:fixed;left:var(--pad);right:var(--pad);bottom:calc(14px + env(safe-area-inset-bottom));z-index:950;display:flex;justify-content:space-between;align-items:center;pointer-events:none}
  .article-mobile-actions a,.article-mobile-actions button{pointer-events:auto;appearance:none;border:1px solid rgba(146,202,212,.28);background:rgba(8,16,21,.93);backdrop-filter:blur(14px);color:var(--text);text-decoration:none;min-height:42px;padding:10px 14px;border-radius:999px;font:11px var(--mono);letter-spacing:.06em;box-shadow:0 10px 30px rgba(0,0,0,.22)}
  .article-mobile-actions button{cursor:pointer;opacity:0;transform:translateY(8px);visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility .2s}
  .article-mobile-actions button.visible{opacity:1;transform:none;visibility:visible}
  .article-next{padding-bottom:94px}
}
.article-table-scroll .ioc-table{display:table;overflow:visible}
