/* =============================================================
   VAYUNEX BLOG — extends main.css tokens. All classes .vxb-*
   Depth = borders + tonal shifts. One accent family (violet).
   ============================================================= */

/* ---------- hero ---------- */
.vxb-hero{position:relative;padding:clamp(64px,9vh,110px) 0 clamp(34px,5vh,52px);}
.vxb-hero .vxn-lead{margin-top:16px;}
.vxb-hero-meta{margin-top:22px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  font-family:var(--vxn-font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--vxn-faint);}
.vxb-hero-meta b{color:var(--vxn-cyan);font-weight:500;}
.vxb-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:24px 28px;flex-wrap:wrap;}
.vxb-write-btn{flex:none;margin-top:10px;padding:12px 20px;font-size:.9rem;}
.vxb-card-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.vxb-published{display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border-radius:999px;
  font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--vxn-green);background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.35);}

/* ---------- category filter ---------- */
.vxb-filter{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px;}
.vxb-pill{display:inline-flex;align-items:center;padding:8px 16px;border-radius:999px;
  font-family:var(--vxn-font-mono);font-size:11.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;
  color:var(--vxn-muted);background:rgba(var(--w),.03);border:1px solid var(--vxn-line);
  transition:color .2s,border-color .2s,background .2s,transform .2s var(--vxn-ease);}
.vxb-pill:hover{color:var(--vxn-ink);border-color:var(--vxn-cyan);transform:translateY(-1px);}
.vxb-pill.is-on{background:var(--vxn-grad-cta);border-color:transparent;color:var(--vxn-cta-ink);box-shadow:var(--vxn-glow-cta);}
.vxb-pill:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}

/* ---------- featured post ---------- */
.vxb-feat{position:relative;display:grid;grid-template-columns:1.08fr 1fr;overflow:hidden;
  background:var(--vxn-panel);border:1px solid var(--vxn-line-2);border-radius:calc(var(--vxn-r) + 6px);
  box-shadow:var(--vxn-shadow);}
.vxb-feat::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--vxn-grad-cta);z-index:2;}
.vxb-feat-media{position:relative;min-height:320px;overflow:hidden;}
.vxb-feat-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--vxn-ease);}
.vxb-feat:hover .vxb-feat-media img{transform:scale(1.035);}
.vxb-feat-body{padding:clamp(26px,4vw,46px);display:flex;flex-direction:column;align-items:flex-start;gap:16px;}
.vxb-feat-tags{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.vxb-latest{display:inline-flex;align-items:center;gap:8px;font-family:var(--vxn-font-mono);font-size:11px;
  font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--vxn-cyan);}
.vxb-latest::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--vxn-cyan);box-shadow:0 0 9px var(--vxn-cyan);}
.vxb-feat-title{font-family:var(--vxn-font-display);font-weight:700;letter-spacing:-.02em;line-height:1.12;
  font-size:clamp(1.55rem,2.9vw,2.25rem);color:var(--vxn-ink);margin:0;}
.vxb-feat-title a{transition:color .2s;}
.vxb-feat-title a:hover{color:var(--vxn-violet);}
.vxb-feat-x{color:var(--vxn-muted);margin:0;max-width:52ch;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.vxb-feat-cta{margin-top:auto;display:inline-flex;align-items:center;gap:9px;padding-top:8px;
  font-family:var(--vxn-font-display);font-weight:600;font-size:.95rem;color:var(--vxn-ink);}
.vxb-feat-cta svg{transition:transform .25s var(--vxn-ease);}
.vxb-feat:hover .vxb-feat-cta svg{transform:translateX(4px);}
.vxb-feat:hover .vxb-feat-cta{color:var(--vxn-violet);}

/* mono ledger meta (signature) */
.vxb-ledger{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-family:var(--vxn-font-mono);font-size:12px;letter-spacing:.06em;color:var(--vxn-muted);font-variant-numeric:tabular-nums;}
.vxb-ledger .sep{opacity:.55;}
.vxb-ava{width:30px;height:30px;border-radius:50%;background:var(--vxn-grad-cta);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--vxn-font-display);font-weight:700;font-size:.8rem;flex:none;}
.vxb-byline{display:flex;align-items:center;gap:10px;}
.vxb-byline .who{font-family:var(--vxn-font-body);font-weight:600;font-size:.9rem;color:var(--vxn-ink-2);letter-spacing:0;}

