/* Catalogue Theme — main stylesheet
   Loaded async (media=print trick). Critical above-the-fold styles
   are inlined via inc/assets.php from critical.css. */

:root {
  --c-accent: #ff3b1f;
  --c-accent-deep: #d92d12;
  --c-accent-text: #b42318;
  --c-ink: #0f0f0e;
  --c-ink-soft: #4a4a47;
  --c-ink-faint: #66665f;
  --c-line: #e8e6df;
  --c-bg: #fafaf7;
  --c-surface: #ffffff;
  --c-yellow: #ffd84a;
  --c-success: #15803d;
  --f-display: 'Fraunces', Georgia, serif;
  --f-body: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --f-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --shadow-sm: 0 1px 2px rgba(15,15,14,0.04), 0 2px 8px rgba(15,15,14,0.04);
  --shadow-md: 0 4px 12px rgba(15,15,14,0.06), 0 12px 32px rgba(15,15,14,0.06);
  --container: 1280px;
}

input, textarea, select { font: inherit; }


/* ---- Buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 20px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  transition: all .15s ease;
  border: 1px solid transparent;
  white-space: nowrap;
}
.btn--primary { background: var(--c-ink); color: var(--c-bg); }
.btn--primary:hover { background: var(--c-accent); transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.btn--ghost { background: var(--c-surface); border-color: var(--c-line); color: var(--c-ink); }
.btn--ghost:hover { border-color: var(--c-ink); }


/* ---- Section labels & titles ---- */
.section-label {
  font-family: var(--f-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--c-accent-text);
  margin-bottom: 12px;
  font-weight: 500;
}
.section-title {
  font-family: var(--f-display);
  font-size: clamp(28px, 4vw, 40px);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.1;
  max-width: 22ch;
}
.section-title em { font-style: italic; color: var(--c-accent); }
.section-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin: 64px 0 32px;
  flex-wrap: wrap;
}
.section-link {
  font-size: 14px;
  color: var(--c-ink-soft);
  transition: color .15s ease;
}
.section-link:hover { color: var(--c-accent); }


/* ---- Page hero (category, search, 404) ---- */
.page-hero {
  padding: 32px 0 20px;
  border-bottom: 1px solid var(--c-line);
  position: relative;
  overflow: hidden;
}
.page-hero::before {
  content: '';
  position: absolute;
  top: 50%; right: -100px;
  transform: translateY(-50%);
  width: 600px; height: 600px;
  background: radial-gradient(circle, color-mix(in srgb, var(--c-accent) 8%, transparent), transparent 70%);
  z-index: 0;
  pointer-events: none;
}
.page-hero__inner { position: relative; z-index: 1; }

.eyebrow {
  font-family: var(--f-mono);
  font-size: 12px;
  color: var(--c-accent-text);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  margin-bottom: 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.eyebrow::before {
  content: '';
  width: 8px; height: 8px;
  background: var(--c-accent);
  border-radius: 50%;
  animation: pulse 2s ease-in-out infinite; transform-origin: center;
}
@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.55); opacity: 0.45; }
}

.page-hero__title {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: clamp(32px, 4.5vw, 52px);
  line-height: 1.02;
  letter-spacing: -0.03em;
  max-width: 22ch;
  margin-bottom: 12px;
}
.page-hero__title em { font-style: italic; color: var(--c-accent); font-weight: 400; }
.page-hero__subtitle {
  font-size: 17px;
  color: var(--c-ink-soft);
  max-width: 56ch;
  line-height: 1.5;
}


/* ---- Catalogue grid + cards ---- */
.catalog-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 24px;
}
@media (max-width: 1024px) { .catalog-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px)  { .catalog-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px)  { .catalog-grid { grid-template-columns: 1fr; } }

.card { transition: transform .2s ease; }
.card:hover { transform: translateY(-4px); }
.card:hover .cover { box-shadow: var(--shadow-md); }
.cover { transition: box-shadow .2s ease; display: grid; place-items: center; }
.cover__fallback {
  font-family: var(--f-display);
  font-weight: 800;
  font-size: 22px;
  letter-spacing: -0.01em;
  color: rgba(255,255,255,0.92);
  text-align: center;
  padding: 16px;
  z-index: 1;
}
.card__retailer {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--c-ink-faint);
  margin-bottom: 4px;
  font-weight: 500;
}
.card__dates {
  font-family: var(--f-display);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--c-ink);
  line-height: 1.3;
}

