/* Gedeelde basis voor alle pagina's.
 *
 * app.css wordt als eerste geladen; de <style> in een pagina staat erna en wint
 * dus op cascade-volgorde. Zet hier alleen wat overal hetzelfde hoort te zijn.
 * Pagina-eigen layout blijft in de pagina zelf staan.
 */

:root {
  color-scheme: light;

  --blue: #2d6cdf;
  --blue-dark: #2459a8;
  --blue-bg: #f3f7ff;

  --ink: #202124;
  --ink-soft: #62666d;

  --line: #d8dce3;
  --line-soft: #e3e5e9;

  --bg: #f7f8fa;
  --surface: #ffffff;

  --danger: #a32323;
  --danger-bg: #f4e8e8;
  --danger-solid: #b42318;

  --radius: 8px;
  --radius-lg: 12px;

  /* Eén paginabreedte voor de hele app. De kop en de inhoud gebruiken dezelfde
   * waarde, anders lopen navigatie en tekst niet uit op dezelfde marge. */
  --page-width: 60rem;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: system-ui, sans-serif;
  color: var(--ink);
  background: var(--bg);
}

a { color: var(--blue); }

:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }

h1 { margin: 0 0 .35rem; font-size: 1.5rem; }
h2 { font-size: 1.08rem; }

/* --- Kop en navigatie -------------------------------------------------------
 * Wordt door app-shell.js in de body geplaatst, zodat er maar één plek is waar
 * de navigatie bestaat. Hardcopy in elke pagina zou weer uit elkaar lopen.
 */

.app-header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
}

.app-header-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem 1.5rem;
  max-width: var(--page-width);
  margin: 0 auto;
  padding: .75rem 1rem;
}

.app-nav { display: flex; flex-wrap: wrap; gap: .25rem 1.1rem; }

.app-nav a {
  padding: .1rem 0;
  font-size: .95rem;
  text-decoration: none;
  border-bottom: 2px solid transparent;
}

.app-nav a:hover { border-bottom-color: var(--line); }

.app-nav a[aria-current="page"] {
  color: var(--ink);
  font-weight: 650;
  border-bottom-color: var(--blue);
}

/* Nog niet werkende onderdelen tonen we grijs in plaats van ze weg te laten:
 * zichtbaar maar onbruikbaar is eerlijker dan een link die halverwege strandt. */
.app-nav a[aria-disabled="true"] {
  color: var(--ink-soft);
  opacity: .55;
  cursor: default;
  pointer-events: none;
}

.app-main {
  max-width: var(--page-width);
  margin: 0 auto;
  padding: 1.75rem 1rem 3rem;
}

/* --- Gedeelde onderdelen --------------------------------------------------- */

.card {
  margin-top: 1.25rem;
  padding: 1.25rem;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .04);
}

.hint, .muted { color: var(--ink-soft); font-size: .9rem; }
.hint { margin: .15rem 0 1rem; }

button {
  padding: .62rem 1.05rem;
  font-size: .95rem;
  font-weight: 650;
  border: 0;
  border-radius: var(--radius);
  background: var(--blue);
  color: #fff;
  cursor: pointer;
}

button.secondary { background: #e8edf6; color: #25324a; }
button.test { background: #8a4f08; }
button.danger { background: var(--danger-solid); }
button.compact { padding: .35rem .65rem; font-size: .82rem; }
button:disabled { background: #99a4b8; cursor: default; }

a.button-link {
  display: inline-block;
  padding: .62rem 1.05rem;
  border-radius: var(--radius);
  background: #eef3fb;
  color: var(--blue-dark);
  font-weight: 650;
  text-decoration: none;
}

.badge {
  margin-left: .5rem;
  padding: .1rem .5rem;
  border-radius: 99px;
  background: #e7f0ff;
  color: var(--blue);
  font-size: .75rem;
}

.badge.done { background: #eee; color: #666; }