/* ---------- cover placeholder (no image) ---------- */
.vxb-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  background:
    radial-gradient(120% 90% at 82% -10%,rgba(124,58,237,.30),transparent 58%),
    radial-gradient(110% 90% at 8% 110%,rgba(192,132,252,.22),transparent 55%),
    var(--vxn-panel-2);}
.vxb-ph svg{width:52px;height:52px;opacity:.85;}
.vxb-ph span{font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--vxn-muted);}
.vxb-ph::after{content:"";position:absolute;inset:0;opacity:.4;
  background-image:linear-gradient(rgba(var(--ln),.07) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(var(--ln),.07) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(circle at 50% 45%,#000 20%,transparent 80%);
          mask-image:radial-gradient(circle at 50% 45%,#000 20%,transparent 80%);}
.vxb-ph > *{position:relative;z-index:1;}

/* ---------- card grid ---------- */
.vxb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:26px;}
.vxb-card{position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:var(--vxn-panel);border:1px solid var(--vxn-line);border-radius:var(--vxn-r);
  transition:transform .3s var(--vxn-ease),border-color .3s,box-shadow .3s;}
.vxb-card:hover{transform:translateY(-5px);border-color:var(--vxn-line-2);box-shadow:var(--vxn-shadow);}
.vxb-card:focus-within{border-color:var(--vxn-cyan);}
.vxb-card-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--vxn-panel-2);}
.vxb-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--vxn-ease);}
.vxb-card:hover .vxb-card-media img{transform:scale(1.05);}
.vxb-card-body{display:flex;flex-direction:column;gap:11px;padding:20px 22px 22px;flex:1;}
.vxb-cat{display:inline-flex;align-self:flex-start;font-family:var(--vxn-font-mono);font-size:10.5px;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:var(--vxn-violet);
  padding:5px 11px;border-radius:999px;background:rgba(var(--ln),.10);border:1px solid rgba(var(--ln),.18);}
.vxb-card-title{font-family:var(--vxn-font-display);font-weight:600;letter-spacing:-.014em;line-height:1.26;
  font-size:1.13rem;color:var(--vxn-ink);margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.vxb-card:hover .vxb-card-title{color:var(--vxn-violet);}
.vxb-card-x{color:var(--vxn-muted);font-size:.93rem;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.vxb-card-body .vxb-ledger{margin-top:auto;padding-top:10px;}
.vxb-card a.vxb-cover-link::after{content:"";position:absolute;inset:0;z-index:1;}
.vxb-card .vxb-cat,.vxb-card .vxb-ledger{position:relative;z-index:2;}
.vxb-cover-link:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;border-radius:6px;}
a.vxb-feat:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:4px;}

/* ---------- empty state ---------- */
.vxb-empty{margin-top:30px;padding:clamp(44px,8vw,84px) 28px;text-align:center;
  border:1px dashed var(--vxn-line-2);border-radius:calc(var(--vxn-r) + 6px);background:rgba(var(--ln),.04);}
.vxb-empty svg{width:56px;height:56px;margin:0 auto 18px;display:block;}
.vxb-empty h2{font-family:var(--vxn-font-display);font-weight:700;letter-spacing:-.018em;
  font-size:clamp(1.35rem,2.6vw,1.8rem);color:var(--vxn-ink);margin:0 0 10px;}
.vxb-empty p{color:var(--vxn-muted);max-width:46ch;margin:0 auto 24px;}
.vxb-empty-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* ---------- pagination ---------- */
.vxb-pager{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:44px;}
.vxb-pager .num{font-family:var(--vxn-font-mono);font-size:12.5px;letter-spacing:.14em;color:var(--vxn-muted);font-variant-numeric:tabular-nums;}
.vxb-pager a,.vxb-pager span.off{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:12px;
  font-family:var(--vxn-font-display);font-weight:600;font-size:.9rem;border:1px solid var(--vxn-line);color:var(--vxn-ink);
  transition:border-color .2s,transform .2s var(--vxn-ease),background .2s;}
.vxb-pager a:hover{border-color:var(--vxn-cyan);transform:translateY(-1px);background:rgba(var(--w),.05);}
.vxb-pager span.off{opacity:.35;pointer-events:none;}
.vxb-pager a:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}

