/*
 * The blog page and blog posts (blog.php, blogpost.php), on top of the vapor
 * theme. Prose sits in a readable column; figures may be wider than it.
 * Axis colours match js/blog/figs.js (F.AXIS) and the videos.
 */

:root {
  --ax-x: #ff6b3d;
  --ax-y: #34d77b;
  --ax-z: #4f8dff;
  --ax-w: #ffd23f;
  --blog-panel: rgba(10, 10, 15, 0.55);
  --blog-line: rgba(255, 255, 255, 0.12);
  --blog-muted: #a9a3c2;
  --blog-text: #e8e6f0;
}

/* ---------------------------------------------------------- the index -- */

.blog-index { max-width: 60rem; margin: 0 auto; }
.blog-index-intro { color: var(--blog-muted); max-width: 40rem; margin-left: auto; margin-right: auto; }

.blog-card {
  display: flex;
  gap: 1.5rem;
  align-items: stretch;
  margin-bottom: 1.5rem;
  padding: 1rem;
  background: var(--blog-panel);
  border: 1px solid var(--blog-line);
  border-radius: 12px;
  color: var(--blog-text);
  text-decoration: none;
  text-shadow: none;
  transition: border-color 0.15s, transform 0.15s, box-shadow 0.15s;
}
.blog-card:hover, .blog-card:focus {
  color: var(--blog-text);
  border-color: rgba(96, 165, 250, 0.6);
  box-shadow: 0 0 18px rgba(96, 165, 250, 0.25);
  transform: translateY(-1px);
}
.blog-card-image {
  position: relative;
  flex: 0 0 36%;
  aspect-ratio: 16 / 9;
  border-radius: 8px;
  overflow: hidden;
  background: #120624;
}
.blog-card-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-card-badge {
  position: absolute; left: 8px; bottom: 8px;
  padding: 2px 8px;
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.7);
  color: #fff;
  font-size: 0.75rem;
}
.blog-card-text { flex: 1; min-width: 0; }
.blog-card-text h2 { font-size: 1.4rem; margin: 0.2rem 0 0.3rem; color: #60a5fa; }
.blog-card-text p { margin-bottom: 0.4rem; }

@media (max-width: 640px) {
  .blog-card { flex-direction: column; gap: 0.8rem; }
  .blog-card-image { flex: none; }
}

/* ----------------------------------------------------------- a post -- */

.blog-article {
  max-width: 44rem;
  margin: 0 auto;
  line-height: 1.7;
  color: var(--blog-text);
}
.blog-article h1 { margin-bottom: 0.3rem; }
.blog-article h2 { margin-top: 2.5rem; margin-bottom: 0.8rem; font-size: 1.6rem; }
.blog-article p { margin-bottom: 1.1rem; }
.blog-note {
  padding: 8px 14px;
  border-radius: 8px;
  background: rgba(96, 165, 250, 0.15);
  border: 1px solid rgba(96, 165, 250, 0.4);
}
.blog-back { margin-top: 3rem; }

.blog-article blockquote {
  margin: 1.5rem 0;
  padding: 0.6rem 1.2rem;
  border-left: 4px solid #ea39b8;
  background: var(--blog-panel);
  border-radius: 0 8px 8px 0;
  font-style: italic;
}
.blog-article blockquote footer { font-style: normal; color: var(--blog-muted); font-size: 0.9rem; margin-top: 0.3rem; }

.blog-article .math-block { position: relative; overflow-x: auto; overflow-y: hidden; margin: 1rem 0 1.3rem; text-align: center; }

.blog-article table.blog-table { margin: 1rem auto 1.5rem; border-collapse: collapse; }
.blog-table th, .blog-table td { padding: 4px 14px; border-bottom: 1px solid var(--blog-line); text-align: center; }
.blog-table th:first-child, .blog-table td:first-child { text-align: left; }
.blog-table tr.blog-table-general td { color: var(--ax-w); border-top: 2px solid var(--blog-line); }

.ax { font-style: italic; }
.ax-x { color: var(--ax-x); }
.ax-y { color: var(--ax-y); }
.ax-z { color: var(--ax-z); }
.ax-w { color: var(--ax-w); }

/* The video, 16:9 at the column's width. */
.blog-video {
  position: relative;
  aspect-ratio: 16 / 9;
  margin: 1.5rem 0 2rem;
  border-radius: 10px;
  overflow: hidden;
  background: #000;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
}
.blog-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------------------------------------------------------- figures -- */

/* A figure can be wider than the text, up to 58rem, staying centred on it:
   equal negative margins grow it on both sides, never past the screen. */
.blog-fig {
  margin: 2rem calc((100% - min(58rem, 100vw - 2rem)) / 2);
  padding: 1rem;
  background: var(--blog-panel);
  border: 1px solid var(--blog-line);
  border-radius: 12px;
}
.blog-fig figcaption {
  margin-top: 0.7rem;
  color: var(--blog-muted);
  font-size: 0.9rem;
  text-align: center;
  line-height: 1.5;
}
.blog-fig canvas { display: block; width: 100%; }
.blog-draggable { cursor: grab; touch-action: none; }
.blog-draggable:active { cursor: grabbing; }

.blog-panels { display: grid; gap: 0.8rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.blog-panel-title { text-align: center; color: var(--blog-muted); font-size: 0.9rem; margin-bottom: 0.2rem; }

.blog-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1.2rem;
  align-items: center;
  justify-content: center;
  margin-top: 0.8rem;
  font-size: 0.9rem;
}
.blog-controls .btn { text-shadow: none; }
.blog-controls .btn.active { background: rgba(27, 162, 246, 0.35); color: #fff; }
.blog-slider { display: flex; align-items: center; gap: 0.6rem; margin: 0; }
.blog-slider input { width: 11rem; accent-color: #60a5fa; }
.blog-check { display: flex; align-items: center; gap: 0.4rem; margin: 0; cursor: pointer; }
.blog-hint { text-align: center; color: var(--blog-muted); font-size: 0.8rem; margin-top: 0.3rem; }
.blog-readout {
  text-align: center;
  font-size: 1.05rem;
  margin-top: 0.6rem;
  min-height: 1.7em;
  font-variant-numeric: tabular-nums;
}
.blog-muted { color: var(--blog-muted); font-size: 0.9rem; }
.blog-article .math-block .katex { white-space: nowrap; }
@media (max-width: 30rem) { .blog-article .math-block .katex { font-size: 1em; } }
@media (max-width: 30rem) { .blog-table th, .blog-table td { padding: 4px 7px; } }
