/* blog.css: the blog index and articles (BLOG-2026-11, 2.50.0). Scoped to .bl.
 * Editorial and calm: one readable column (about 70 characters a line), clear hierarchy,
 * colour only for meaning (severity) and for links. Covers are inline SVG (no image requests). */
.bl{--bl-ink:var(--ink,#e6edf6);--bl-mut:var(--muted,#8a99b3);--bl-line:var(--line,#1e2940);--bl-card:var(--panel,#111826);--bl-card2:var(--panel-2,#0e1420);
  --bl-acc:#5aa9ff;--bl-acc2:#2f81f7;--bl-r:14px;color:var(--bl-ink)}
.bl *{box-sizing:border-box}
.bl a{text-decoration:none;background-image:none}
.bl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- index ---------- */
.bl-hero{padding:18px 0 26px;border-bottom:1px solid var(--bl-line);margin-bottom:22px}
.bl-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bl-acc);font-weight:700;margin:0 0 8px}
.bl-hero h1{font-size:clamp(1.9rem,1.4rem + 2vw,2.8rem);line-height:1.12;letter-spacing:-.02em;margin:0 0 12px;font-weight:750}
.bl-lead{font-size:1.08rem;line-height:1.65;color:var(--bl-mut);max-width:62ch;margin:0}
.bl-stats{display:flex;flex-wrap:wrap;gap:8px 22px;margin:18px 0 0;padding:0;list-style:none;font-size:.9rem;color:var(--bl-mut)}
.bl-stats b{color:var(--bl-ink);font-variant-numeric:tabular-nums}
.bl-live{display:inline-flex;align-items:center;gap:7px}
.bl-live::before{content:"";width:8px;height:8px;border-radius:50%;background:#3fb950;box-shadow:0 0 0 4px rgba(63,185,80,.16)}

.bl-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:0 0 16px}
.bl-search{display:flex;gap:8px;flex:1 1 320px;max-width:520px}
.bl-search input{flex:1;min-width:0;padding:10px 12px;border-radius:10px;border:1px solid var(--bl-line);background:var(--bl-card2);color:inherit;font-size:.95rem}
.bl-search input:focus{outline:2px solid var(--bl-acc2);outline-offset:1px}
.bl-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 16px;border-radius:10px;border:1px solid var(--bl-line);
  background:var(--bl-card2);color:var(--bl-ink);font-weight:600;font-size:.92rem;cursor:pointer;white-space:nowrap}
.bl-btn:hover{border-color:#3a4a66}
.bl-btn--primary{background:var(--bl-acc2);border-color:var(--bl-acc2);color:#fff}
.bl-btn--primary:hover{background:#1f6feb}
.bl-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px;padding:0;list-style:none}
.bl-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--bl-line);color:var(--bl-mut);font-size:.84rem;font-weight:600;background:transparent}
.bl-chip:hover{color:var(--bl-ink);border-color:#3a4a66}
.bl-chip[aria-current="page"]{color:#fff;background:var(--bl-acc2);border-color:var(--bl-acc2)}
.bl-chip small{opacity:.75;font-weight:500}

.bl-cover{display:block;width:100%;height:100%}
.bl-feature{position:relative;display:grid;gap:0;transition:border-color .18s ease,box-shadow .18s ease;border:1px solid var(--bl-line);border-radius:var(--bl-r);overflow:hidden;background:var(--bl-card);margin:0 0 22px}
@media(min-width:880px){.bl-feature{grid-template-columns:1.1fr 1fr}}
.bl-feature__media{aspect-ratio:2/1;min-height:180px}
@media(min-width:880px){.bl-feature__media{aspect-ratio:auto}}
.bl-feature__body{padding:24px 26px;display:flex;flex-direction:column;gap:10px;justify-content:center}
.bl-feature h2{font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem);line-height:1.25;margin:0;letter-spacing:-.01em}
.bl-feature h2 a{color:var(--bl-ink)}
.bl-feature h2 a::after{content:"";position:absolute;inset:0}
.bl-feature:hover{border-color:#34507a;box-shadow:0 18px 40px -24px rgba(0,0,0,.9)}
.bl-feature:focus-within{outline:2px solid var(--bl-acc2);outline-offset:2px}
.bl-feature h2 a:hover{color:var(--bl-acc)}
.bl-feature p{margin:0;color:var(--bl-mut);line-height:1.6}

.bl-grid{display:grid;gap:18px;grid-template-columns:1fr;margin:0 0 26px;padding:0;list-style:none}
@media(min-width:640px){.bl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1040px){.bl-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.bl-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--bl-line);border-radius:var(--bl-r);overflow:hidden;background:var(--bl-card);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;height:100%}
.bl-card:hover{transform:translateY(-3px);border-color:#34507a;box-shadow:0 14px 30px -18px rgba(0,0,0,.9)}
.bl-card__media{aspect-ratio:2/1}
.bl-card__body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.bl-card h3{font-size:1.04rem;line-height:1.35;margin:0}
.bl-card h3 a{color:var(--bl-ink)}
.bl-card h3 a::after{content:"";position:absolute;inset:0}         /* whole card is the link */
.bl-card h3 a:focus-visible{outline:none}
.bl-card:focus-within{outline:2px solid var(--bl-acc2);outline-offset:2px}
.bl-card p{margin:0;color:var(--bl-mut);font-size:.9rem;line-height:1.55}
.bl-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:.8rem;color:var(--bl-mut);margin-top:auto;padding-top:6px}
.bl-cat{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--bl-acc)}
@media(prefers-reduced-motion:reduce){.bl-card{transition:none}.bl-card:hover{transform:none}}

