/* ============================================================
   ezelsbrug.nl — design-tokens
   ------------------------------------------------------------
   Dit blok is de plek om het hele uiterlijk van de site bij te
   sturen. Verander een waarde hier en het werkt overal door.

   Kleur: elk vak (categorie) krijgt automatisch een eigen
   accentkleur. Dat gebeurt door een "hue" (kleurtoon, 0-360) die
   per pagina wordt meegegeven via --accent-hue (zie base.njk).
   Hoe FEL of DONKER die kleur wordt, bepaal je hieronder met
   --accent-sat (verzadiging) en --accent-light (helderheid).
   Wil je bijvoorbeeld alle kleuren rustiger/pasteller? Verlaag
   --accent-sat. Donkerder voor betere leesbaarheid? Verlaag
   --accent-light. De paginaAchtergrond krijgt zelf ook een hele
   lichte wash van diezelfde vak-kleur (--color-accent-soft, zie
   de body-regel verderop) — wil je dat subtieler/sterker? Pas het
   lightness-percentage (94%) bij --color-accent-soft aan.
   ============================================================ */
:root {
  /* --- Typografie --- */
  --font-heading: "Poppins", system-ui, -apple-system, sans-serif; /* fris, geometrisch, niet kinderachtig */
  --font-body: "Inter", system-ui, -apple-system, sans-serif;      /* rustig en goed leesbaar, ook lange teksten */
  --text-base-size: 1.0625rem;   /* iets groter dan de meeste sites: leesbaar voor alle leeftijden */
  --line-height-body: 1.65;
  --measure: 68ch;               /* max. regellengte voor leesbare tekst */

  /* --- Basiskleuren (niet vak-gebonden) --- */
  --color-surface: #ffffff;
  --color-surface-muted: #f6f3ec;
  --color-text: #22262b;
  --color-text-muted: #5b6470;
  --color-border: #e7e2d8;

  /* --- Accentkleur: automatisch per vak, hier bij te sturen --- */
  --accent-hue: 32;               /* wordt per pagina overschreven, dit is de fallback */
  --accent-sat: 68%;              /* verzadiging: lager = rustiger/pasteller */
  --accent-light: 42%;            /* helderheid: lager = donkerder, beter contrast */
  --color-accent: hsl(var(--accent-hue) var(--accent-sat) var(--accent-light));
  --color-accent-soft: hsl(var(--accent-hue) var(--accent-sat) 94%);
  --color-accent-contrast: #ffffff;

  /* --- Vorm & ruimte --- */
  --radius-sm: 8px;
  --radius-md: 14px;
  --space-1: 0.5rem;
  --space-2: 1rem;
  --space-3: 1.5rem;
  --space-4: 2.5rem;
  --shadow-card: 0 1px 2px rgba(20, 20, 10, 0.04), 0 4px 16px rgba(20, 20, 10, 0.05);
}

/* --accent-hue wordt per pagina overschreven via een inline style op <body>
   (zie base.njk). --color-accent zelf staat hierboven alleen op :root
   gedefinieerd; een var()-verwijzing binnen een custom property wordt
   ge-resolved op het element waar die property gedeclareerd is, niet op het
   element waar hij later gebruikt wordt — dus zonder deze regel blijft
   --color-accent overal de :root-fallback tonen, ongeacht de hue van het
   vak. Door --color-accent hier op body opnieuw te declareren, wordt hij
   opnieuw berekend mét body's eigen --accent-hue, en die versie erft
   correct door naar de rest van de pagina. */
body {
  --color-accent: hsl(var(--accent-hue) var(--accent-sat) var(--accent-light));
  --color-accent-soft: hsl(var(--accent-hue) var(--accent-sat) 94%);
}

/* ============================================================
   Basis
   ============================================================ */
* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--color-accent-soft); /* lichte, per-vak getinte achtergrond */
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: var(--text-base-size);
  line-height: var(--line-height-body);
}

/* Prettige, opvallende tekstselectie — belangrijk, want knippen/plakken
   van ezelsbruggetjes is een kernfunctie van de site. Let op: de volle
   --color-accent (niet de -soft variant), anders valt de selectie precies
   weg tegen de paginabachtergrond, die zelf ook --color-accent-soft is. */
::selection { background: var(--color-accent); color: var(--color-accent-contrast); }