/* =============================================================
   DETAIL PAGE
   ============================================================= */
.vxb-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:140;pointer-events:none;background:transparent;}
.vxb-progress i{display:block;height:100%;width:0;background:var(--vxn-grad-cta);transition:width .08s linear;}

.vxb-crumb{display:flex;align-items:center;gap:9px;font-family:var(--vxn-font-mono);font-size:11.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--vxn-muted);}
.vxb-crumb a{color:var(--vxn-muted);transition:color .2s;}
.vxb-crumb a:hover{color:var(--vxn-cyan);}
.vxb-crumb .sep{opacity:.5;}

.vxb-art-head{margin:0 auto;padding-top:clamp(48px,7vh,84px);display:flex;flex-direction:column;gap:18px;}
.vxb-art-title{font-family:var(--vxn-font-display);font-weight:800;letter-spacing:-.025em;line-height:1.06;
  font-size:clamp(2.05rem,4.8vw,3.3rem);color:var(--vxn-ink);margin:0;}
.vxb-art-dek{font-size:clamp(1.02rem,1.5vw,1.16rem);color:var(--vxn-muted);line-height:1.65;margin:0;max-width:62ch;}
.vxb-art-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:4px 0 0;}

.vxb-draft{display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border-radius:999px;
  font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--vxn-amber);background:rgba(245,158,11,.10);border:1px solid rgba(245,158,11,.35);}
.vxb-edit-link{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:10px;
  font-family:var(--vxn-font-display);font-weight:600;font-size:.82rem;color:var(--vxn-ink);
  border:1px solid var(--vxn-line);background:rgba(var(--w),.03);transition:border-color .2s;}
.vxb-edit-link:hover{border-color:var(--vxn-cyan);}
.vxb-edit-link svg{width:14px;height:14px;}

.vxb-cover{max-width:980px;margin:clamp(28px,4vh,44px) auto 0;}
.vxb-cover img{width:100%;max-height:560px;object-fit:cover;border-radius:calc(var(--vxn-r) + 4px);
  border:1px solid var(--vxn-glass-brd);box-shadow:var(--vxn-shadow);}

/* ---------- article prose (renders arbitrary HTML safely & beautifully) ---------- */
.vxb-article{max-width:720px;margin:0 auto;
  font-size:1.07rem;line-height:1.85;color:var(--vxn-ink-2);overflow-wrap:break-word;}
.vxb-article > :first-child{margin-top:0;}
.vxb-article p{margin:0 0 1.45em;}
.vxb-article a{color:var(--vxn-blue);text-decoration:underline;text-decoration-color:rgba(var(--ln),.45);
  text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color .2s,text-decoration-color .2s;}
