/* blog.css — shared styles for the BEV Ready blog.
   Built only from the design tokens defined in index.html. No landing-page-only
   CSS (hero, chart, journey, form, admin) is duplicated here. */

:root{
  --bg:#0c131d;          /* blueprint slate */
  --bg-2:#101a26;
  --surface:#14202f;
  --surface-2:#19293b;
  --grid:#22344a;        /* hairline blueprint lines */
  --ink:#e9eef4;
  --ink-mute:#93a2b4;
  --ink-dim:#65788c;
  --green:#9be17e;       /* brand — headroom / OK / CTA */
  --green-deep:#6fae54;
  --amber:#f2a93b;       /* breach / warning */
  --red:#ff6b5c;         /* breach edge */
  --maxw:1120px;
  --r:14px;
  font-synthesis:none;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  line-height:1.55;-webkit-font-smoothing:antialiased;
  background-image:
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:46px 46px,46px 46px;
  background-position:center top;
}
body::before{ /* fade the grid */
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(120% 80% at 70% -10%, transparent 0%, var(--bg) 70%);
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;position:relative;z-index:1}
h1,h2,h3{font-family:"Archivo",sans-serif;letter-spacing:-.02em;line-height:1.05;margin:0}
a{color:var(--green)}
.mono{font-family:"IBM Plex Mono",monospace}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--green);font-weight:500}

/* ---- header (mirrors index.html) ---- */
header{position:sticky;top:0;z-index:50;backdrop-filter:blur(8px);
  background:rgba(12,19,29,.72);border-bottom:1px solid var(--grid)}
.nav{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;font-family:"Archivo";font-weight:800;
  font-size:19px;letter-spacing:-.02em;color:var(--ink);text-decoration:none}
.logo{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;
  background:linear-gradient(135deg,var(--green),var(--green-deep));color:#0c131d}
.logo svg{width:18px;height:18px}
.btn{font-family:"Archivo";font-weight:700;font-size:15px;border:0;border-radius:10px;
  padding:11px 18px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;
  transition:transform .12s ease, box-shadow .2s ease, background .2s ease}
.btn-primary{background:var(--green);color:#0c131d;box-shadow:0 0 0 0 rgba(155,225,126,.5)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 30px -8px rgba(155,225,126,.45)}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--grid)}
.btn-ghost:hover{border-color:var(--green);color:var(--green)}
.btn:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.btn{transition:none}}

/* ---- footer (mirrors index.html) ---- */
footer{border-top:1px solid var(--grid);padding:40px 0;color:var(--ink-dim);font-size:14px;
  position:relative;z-index:1}
.foot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center}
footer a{color:var(--ink-mute)}

/* ---- blog layout ---- */
.blog-main{padding:48px 0 24px}

/* index listing */
.blog-index-head{max-width:62ch;margin-bottom:40px}
.blog-index-head h1{font-size:clamp(30px,4.4vw,46px);font-weight:800;margin-top:12px}
.blog-index-head h1 em{font-style:normal;color:var(--green)}
.blog-index-sub{color:var(--ink-mute);font-size:17px;margin:16px 0 0;max-width:58ch}
.post-list{list-style:none;padding:0;margin:0;display:grid;gap:16px}
.post-item-link{display:flex;flex-direction:column;gap:6px;text-decoration:none;
  background:var(--surface);border:1px solid var(--grid);border-radius:var(--r);
  padding:24px 26px;transition:border-color .2s ease, transform .12s ease}
.post-item-link:hover{border-color:var(--green);transform:translateY(-1px)}
.post-item-date{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim)}
.post-item-title{font-family:"Archivo";font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--ink)}
.post-item-desc{color:var(--ink-mute);font-size:15.5px}
.post-empty{color:var(--ink-dim);border:1px dashed var(--grid);border-radius:var(--r);
  padding:28px;text-align:center;list-style:none}

/* ---- article ---- */
.post{max-width:70ch;margin:0 auto}
.back-link{display:inline-block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-mute);text-decoration:none;margin-bottom:22px}
.back-link:hover{color:var(--green)}
.post-title{font-size:clamp(28px,4vw,42px);font-weight:800;line-height:1.08}
.post-meta{font-size:13px;color:var(--ink-dim);margin:16px 0 8px;
  padding-bottom:24px;border-bottom:1px solid var(--grid)}

.prose{font-size:17px;color:var(--ink);line-height:1.7}
.prose [id]{scroll-margin-top:88px}
.prose .anchor{display:block;height:0;overflow:hidden}
.prose h2{font-family:"Archivo";font-weight:700;font-size:clamp(22px,2.8vw,30px);
  letter-spacing:-.02em;line-height:1.15;margin:44px 0 0;scroll-margin-top:88px}
.prose h3{font-family:"Archivo";font-weight:700;font-size:21px;margin:32px 0 0;scroll-margin-top:88px}
.prose p{color:var(--ink-mute);margin:16px 0 0}
.prose strong{color:var(--ink);font-weight:600}
.prose em{color:var(--ink-mute)}
.prose a{color:var(--green);text-decoration:underline;text-underline-offset:2px}
.prose ul,.prose ol{color:var(--ink-mute);margin:16px 0 0;padding-left:22px}
.prose li{margin:8px 0}
.prose li::marker{color:var(--ink-dim)}
.prose hr{border:0;border-top:1px solid var(--grid);margin:36px 0}
.prose code{font-family:"IBM Plex Mono",monospace;font-size:.9em;color:var(--ink);
  background:var(--surface);border:1px solid var(--grid);border-radius:6px;padding:1px 6px}
.prose pre{background:var(--surface);border:1px solid var(--grid);border-radius:var(--r);
  padding:16px 18px;overflow:auto;margin:20px 0 0}
.prose pre code{background:none;border:0;padding:0;color:var(--ink-mute)}
.prose blockquote{margin:20px 0 0;padding:6px 18px;border-left:3px solid var(--amber);
  color:var(--ink-mute)}

/* table of contents (first list after the TOC heading reads as a nav block) */
.prose h2:first-child{margin-top:0}

/* in-article figure (capacity diagram) */
.blog-figure{margin:32px 0 0;background:linear-gradient(180deg,var(--surface),var(--bg-2));
  border:1px solid var(--grid);border-radius:var(--r);padding:22px 22px 16px}
.blog-figure .capacity-diagram{width:100%;height:auto;display:block}
.blog-figure figcaption{font-family:"IBM Plex Mono",monospace;font-size:12px;
  color:var(--ink-mute);margin-top:12px;line-height:1.5}

/* end-of-article CTA */
.post-cta{margin:48px 0 0;background:linear-gradient(180deg,var(--surface),var(--bg-2));
  border:1px solid var(--grid);border-left:3px solid var(--green);border-radius:18px;padding:30px}
.post-cta h2{font-family:"Archivo";font-weight:700;font-size:24px;letter-spacing:-.02em}
.post-cta p{color:var(--ink-mute);font-size:16px;margin:12px 0 22px;max-width:52ch}

/* responsive */
@media (max-width:520px){
  .nav .btn-ghost{display:none}
  .blog-main{padding:32px 0 16px}
}