.card--ad {
  cursor: default;
}
.card--ad:hover {
  transform: none;
}
.cover--ad {
  padding: 10px;
  background: var(--c-surface);
}
.card--ad .ad-slot {
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  border-radius: 0;
  justify-content: center;
}
.card--ad .ad-slot__label {
  margin-bottom: 8px;
}
.card--ad .ad-slot__inner {
  flex: 1;
  min-height: 220px;
  align-items: center;
}
.card--ad .ad-slot--empty {
  border: 1px dashed rgba(167,139,250,0.45);
  border-radius: var(--radius-sm);
  padding: 10px;
}
.card__info--ad {
  min-height: 38px;
}


/* ---- Homepage (front-page.php) ---- */
.home-section { margin: 64px 0; }
.home-section--first { margin-top: 40px; }
.home-section .catalog-grid { margin-top: 24px; }
.home-section--muted .catalog-grid .card { opacity: 0.78; }
.home-section--muted .catalog-grid .card:hover { opacity: 1; }

.retailer-chips {
  list-style: none;
  margin: 24px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.retailer-chips li { margin: 0; }
.retailer-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  color: var(--c-ink);
  transition: all .15s ease;
}
.retailer-chip:hover {
  background: var(--c-ink);
  color: var(--c-bg);
  border-color: var(--c-ink);
  transform: translateY(-1px);
}
.retailer-chip__count {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--c-ink-faint);
  background: var(--c-bg);
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--c-line);
}
.retailer-chip:hover .retailer-chip__count {
  background: rgba(255,255,255,0.12);
  color: var(--c-bg);
  border-color: rgba(255,255,255,0.18);
}


/* ---- Sidebar newsletter card (single posts) ---- */
.nl-card {
  background: var(--c-ink);
  color: var(--c-bg);
  padding: 28px;
  border-radius: var(--radius-lg);
  position: relative;
  overflow: hidden;
}
.nl-card::before {
  content: '';
  position: absolute;
  top: -40px; right: -40px;
  width: 160px; height: 160px;
  background: var(--c-accent);
  border-radius: 50%;
  opacity: 0.9;
}
.nl-card::after {
  content: '';
  position: absolute;
  top: 20px; right: 28px;
  width: 24px; height: 24px;
  background: var(--c-yellow);
  border-radius: 50%;
}
.nl-card > * { position: relative; z-index: 1; }
.nl-card__eyebrow {
  font-family: var(--f-mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  opacity: 0.7;
  margin-bottom: 8px;
}
.nl-card__title {
  font-family: var(--f-display);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.02em;
  margin-bottom: 12px;
}
.nl-card__desc {
  font-size: 13px;
  opacity: 0.7;
  margin-bottom: 16px;
  line-height: 1.5;
}
.nl-card__form {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.nl-card__form input {
  padding: 12px 14px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.15);
  background: rgba(255,255,255,0.08);
  color: var(--c-bg);
  font-size: 14px;
  outline: none;
}
.nl-card__form input::placeholder { color: rgba(255,255,255,0.4); }
.nl-card__form input:focus {
  border-color: var(--c-accent);
  background: rgba(255,255,255,0.12);
}
.nl-card__form button {
  padding: 12px;
  border-radius: 8px;
  background: var(--c-bg);
  color: var(--c-ink);
  font-weight: 600;
  font-size: 14px;
  transition: all .15s ease;
}
.nl-card__form button:hover {
  background: var(--c-accent);
  color: var(--c-bg);
}
.nl-card__trust {
  margin-top: 12px;
  font-size: 11px;
  opacity: 0.5;
  text-align: center;
}


/* ---- Layout: main content + sidebar (single posts) ---- */
.layout-main {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 48px;
  padding: 16px 0 60px;
  align-items: start;
}
.layout-main__content { min-width: 0; max-width: 100%; overflow-x: clip; }
.sidebar { display: flex; flex-direction: column; gap: 28px; min-width: 0; max-width: 100%; overflow-x: clip; }

@media (max-width: 1100px) {
  .layout-main { grid-template-columns: minmax(0, 1fr) 300px; gap: 32px; }
}
@media (max-width: 900px) {
  .layout-main { grid-template-columns: 1fr; gap: 40px; }
}


/* ---- Breadcrumb ---- */
.breadcrumb {
  padding: 16px 0 8px;
  font-size: 13px;
  color: var(--c-ink-faint);
}
.breadcrumb a:hover { color: var(--c-ink); }
.breadcrumb__sep { margin: 0 8px; opacity: 0.4; }


/* ---- Ad slots — consolidated rules ---- */
.ad-slot {
  margin: 16px 0;
  padding: 12px 14px;
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm);
  text-align: center;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  max-width: 100%;
  overflow: hidden;
}
.ad-slot__label {
  display: block;
  font-size: 9px;
  color: var(--c-ink-faint);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 500;
  opacity: 0.75;
}
.ad-slot__inner {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  max-width: 100%;
  overflow: hidden;
  box-sizing: border-box;
}

