/* Firmament Works — design-systeem "de procesbundel" (richting B, gekozen 8 sep 2026).
   Eén familie (Atkinson Hyperlegible Next, zelf gehost; gekozen 8 sep), vaste rem-schaal, warm papier / archiefgroen als enig accent,
   licht en donker apart gecomponeerd. Tokens hieronder zijn de bron; DESIGN.md is de export. */

@font-face { font-family: "Atkinson Hyperlegible Next"; src: url("fonts/atkinson-latin.woff2") format("woff2"); font-weight: 200 800; font-display: swap; }

:root {
  color-scheme: light dark;
  --font: "Atkinson Hyperlegible Next", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  /* papier */
  --grond: oklch(97.5% 0.006 80);
  --vlak: oklch(100% 0 0);
  --vlak-2: oklch(95.5% 0.008 80);
  --tekst: oklch(21% 0.012 60);
  --tekst-zacht: oklch(47% 0.015 60);
  --lijn: oklch(88% 0.01 80);
  --lijn-sterk: oklch(72% 0.014 80);
  /* archiefgroen: actie, selectie, eigen kant */
  --accent: oklch(45% 0.11 160);
  --accent-vlak: oklch(94% 0.03 160);
  --accent-tekst: oklch(99% 0 0);
  --eigen: oklch(96% 0.02 160);
  /* status */
  --fout: oklch(48% 0.16 28);
  --fout-vlak: oklch(95% 0.03 28);
  --let-op: oklch(72% 0.14 85);
  --focus: oklch(45% 0.11 160);
  --selectie: oklch(90% 0.05 160);
  /* maten */
  --radius: 6px;
  --radius-klein: 3px;
  --schaduw: 0 1px 2px oklch(20% 0.01 60 / .08), 0 6px 18px -8px oklch(20% 0.01 60 / .18);
}
html[data-theme="donker"] { --grond: oklch(17% 0.008 60); --vlak: oklch(21% 0.009 60); --vlak-2: oklch(24% 0.009 60); --tekst: oklch(92% 0.008 80); --tekst-zacht: oklch(66% 0.012 80); --lijn: oklch(30% 0.01 60); --lijn-sterk: oklch(44% 0.012 60); --accent: oklch(74% 0.1 160); --accent-vlak: oklch(27% 0.03 160); --accent-tekst: oklch(16% 0.02 160); --eigen: oklch(24% 0.02 160); --fout: oklch(72% 0.13 28); --fout-vlak: oklch(26% 0.04 28); --focus: oklch(74% 0.1 160); --selectie: oklch(36% 0.06 160); --schaduw: 0 1px 2px oklch(0% 0 0 / .4), 0 6px 18px -8px oklch(0% 0 0 / .6); }
@media (prefers-color-scheme: dark) {
  html:not([data-theme="licht"]) { --grond: oklch(17% 0.008 60); --vlak: oklch(21% 0.009 60); --vlak-2: oklch(24% 0.009 60); --tekst: oklch(92% 0.008 80); --tekst-zacht: oklch(66% 0.012 80); --lijn: oklch(30% 0.01 60); --lijn-sterk: oklch(44% 0.012 60); --accent: oklch(74% 0.1 160); --accent-vlak: oklch(27% 0.03 160); --accent-tekst: oklch(16% 0.02 160); --eigen: oklch(24% 0.02 160); --fout: oklch(72% 0.13 28); --fout-vlak: oklch(26% 0.04 28); --focus: oklch(74% 0.1 160); --selectie: oklch(36% 0.06 160); --schaduw: 0 1px 2px oklch(0% 0 0 / .4), 0 6px 18px -8px oklch(0% 0 0 / .6); }
}

