/* ===== Koi Labs blog — light Electric theme (pairs with koi-site.css) ===== */
.hidden{display:none !important}

/* blog hero */
.blog-hero{padding:118px 0 8px}
.blog-hero .sec-lead{max-width:60ch}

/* filter bar */
.filterbar{position:sticky;top:0;z-index:30;background:rgba(252,252,253,0.86);backdrop-filter:saturate(160%) blur(12px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0;margin-top:34px}
.filterbar .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.filterbar .fl{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-right:4px}
.filter-btn{cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;transition:.2s}
.filter-btn:hover{border-color:var(--line-2);color:var(--ink)}
.filter-btn.active{color:var(--c1);background:color-mix(in srgb,var(--c1) 8%,#fff);border-color:color-mix(in srgb,var(--c1) 32%,#fff)}

/* posts grid + cards */
.posts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
@media(max-width:900px){.posts-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.posts-grid{grid-template-columns:1fr}}
.blog-card{position:relative;display:block;background:var(--paper-2);border:1px solid var(--line);border-radius:16px;padding:24px;transition:.3s;overflow:hidden;color:inherit}
.blog-card::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--c1),transparent 72%)}
.blog-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c1) 34%,var(--line-2));box-shadow:0 26px 50px -34px color-mix(in srgb,var(--c1) 34%,rgba(20,20,26,.4))}
.blog-card h2{font-size:19px;font-weight:600;letter-spacing:-.02em;margin:14px 0 8px;line-height:1.25;transition:.2s}
.blog-card:hover h2{color:var(--c1)}
.blog-card .ex{font-size:14px;color:var(--ink-2);line-height:1.55}
.blog-card .meta{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.blog-card .meta time{font-family:var(--mono);font-size:11.5px;color:var(--ink-3)}
.blog-card .meta .read{font-size:13px;font-weight:500;color:var(--c1)}

/* brand badge + tags */
.brand-badge{display:inline-flex;align-items:center;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:20px}
.brand-koilabs{color:var(--c1);background:color-mix(in srgb,var(--c1) 9%,#fff);border:1px solid color-mix(in srgb,var(--c1) 30%,#fff)}
.brand-leap{color:#2563EB;background:color-mix(in srgb,#2563EB 9%,#fff);border:1px solid color-mix(in srgb,#2563EB 30%,#fff)}
.brand-codeguard{color:var(--green);background:color-mix(in srgb,var(--green) 9%,#fff);border:1px solid color-mix(in srgb,var(--green) 30%,#fff)}
.brand-riff{color:#8B5CF6;background:color-mix(in srgb,#8B5CF6 9%,#fff);border:1px solid color-mix(in srgb,#8B5CF6 30%,#fff)}
.brand-folio{color:var(--c2);background:color-mix(in srgb,var(--c2) 9%,#fff);border:1px solid color-mix(in srgb,var(--c2) 30%,#fff)}
.brand-personal{color:var(--ink-2);background:var(--wash);border:1px solid var(--line-2)}
.tag{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);background:var(--wash);border:1px solid var(--line);border-radius:6px;padding:3px 8px}
.tags-row{display:flex;flex-wrap:wrap;gap:6px}

/* article */
.article{padding:116px 0 8px}
.article-wrap{max-width:760px;margin:0 auto;padding:0 32px}
.article-head .badges{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.article-head h1{font-size:clamp(28px,4vw,44px);line-height:1.08;letter-spacing:-.03em;font-weight:600;margin-bottom:18px}
.article-head .byline{display:flex;align-items:center;gap:11px;font-size:14px;color:var(--ink-2)}
.article-head .byline .who{font-weight:500;color:var(--ink)}
.article-head .byline time{font-family:var(--mono);font-size:13px;color:var(--ink-3)}
.article-head .byline .sep{width:4px;height:4px;border-radius:50%;background:var(--line-2)}

/* prose (light, reading-optimized) */
.prose{color:var(--ink);font-size:17px;line-height:1.75;margin-top:40px}
.prose>*:first-child{margin-top:0}
.prose h1,.prose h2,.prose h3,.prose h4{font-weight:600;letter-spacing:-.02em;color:var(--ink);margin:1.7em 0 .55em;line-height:1.2}
.prose h1{font-size:1.9rem}.prose h2{font-size:1.5rem}.prose h3{font-size:1.25rem}
.prose p{margin-bottom:1.3em}
.prose a{color:var(--c1);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.prose a:hover{text-decoration-thickness:2px}
.prose strong{color:var(--ink);font-weight:600}
.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.4em}
.prose li{margin-bottom:.4em}
.prose li::marker{color:var(--c1)}
.prose blockquote{border-left:3px solid var(--c1);padding-left:1.2em;margin:1.4em 0;color:var(--ink-2);font-style:italic}
.prose code{font-family:var(--mono);font-size:.88em;background:color-mix(in srgb,var(--c1) 8%,#fff);color:var(--c1);border:1px solid color-mix(in srgb,var(--c1) 18%,#fff);padding:.14em .4em;border-radius:5px}
.prose pre{background:var(--ink);color:#EAEAEA;border-radius:12px;padding:1.1em 1.3em;margin:1.4em 0;overflow-x:auto}
.prose pre code{background:none;border:none;color:#EAEAEA;padding:0}
.prose hr{border:none;border-top:1px solid var(--line);margin:2em 0}
.prose img{border-radius:12px;margin:1.4em 0;max-width:100%;height:auto}
.prose table{width:100%;border-collapse:collapse;margin:1.4em 0;font-size:.95rem}
.prose th,.prose td{padding:.7em 1em;text-align:left;border-bottom:1px solid var(--line)}
.prose th{font-family:var(--mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);background:var(--wash)}
.prose td{color:var(--ink-2)}

/* article footer / back link */
.article-foot{margin-top:52px;padding-top:26px;border-top:1px solid var(--line)}
.backlink{display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--c1)}
.backlink svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}

/* engagement footer */
.engage{padding:70px 0;background:var(--wash);border-top:1px solid var(--line)}
.engage h2{text-align:center;font-size:22px;font-weight:600;letter-spacing:-.02em}
.engage .sub{text-align:center;color:var(--ink-2);font-size:14px;margin:6px 0 30px}
.engage .row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:700px;margin:0 auto}
.engage .ec{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:12px;background:var(--paper-2);border:1px solid var(--line);transition:.2s;color:var(--ink);flex:1 1 200px;min-width:200px}
.engage .ec:hover{border-color:color-mix(in srgb,var(--c1) 40%,var(--line-2));transform:translateY(-2px)}
.engage .ec>svg{width:20px;height:20px;color:var(--ink-3);stroke:currentColor;fill:none;stroke-width:1.6;flex-shrink:0}
.engage .ec:hover>svg{color:var(--c1)}
.engage .ec .t{font-size:14px;font-weight:500}
.engage .ec .s{display:block;font-size:12px;color:var(--ink-3)}
.engage .ec .arr{margin-left:auto;color:var(--ink-3);stroke:currentColor;fill:none;stroke-width:2;width:16px;height:16px}

/* newsletter CTA (blog) */
.blognews{padding:70px 0;text-align:center;border-top:1px solid var(--line)}
.blognews h2{font-size:24px;font-weight:600;letter-spacing:-.02em}
.blognews p{color:var(--ink-2);margin:10px 0 26px}

/* loading skeleton (light) */
.loading-skeleton{background:linear-gradient(90deg,var(--wash) 25%,#EAECEF 50%,var(--wash) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:6px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.skel-card{background:var(--paper-2);border:1px solid var(--line);border-radius:16px;padding:24px}
@media(prefers-reduced-motion:reduce){.loading-skeleton{animation:none}}