/* Force every descendant to fit its container — network ads (Bonial,
   AdSense responsive) often use fixed pixel widths on nested wrappers. */
.ad-slot * {
  max-width: 100% !important;
  box-sizing: border-box;
}
.ad-slot iframe {
  width: 100% !important;
  display: block;
}

/* archive top: full-width, left-aligned label */
.ad-slot--archive_top {
  margin: 8px 0 24px;
  min-height: 282px;
  text-align: left;
}
.ad-slot--archive_top .ad-slot__label,
.ad-slot--sidebar_top .ad-slot__label,
.ad-slot--sidebar_below .ad-slot__label {
  align-self: flex-start;
}
.ad-slot--archive_top .ad-slot__inner {
  min-height: 250px;
  justify-content: center;
}

/* Sidebar slots — no padding/border so 300xN ads fit a 300px sidebar */
.ad-slot--sidebar_top,
.ad-slot--sidebar_below {
  padding: 8px 0;
  margin: 0;
  text-align: left;
  background: transparent;
  border: none;
}
.ad-slot--sidebar_top .ad-slot__label,
.ad-slot--sidebar_below .ad-slot__label { padding: 0 4px; }


/* Archive inline slot defaults. In category grids it is wrapped by .card--ad
   and behaves like a catalogue card. */
.ad-slot--archive_inline {
  margin: 24px 0 32px;
  min-height: 280px;
}
.ad-slot--archive_inline .ad-slot__inner {
  min-height: 250px;
  justify-content: center;
}
.card--ad .ad-slot--archive_inline {
  margin: 0;
  min-height: 0;
}
.card--ad .ad-slot--archive_inline .ad-slot__inner {
  min-height: 220px;
}

/* Empty placeholders — visible only to logged-in admins */
.ad-slot--empty {
  background: rgba(167,139,250,0.06);
  border: 2px dashed rgba(167,139,250,0.5);
  border-radius: var(--radius-md);
  padding: 14px;
  margin: 16px 0;
  text-align: center;
  width: 100%;
  box-sizing: border-box;
}
.ad-slot__placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.ad-slot__placeholder-name {
  font-family: var(--f-mono);
  font-size: 12px;
  letter-spacing: 0.05em;
  color: rgb(124,58,237);
  font-weight: 600;
  text-transform: uppercase;
}
.ad-slot__placeholder-link {
  font-size: 13px;
  color: rgb(124,58,237);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.ad-slot__placeholder-link:hover { color: rgb(91,33,182); }
.ad-slot__placeholder-hint {
  font-size: 11px;
  color: var(--c-ink-faint);
  font-style: italic;
}


/* ---- Footer ---- */
.site-footer {
  border-top: 1px solid var(--c-line);
  padding: 48px 0;
  margin-top: 80px;
  background: var(--c-bg);
}
.site-footer__inner {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 64px;
}
.site-footer__brand .logo { margin-bottom: 16px; }
.site-footer__tagline {
  font-size: 13px;
  color: var(--c-ink-soft);
  line-height: 1.6;
  max-width: 32ch;
}
.site-footer__cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}
.footer-col h4 {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--c-ink-faint);
  margin-bottom: 16px;
  font-weight: 500;
}
.footer-col a {
  display: block;
  font-size: 13px;
  color: var(--c-ink-soft);
  padding: 4px 0;
  transition: color .15s ease;
}
.footer-col a:hover { color: var(--c-ink); }
.site-footer__bottom {
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid var(--c-line);
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--c-ink-faint);
}


