/* Puls design-tokens — vormentaal B (FT-signatuur), goedgekeurd 2026-07-08.
   Single source of truth: elk katern erft hieruit. Referentiebeeld:
   design/referentie-b-goedgekeurd-20260708.png. Wijzigingen alleen via PR. */

:root {
  /* papier & inkt */
  --papier: #FFF1E5;
  --papier-diep: #EFE3D6;
  --inkt: #33302E;
  --inkt-zacht: #66605B;
  --inkt-stil: #8C8378;
  --lijn: #C9B8A6;
  --lijn-licht: #E5D2C0;
  /* semantiek: één accent; rood bestaat alleen voor ACUUT */
  --accent: #0D7680;
  --gezond: #2E7D32;
  --aandacht: #B26B00;
  --acuut: #B3261E;
  /* type-schaal */
  --font-display: 'Playfair Display', Georgia, serif;
  --font-body: Georgia, 'Times New Roman', serif;
  --kop-1: 27px;
  --kop-2: 20px;
  --kop-3: 16px;
  --body: 14.5px;
  --klein: 13px;
  --meta: 11px;
  --colofon: 10.5px;
  /* ritme */
  --marge: 16px;
  --regel: 1.6;
}

* { box-sizing: border-box; margin: 0; }
html { background: var(--papier-diep); }
body { font-family: var(--font-body); color: var(--inkt); }

.krant { background: var(--papier); max-width: 760px; margin: 0 auto; min-height: 100vh; padding: 22px 20px 26px; border-left: 0.5px solid var(--lijn-licht); border-right: 0.5px solid var(--lijn-licht); }
.masthead { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 1px solid var(--inkt); padding-bottom: 8px; }
.masthead .naam { font-family: var(--font-display); font-weight: 800; font-size: 30px; }
.masthead .naam a { color: var(--inkt); text-decoration: none; }
.masthead .datum { font-size: var(--meta); color: var(--inkt-zacht); letter-spacing: 1px; }

.kicker { font-size: var(--meta); letter-spacing: 2px; color: var(--accent); margin: var(--marge) 0 6px; text-transform: uppercase; }
h1 { font-family: var(--font-display); font-weight: 600; font-size: var(--kop-1); line-height: 1.18; }
h2 { font-family: var(--font-display); font-weight: 600; font-size: var(--kop-2); line-height: 1.25; }
.lead { font-size: 15px; line-height: 1.65; margin-top: 9px; }
p { font-size: var(--body); line-height: var(--regel); }
.caption { font-size: var(--colofon); color: var(--inkt-stil); border-bottom: 0.5px solid var(--lijn); padding-bottom: 12px; }
.byline { font-size: var(--colofon); color: var(--inkt-stil); }

.hairline { border-top: 0.5px solid var(--lijn); }
.regel-zwaar { border-top: 1px solid var(--inkt); }

.rij { display: flex; align-items: center; padding: 3.5px 0; font-size: var(--klein); font-variant-numeric: tabular-nums; }
.rij a { color: var(--inkt); text-decoration: none; }
.rij a:hover { color: var(--accent); }
.dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; margin-right: 9px; flex: none; animation: breathe 2.8s ease-in-out infinite; }
.dot.acuut { animation: none; }

.tape-wrap { overflow: hidden; border-bottom: 0.5px solid var(--lijn); padding: 4px 0; }
.tape { display: flex; width: max-content; animation: tape 28s linear infinite; font-size: 11.5px; color: var(--inkt-zacht); font-variant-numeric: tabular-nums; white-space: nowrap; }

.colofon { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px; font-size: var(--colofon); color: var(--inkt-stil); border-top: 0.5px solid var(--lijn); margin-top: 12px; padding-top: 7px; }
.fu { animation: fadeUp .7s ease-out both; }

@keyframes tape { from { transform: translateX(0) } to { transform: translateX(-50%) } }
@keyframes draw { to { stroke-dashoffset: 0 } }
@keyframes breathe { 0%,100% { opacity: .45 } 50% { opacity: 1 } }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px) } to { opacity: 1; transform: translateY(0) } }
@keyframes drift { from { transform: translateX(0) } to { transform: translateX(-160px) } }
@keyframes bob { 0%,100% { transform: translateY(0) } 50% { transform: translateY(2.5px) } }

@media (max-width: 560px) { h1 { font-size: 24px; } }