/* --- basis --- */
* { box-sizing: border-box; }
html { font-family: var(--font); font-size: 100%; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--grond); color: var(--tekst); line-height: 1.5; font-size: .9375rem; }
a { color: var(--accent); text-underline-offset: .15em; text-decoration-thickness: 1px; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
::selection { background: var(--selectie); }
input, button, select, textarea { font: inherit; color: inherit; }
.tab, .cijfers { font-variant-numeric: tabular-nums; }

/* type-rollen (vaste rem-schaal, verhouding ~1.2) */
h1 { font-size: 1.1875rem; font-weight: 700; letter-spacing: -.015em; margin: 0 0 1rem; }
h2 { font-size: 1rem; font-weight: 700; margin: 1.5rem 0 .5rem; }
.meta { font-size: .8125rem; color: var(--tekst-zacht); }
.klein { font-size: .8125rem; color: var(--tekst-zacht); }

/* --- kop (titelbalk met hoofdmenu) --- */
.kop { display: flex; align-items: center; gap: 1.375rem; padding: 0 1.5rem; height: 3rem; border-bottom: 1px solid var(--lijn); background: var(--vlak); }
.kop .naam { font-weight: 700; font-size: .875rem; color: var(--tekst); text-decoration: none; white-space: nowrap; }
.kop nav { display: flex; gap: .125rem; overflow: auto; }
.kop nav a { color: var(--tekst-zacht); text-decoration: none; font-size: .84375rem; padding: .375rem .5625rem; white-space: nowrap; border-radius: var(--radius-klein); }
.kop nav a:hover { color: var(--tekst); background: var(--vlak-2); }
.kop nav a[aria-current="page"] { color: var(--tekst); font-weight: 600; box-shadow: inset 0 -2px 0 var(--accent); border-radius: 0; }
.kop .rechts { margin-left: auto; display: flex; gap: .75rem; align-items: center; }
@media (max-width: 52rem) { .kop { padding: 0 .875rem; gap: .875rem; } .kop nav { display: none; } }

/* --- formulieren --- */
.veld { margin: 0 0 .875rem; }
.veld label, label { display: block; font-size: .8125rem; color: var(--tekst-zacht); margin-bottom: .3125rem; }
input[type=text], input[type=password], input[type=email], input[type=number], input[type=search], textarea, select {
  width: 100%; padding: .5625rem .6875rem; border: 1px solid var(--lijn-sterk); border-radius: var(--radius); background: var(--grond); color: var(--tekst);
}
input:focus-visible, textarea:focus-visible, select:focus-visible { outline-offset: 0; border-color: var(--focus); }
input::placeholder { color: var(--tekst-zacht); opacity: .7; }
.entree input::placeholder { color: transparent; }  /* label staat al boven het veld */
.veld-fout, .fout { color: var(--fout); font-size: .8125rem; }
.fout { background: var(--fout-vlak); border-radius: var(--radius); padding: .625rem .8125rem; margin: 0 0 1rem; }
.fout p { margin: 0; }
ul.errorlist { list-style: none; padding: 0; margin: .25rem 0 0; color: var(--fout); font-size: .8125rem; }

.knop { display: inline-block; font-weight: 600; cursor: pointer; padding: .625rem 1rem; border-radius: var(--radius); color: var(--tekst); background: var(--vlak); border: 1px solid var(--lijn-sterk); text-decoration: none; text-align: center; transition: background-color .15s, border-color .15s, transform .1s; }
.knop:hover { border-color: var(--tekst-zacht); background: var(--vlak-2); }
.knop:active { transform: translateY(1px); }
.knop--primair { color: var(--accent-tekst); background: var(--accent); border-color: var(--accent); }
.knop--primair:hover { filter: brightness(1.06); background: var(--accent); }
.knop--breed { width: 100%; }
.knop[disabled], .knop[aria-disabled="true"] { opacity: .5; cursor: default; }
.knop--laden { position: relative; color: transparent; }
.knop--laden::after { content: ""; position: absolute; inset: 0; margin: auto; width: 1rem; height: 1rem; border: 2px solid var(--accent-tekst); border-right-color: transparent; border-radius: 50%; animation: draai .7s linear infinite; }
@keyframes draai { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .knop, .knop--laden::after { transition: none; animation: none; } }

.chip { display: inline-block; font-size: .75rem; color: var(--accent); border: 1px solid var(--accent); border-radius: var(--radius-klein); padding: 0 .4375rem; line-height: 1.4; }
.meldingen { list-style: none; margin: 0 0 1rem; padding: .625rem .8125rem; border: 1px solid var(--lijn); border-radius: var(--radius); background: var(--vlak); font-size: .875rem; }
.meldingen li + li { margin-top: .375rem; }
.leeg { color: var(--tekst-zacht); padding: 2rem 0; }

/* --- entree (login en accountpagina's): foto links, paneel rechts --- */
.entree-raster { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(22rem, 1fr); min-height: 100svh; }
.entree-foto { margin: 0; position: relative; overflow: hidden; background: var(--vlak-2); }
.entree-foto img { display: block; width: 100%; height: 100%; object-fit: cover; }
.entree-paneel { display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.5rem; border-left: 1px solid var(--lijn); background: var(--vlak); }
.entree-inhoud { width: 100%; max-width: 21rem; }
.entree h1 { font-size: 1.25rem; margin-bottom: 1.25rem; }
.voet { margin-top: 2.5rem; font-size: .8125rem; color: var(--tekst-zacht); }
.voet a { color: inherit; }
@media (max-width: 56rem), (orientation: portrait) {
  .entree-raster { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .entree-foto { height: clamp(11rem, 36svh, 22rem); }
  .entree-paneel { border-left: 0; border-top: 1px solid var(--lijn); align-items: flex-start; padding: 2rem 1.25rem max(2rem, env(safe-area-inset-bottom)); }
  .entree-inhoud { max-width: 26rem; margin: 0 auto; }
}

/* --- gewone pagina's --- */
.pagina { max-width: 46rem; margin: 0 auto; padding: 1.75rem 1.5rem 4rem; }
@media (max-width: 52rem) { .pagina { padding: 1.25rem .875rem 3rem; } }
.kaart { background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--radius); padding: 1rem 1.125rem; }

/* allauth-standaardpagina's (2FA, wachtwoord) binnen hetzelfde paneel */
.entree form p { margin: 0 0 .875rem; }
.entree form > button, .entree form > p > button { margin-top: .5rem; }
.entree hr { border: 0; border-top: 1px solid var(--lijn); margin: 1.25rem 0; }
.entree table { border-collapse: collapse; width: 100%; font-size: .875rem; }
.entree td, .entree th { text-align: left; padding: .4rem 0; border-bottom: 1px solid var(--lijn); }
.entree code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .9em; }
.entree button:not(.knop) { font-weight: 600; cursor: pointer; padding: .5625rem .875rem; border-radius: var(--radius); color: var(--accent-tekst); background: var(--accent); border: 1px solid var(--accent); }