/* ---- Static pages (entry-content) ---- */
.entry-content {
  max-width: 70ch;
  font-size: 16px;
  line-height: 1.7;
  color: var(--c-ink-soft);
}
.entry-content > * + * { margin-top: 1em; }
.entry-content h2 {
  font-family: var(--f-display);
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--c-ink);
  margin-top: 1.6em;
  margin-bottom: 0.4em;
  line-height: 1.2;
}
.entry-content h3 {
  font-family: var(--f-display);
  font-size: 22px;
  font-weight: 600;
  color: var(--c-ink);
  margin-top: 1.4em;
}
.entry-content p { margin: 0.8em 0; }
.entry-content a {
  color: var(--c-accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
.entry-content a:hover { color: var(--c-accent-deep); }
.entry-content ul, .entry-content ol {
  padding-left: 1.5em;
  margin: 0.8em 0;
}
.entry-content li { margin: 0.3em 0; }
.entry-content blockquote {
  border-left: 3px solid var(--c-accent);
  padding-left: 16px;
  margin: 1.2em 0;
  font-style: italic;
  color: var(--c-ink);
}
.entry-content code {
  font-family: var(--f-mono);
  font-size: 0.9em;
  background: var(--c-surface);
  padding: 2px 6px;
  border-radius: 4px;
}
.entry-content img {
  border-radius: var(--radius-md);
  margin: 1em 0;
}


/* ---- Archive description (SEO text, below grid) ---- */
.archive-description {
  max-width: 75ch;
  margin: 64px auto 32px;
  padding: 32px 0 0;
  border-top: 1px solid var(--c-line);
  font-size: 14px;
  line-height: 1.65;
  color: var(--c-ink-soft);
}
.archive-description p { margin: 0 0 1em; }
.archive-description p:last-child { margin-bottom: 0; }
.archive-description strong { color: var(--c-ink); font-weight: 600; }
.archive-description a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}


/* ---- Single catalogue page ---- */
.catalogue-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 8px 0 20px;
  border-bottom: 1px solid var(--c-line);
  flex-wrap: wrap;
}
.catalogue-hero__main { flex: 1; min-width: 0; }

.retailer-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--f-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 500;
  margin-bottom: 16px;
}
.retailer-badge--live { color: var(--c-success); }
.retailer-badge--expired { color: var(--c-ink-faint); }
.retailer-badge__dot {
  width: 8px; height: 8px;
  background: currentColor;
  border-radius: 50%;
  animation: pulse 2s ease-in-out infinite; transform-origin: center;
}

.catalogue-title {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: clamp(28px, 4vw, 40px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin-bottom: 16px;
  max-width: 22ch;
}

.catalogue-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 8px;
}
.meta-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--c-ink-soft);
}
.meta-item svg { color: var(--c-ink-faint); flex-shrink: 0; }
.meta-item strong { color: var(--c-ink); font-weight: 600; }
.meta-item--accent, .meta-item--accent strong { color: var(--c-accent); }
.meta-item--expired { color: var(--c-ink-faint); }

.badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  font-family: var(--f-mono);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.badge--live    { background: color-mix(in srgb, var(--c-success) 12%, transparent); color: var(--c-success); }
.badge--expiring{ background: color-mix(in srgb, var(--c-accent) 12%, transparent);  color: var(--c-accent); }
.badge--expired { background: var(--c-line); color: var(--c-ink-faint); }


/* ---- PEG gallery integration ---- */
.entry-content--gallery {
  max-width: none;
  margin: 8px 0 12px;
  line-height: 1;
}
.entry-content .peg-modern-wrapper,
.entry-content .peg-modern,
.entry-content .peg-gallery {
  margin: 8px 0;
  text-align: center;
}
.entry-content .peg-modern-wrapper .peg-image-container {
  width: 100%;
  max-width: min(100%, var(--peg-image-width, 100%));
  aspect-ratio: var(--peg-image-ratio, auto);
  margin-left: auto;
  margin-right: auto;
  line-height: 0;
}
.entry-content .peg-modern-wrapper .peg-lightbox-trigger {
  display: block;
  width: 100%;
  max-width: 100%;
  aspect-ratio: var(--peg-image-ratio, auto);
  line-height: 0;
}
.entry-content .peg-modern-wrapper img,
.entry-content .peg-modern img,
.entry-content .peg-gallery img {
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: var(--peg-image-ratio, auto);
  object-fit: contain;
  margin: 0 auto;
  display: block;
}
@media (max-width: 720px) {
  .entry-content--gallery img { border-radius: var(--radius-sm); }
}

.entry-content--prose {
  max-width: 70ch;
  margin: 16px 0 24px;
  font-size: 15px;
  line-height: 1.65;
  color: var(--c-ink-soft);
}
.entry-content--prose p { margin: 0 0 1em; }
.entry-content--prose strong { color: var(--c-ink); }
.entry-content--prose a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}


/* ---- Related (Other retailers this week) ---- */
.related { margin-top: 64px; }
.related .catalog-grid { margin-top: 24px; }