.vxb-article a:hover{color:var(--vxn-violet);text-decoration-color:currentColor;}
:root[data-theme="dark"] .vxb-article a{color:var(--vxn-cyan);}
:root[data-theme="dark"] .vxb-article a:hover{color:#d8b4fe;}
.vxb-article strong,.vxb-article b{color:var(--vxn-ink);font-weight:700;}
.vxb-article h2,.vxb-article h3,.vxb-article h4{font-family:var(--vxn-font-display);color:var(--vxn-ink);
  letter-spacing:-.018em;scroll-margin-top:110px;}
.vxb-article h2{font-size:clamp(1.42rem,2.4vw,1.72rem);font-weight:700;line-height:1.2;margin:2.1em 0 .65em;}
.vxb-article h3{font-size:1.24rem;font-weight:600;line-height:1.3;margin:1.9em 0 .55em;}
.vxb-article h4{font-size:1.05rem;font-weight:600;margin:1.7em 0 .5em;}
.vxb-article ul,.vxb-article ol{margin:0 0 1.5em;padding-left:1.45em;}
.vxb-article li{margin:.45em 0;}
.vxb-article ul li::marker{color:var(--vxn-cyan);}
.vxb-article ol li::marker{color:var(--vxn-violet);font-family:var(--vxn-font-mono);font-size:.9em;}
.vxb-article blockquote{margin:1.9em 0;padding:18px 24px;border-left:3px solid var(--vxn-violet);
  background:rgba(var(--ln),.07);border-radius:0 14px 14px 0;color:var(--vxn-ink);font-weight:500;}
.vxb-article blockquote p:last-child{margin-bottom:0;}
.vxb-article code{font-family:var(--vxn-font-mono);font-size:.88em;color:var(--vxn-ink);
  background:rgba(var(--ln),.11);border:1px solid rgba(var(--ln),.14);border-radius:6px;padding:2px 7px;}
.vxb-article pre{margin:1.9em 0;padding:20px 22px;overflow-x:auto;background:var(--vxn-panel-2);
  border:1px solid var(--vxn-line);border-radius:14px;line-height:1.6;}
.vxb-article pre code{background:none;border:0;padding:0;font-size:.9rem;color:var(--vxn-ink-2);}
.vxb-article img{border-radius:16px;border:1px solid var(--vxn-line);margin:1.9em auto;}
.vxb-article figure{margin:1.9em auto;}
.vxb-article figure img{margin:0 auto;}
.vxb-article figcaption{margin-top:10px;text-align:center;font-family:var(--vxn-font-mono);
  font-size:12px;letter-spacing:.05em;color:var(--vxn-faint);}
.vxb-article hr{height:1px;border:0;margin:2.6em auto;
  background:linear-gradient(90deg,transparent,var(--vxn-line-2),transparent);}
.vxb-article table{width:100%;margin:1.9em 0;border-collapse:collapse;display:block;overflow-x:auto;font-size:.95rem;}
.vxb-article th,.vxb-article td{padding:11px 15px;border:1px solid var(--vxn-line);text-align:left;}
.vxb-article th{font-family:var(--vxn-font-display);font-weight:600;color:var(--vxn-ink);background:rgba(var(--ln),.08);}
.vxb-article iframe{width:100%;aspect-ratio:16/9;height:auto;border:0;border-radius:14px;margin:1.9em 0;}
.vxb-article video{max-width:100%;border-radius:14px;margin:1.9em 0;}

/* ---------- share + footer of article ---------- */
.vxb-art-foot{max-width:720px;margin:clamp(38px,6vh,58px) auto 0;display:flex;align-items:center;
  justify-content:space-between;gap:18px;flex-wrap:wrap;padding-top:22px;border-top:1px solid var(--vxn-line);}
.vxb-share{display:flex;align-items:center;gap:10px;}
.vxb-share .lbl{font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--vxn-faint);margin-right:4px;}
.vxb-share a,.vxb-share button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:50%;border:1px solid var(--vxn-line);background:rgba(var(--w),.03);color:var(--vxn-ink-2);
  transition:border-color .2s,color .2s,transform .2s var(--vxn-ease);}
.vxb-share a:hover,.vxb-share button:hover{border-color:var(--vxn-cyan);color:var(--vxn-ink);transform:translateY(-2px);}
.vxb-share a:focus-visible,.vxb-share button:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}
.vxb-share svg{width:16px;height:16px;}
.vxb-copied{font-family:var(--vxn-font-mono);font-size:11.5px;letter-spacing:.1em;color:var(--vxn-green);}

/* ---------- prev / next ---------- */
.vxb-pn{max-width:980px;margin:clamp(40px,6vh,60px) auto 0;display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.vxb-pn a{display:flex;flex-direction:column;gap:9px;padding:22px 24px;border:1px solid var(--vxn-line);
  border-radius:var(--vxn-r);background:var(--vxn-panel);transition:border-color .25s,transform .25s var(--vxn-ease),box-shadow .25s;}
.vxb-pn a:hover{border-color:var(--vxn-line-2);transform:translateY(-3px);box-shadow:var(--vxn-shadow);}
.vxb-pn a:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}
.vxb-pn .dir{font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--vxn-muted);}
.vxb-pn .ttl{font-family:var(--vxn-font-display);font-weight:600;font-size:1.02rem;line-height:1.3;color:var(--vxn-ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.vxb-pn a:hover .ttl{color:var(--vxn-violet);}
.vxb-pn a.next{text-align:right;align-items:flex-end;}

/* ---------- CTA band ---------- */
.vxb-cta{position:relative;overflow:hidden;max-width:980px;margin:clamp(56px,8vh,88px) auto 0;
  padding:clamp(34px,5vw,54px);text-align:center;border-radius:calc(var(--vxn-r) + 6px);
  background:var(--vxn-glass-2);border:1px solid var(--vxn-glass-brd);box-shadow:var(--vxn-shadow);}
.vxb-cta::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--vxn-grad-cta);}
.vxb-cta h2{font-family:var(--vxn-font-display);font-weight:700;letter-spacing:-.02em;
  font-size:clamp(1.5rem,3vw,2.1rem);color:var(--vxn-ink);margin:0 0 10px;}
