/* ============================================================================
   blog-post.css: The IOn Project blog, editorial article style.
   Long-form reading identity: Newsreader serif body, Space Grotesk headings,
   Space Mono labels, softer editorial teal accent (#2fe0ac) on near-black.
   Distinct from the app/marketing surfaces (which stay Inter + aurora cyan).
   Loaded after aurora-tokens.css; defines its own palette via --bl-* tokens.
   ========================================================================== */

:root{
  --bl-bg:#07090c;
  --bl-accent:#2fe0ac;
  --bl-accent-hover:#5cead0;
  --bl-heading:#f2f5f7;
  --bl-body:#c8cdd4;
  --bl-strong:#f2f5f7;
  --bl-muted:#9aa3ad;
  --bl-dim:#6b7580;
  --bl-faint:#5a626c;
  --bl-hair:rgba(255,255,255,0.07);
  --bl-hair-soft:rgba(255,255,255,0.06);
  --bl-serif:'Newsreader',Georgia,'Times New Roman',serif;
  --bl-sans:'Space Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;
  --bl-mono:'Space Mono',ui-monospace,monospace;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bl-bg);
  color:var(--bl-body);
  font-family:var(--bl-serif);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* Guard against stray horizontal overflow without creating a scroll container
   (which would break the sticky TOC) or a containing block for the fixed layers. */