/* ---- Sidebar list (other current catalogues) ---- */
.sidebar-list {
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-md);
  padding: 20px;
}
.sidebar-list__title {
  font-family: var(--f-display);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-bottom: 16px;
  color: var(--c-ink);
}
.sidebar-list__items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sidebar-list__items li { margin: 0; }
.sidebar-list__items a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px;
  border-radius: 8px;
  transition: background .15s ease;
}
.sidebar-list__items a:hover { background: var(--c-bg); }
.sidebar-list__thumb {
  width: 40px;
  height: 54px;
  border-radius: 4px;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
}
.sidebar-list__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sidebar-list__info { flex: 1; min-width: 0; }
.sidebar-list__retailer {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--c-ink-faint);
  font-weight: 500;
  margin-bottom: 2px;
}
.sidebar-list__date {
  font-size: 13px;
  font-weight: 500;
  color: var(--c-ink);
  line-height: 1.3;
}


/* ---- WP pagination ---- */
.pagination,
nav.navigation.pagination {
  display: flex;
  justify-content: center;
  margin: 48px 0;
}
.pagination .nav-links,
.navigation.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.pagination .page-numbers,
.navigation.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 14px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  color: var(--c-ink);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  transition: all .15s ease;
}
.pagination .page-numbers:hover {
  border-color: var(--c-ink);
  transform: translateY(-1px);
  box-shadow: var(--shadow-sm);
}
.pagination .page-numbers.current {
  background: var(--c-ink);
  color: var(--c-bg);
  border-color: var(--c-ink);
}
.pagination .page-numbers.dots {
  border: none;
  background: none;
  color: var(--c-ink-faint);
}
.pagination .page-numbers.dots:hover {
  border: none; background: none; transform: none; box-shadow: none;
}
.pagination .prev, .pagination .next { font-weight: 600; }


/* ---- PEG pagination (plugin) ---- */
.peg-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 6px;
  padding: 16px 0;
  margin: 16px 0;
}
.peg-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  color: var(--c-ink);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  transition: all .15s ease;
  cursor: pointer;
  user-select: none;
}
.peg-link:hover {
  border-color: var(--c-ink);
  transform: translateY(-1px);
  box-shadow: var(--shadow-sm);
}
.peg-link.peg-active {
  background: var(--c-ink);
  color: var(--c-bg);
  border-color: var(--c-ink);
  cursor: default;
}
.peg-link.peg-active:hover { transform: none; box-shadow: none; }
.peg-link.peg-disabled { opacity: 0.35; cursor: not-allowed; }
.peg-link.peg-disabled:hover {
  border-color: var(--c-line); transform: none; box-shadow: none;
}
.peg-link.peg-prev,
.peg-link.peg-next {
  width: 40px;
  padding: 0;
  font-size: 18px;
  font-weight: 400;
}
.peg-link.peg-jump-last {
  background: var(--c-accent);
  color: var(--c-bg);
  border-color: var(--c-accent);
  font-weight: 600;
}
.peg-link.peg-jump-last:hover {
  background: var(--c-accent-deep);
  border-color: var(--c-accent-deep);
}
.peg-ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 40px;
  color: var(--c-ink-faint);
}
.peg-page-of {
  margin-left: 8px;
  font-size: 12px;
  color: var(--c-ink-faint);
  font-family: var(--f-mono);
}
@media (max-width: 480px) {
  .peg-pagination { gap: 4px; padding: 12px 0; }
  .peg-link { min-width: 36px; height: 36px; padding: 0 10px; font-size: 13px; }
  .peg-link.peg-prev, .peg-link.peg-next { width: 36px; padding: 0; }
}


/* ---- 404 page ---- */
.error-404 { padding: 96px 0; text-align: center; }
.error-404__code {
  font-family: var(--f-display);
  font-size: clamp(96px, 18vw, 200px);
  font-weight: 600;
  letter-spacing: -0.05em;
  color: var(--c-accent);
  line-height: 0.9;
  margin-bottom: 24px;
}
.error-404__title {
  font-family: var(--f-display);
  font-size: 32px;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin-bottom: 16px;
}
.error-404__desc {
  font-size: 17px;
  color: var(--c-ink-soft);
  max-width: 50ch;
  margin: 0 auto 32px;
}