.vxb-cta p{color:var(--vxn-muted);max-width:52ch;margin:0 auto 24px;}

/* =============================================================
   DETAIL UPGRADE — index line, TOC rail, numbered sections
   ============================================================= */
.vxb-index{display:flex;align-items:center;justify-content:space-between;gap:12px 18px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--vxn-line);}

/* layout: article + sticky rail */
.vxb-layout{display:grid;grid-template-columns:minmax(0,720px) 250px;gap:56px;justify-content:center;
  margin:clamp(34px,5vh,54px) auto 0;}
.vxb-rail-in{position:sticky;top:104px;display:flex;flex-direction:column;gap:20px;
  max-height:calc(100vh - 130px);overflow:auto;padding:4px 2px;scrollbar-width:thin;}
.vxb-rail-lab{font-family:var(--vxn-font-mono);font-size:10.5px;font-weight:500;letter-spacing:.2em;
  text-transform:uppercase;color:var(--vxn-muted);}
.vxb-toc ol{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:2px;}
.vxb-toc ol:empty{display:none;}
.vxb-toc:has(ol:empty){display:none;}
.vxb-toc-a{display:flex;gap:10px;padding:7px 2px 7px 13px;border-left:2px solid var(--vxn-line);
  font-size:.855rem;line-height:1.45;color:var(--vxn-muted);transition:color .2s,border-color .2s;}
.vxb-toc-a .n{font-family:var(--vxn-font-mono);font-size:.7rem;color:var(--vxn-faint);padding-top:3px;
  flex:none;font-variant-numeric:tabular-nums;}
.vxb-toc-a:hover{color:var(--vxn-ink);}
.vxb-toc-a.is-on{color:var(--vxn-ink);border-left-color:var(--vxn-violet);}
.vxb-toc-a.is-on .n{color:var(--vxn-violet);}
.vxb-toc-a:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:2px;}
.vxb-rail-share{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:18px;border-top:1px solid var(--vxn-line);}
.vxb-rail-share a,.vxb-rail-share button{display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;border:1px solid var(--vxn-line);background:rgba(var(--w),.03);
  color:var(--vxn-ink-2);transition:border-color .2s,color .2s,transform .2s var(--vxn-ease);}
.vxb-rail-share a:hover,.vxb-rail-share button:hover{border-color:var(--vxn-cyan);color:var(--vxn-ink);transform:translateY(-2px);}
.vxb-rail-share a:focus-visible,.vxb-rail-share button:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}
.vxb-rail-share svg{width:14px;height:14px;}
.vxb-backtop{font-family:var(--vxn-font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--vxn-muted);transition:color .2s;}
.vxb-backtop:hover{color:var(--vxn-cyan);}
.vxb-backtop:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:3px;}

/* numbered sections — mono index stamped on every h2, matches the TOC */
.vxb-article{counter-reset:vxbsec;}
.vxb-article h2::before{counter-increment:vxbsec;content:counter(vxbsec,decimal-leading-zero);
  display:block;font-family:var(--vxn-font-mono);font-weight:500;font-size:11px;letter-spacing:.24em;
  color:var(--vxn-violet);margin-bottom:10px;}

/* opening paragraph treatment */
.vxb-article > p:first-child{font-size:1.16em;line-height:1.72;color:var(--vxn-ink);}

/* author card */
.vxb-author{max-width:720px;margin:26px auto 0;display:flex;gap:16px;align-items:flex-start;
  padding:22px 24px;background:var(--vxn-panel);border:1px solid var(--vxn-line);border-radius:var(--vxn-r);}
.vxb-ava--lg{width:46px;height:46px;font-size:1.05rem;}
.vxb-author .who-b{display:block;font-family:var(--vxn-font-display);font-weight:600;font-size:.97rem;color:var(--vxn-ink);}
.vxb-author p{margin:5px 0 9px;font-size:.9rem;color:var(--vxn-muted);line-height:1.6;}
.vxb-author .more{display:inline-flex;align-items:center;gap:6px;font-family:var(--vxn-font-display);
  font-weight:600;font-size:.88rem;color:var(--vxn-violet);transition:color .2s;}