.post-hero,.post-shell,footer{overflow-x:clip;}
::selection{background:rgba(47,224,172,0.22);color:#eef2f5;}

/* ── Ambient backgrounds (CSS only, light, no canvas) ────────────────────── */
.bg-aurora,.bg-grid,.bg-particles{position:fixed;inset:0;z-index:0;pointer-events:none;}
.bg-aurora{
  background:
    radial-gradient(1100px 600px at 78% -8%, rgba(47,224,172,0.10), transparent 60%),
    radial-gradient(900px 700px at 10% 110%, rgba(47,224,172,0.06), transparent 55%);
}
.bg-grid{
  opacity:.4;
  background-image:radial-gradient(rgba(255,255,255,0.05) 1px, transparent 1px);
  background-size:38px 38px;
  -webkit-mask-image:radial-gradient(1200px 800px at 60% 0%, #000, transparent 70%);
  mask-image:radial-gradient(1200px 800px at 60% 0%, #000, transparent 70%);
}
.bg-particles{overflow:hidden;}
.bg-particles span{
  position:absolute;bottom:-4px;width:2px;height:2px;border-radius:50%;
  background:var(--bl-accent);animation:bl-float linear infinite;
}
@keyframes bl-float{
  0%{transform:translateY(20px);opacity:0;}
  15%{opacity:.5;}85%{opacity:.35;}
  100%{transform:translateY(-90vh);opacity:0;}
}

/* ── Reading progress bar ────────────────────────────────────────────────── */
.read-progress{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:200;
  transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--bl-accent),var(--bl-accent-hover));
  box-shadow:0 0 12px rgba(47,224,172,0.6);
  transition:transform .08s linear;
}

/* ── Nav ─────────────────────────────────────────────────────────────────── */
/* Scoped to the top-level header nav so it never hits the inner .post-toc-list <nav>. */
body > nav{
  position:fixed;top:0;left:0;width:100%;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 34px;
  background:rgba(7,9,12,0.72);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-bottom:1px solid var(--bl-hair-soft);
}
.nav-brand{display:flex;align-items:center;gap:11px;text-decoration:none;}
.nav-name{font-family:var(--bl-mono);font-size:13px;font-weight:700;color:#c4cbd3;letter-spacing:-0.3px;transition:color .2s;}
.nav-brand:hover .nav-name{color:var(--bl-heading);}
.nav-links{display:flex;align-items:center;gap:30px;font-family:var(--bl-sans);}
.nav-links a,.nav-links .nav-dropdown-trigger{
  color:#9aa3ad;text-decoration:none;font-size:13px;font-weight:500;
  letter-spacing:.2px;transition:color .2s;cursor:pointer;
}
.nav-links a:hover,.nav-links .nav-dropdown-trigger:hover{color:var(--bl-accent);}
.nav-links a.active{color:var(--bl-accent);font-weight:600;}
.nav-dropdown{position:relative;}
.nav-dropdown-trigger{display:flex;align-items:center;gap:4px;background:none;border:none;padding:0;font-family:var(--bl-sans);}
.nav-dropdown-trigger svg{width:10px;height:10px;opacity:.5;transition:transform .2s,opacity .2s;}
.nav-dropdown:hover .nav-dropdown-trigger svg{transform:rotate(180deg);opacity:.8;}
.nav-dropdown-menu{
  position:absolute;top:calc(100% + 12px);left:-12px;min-width:200px;
  background:rgba(10,12,16,0.96);backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,0.08);border-radius:10px;padding:8px;
  opacity:0;visibility:hidden;transform:translateY(-4px);transition:all .2s ease;
  box-shadow:0 16px 48px rgba(0,0,0,0.5);
}
.nav-dropdown:hover .nav-dropdown-menu{opacity:1;visibility:visible;transform:translateY(0);}
.nav-dropdown-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;font-size:13px !important;color:#9aa3ad !important;transition:all .15s !important;}
.nav-dropdown-menu a:hover{background:rgba(47,224,172,0.06) !important;color:var(--bl-heading) !important;}
.nav-dropdown-menu .dd-icon{font-size:14px;width:20px;text-align:center;flex-shrink:0;}
.nav-dropdown-menu .dd-label{flex:1;}
.nav-dropdown-menu .dd-badge{font-family:var(--bl-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:3px;flex-shrink:0;}
.dd-badge.live{background:rgba(47,224,172,0.12);color:var(--bl-accent);}
.dd-badge.new{background:rgba(47,224,172,0.12);color:var(--bl-accent);}
.dd-badge.soon{background:rgba(255,201,68,0.12);color:#ffc944;}
.nav-toggle{display:none;background:none;border:1px solid var(--bl-hair);color:var(--bl-dim);width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:16px;align-items:center;justify-content:center;}

/* ── Hero ────────────────────────────────────────────────────────────────── */
.post-hero{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:132px 40px 0;}
.post-back{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--bl-mono);font-size:12px;font-weight:400;color:var(--bl-dim);
  letter-spacing:.3px;text-decoration:none;margin-bottom:40px;text-transform:uppercase;
  transition:color .2s;
}
.post-back:hover{color:var(--bl-accent);}
.post-hero-inner{max-width:760px;}
.post-kicker{display:flex;align-items:center;gap:14px;margin-bottom:22px;flex-wrap:wrap;}
.post-tag{
  font-family:var(--bl-mono);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:1.2px;color:#07090c;background:var(--bl-accent);padding:5px 11px;border-radius:4px;
}
.post-cat{font-family:var(--bl-mono);font-size:11px;letter-spacing:.5px;color:var(--bl-dim);text-transform:uppercase;}
.post-title{
  font-family:var(--bl-sans);font-size:clamp(32px,5vw,52px);font-weight:600;
  line-height:1.08;letter-spacing:-1.6px;color:var(--bl-heading);margin-bottom:24px;text-wrap:balance;
}
.post-lede{font-size:21px;line-height:1.55;color:var(--bl-muted);font-style:italic;max-width:640px;text-wrap:pretty;}
.post-byline{display:flex;align-items:center;gap:16px;margin:36px 0 30px;flex-wrap:wrap;}
.post-avatar{
  width:42px;height:42px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#12332b,#0b1a17);border:1px solid rgba(47,224,172,0.35);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--bl-sans);font-weight:600;font-size:16px;color:var(--bl-accent);
}
.post-byline-meta{display:flex;flex-direction:column;gap:3px;}
.post-author{font-family:var(--bl-sans);font-size:14px;font-weight:600;color:#e6e8ec;}
.post-author a{color:#e6e8ec;text-decoration:none;border-bottom:1px solid rgba(47,224,172,0.4);}
.post-author a:hover{color:var(--bl-accent-hover);}
.post-dateline{font-family:var(--bl-mono);font-size:11px;color:var(--bl-dim);letter-spacing:.3px;display:flex;align-items:center;gap:8px;}
.post-dateline .dot{width:3px;height:3px;border-radius:50%;background:#3a424c;}
.post-hr{height:1px;max-width:760px;background:linear-gradient(90deg,rgba(47,224,172,0.4),rgba(255,255,255,0.05) 40%,transparent);}

/* ── Shell (article + sticky TOC) ────────────────────────────────────────── */
.post-shell{
  position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:0 40px 40px;
  display:grid;grid-template-columns:1fr 220px;gap:56px;align-items:start;
}
.post-main{max-width:760px;padding-top:44px;}

.post-toc{position:sticky;top:112px;align-self:start;padding-top:48px;}
.post-toc-title{font-family:var(--bl-mono);font-size:10px;font-weight:700;letter-spacing:1.6px;color:var(--bl-dim);text-transform:uppercase;margin-bottom:18px;}
.post-toc-list{display:flex;flex-direction:column;gap:2px;}
.post-toc-list a{
  display:block;padding:8px 12px;border-left:2px solid rgba(255,255,255,0.08);
  border-radius:0 6px 6px 0;font-family:var(--bl-sans);font-size:13px;line-height:1.35;
  color:#8b939d;font-weight:400;text-decoration:none;
  transition:color .2s,border-color .2s,background .2s;
}
.post-toc-list a:hover{color:#c4cbd3;}
.post-toc-list a.active{color:var(--bl-accent);font-weight:600;border-left-color:var(--bl-accent);background:rgba(47,224,172,0.06);}

/* ── Article body ────────────────────────────────────────────────────────── */
.post-body{font-size:19px;line-height:1.78;color:var(--bl-body);}
.post-body > p:first-child{margin-top:0;}
.post-body p{margin:0 0 24px;}
.post-body h2{
  font-family:var(--bl-sans);font-size:27px;font-weight:600;letter-spacing:-0.7px;
  color:var(--bl-heading);line-height:1.15;margin:52px 0 18px;scroll-margin-top:96px;
}
.post-body h3{
  font-family:var(--bl-sans);font-size:20px;font-weight:600;letter-spacing:-0.3px;
  color:#e6e8ec;line-height:1.25;margin:38px 0 14px;scroll-margin-top:96px;
}
.post-body a{color:var(--bl-accent);text-decoration:none;border-bottom:1px solid rgba(47,224,172,0.28);transition:color .2s,border-color .2s;}
.post-body a:hover{color:var(--bl-accent-hover);border-bottom-color:var(--bl-accent-hover);}
.post-body strong{color:var(--bl-strong);font-weight:600;}
.post-body em{color:var(--bl-heading);font-style:italic;}
.post-body ul,.post-body ol{margin:0 0 24px;padding-left:26px;}
.post-body li{margin-bottom:10px;}
.post-body li::marker{color:var(--bl-accent);}
.post-body ul li{list-style:none;position:relative;}
.post-body ul li::before{content:"";position:absolute;left:-20px;top:0.72em;width:6px;height:6px;border-radius:50%;background:var(--bl-accent);opacity:.75;}
.post-body ol{padding-left:24px;}
.post-body ol li{list-style:decimal;}
.post-body ol li::marker{font-family:var(--bl-mono);font-size:15px;color:var(--bl-accent);}

/* Blockquote → editorial callout box (matches reference "Fix" card aesthetic) */
.post-body blockquote{
  border:1px solid rgba(47,224,172,0.22);
  background:linear-gradient(180deg,rgba(47,224,172,0.05),rgba(47,224,172,0.02));
  border-radius:12px;padding:20px 24px;margin:0 0 24px;
  font-style:normal;color:#d7dce2;font-size:18px;line-height:1.7;
}
.post-body blockquote p:last-child{margin-bottom:0;}

/* Code */
.post-body code{
  font-family:var(--bl-mono);font-size:14px;
  background:rgba(255,255,255,0.05);padding:2px 8px;border-radius:4px;
  border:1px solid var(--bl-hair);color:#e6e8ec;
}
.post-body pre{
  background:#0b0e13;border:1px solid var(--bl-hair);border-radius:10px;
  padding:20px 24px;margin:0 0 24px;overflow-x:auto;-webkit-overflow-scrolling:touch;
}
.post-body pre code{background:none;border:none;padding:0;font-size:13.5px;line-height:1.65;color:#c8cdd4;}
.post-body img{max-width:100%;height:auto;border-radius:10px;margin:8px 0 24px;border:1px solid var(--bl-hair-soft);}
.post-body hr{border:none;height:1px;background:var(--bl-hair);margin:40px 0;}

/* ── Footer CTA card ─────────────────────────────────────────────────────── */
.post-cta{
  display:flex;align-items:center;gap:22px;margin-top:52px;padding:28px 30px;border-radius:16px;
  background:linear-gradient(135deg,rgba(47,224,172,0.12),rgba(47,224,172,0.03));
  border:1px solid rgba(47,224,172,0.28);text-decoration:none;color:inherit;
  transition:border-color .2s,background .2s;
}
.post-cta:hover{border-color:rgba(47,224,172,0.55);background:linear-gradient(135deg,rgba(47,224,172,0.18),rgba(47,224,172,0.05));}
.post-cta-body{flex:1;}
.post-cta-eyebrow{font-family:var(--bl-mono);font-size:10px;font-weight:700;letter-spacing:1.4px;color:var(--bl-accent);text-transform:uppercase;margin-bottom:9px;}
.post-cta-title{font-family:var(--bl-sans);font-size:20px;font-weight:600;color:var(--bl-heading);margin-bottom:6px;}
.post-cta-desc{font-family:var(--bl-sans);font-size:15px;line-height:1.5;color:var(--bl-muted);margin:0;}
.post-cta-arrow{font-family:var(--bl-sans);font-size:24px;color:var(--bl-accent);flex-shrink:0;}

/* ── Related posts ───────────────────────────────────────────────────────── */
.post-related{margin-top:56px;padding-top:34px;border-top:1px solid var(--bl-hair);}
.post-related-title{font-family:var(--bl-mono);font-size:11px;font-weight:700;letter-spacing:1.4px;color:var(--bl-dim);text-transform:uppercase;margin-bottom:22px;}
.post-related-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;}
.post-related-card{
  display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:12px;min-height:150px;
  background:rgba(255,255,255,0.02);border:1px solid var(--bl-hair);color:inherit;text-decoration:none;
  transition:border-color .2s,background .2s;
}
.post-related-card:hover{border-color:rgba(47,224,172,0.3);background:rgba(47,224,172,0.04);}
.post-related-card .rc-tag{font-family:var(--bl-mono);font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--bl-accent);}
.post-related-card .rc-title{font-family:var(--bl-sans);font-size:16px;font-weight:600;line-height:1.3;color:#e6e8ec;}
.post-related-card .rc-read{margin-top:auto;font-family:var(--bl-mono);font-size:11px;color:var(--bl-dim);}

/* ── Site footer ─────────────────────────────────────────────────────────── */
footer{
  position:relative;z-index:2;margin-top:20px;padding:30px 40px;
  border-top:1px solid var(--bl-hair-soft);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;
  font-family:var(--bl-sans);font-size:12px;color:var(--bl-dim);
}
footer a{color:var(--bl-dim);text-decoration:none;transition:color .2s;}
footer a:hover{color:var(--bl-accent);}
.footer-right{display:flex;gap:22px;flex-wrap:wrap;}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width:1080px){
  .post-toc{display:none;}
  .post-shell{grid-template-columns:1fr;}
}
@media (max-width:768px){
  body > nav{padding:14px 20px;}
  .nav-links{display:none;}
  .nav-toggle{display:flex;}
  .nav-links.mobile-open{
    display:flex;flex-direction:column;position:absolute;top:100%;left:0;width:100%;
    background:rgba(7,9,12,0.97);backdrop-filter:blur(20px);padding:20px;gap:16px;
    border-bottom:1px solid var(--bl-hair-soft);
  }
  .nav-links.mobile-open .nav-dropdown-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;background:rgba(255,255,255,0.02);border:1px solid var(--bl-hair);margin-top:8px;}
  .nav-dropdown-trigger svg{display:none;}
  .post-hero{padding:110px 22px 0;}
  .post-shell{padding:0 22px 40px;}
  .post-body{font-size:17px;line-height:1.75;}
  .post-body h2{font-size:24px;}
  .post-title{letter-spacing:-1px;}
  .post-lede{font-size:19px;}
  .post-cta{flex-direction:column;align-items:flex-start;gap:16px;}
  footer{flex-direction:column;gap:12px;text-align:center;padding:24px 20px;}
}

/* Touch dropdown (page.js toggles .touch-open) */
.nav-dropdown.touch-open .nav-dropdown-menu{opacity:1 !important;visibility:visible !important;transform:translateY(0) !important;}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .bg-particles span{animation:none !important;opacity:0 !important;}
  .read-progress{transition:none !important;}
  *,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}
}
