/* ============================================================
   Airlive — Blog
   Listing (/blog) + article (/blog/*). Dark, ember accent.
   Sizes reference the --fs-* scale. No hardcoded font-size.
   ============================================================ */

/* ---------- shared ---------- */
.crumb{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);margin-bottom:22px}
.crumb a{color:var(--text-2)}
.crumb a:hover{color:var(--text)}
.crumb span[aria-hidden]{color:var(--border)}
.crumb__here{color:var(--text-2)}

/* ============================================================
   LISTING  /blog — news-portal layout
   featured story → 3-col grid → compact rows (scales with volume)
   ============================================================ */
.blog{padding-top:124px;padding-bottom:var(--space-9)}
.blog__head{margin:0 0 40px}
.blog__title{font-size:var(--fs-h1);font-weight:800;letter-spacing:-.025em}
.blog__lead{margin-top:14px;max-width:62ch;color:var(--text-2);font-size:var(--fs-lg)}

/* category filter */
.blogfilter{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 26px}
.bfilter{font-family:var(--mono);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-2);background:transparent;border:1px solid var(--border);border-radius:999px;
  padding:8px 16px;cursor:pointer;transition:color .2s,border-color .2s,background .2s}
.bfilter:hover{color:var(--text);border-color:var(--text-2)}
.bfilter.is-on{background:var(--yellow);border-color:var(--yellow);color:var(--yellow-ink);font-weight:700}

/* featured story */
.feature{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--space-6);align-items:center;
  padding:34px 36px;border-radius:20px;margin-bottom:20px;
  background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--border);
  text-decoration:none;color:inherit;transition:border-color .2s var(--ease)}
.feature:hover{border-color:var(--text-2)}
.feature h2{font-size:var(--fs-h2);letter-spacing:-.02em;line-height:1.12;margin:12px 0;color:var(--text)}
.feature__excerpt{color:var(--text-2);font-size:var(--fs-md);line-height:1.6;margin-bottom:18px}
.feature__vis{display:flex;align-items:center;justify-content:center;gap:16px;align-self:stretch;
  border-radius:16px;border:1px solid var(--border-soft);
  background:radial-gradient(80% 90% at 50% 20%, rgba(220,38,38,.10), transparent 70%), var(--bg-2)}
.feature__vis img{width:64px;height:64px;border-radius:15px;object-fit:cover}
.feature__vis svg{width:26px;height:26px;color:var(--yellow)}

/* grid of recent stories */
.bloglist{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}

.postcard{display:flex;flex-direction:column;min-width:0;padding:24px 24px 20px;border-radius:18px;
  background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--border);
  text-decoration:none;color:inherit;transition:border-color .2s var(--ease),transform .2s var(--ease)}