.vxb-author .more:hover{color:var(--vxn-blue);}
.vxb-author .more svg{transition:transform .25s var(--vxn-ease);}
.vxb-author .more:hover svg{transform:translateX(3px);}

/* mobile "on this page" index */
.vxb-toc-m{display:none;max-width:720px;margin:clamp(26px,4vh,40px) auto 0;
  border:1px solid var(--vxn-line);border-radius:14px;background:var(--vxn-panel);overflow:hidden;}
.vxb-toc-m summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;
  padding:14px 18px;font-family:var(--vxn-font-mono);font-size:11px;font-weight:500;letter-spacing:.2em;
  text-transform:uppercase;color:var(--vxn-muted);list-style:none;}
.vxb-toc-m summary::-webkit-details-marker{display:none;}
.vxb-toc-m summary svg{flex:none;transition:transform .25s var(--vxn-ease);color:var(--vxn-violet);}
.vxb-toc-m[open] summary svg{transform:rotate(180deg);}
.vxb-toc-m summary:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:-2px;}
.vxb-toc-m ol{list-style:none;margin:0;padding:2px 18px 16px;display:flex;flex-direction:column;gap:2px;}

/* single content axis — every block aligns to the article grid (720 + 56 + 250 = 1026) */
.vxb-measure{max-width:1026px;padding-right:306px;}
.vxb-wide{max-width:1026px;}

@media (max-width:1099px){
  .vxb-rail{display:none;}
  .vxb-layout{grid-template-columns:minmax(0,720px);gap:0;}
  .vxb-toc-m.has-toc{display:block;}
  .vxb-measure{max-width:720px;padding-right:0;}
}

/* =============================================================
   LOGIN (branded staff sign-in)
   ============================================================= */
.vxb-login{padding:clamp(64px,11vh,130px) 0 100px;}
.vxb-login-card{max-width:440px;margin:0 auto;}
.vxb-login-card .vxb-back{display:inline-flex;margin-bottom:18px;}
.vxb-login-card .vxb-panel{padding:30px 28px;}
.vxb-login-card h1{font-family:var(--vxn-font-display);font-weight:700;letter-spacing:-.02em;
  font-size:1.62rem;color:var(--vxn-ink);margin:12px 0 6px;}
.vxb-login-card .sub{color:var(--vxn-muted);font-size:.93rem;line-height:1.6;margin:0 0 22px;}
.vxb-login-card .vxn-btn{width:100%;margin-top:4px;}
.vxb-login-card .foot{margin:18px 0 0;font-size:.8rem;color:var(--vxn-muted);line-height:1.55;}

/* =============================================================
   COMPOSER (write page)
   ============================================================= */
.vxb-ed{max-width:1120px;margin:0 auto;padding:clamp(44px,6vh,70px) 0 90px;}
.vxb-ed-top{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:30px;}
.vxb-ed-top h1{font-family:var(--vxn-font-display);font-weight:800;letter-spacing:-.02em;
  font-size:clamp(1.7rem,3.4vw,2.4rem);color:var(--vxn-ink);margin:6px 0 0;}
.vxb-ed-top .sub{color:var(--vxn-muted);font-size:.95rem;margin-top:6px;}
.vxb-back{display:inline-flex;align-items:center;gap:8px;font-family:var(--vxn-font-mono);font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--vxn-muted);transition:color .2s;}
.vxb-back:hover{color:var(--vxn-cyan);}

.vxb-alert{display:flex;gap:12px;align-items:flex-start;margin-bottom:22px;padding:15px 18px;border-radius:14px;
  border:1px solid rgba(244,63,94,.4);border-left-width:3px;background:rgba(244,63,94,.08);color:var(--vxn-ink);}
.vxb-alert svg{width:18px;height:18px;flex:none;margin-top:2px;color:var(--vxn-red);}