img { max-width: 100%; height: auto; border-radius: var(--radius-sm); }

a { color: var(--color-accent); text-decoration-thickness: 1.5px; }
a:hover { text-decoration-thickness: 2px; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }

h1, h2, h3 {
  font-family: var(--font-heading);
  line-height: 1.25;
  margin: 0 0 var(--space-2);
}
h1 { font-size: 1.9rem; }
h2 { font-size: 1.2rem; }
h3 { font-size: 1.05rem; }

/* ============================================================
   Header
   ============================================================ */
.site-header {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.15rem;
  padding: var(--space-4) var(--space-3) var(--space-3);
  border-bottom: 1px solid var(--color-border);
}
.site-header .logo {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: clamp(1.4rem, 6vw, 2rem);
  text-decoration: none;
  color: var(--color-text);
}
.site-header .tagline {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 0.95rem;
}
/* ============================================================
   Layout
   ============================================================ */
.layout {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-3);
  max-width: 1080px;
  margin: 0 auto;
}
@media (min-width: 800px) {
  .layout { flex-direction: row; align-items: flex-start; padding: var(--space-4) var(--space-3); }
  main { flex: 2.2; min-width: 0; }
  .sidebar { flex: 1; min-width: 300px; position: sticky; top: var(--space-3); }
}

.breadcrumb { margin: 0 0 var(--space-3); }
.breadcrumb a {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--color-accent-contrast);
  background: var(--color-accent);
  padding: 0.5rem 1.3rem;
  border-radius: var(--radius-sm);
  text-decoration: none;
  box-shadow: var(--shadow-card);
}
.breadcrumb a:hover { text-decoration: underline; }

.page-title { color: var(--color-text); max-width: var(--measure); }

/* Titel als "button" (zelfde pil-stijl als de vak-badge hierboven), voor
   pagina's zonder vak/catSlug — bijv. /categorieen/ en /insturen/ */
.title-badge {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--color-accent-contrast);
  background: var(--color-accent);
  padding: 0.5rem 1.3rem;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-card);
}

/* De content zelf: ruime regellengte, comfortabel om te lezen én te selecteren */
.content { max-width: var(--measure); }
.content p, .content ul, .content ol { margin: 0 0 var(--space-2); }
.content h2, .content h3, .content h4, .content h5, .content h6 {
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-accent);
  margin: var(--space-3) 0 0.15rem;
}
.content strong { color: var(--color-text); }

/* Losse kopjes als "Uitleg:" (een paragraaf die alleen uit vet bestaat):
   ruimte erboven (afstand tot wat ervoor stond), krap eronder (sluit
   direct aan op de bijbehorende tekst). */
.content p:has(> strong:only-child) {
  margin-top: var(--space-3);
  margin-bottom: 0.15rem;
}

/* Ingesloten YouTube-video (voorheen een kale, onaanklikbare link) */
.video-embed {
  position: relative;
  width: 100%;
  max-width: var(--measure);
  aspect-ratio: 16 / 9;
  margin: var(--space-3) 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-surface-muted);
  box-shadow: var(--shadow-card);
}
.video-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* Plaatje + onderschrift (voorheen naast elkaar geplakt door de conversie) */
.post-image {
  margin: var(--space-3) 0;
  text-align: center;
}
.post-image img {
  display: block;
  margin: 0 auto;
  max-width: 100%;
}
.post-image figcaption {
  margin-top: 0.5rem;
  font-size: 0.9rem;
  font-style: italic;
  color: var(--color-text-muted);
}

/* ============================================================
   Categorie-overzicht (post-list)
   ============================================================ */
.post-list { list-style: none; padding: 0; margin: var(--space-2) 0 0; display: grid; gap: var(--space-1); }
.post-list li {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}
.post-list a {
  display: block;
  padding: 0.75rem 1rem;
  text-decoration: none;
  color: var(--color-text);
  font-weight: 500;
}
.post-list a:hover { color: var(--color-accent); }

/* Categorieën-overzicht (/categorieen/): zelfde post-list, plus aantal rechts */
.vakken-overzicht a { display: flex; justify-content: space-between; gap: 0.5rem; }
.vakken-overzicht a span { color: var(--color-text-muted); font-variant-numeric: tabular-nums; font-weight: 400; }