.postcard:hover{border-color:var(--text-2);transform:translateY(-3px)}
.postcard__pair{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.postcard__logo{width:38px;height:38px;border-radius:10px;object-fit:cover;background:var(--surface-2);flex:none}
.postcard__logo--tile{display:grid;place-items:center}
.postcard__logo--tile svg{width:20px;height:20px;color:var(--blue)}
.postcard__x{color:var(--muted);font-family:var(--mono);font-size:var(--fs-sm)}
.postcard__cat{font-family:var(--mono);font-size:var(--fs-2xs);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted)}
.postcard h2{font-size:var(--fs-lg);letter-spacing:-.015em;margin:10px 0 10px;line-height:1.25}
.postcard__excerpt{color:var(--text-2);font-size:var(--fs-sm);line-height:1.55;margin-bottom:18px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.postcard__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;
  font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
.postcard__go{color:var(--yellow);font-weight:600}

/* compact rows — the long tail; every new post just adds a row */
.blogmore{margin-top:48px}
.blogmore__title{font-family:var(--mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);margin:0 0 4px}
.blogrow{display:grid;grid-template-columns:210px 1fr auto auto;gap:18px;align-items:center;
  padding:17px 6px;border-bottom:1px solid var(--border-soft);text-decoration:none;color:inherit}
.blogrow:first-of-type{border-top:1px solid var(--border-soft)}
.blogrow__cat{font-family:var(--mono);font-size:var(--fs-3xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.blogrow__t{font-size:var(--fs-md);font-weight:600;color:var(--text);transition:color .2s}
.blogrow:hover .blogrow__t{color:var(--yellow)}
.blogrow time{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.blogrow svg{width:16px;height:16px;color:var(--muted);flex:none}

/* ============================================================
   ARTICLE  /blog/*
   ============================================================ */
.post{padding-top:124px;padding-bottom:var(--space-9)}
/* full-width wrap; the content column is capped and CENTERED so it reads
   balanced (not shoved to the left). /blog uses the same width → no jump. */
.post .wrap{max-width:var(--maxw)}
.post .wrap>*{max-width:760px;margin-inline:auto}

.post__head{margin-bottom:14px}
.post__title{font-size:var(--fs-h1);font-weight:800;letter-spacing:-.028em;line-height:1.06;margin-top:10px}
.post__lead{margin-top:18px;color:var(--text-2);font-size:var(--fs-lg);line-height:1.5}
.post__meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:20px;
  font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}
.post__meta .dot{color:var(--border)}

/* product pairing */
.pair{display:flex;align-items:center;gap:16px;margin-top:30px;padding:22px 24px;border-radius:16px;
  background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--border);width:max-content;max-width:100%}
.pair__tile{width:54px;height:54px;border-radius:13px;flex:none;overflow:hidden;background:var(--surface-2);
  display:grid;place-items:center}
.pair__tile img{width:100%;height:100%;object-fit:cover;display:block}
.pair__arrow{color:var(--yellow)}
.pair__arrow svg{width:24px;height:24px}

/* body typography */
.post__body{margin-top:38px}
.post__body h2{font-size:var(--fs-2xl);letter-spacing:-.02em;margin:44px 0 14px}
.post__body h3{font-size:var(--fs-xl);letter-spacing:-.01em}
.post__body p{color:var(--text-2);font-size:var(--fs-md);line-height:1.7;margin:0 0 16px}
.post__body b{color:var(--text)}
.post__body a{color:var(--yellow);text-decoration:none;box-shadow:inset 0 -1px 0 rgba(255,214,10,.35)}
.post__body a:hover{box-shadow:inset 0 -2px 0 var(--yellow)}
.post__body code{font-family:var(--mono);font-size:.9em;background:var(--surface-2);color:var(--text);
  padding:1px 7px;border-radius:6px}

/* callout */
.callout{display:flex;gap:14px;align-items:flex-start;margin:26px 0;padding:18px 20px;border-radius:14px;
  background:rgba(255,214,10,.05);border:1px solid var(--border-soft)}
.callout__ico{flex:none;width:30px;height:30px;border-radius:8px;background:var(--surface-2);color:var(--yellow);
  display:grid;place-items:center}
.callout__ico svg{width:17px;height:17px}
.callout p{margin:0;color:var(--text-2);font-size:var(--fs-sm);line-height:1.6}

/* flow placeholder */
.post__flow{margin:30px 0}
.flowph{border:1.5px dashed var(--border);border-radius:16px;background:
  repeating-linear-gradient(135deg,rgba(255,255,255,.015) 0 12px,transparent 12px 24px),var(--bg-2);
  min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:32px}
.flowph__tag{font-family:var(--mono);font-size:var(--fs-2xs);letter-spacing:.16em;text-transform:uppercase;
  color:var(--yellow);padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface)}
.flowph__note{margin:0;color:var(--muted);font-size:var(--fs-sm)}
.flowph--shot{min-height:190px}   /* screenshot placeholders are slimmer than flow diagrams */

/* ---- fixed-format placeholders — the box IS the final image slot ----
   Landscape (Mac / Bridge / OBS UI): 16:9 → deliver 2560×1440 PNG.
   Portrait (iPhone UI): native phone grab → deliver 1179×2556 (≈9:19.5).
   Same aspect ratio on desktop and mobile; only rendered size changes. */
.flowph--169{aspect-ratio:16/9;min-height:0}
.flowph--phone{aspect-ratio:9/19.5;min-height:0;width:min(260px,70%);margin-inline:auto;padding:20px}
.post__flow--pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:560px;margin-inline:auto}
.post__flow--pair .flowph--phone{width:100%}
/* when the real images land, they drop into the same slots */
.post__flow img{display:block;width:100%;border-radius:16px;border:1px solid var(--border)}

/* terminal mock — for developer posts */
.term{border-radius:14px;border:1px solid var(--border);background:var(--screen-bg);overflow:hidden;margin:26px 0}
.term__bar{display:flex;gap:6px;padding:11px 14px;border-bottom:1px solid var(--border-soft)}
.term__dot{width:10px;height:10px;border-radius:50%;background:var(--surface-2)}
.term pre{margin:0;padding:16px 18px;font-family:var(--mono);font-size:var(--fs-xs);line-height:1.75;color:var(--text-2);overflow-x:auto}
.term .ok{color:var(--color-status-success)}
.term .dim{color:var(--muted)}
.term .y{color:var(--yellow)}