.vxb-ed-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:26px;align-items:start;}
.vxb-panel{background:var(--vxn-panel);border:1px solid var(--vxn-line);border-radius:var(--vxn-r);padding:22px;}
.vxb-panel + .vxb-panel{margin-top:20px;}
.vxb-panel h3{font-family:var(--vxn-font-display);font-weight:600;font-size:.98rem;color:var(--vxn-ink);margin:0 0 14px;}

.vxb-lab{display:block;font-family:var(--vxn-font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--vxn-faint);margin:0 0 8px;}
.vxb-in,.vxb-ta,.vxb-sel{width:100%;padding:12px 15px;border-radius:12px;border:1px solid var(--vxn-line);
  background:rgba(var(--w),.03);color:var(--vxn-ink);font-family:var(--vxn-font-body);font-size:.96rem;
  transition:border-color .2s,box-shadow .2s;}
.vxb-in:focus,.vxb-ta:focus,.vxb-sel:focus{outline:none;border-color:var(--vxn-cyan);box-shadow:0 0 0 3px rgba(192,132,252,.18);}
.vxb-in::placeholder,.vxb-ta::placeholder{color:var(--vxn-faint);}
.vxb-field{margin-bottom:18px;}
.vxb-field:last-child{margin-bottom:0;}
.vxb-hint{font-size:.8rem;color:var(--vxn-faint);margin-top:7px;line-height:1.5;}

.vxb-title-in{width:100%;border:0;border-bottom:1px solid var(--vxn-line);background:transparent;padding:6px 0 14px;
  font-family:var(--vxn-font-display);font-weight:700;font-size:clamp(1.35rem,2.6vw,1.8rem);letter-spacing:-.02em;
  color:var(--vxn-ink);transition:border-color .2s;}
.vxb-title-in:focus{outline:none;border-color:var(--vxn-cyan);}
.vxb-title-in::placeholder{color:var(--vxn-faint);font-weight:600;}

/* tabs */
.vxb-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:rgba(var(--ln),.08);border:1px solid var(--vxn-line);}
.vxb-tab{padding:8px 16px;border:0;border-radius:9px;background:transparent;color:var(--vxn-muted);
  font-family:var(--vxn-font-mono);font-size:11.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;
  transition:background .2s,color .2s;}
.vxb-tab.is-on{background:var(--vxn-panel);color:var(--vxn-ink);box-shadow:0 4px 14px -6px rgba(76,29,149,.35);}
.vxb-tab:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:2px;}

.vxb-code{width:100%;min-height:480px;resize:vertical;padding:18px 20px;border-radius:14px;
  border:1px solid var(--vxn-line);background:var(--vxn-panel-2);color:var(--vxn-ink);
  font-family:var(--vxn-font-mono);font-size:.88rem;line-height:1.7;tab-size:2;white-space:pre-wrap;}
.vxb-code:focus{outline:none;border-color:var(--vxn-cyan);box-shadow:0 0 0 3px rgba(192,132,252,.18);}
.vxb-preview{min-height:480px;padding:26px clamp(18px,3vw,34px);border:1px solid var(--vxn-line);
  border-radius:14px;background:var(--vxn-void);overflow:auto;}
.vxb-preview .vxb-article{margin-top:0;}
.vxb-preview-empty{color:var(--vxn-faint);font-family:var(--vxn-font-mono);font-size:12.5px;letter-spacing:.08em;
  text-align:center;padding:80px 20px;}

/* snippet chips */
.vxb-snips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.vxb-snips .lbl{font-family:var(--vxn-font-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--vxn-faint);margin-right:2px;}
.vxb-snip{padding:6px 12px;border-radius:9px;border:1px solid var(--vxn-line);background:rgba(var(--w),.03);
  color:var(--vxn-ink-2);font-family:var(--vxn-font-mono);font-size:11.5px;letter-spacing:.06em;
  transition:border-color .2s,color .2s,transform .2s var(--vxn-ease);}
.vxb-snip:hover{border-color:var(--vxn-cyan);color:var(--vxn-ink);transform:translateY(-1px);}
.vxb-snip:focus-visible{outline:2px solid var(--vxn-cyan);outline-offset:2px;}
.vxb-ed-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:14px 0;}
.vxb-count{font-family:var(--vxn-font-mono);font-size:11.5px;letter-spacing:.1em;color:var(--vxn-muted);font-variant-numeric:tabular-nums;}