/* ---- Search results ---- */
.search-results-list { list-style: none; margin-top: 32px; }
.search-results-list li {
  padding: 24px 0;
  border-bottom: 1px solid var(--c-line);
}
.search-results-list h2 {
  font-family: var(--f-display);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-bottom: 8px;
}
.search-results-list h2 a { color: var(--c-ink); transition: color .15s ease; }
.search-results-list h2 a:hover { color: var(--c-accent); }
.search-results-list .meta {
  font-size: 12px;
  color: var(--c-ink-faint);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 6px;
}


/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001s !important;
    transition-duration: 0.001s !important;
  }
  html { scroll-behavior: auto; }
}


/* ---- Responsive ---- */
@media (max-width: 720px) {
  .home-section { margin: 48px 0; }
  .home-section--first { margin-top: 24px; }
  .site-footer__inner { grid-template-columns: 1fr; gap: 32px; }
  .site-footer__cols { grid-template-columns: repeat(2, 1fr); gap: 24px; }
  .site-footer__bottom { flex-direction: column; gap: 8px; }
}

/* Mobile ad slot tightening — fixed-width network ads can overflow on
   narrow viewports; keep 300px AdSense units intact and fit other media. */
@media (max-width: 480px) {
  .ad-slot,
  .ad-slot--archive_top,
  .ad-slot--home_billboard,
  .ad-slot--sidebar_top,
  .ad-slot--sidebar_below {
    padding: 8px 0;
    text-align: left;
    align-items: flex-start;
  }
  .ad-slot__label { align-self: flex-start !important; padding: 0 4px; }
  .ad-slot__inner {
    width: 100%;
    overflow: hidden;
    justify-content: center !important;
    align-items: center !important;
  }
  .ad-slot * {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .ad-slot ins,
  .ad-slot ins.adsbygoogle,
  .ad-slot iframe {
    max-width: 100% !important;
    display: block;
    margin: 0 auto !important;
  }
  .ad-slot img {
    width: 100% !important;
    height: auto;
    display: block;
    margin: 0 !important;
  }
}

/* ---- Managed ad delivery + CLS guards (0.7.6) ---- */
.ad-slot--home_billboard,
.ad-slot--archive_top {
  min-height: 282px;
}
.ad-slot--home_billboard .ad-slot__inner,
.ad-slot--archive_top .ad-slot__inner,
.ad-slot--responsive .ad-slot__inner {
  display: block;
  width: 100%;
  min-height: 250px;
}
.ad-slot--rectangle .ad-slot__inner,
.card--ad .ad-slot__inner {
  min-height: 250px;
}
.ad-slot--skyscraper .ad-slot__inner {
  min-height: 600px;
}
.card--ad .cover--ad {
  min-height: 0;
}
.card--ad .ad-slot--rectangle,
.card--ad .ad-slot--home_inline,
.card--ad .ad-slot--archive_inline {
  height: 100%;
}
.ad-slot ins.adsbygoogle,
.ad-slot .catalogue-adsense {
  margin-left: auto;
  margin-right: auto;
  max-width: 100% !important;
  box-sizing: border-box;
}
.ad-slot--responsive ins.adsbygoogle,
.ad-slot--responsive .catalogue-adsense--responsive {
  display: block !important;
  width: 100% !important;
  min-width: 250px;
  min-height: 90px;
  height: auto !important;
}
.ad-slot--rectangle ins.adsbygoogle,
.ad-slot--rectangle .catalogue-adsense--rectangle {
  width: 300px !important;
  height: 250px !important;
  max-width: 100% !important;
}
.ad-slot--skyscraper ins.adsbygoogle,
.ad-slot--skyscraper .catalogue-adsense--skyscraper {
  width: 300px !important;
  height: 600px !important;
  max-width: 100% !important;
}
.ad-slot iframe {
  max-width: 100% !important;
}
.ad-slot--rectangle iframe {
  width: 300px !important;
  max-width: 100% !important;
}
@media (max-width: 480px) {
  .ad-slot--responsive .ad-slot__inner {
    min-height: 120px;
  }
}
@media (max-width: 360px) {
  .ad-slot--rectangle ins.adsbygoogle,
  .ad-slot--rectangle .catalogue-adsense--rectangle {
    width: 100% !important;
    height: 250px !important;
  }
}

/* Accessibility cleanup (0.7.11): valid footer lists without extra heading levels. */
.footer-col__title {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--c-ink-soft);
  margin-bottom: 16px;
  font-weight: 600;
}
.footer-col__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.footer-col__list li {
  margin: 0;
  padding: 0;
}
.footer-col h4 {
  color: var(--c-ink-soft);
}