/* ── chrome vormentaal B (cutover 2026-07-11): nav, gate, vouw, kaart, md ── */
.masthead .ondertitel { font-family: var(--font-body); font-size: 15px; color: var(--inkt-zacht); font-weight: 400; }
.katern-nav { display: flex; flex-wrap: wrap; gap: 2px 14px; padding: 6px 0; border-bottom: 0.5px solid var(--lijn); font-size: var(--meta); letter-spacing: 1.5px; text-transform: uppercase; }
.katern-nav a { color: var(--inkt-zacht); text-decoration: none; }
.katern-nav a.aan { color: var(--accent); border-bottom: 1px solid var(--accent); }
.katern-nav a:hover { color: var(--accent); }

body.pulse-locked { overflow: hidden; }
body.pulse-locked > *:not(#pulse-auth-gate) { visibility: hidden; }
#pulse-auth-gate { position: fixed; inset: 0; z-index: 99999; background: var(--papier); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 32px; font-family: var(--font-display); transition: opacity 320ms ease; }
#pulse-auth-gate.pulse-auth-fadeout { opacity: 0; pointer-events: none; }
#pulse-auth-gate .pulse-auth-nameplate { font-weight: 800; font-size: 64px; color: var(--inkt); line-height: 1; }
#pulse-auth-gate .pulse-auth-rule { width: 64px; height: 1px; background: var(--lijn); }
#pulse-auth-gate input { width: 220px; padding: 14px 18px; background: transparent; border: 1px solid var(--lijn); font-family: var(--font-body); font-size: 18px; letter-spacing: 0.2em; text-align: center; color: var(--inkt); outline: none; }
#pulse-auth-gate input:focus { border-color: var(--accent); }
#pulse-auth-gate .pulse-auth-row { display: flex; align-items: center; gap: 8px; }
#pulse-auth-gate .pulse-auth-submit { border: none; background: transparent; font-size: 24px; color: var(--accent); cursor: pointer; padding: 0 6px; line-height: 1; }

.sectie { margin-top: 4px; }
.sectie-acuut { border-left: 2px solid var(--acuut); padding-left: 12px; }
.kicker-acuut { color: var(--acuut); }
.sectie-residu { border-top: 1px solid var(--inkt); margin-top: 16px; padding-top: 4px; }
.stil { color: var(--inkt-stil); font-size: var(--klein); }
.vouw { margin-top: 12px; border-top: 0.5px solid var(--lijn); padding-top: 8px; }
.vouw summary { cursor: pointer; font-size: var(--meta); letter-spacing: 2px; color: var(--inkt-stil); text-transform: uppercase; list-style: none; }
.vouw summary::before { content: '+ '; color: var(--accent); }
.vouw[open] summary::before { content: '− '; }
.vouw > *:not(summary) { margin-top: 8px; }

.kaart { border-top: 0.5px solid var(--lijn); padding: 12px 0 10px; }
.kaart:first-child { border-top: none; }
.kaart h2 { margin-top: 4px; }
.kaart-stelling { margin-top: 5px; }
.kaart-actie { margin-top: 5px; color: var(--accent); font-size: var(--klein); }
.kaart-meta .regime-cel, .regime-cel { color: var(--accent); font-size: 11px; letter-spacing: 1px; text-transform: uppercase; margin: 0 10px; flex: none; }
.rij-naam { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rij-waarde { margin-left: auto; }
.tijd-cel { color: var(--inkt-stil); font-size: 11px; flex: none; width: 52px; text-align: right; }
.necro-rij { display: flex; align-items: baseline; gap: 10px; padding: 7px 0; text-decoration: none; color: var(--inkt); font-size: var(--klein); }
.necro-rij:hover .rij-naam { color: var(--accent); }

.md-lijst { padding-left: 18px; margin: 6px 0; }
.md-lijst li { font-size: var(--body); line-height: var(--regel); margin: 3px 0; }
.md-kop { margin-top: 12px; }
.md-quote { border-left: 2px solid var(--lijn); padding-left: 12px; margin: 8px 0; color: var(--inkt-zacht); font-size: var(--klein); line-height: var(--regel); }
.md-tabel { border-collapse: collapse; margin: 8px 0; font-size: var(--klein); font-variant-numeric: tabular-nums; width: 100%; }
.md-tabel th { text-align: left; border-bottom: 1px solid var(--inkt); font-weight: 600; padding: 3px 10px 3px 0; }
.md-tabel td { border-bottom: 0.5px solid var(--lijn-licht); padding: 3px 10px 3px 0; }
code { font-size: 12px; background: var(--papier-diep); padding: 0 3px; }
p + p { margin-top: 6px; }
