/* blog-v1 additions: layout toggle, list view, bookmark, view chip, infinite scroll */

/* Toolbar above the grid */
.blog-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap;
}
.blog-toolbar .results-count {
  font-size: 0.82rem; color: hsl(var(--foreground) / 0.55);
}
.layout-toggle {
  display: inline-flex; border: 1px solid hsl(var(--border));
  border-radius: 999px; padding: 3px; background: hsl(var(--background));
}
.layout-toggle button {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 30px; border: none; border-radius: 999px;
  background: transparent; cursor: pointer; color: hsl(var(--foreground) / 0.55);
  transition: all .18s ease;
}
.layout-toggle button:hover { color: hsl(var(--foreground)); }
.layout-toggle button.is-active {
  background: hsl(153 22% 28%); color: hsl(var(--background));
}
.layout-toggle svg { width: 16px; height: 16px; }

/* Make media position-relative to host bookmark btn */
.article-media { position: relative; }

/* Bookmark button on thumbnail */
.bookmark-btn {
  position: absolute; top: 10px; right: 10px;
  width: 32px; height: 32px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: hsl(var(--background) / 0.92);
  border: 1px solid hsl(var(--border-soft));
  color: hsl(var(--foreground) / 0.75); cursor: pointer;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  transition: all .18s ease; z-index: 2;
}
.bookmark-btn:hover {
  color: hsl(var(--accent)); border-color: hsl(var(--accent) / 0.4);
  transform: translateY(-1px);
}
.bookmark-btn svg { width: 15px; height: 15px; }
.bookmark-btn[aria-pressed="true"] {
  color: hsl(var(--accent));
  background: hsl(var(--accent) / 0.12);
  border-color: hsl(var(--accent) / 0.45);
}
.bookmark-btn[aria-pressed="true"] svg { fill: currentColor; }

/* Views chip in meta row */
.meta-views {
  display: inline-flex; align-items: center; gap: 4px;
}
.meta-views svg { width: 13px; height: 13px; opacity: 0.7; }

/* ===== List view layout ===== */
.article-grid.is-list { grid-template-columns: 1fr; gap: 1rem; }
.article-grid.is-list .article-card {
  flex-direction: row; align-items: stretch;
}
.article-grid.is-list .article-media {
  flex: 0 0 240px; aspect-ratio: auto; height: auto; min-height: 160px;
}
.article-grid.is-list .article-body { padding: 1.25rem 1.5rem; }
.article-grid.is-list .article-excerpt { -webkit-line-clamp: 3; }
.article-grid.is-list .article-body h3 { font-size: 1.3rem; }

@media (max-width: 640px) {
  .article-grid.is-list .article-card { flex-direction: column; }
  .article-grid.is-list .article-media { flex: none; min-height: 0; aspect-ratio: 16/10; }
}

/* ===== Infinite scroll states ===== */
.scroll-sentinel { height: 1px; margin-top: 2rem; }
.scroll-loading {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem;
  margin-top: 1.5rem;
}
.scroll-loading[hidden] { display: none; }
@media (max-width: 960px) { .scroll-loading { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .scroll-loading { grid-template-columns: 1fr; } }

.scroll-end {
  text-align: center; padding: 2.5rem 1rem 1rem;
  font-size: 0.82rem; color: hsl(var(--foreground) / 0.45);
  letter-spacing: 0.06em; text-transform: uppercase;
}
.scroll-end::before, .scroll-end::after {
  content: ""; display: inline-block; width: 28px; height: 1px;
  background: hsl(var(--foreground) / 0.2); vertical-align: middle;
  margin: 0 0.75rem;
}

/* Chip count badges */
.blog-chip .chip-count {
  display: inline-block; margin-left: 6px; padding: 1px 7px;
  font-size: 0.7rem; font-weight: 600; line-height: 1.4;
  background: hsl(var(--foreground) / 0.06); color: hsl(var(--foreground) / 0.55);
  border-radius: 999px; transition: all .18s ease;
}
.blog-chip.is-active .chip-count {
  background: hsl(0 0% 100% / 0.18); color: hsl(0 0% 100% / 0.95);
}

/* Card link affordances */
.article-card { cursor: pointer; }
.article-card .article-title-link {
  color: inherit; text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat; background-size: 0 1px;
  background-position: 0 100%; transition: background-size .25s ease;
}
.article-card:hover .article-title-link,
.article-card .article-title-link:focus-visible {
  background-size: 100% 1px;
}
.article-media-link { display: block; width: 100%; height: 100%; }
.article-media-link img { display: block; width: 100%; height: 100%; object-fit: cover; }