.bl-pages{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:6px 0 30px}
.bl-pages a,.bl-pages span{min-width:40px;text-align:center}

.bl-band{border:1px solid rgba(90,169,255,.35);border-radius:var(--bl-r);padding:22px 24px;margin:26px 0;background:linear-gradient(135deg,rgba(47,129,247,.10),rgba(47,129,247,.02))}
.bl-band h2{margin:0 0 6px;font-size:1.2rem}
.bl-band p{margin:0 0 12px;color:var(--bl-mut)}
.bl-band form{display:flex;flex-wrap:wrap;gap:8px}
.bl-band input[type=email]{flex:1 1 240px;min-width:0;padding:10px 12px;border-radius:10px;border:1px solid var(--bl-line);background:var(--bl-card2);color:inherit}
.bl-fine{font-size:.82rem;color:var(--bl-mut);margin:10px 0 0!important}
.bl-notice{font-size:.84rem;color:var(--bl-mut);border-left:3px solid var(--bl-line);padding:6px 12px;margin:18px 0}

/* ---------- article ---------- */
.bl-progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:70;pointer-events:none}
.bl-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--bl-acc2,#2f81f7),var(--bl-acc,#5aa9ff));transform-origin:0 50%;transform:scaleX(0)}
.bl-article{margin:0 auto}
.bl-head{max-width:1120px;margin:6px auto 26px}
.bl-head h1,.bl-head .bl-summary{max-width:860px}
.bl-head h1{font-size:clamp(1.7rem,1.25rem + 2vw,2.6rem);line-height:1.18;letter-spacing:-.02em;margin:10px 0 14px;font-weight:750;overflow-wrap:anywhere}
.bl-summary{font-size:1.15rem;line-height:1.6;color:var(--bl-mut);margin:0 0 16px}
.bl-byline{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:.9rem;color:var(--bl-mut);padding:12px 0;border-top:1px solid var(--bl-line);border-bottom:1px solid var(--bl-line)}
.bl-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(160deg,#5aa9ff,#2e6fe0);color:#fff;font-weight:800;font-size:.9rem;flex:0 0 auto}
.bl-byline b{color:var(--bl-ink);font-weight:650}
.bl-hero-cover{border-radius:var(--bl-r);overflow:hidden;aspect-ratio:900/260;margin:20px 0 0;border:1px solid var(--bl-line)}

.bl-layout{display:grid;gap:34px;max-width:1120px;margin:0 auto}
@media(min-width:1060px){.bl-layout{grid-template-columns:minmax(0,1fr) 260px}}
.bl-body{max-width:72ch;font-size:1.06rem;line-height:1.8;color:#d5deea}
.bl-body>*:first-child{margin-top:0}
.bl-body p{margin:0 0 1.15em}
.bl-body h2{font-size:1.45rem;line-height:1.3;margin:1.8em 0 .6em;color:var(--bl-ink);letter-spacing:-.01em;scroll-margin-top:90px}
.bl-body h3{font-size:1.15rem;margin:1.5em 0 .5em;color:var(--bl-ink);scroll-margin-top:90px}
.bl-body a{color:var(--bl-acc);text-decoration:underline;text-decoration-color:rgba(90,169,255,.4);text-underline-offset:3px}
.bl-body ul,.bl-body ol{padding-left:1.2em;margin:0 0 1.2em}
.bl-body li{margin:0 0 .7em;padding-left:.2em}
.bl-list{list-style:none;padding-left:0!important}
.bl-list li{position:relative;padding:14px 16px 14px 18px;border:1px solid var(--bl-line);border-radius:12px;background:var(--bl-card);margin:0 0 12px;line-height:1.7}
.bl-body code,.bl-body pre{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);font-size:.9em}
.bl-body pre{background:#0a0f1a;border:1px solid var(--bl-line);border-radius:10px;padding:14px 16px;overflow:auto;line-height:1.55}
.bl-body blockquote{margin:1.2em 0;padding:4px 16px;border-left:3px solid var(--bl-acc2);color:var(--bl-mut)}
.bl-body img{max-width:100%;height:auto;border-radius:10px}
.bl-body table{width:100%;border-collapse:collapse;font-size:.92rem;margin:0 0 1.2em}
.bl-body th,.bl-body td{border:1px solid var(--bl-line);padding:8px 10px;text-align:left}
.bl-sev{display:inline-block;margin-right:6px;padding:1px 8px;border-radius:6px;font-size:.76rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;vertical-align:2px;border:1px solid}
.bl-sev--critical{color:#fff;background:#d73a49;border-color:#d73a49}
.bl-sev--high{color:#ff8a8a;border-color:rgba(248,81,73,.55)}
.bl-sev--medium{color:#e3b341;border-color:rgba(210,153,34,.55)}
.bl-sev--low,.bl-sev--info{color:var(--bl-mut);border-color:var(--bl-line)}
.bl-body a.bl-cve{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);font-size:.92em;text-decoration:none;border-bottom:1px dashed rgba(90,169,255,.5)}

.bl-aside{display:flex;flex-direction:column;gap:16px}
@media(min-width:1060px){.bl-aside{position:sticky;top:84px;align-self:start;max-height:calc(100vh - 100px);overflow:auto}}
.bl-box{border:1px solid var(--bl-line);border-radius:12px;padding:14px 16px;background:var(--bl-card)}
.bl-box h2{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bl-mut);margin:0 0 10px}
.bl-toc{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:.9rem}
.bl-toc a{color:var(--bl-ink)}
.bl-toc a:hover{color:var(--bl-acc)}
.bl-toc .l3{padding-left:12px;font-size:.86rem}
.bl-share{display:flex;flex-wrap:wrap;gap:8px}
.bl-share a,.bl-share button{font-size:.84rem;min-height:34px;padding:6px 12px}
.bl-box .bl-btn{white-space:normal;text-align:center;width:100%}
.bl-share .bl-btn{width:auto}
.bl-box p{margin:0 0 10px;font-size:.88rem;color:var(--bl-mut);line-height:1.5}

.bl-author{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--bl-line);border-radius:12px;padding:16px;background:var(--bl-card);margin:26px 0;max-width:72ch}
.bl-author .bl-avatar{width:44px;height:44px;font-size:1.05rem}
.bl-author p{margin:2px 0 0;color:var(--bl-mut);font-size:.9rem;line-height:1.55}
.bl-section-h{font-size:1.2rem;margin:30px 0 14px}
.bl-tools-row{display:flex;flex-wrap:wrap;gap:8px}
.bl-back{margin:26px 0 8px}
@media print{.bl-aside,.bl-progress,.bl-band,.bl-share{display:none!important}.bl-body{color:#000}}