/* switch */
.vxb-switch{display:flex;align-items:flex-start;gap:13px;cursor:pointer;}
.vxb-switch input{position:absolute;opacity:0;width:1px;height:1px;}
.vxb-track{flex:none;width:46px;height:26px;border-radius:999px;background:rgba(var(--ln),.22);
  border:1px solid var(--vxn-line-2);position:relative;transition:background .25s,border-color .25s;margin-top:2px;}
.vxb-track::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .25s var(--vxn-ease);}
.vxb-switch input:checked + .vxb-track{background:var(--vxn-grad-cta);border-color:transparent;}
.vxb-switch input:checked + .vxb-track::after{transform:translateX(20px);}
.vxb-switch input:focus-visible + .vxb-track{outline:2px solid var(--vxn-cyan);outline-offset:3px;}
.vxb-switch .tx b{display:block;font-family:var(--vxn-font-display);font-weight:600;font-size:.93rem;color:var(--vxn-ink);}
.vxb-switch .tx span{font-size:.8rem;color:var(--vxn-faint);line-height:1.5;}

/* file drop */
.vxb-file{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:22px 16px;border:1.5px dashed var(--vxn-line-2);border-radius:14px;background:rgba(var(--ln),.04);
  color:var(--vxn-muted);text-align:center;cursor:pointer;transition:border-color .2s,background .2s;}
.vxb-file:hover{border-color:var(--vxn-cyan);background:rgba(var(--ln),.07);}
.vxb-file input{position:absolute;inset:0;opacity:0;cursor:pointer;}
.vxb-file input:focus-visible ~ .bx{outline:2px solid var(--vxn-cyan);outline-offset:4px;border-radius:8px;}
.vxb-file svg{width:22px;height:22px;color:var(--vxn-violet);}
.vxb-file .fn{font-family:var(--vxn-font-mono);font-size:11.5px;letter-spacing:.06em;color:var(--vxn-ink-2);word-break:break-all;}
.vxb-file .fs{font-size:.8rem;}

.vxb-publish-btn{width:100%;}
.vxb-admin-note{display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:13px 15px;border-radius:12px;
  background:rgba(var(--ln),.06);border:1px solid var(--vxn-line);font-size:.82rem;color:var(--vxn-muted);line-height:1.55;}
.vxb-admin-note svg{width:15px;height:15px;flex:none;margin-top:2px;color:var(--vxn-cyan);}
.vxb-admin-note[hidden]{display:none;}
.vxb-admin-note a{color:var(--vxn-violet);font-weight:600;}
.vxb-admin-note a:hover{text-decoration:underline;}

/* =============================================================
   RESPONSIVE
   ============================================================= */
@media (max-width:1020px){
  .vxb-grid{grid-template-columns:repeat(2,1fr);}
  .vxb-ed-grid{grid-template-columns:1fr;}
}
@media (max-width:860px){
  .vxb-feat{grid-template-columns:1fr;}
  .vxb-feat-media{min-height:230px;aspect-ratio:16/9;}
}
@media (max-width:640px){
  .vxb-grid{grid-template-columns:1fr;gap:18px;}
  .vxb-pn{grid-template-columns:1fr;}
  .vxb-pn a.next{text-align:left;align-items:flex-start;}
  .vxb-art-meta{flex-direction:column;align-items:flex-start;}
  .vxb-article{font-size:1.02rem;}
}

/* buttons pasted inside post HTML keep their real button styling */
.vxb-article a.vxn-btn{text-decoration:none;}
.vxb-article a.vxn-btn--primary,
:root[data-theme="dark"] .vxb-article a.vxn-btn--primary{color:var(--vxn-cta-ink);}
.vxb-article a.vxn-btn--ghost,
:root[data-theme="dark"] .vxb-article a.vxn-btn--ghost{color:var(--vxn-ink);}

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  .vxb-card,.vxb-card-media img,.vxb-feat-media img,.vxb-pill,.vxb-pn a,.vxb-share a,.vxb-share button,
  .vxb-feat-cta svg,.vxb-snip,.vxb-track::after,.vxb-progress i{transition:none !important;}
  .vxb-card:hover,.vxb-pn a:hover{transform:none;}
  .vxb-card:hover .vxb-card-media img,.vxb-feat:hover .vxb-feat-media img{transform:none;}
}