.post__flow figcaption{margin-top:12px;text-align:center;font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted)}

/* how-to two columns */
.howto{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:22px 0 8px}
.howto__col{padding:24px;border-radius:16px;background:linear-gradient(180deg,var(--surface),var(--bg-2));
  border:1px solid var(--border)}
.howto__head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.howto__ico{width:40px;height:40px;border-radius:10px;flex:none;overflow:hidden;background:var(--surface-2);
  color:var(--blue);display:grid;place-items:center}
.howto__ico svg{width:21px;height:21px}
.howto__ico img{width:100%;height:100%;object-fit:cover;display:block}
.howto__col h3{font-size:var(--fs-lg);letter-spacing:-.01em}

.steps{counter-reset:st;list-style:none;margin:0;padding:0;display:grid;gap:12px}
.steps li{position:relative;padding-left:38px;color:var(--text-2);font-size:var(--fs-sm);line-height:1.55}
.steps li b{color:var(--text)}
.steps li::before{counter-increment:st;content:counter(st);position:absolute;left:0;top:-1px;
  width:25px;height:25px;border-radius:50%;background:var(--surface-2);color:var(--yellow);
  font-family:var(--mono);font-size:var(--fs-3xs);font-weight:700;display:grid;place-items:center}
.steps code{font-family:var(--mono);font-size:.88em;background:var(--surface-2);color:var(--text);
  padding:1px 6px;border-radius:6px}

/* distribution chips */
.dist{list-style:none;margin:20px 0 8px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px}
.distchip{display:flex;flex-direction:column;gap:2px;padding:16px 18px;border-radius:14px;
  background:var(--surface);border:1px solid var(--border)}
.distchip__ico{width:30px;height:30px;border-radius:8px;background:var(--surface-2);color:var(--blue);
  display:grid;place-items:center;margin-bottom:8px}
.distchip__ico svg{width:17px;height:17px}
.distchip b{color:var(--text);font-size:var(--fs-md)}
.distchip span{color:var(--muted);font-family:var(--mono);font-size:var(--fs-3xs)}

/* related guides */
.related{margin-top:52px}
.related h2{font-size:var(--fs-2xl);letter-spacing:-.02em;margin-bottom:16px}
.rel{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:12px}
.rel a{display:flex;flex-direction:column;gap:6px;height:100%;padding:16px 18px;border-radius:14px;
  background:var(--surface);border:1px solid var(--border);text-decoration:none;color:inherit;
  transition:border-color .2s var(--ease)}
.rel a:hover{border-color:var(--text-2)}
.rel__cat{font-family:var(--mono);font-size:var(--fs-3xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.rel__title{font-size:var(--fs-sm);font-weight:600;color:var(--text);line-height:1.35}
.rel__go{margin-top:auto;padding-top:8px;font-family:var(--mono);font-size:var(--fs-3xs);color:var(--yellow)}

/* article CTA */
.post__cta{margin-top:56px;padding:34px 32px;border-radius:20px;text-align:center;
  background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--border)}
.post__cta h2{font-size:var(--fs-h2);letter-spacing:-.02em;margin-bottom:10px}
.post__cta p{color:var(--text-2);font-size:var(--fs-md);max-width:46ch;margin:0 auto 22px}
.post__cta-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

.post__back{display:inline-flex;align-items:center;gap:8px;margin-top:34px;
  font-family:var(--mono);font-size:var(--fs-xs);color:var(--text-2)}
.post__back:hover{color:var(--text)}

/* ---------- responsive ---------- */
@media(max-width:1080px){
  .bloglist{grid-template-columns:repeat(2,1fr)}
  .blogrow{grid-template-columns:170px 1fr auto auto}
}
@media(max-width:820px){
  .blog{padding-top:104px}
  .post{padding-top:104px}
  .feature{grid-template-columns:1fr;padding:26px}
  .feature__vis{display:none}
  .bloglist{grid-template-columns:1fr}
  .blogrow{grid-template-columns:1fr auto;row-gap:6px}
  .blogrow__cat{grid-column:1/-1}
  .blogrow svg{display:none}
  .howto{grid-template-columns:1fr}
}