/* ============================================================
   Gerelateerd
   ============================================================ */
.related {
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
  max-width: var(--measure);
}
.related h2 { text-transform: none; font-size: 1.1rem; }
.related ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.4rem; }
.related a { text-decoration: none; font-weight: 500; }
.related a::before { content: "→ "; color: var(--color-accent); }

/* ============================================================
   Sidebar
   ============================================================ */
.sidebar .widget {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-2);
  margin-bottom: var(--space-2);
}
.sidebar h2, .sidebar summary {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-muted);
}
/* Alleen <summary> (Menu/Vakken) is daadwerkelijk klikbaar/uitklapbaar —
   gewone h2-koppen (Uitgelicht, Zoeken) zijn dat niet en verdienen dus ook
   geen pointer-cursor, anders lijkt hoveren er ten onrechte iets te doen. */
.sidebar summary { font-weight: 600; cursor: pointer; }

/* De "Uitgelicht"-widget mag opvallender zijn dan de rest van de sidebar */
.widget--uitgelicht h2 {
  font-size: 1.05rem;
  font-family: var(--font-heading);
  color: var(--color-accent);
  letter-spacing: 0.02em;
}

/* "Vakken" krijgt dezelfde stijl als de "Uitgelicht"-kop hierboven */
.widget--vakken > summary {
  font-size: 1.05rem;
  font-family: var(--font-heading);
  color: var(--color-accent);
  letter-spacing: 0.02em;
}

/* "Menu" (Home/Categorieën/Insturen/About) krijgt dezelfde stijl als "Vakken" */
.widget--menu > summary {
  font-size: 1.05rem;
  font-family: var(--font-heading);
  color: var(--color-accent);
  letter-spacing: 0.02em;
}

/* "Zoeken"-widget: titel (🔍 + Zoeken) links uitgelijnd, zoals de andere widget-koppen */
.widget--zoeken h2 {
  font-size: 1.05rem;
  font-family: var(--font-heading);
  color: var(--color-accent);
  letter-spacing: 0.02em;
  margin: 0 0 var(--space-1);
}
.sidebar summary::-webkit-details-marker { color: var(--color-accent); }
.sidebar details[open] summary { margin-bottom: var(--space-1); }
.sidebar .category-list { margin-top: var(--space-1); }
.sidebar ul { list-style: none; padding: 0; margin: 0; }
.sidebar li + li { border-top: 1px dashed var(--color-border); }
.sidebar a {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.45rem 0;
  text-decoration: none;
  color: var(--color-text);
  font-size: 0.95rem;
}
.sidebar a:hover { color: var(--color-accent); }
.category-list span {
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
  font-size: 0.85rem;
}
.sidebar a.random-link {
  display: flex;
  justify-content: center;
  text-align: center;
  padding: 0.6rem;
  border-radius: var(--radius-sm);
  background: var(--color-accent);
  color: var(--color-accent-contrast) !important;
  text-decoration: none;
  font-weight: 600;
}

/* ============================================================
   Footer
   ============================================================ */
.site-footer {
  text-align: center;
  padding: var(--space-4) var(--space-3);
  color: var(--color-text-muted);
  font-size: 0.85rem;
}

.site-footer .disclaimer {
  max-width: 40rem;
  margin: 0 auto var(--space-2);
  font-size: 0.8rem;
  opacity: 0.85;
}

/* ============================================================
   Cookiemelding
   ============================================================ */
.cookie-banner {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--color-text);
  color: #fff;
  box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.15);
}
.cookie-banner p { margin: 0; max-width: 48rem; font-size: 0.9rem; }
.cookie-banner a { color: #fff; text-decoration: underline; }
.cookie-banner button {
  flex: none;
  border: 0;
  cursor: pointer;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 0.9rem;
  padding: 0.55rem 1.4rem;
  border-radius: 999px;
  background: var(--color-accent);
  color: var(--color-accent-contrast);
}
.cookie-banner button:hover { filter: brightness(1.08); }
.cookie-banner[hidden] { display: none; }

/* ============================================================
   Zoekpagina (Pagefind) — accentkleur meegeven aan de widget
   ============================================================ */
.pagefind-ui { --pagefind-ui-primary: var(--color-accent); --pagefind-ui-font: var(--font-body); }
