/* Beheer-App — nagebouwd op het Figma-bestand "Dashboard-Pk" met exacte
   waarden uit get_design_context (kleur/radius/schaduw/font per node),
   niet alleen van een screenshot afgelezen. Genoteerd per sectie waar een
   waarde is GEËXTRAPOLEERD (niet letterlijk uit Figma gehaald, maar
   consistent met een wél bevestigd patroon) i.p.v. letterlijk overgenomen. */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@300;400;500;600;700&family=Inter:wght@400;500;600;700&family=Manrope:wght@700&display=swap');

:root {
  /* Ingrediëntenkast — de hex-waarden die Figma zelf per node teruggeeft
     wijken op de laatste twee cijfers af van colors_and_type.css (bijv.
     spirulina #00a99d i.p.v. #00A1A1) — hier de Figma-waarde aangehouden. */
  --ik-aubergine:#610039; --ik-spirulina:#00a99d; --ik-granaatappel:#de1d66;
  --ik-olijf:#959964; --ik-sinaasappel:#fa851e; --ik-paprika:#CF6634;
  --ik-appel:#6fb737; --ik-saffraan:#F4A51C; --ik-champignon:#C9B79A;
  --ik-amandel:#e7d8c8; --ik-lychee:#F3C8D2; --ik-cream:#F4EADF; --ik-mint:#D7EDE9;
  --titel-donker: #4d1240; /* exacte kleur van dashboardkaart-titels (54:27) */

  --brand-pk:   var(--ik-spirulina);
  --brand-asft: var(--ik-sinaasappel);
  --brand-kk:   var(--ik-appel);
  --brand-wk:   var(--ik-granaatappel);

  /* Gloed-schaduw op de ringbadge-kaarten — alle 4 nu EXACT uit
     get_design_context (geen extrapolatie meer), elk apart opgevraagd:
     Aanschuiftafel (29:1118), Kinder Keuken (29:1150), Wereldkeuken
     (29:1192). Let op: de 3 waarden zijn zelf ook niet consistent met
     elkaar in Figma (andere kleur en/of alpha per kaart, geen nette
     formule) — hier dus ook niet gladgestreken.
     Participatiekeuken (4e kaart) bestaat NIET in Figma — er zijn maar
     3 keuken-kaarten getekend. Deze waarde is dus onvermijdelijk zelf
     ingevuld (zelfde vorm, spirulina-kleur, .4 alpha), niet uit Figma. */
  --gloed-pk:   0px 10px 30px 0px rgba(0,169,157,.4);      /* NIET uit Figma — bestaat niet */
  --gloed-asft: 0px 10px 30px 0px rgba(255,153,58,.4);     /* exact: 29:1118 */
  --gloed-kk:   0px 10px 30px 0px rgba(111,183,55,1);      /* exact: 29:1150 (var(--color), geen alpha) */
  --gloed-wk:   0px 10px 30px 0px rgba(222,29,102,.31);    /* exact: 29:1192 */

  --fg: var(--ik-aubergine);
  --muted: #6b7280;
  --white: #fff;
  --border: #E5E7EB;
  --card-row-bg: #f9fafb;   /* exact: team-/menu-kaartregels (46:55, 46:40) */
  /* Paginaverloop — exact: het DASHBOARD-frame (1:15): amandel op 44%
     dekking naar spirulina op 44% dekking onder 107.9157°, over wit. */
  --bg-gradient:
    linear-gradient(107.9157122213133deg, rgba(231, 216, 200, 0.44) 6.7938%, rgba(0, 169, 157, 0.44) 99.471%),
    linear-gradient(90deg, #fff 0%, #fff 100%);

  --radius-lg: 20px;  /* exact: hero/team/menu-kaarten */
  --radius-md: 12px;  /* exact: menu-regel (46:40) */
  --radius-pill: 999px;
  --shadow-card: 0px 4px 5.2px 0px rgba(0,0,0,.09);      /* exact: team-/menu-card */
  --shadow-hero: 0px 4px 10.4px 1px rgba(0,0,0,.09);     /* exact: hero-reservation-card */
  --shadow-dash: 0px 4px 6px 0px rgba(0,0,0,.03);        /* exact: dashboardkaart (54:24) */
  --shadow-doc:  4px 4px 17.4px 6px rgba(0,0,0,.09);     /* exact: document-rij (48:133) */

  --font-ui: "Barlow Condensed", system-ui, sans-serif;
  --font-body: "Inter", system-ui, sans-serif;  /* exact: beschrijvingsteksten */
  --font-datum: "Manrope", system-ui, sans-serif;  /* exact: datum op de taken-tegels (45:738) */
}

* { box-sizing: border-box; }
html, body { margin: 0; }
/* Het verloop staat op <html>, niet op <body>: dat is het canvas, en iOS
   Safari trekt juist dát vlak door in de overscroll boven- en onderaan. Met
   een losse kleur op <html> zag je daar een randje in de verkeerde tint. */
html {
  background: var(--bg-gradient); background-attachment: fixed;
  background-repeat: no-repeat; min-height: 100%;
}
body {
  font-family: var(--font-ui); background: transparent;
  color: var(--fg); line-height: 1.45; font-size: 16px; min-height: 100vh;
}
/* Koppen op schermen die niet in Figma staan (overzicht, afdelingpagina,
   lijsten). Maten uitsluitend uit het ontwerp overgenomen — optie
   "compact", met Alex afgestemd:
   h1 32px = "MENU" (46:38) · h2 25px = MENUITEM (29:1086) ·
   h3 22px = menugerecht (46:42). Kleur altijd aubergine #610039. */
/* Verbergen moet verbergen blijven: veel elementen hier hebben
   display:flex, en dat wint het van het hidden-attribuut. */
[hidden] { display: none !important; }

h1, h2, h3, h4 { font-family: var(--font-ui); font-weight: 700; margin: 0 0 10px; color: var(--fg); }
h1 { font-size: clamp(24px, 3.2vw, 32px); text-transform: uppercase; letter-spacing: 0; }
h2 { font-size: clamp(20px, 2.5vw, 25px); text-transform: uppercase; letter-spacing: 0; line-height: 1.019; }
h3 { font-size: 22px; font-weight: 600; text-transform: none; letter-spacing: 0; }
p { margin: 0 0 12px; }
a { color: var(--fg); text-decoration: none; }
a.onderlijnd { text-decoration: underline; text-underline-offset: 2px; }
img { max-width: 100%; }
ul.schoon { list-style: none; margin: 0; padding: 0; }
img.icoon { display: inline-block; vertical-align: middle; }

/* ---------- Layout ---------- */
.wrap { max-width: 1180px; margin: 0 auto; padding: 0 20px; }
main.wrap { padding-top: 28px; padding-bottom: 64px; }

/* ---------- Topbar: gecentreerd logo, MENUITEM-stijl navigatie ---------- */
header.topbar { padding: 18px 0 8px; position: relative; z-index: 40; }
.topbar-grid {
  display: none; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px;
}
.topbar-links, .topbar-rechts { display: none; gap: 22px; }
.topbar-rechts { justify-content: flex-end; }
/* MENUITEM — exact: 29:1086/29:1089: Barlow Condensed Bold 25px,
   line-height 1.019; actief item spirulina, de rest aubergine. */
.topbar-nav-item {
  font-family: var(--font-ui); font-weight: 700; text-transform: uppercase;
  font-size: clamp(16px, 1.6vw, 25px); line-height: 1.019; letter-spacing: 0;
  color: var(--fg); white-space: nowrap;
}
.topbar-nav-item.actief, .topbar-nav-item:hover { color: var(--ik-spirulina); }
.topbar-logo { display: flex; justify-content: center; }
/* Mobiel 110px (keuze van Alex — mobiel staat niet in Figma), desktop 137px:
   de exacte hoogte uit node 4:397 (356x137). */
.topbar-logo img { height: 110px; width: auto; max-width: 100%; display: block; }
/* Op smalle telefoons past 110px niet naast de hamburger: dan krimpt hij mee. */
@media (max-width: 400px) { .topbar-logo img { height: auto; max-height: 110px; } }
@media (min-width: 860px) { .topbar-logo img { height: 137px; } }
/* Mobiel: logo in het midden, hamburger rechtsboven. Dat kan sinds de
   account-widget op smalle schermen in het menu zit en niet meer rechtsboven
   zweeft. Drie kolommen, zodat het logo echt midden blijft. */
.topbar-mobiel-rij { display: grid; grid-template-columns: 20px 1fr 56px; align-items: center; }
.topbar-mobiel-rij .topbar-logo { grid-column: 2; grid-row: 1; min-width: 0; }
.topbar-mobiel-rij .hamburger { grid-column: 3; grid-row: 1; justify-self: end; }

/* ---------- Hamburger en mobiel menu ----------
   Nagebouwd van participatiekeuken.isdebesteklant.nl, met onze eigen kleuren
   (keuze van Alex: het lichte paginaverloop met aubergine tekst, geen iconen
   bij de menu-items). Maten en timing zijn die van de voorbeeldsite. */
.hamburger {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  height: 64px; width: auto; border: 0; background: transparent; cursor: pointer;
  padding: 0; position: relative; z-index: 60; color: var(--ik-aubergine);
}
.hamburger .strepen { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.hamburger .streep { display: block; height: 5px; background: currentColor; border-radius: 9999px; }
.hamburger .streep:nth-child(1), .hamburger .streep:nth-child(3) { width: 28px; transition: transform .3s; }
.hamburger .streep:nth-child(2) { width: 36px; transition: opacity .2s; }
.hamburger.open .streep:nth-child(1) { transform: translateY(11px) rotate(45deg); }
.hamburger.open .streep:nth-child(2) { opacity: 0; }
.hamburger.open .streep:nth-child(3) { transform: translateY(-11px) rotate(-45deg); }
.hamburger .knoplabel { font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: .025em; }
/* Openstaand menu: het logo verdwijnt en de hamburger wordt wit, want hij
   staat dan op het spirulina-vlak. */
body.menu-open .topbar-mobiel-rij .topbar-logo { visibility: hidden; }
.hamburger.open { color: #fff; }
.hamburger .label-open { display: none; }
.hamburger.open .label-dicht { display: none; }
.hamburger.open .label-open { display: inline; }

/* Het menu veegt van boven naar beneden open (clip-path, 500ms) over het
   hele scherm; logo en hamburger blijven erbovenop staan. */
.topbar-mobiel-rij { position: relative; z-index: 60; }
nav.hoofdnav {
  position: fixed; inset: 0; z-index: 50; display: block; margin: 0;
  /* Achtergrond — exact: Rectangle 34 (45:1090): spirulina met daarover een
     verloop van spirulina 20% naar #666 20%, van boven naar beneden. */
  background:
    linear-gradient(180deg, rgba(0, 169, 157, .2) 0%, rgba(102, 102, 102, .2) 100%),
    linear-gradient(90deg, #00a99d 0%, #00a99d 100%);
  color: #fff;
  padding: 0; overflow-y: auto;
  border-radius: 0; box-shadow: none;
  opacity: 0; pointer-events: none; clip-path: inset(0 0 100% 0);
  transition: opacity .3s ease-out, clip-path .5s ease-out;
}
nav.hoofdnav.open { opacity: 1; pointer-events: auto; clip-path: inset(0 0 0 0); }
.hoofdnav-binnen { margin: 0 auto; width: 100%; max-width: 672px; padding: 112px 20px 32px; }

/* De zoekbalk van de homepage staat ook in het menu; daar mag hij de volle
   breedte hebben. */
nav.hoofdnav .zoekbalk { max-width: none; margin-bottom: 0; }

/* Menu-items: een regel per item met een scheidingslijn erboven en een
   chevron erachter. */
.menu-lijst { margin-top: 24px; }
nav.hoofdnav .menu-lijst a {
  display: flex; align-items: center; gap: 16px; padding: 16px 8px;
  border-top: 1px solid rgba(255, 255, 255, .25);
  font-size: 20px; font-weight: 600; line-height: 1.2;
  text-transform: none; letter-spacing: 0; color: #fff;
}
nav.hoofdnav .menu-lijst a.actief { color: #fff; }
nav.hoofdnav .menu-label { flex: 1; }
nav.hoofdnav .menu-chevron { font-size: 24px; color: rgba(255, 255, 255, .7); line-height: 1; }
nav.hoofdnav #aw-slot { margin-top: 32px; }

/* De extra hamburger voor desktop staat standaard uit (op mobiel hangt de
   hamburger al in de mobiel-rij); pas vanaf 860px komt hij tevoorschijn. */
.hamburger-desktop { display: none; }

@media (min-width: 860px) {
  .topbar-mobiel-rij { display: none; }
  .topbar-grid { display: grid; }
  .topbar-links, .topbar-rechts { display: flex; align-items: center; }
  /* Hamburger óók op desktop, rechtsboven; het menu (hoofdnav) blijft het
     schuif-overlay zoals op mobiel — niet meer verbergen (Alex, 25-09-2026). */
  header.topbar { position: relative; }
  .hamburger-desktop { display: flex; position: absolute; top: 14px; right: 20px; z-index: 60; }
}

/* ---------- Kaarten ---------- */
.kaart {
  background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: 24px; margin-bottom: 18px;
}

/* ---------- Stapsgewijs formulier (evenement_formulier.html) ----------
   Zelfde interactiepatroon als het contactformulier op participatiekeuken.nl:
   één vraag per stap, met genummerde bolletjes bovenin die de voortgang tonen. */
.wizard-stappen { display: flex; justify-content: center; gap: 10px; margin-bottom: 28px; }
.wizard-stap-bol {
  width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center;
  justify-content: center; font-weight: 700; font-size: 15px; font-family: var(--font-ui);
  background: var(--card-row-bg); color: var(--muted);
}
.wizard-stap-bol.actief { background: var(--ik-aubergine); color: #fff; }
.wizard-stap-bol.gehad { background: var(--ik-spirulina); color: #fff; cursor: pointer; }
.wizard-label { color: var(--muted); font-size: 14px; margin: 0 0 4px; text-transform: uppercase; letter-spacing: .02em; }
.wizard-paneel h2 { margin: 0 0 18px; }
.wizard-acties { display: flex; justify-content: flex-end; gap: 12px; margin-top: 24px; }
.wizard-acties [data-wizard-vorige] { margin-right: auto; }

/* Aanmaakwizard op een eigen pagina (marcom_formulier.html) — nagebouwd naar
   het contactformulier op participatiekeuken.nl/new/contact: één witte kaart,
   de stapteller als ringetje rechtsboven, een grote vraag als kop en daaronder
   keuzepillen. Alle kleuren/radii komen uit het bestaande palet hierboven;
   er is geen eigen kleur bijverzonnen. */
.wizard-kaart {
  position: relative; background: var(--white); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-hero); padding: 96px 40px 32px;
  max-width: 720px; margin: 0 auto 24px;
}
.wizard-ring-hoek {
  position: absolute; top: 28px; right: 32px; display: flex; align-items: center; gap: 10px;
}
.wizard-ring-uitleg {
  font-family: var(--font-ui); font-size: 15px; font-weight: 500;
  text-transform: uppercase; letter-spacing: .02em; color: var(--muted);
}
/* De ring is getekend om op een gekleurd vlak te staan (witte streek). Op de
   witte kaart draaien we dat om: amandel als spoor, aubergine als voortgang.
   CSS wint van de stroke-attributen in de macro, dus de macro blijft heel. */
.wizard-ring-hoek .ring-svg circle { stroke: var(--ik-amandel); stroke-opacity: 1; }
.wizard-ring-hoek .ring-svg circle.ring-boog { stroke: var(--ik-aubergine); }
.wizard-ring-hoek .ring-tekst { color: var(--ik-aubergine); font-size: 17px; }

/* Kop en onderregel staan op het voorbeeld gecentreerd: 36px/700 uppercase
   en 24px/400, allebei in #5d0e39 en in Barlow Condensed. */
.wizard-kaart .wizard-paneel { text-align: center; }
.wizard-kaart .wizard-paneel h2 { font-size: clamp(26px, 4vw, 36px); color: #5d0e39; margin: 0 0 6px; }
.wizard-uitleg {
  font-family: var(--font-ui); font-size: 24px; font-weight: 400; line-height: 31.2px;
  color: #5d0e39; margin: 0 auto 26px; max-width: 46ch;
}
/* Invulvelden blijven wél gewoon links uitgelijnd. */
.wizard-kaart .form-veld, .wizard-kaart .keuzelijst { text-align: left; }

/* Keuzepillen: één klik is het antwoord én de volgende stap.
   Maten en kleuren letterlijk overgenomen van het contactformulier op
   participatiekeuken.nl/new/contact (computed styles uitgelezen, niet van
   een screenshot afgelezen): pil 56px hoog, radius 320px, rand
   rgba(62,52,200,.1), schaduw 1px 1px 8px 1px rgba(182,165,208,.68),
   tekst Barlow Condensed 22.4px/33.6px in #5d0e39. Gekozen wordt hij
   rgba(23,128,139,.71) met rand #36b37e, witte tekst en 5% groter — ook
   die waarden komen daarvandaan, niet uit het Ingrediëntenkast-palet. */
.keuzepillen {
  display: flex; flex-wrap: wrap; gap: 16px; justify-content: center;
}
.keuzepil {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  min-height: 56px; padding: 10px 26px; text-align: center;
  font-family: var(--font-ui); font-size: 22.4px; font-weight: 400; line-height: 33.6px;
  color: #5d0e39; background: #fff;
  border: 1px solid rgba(62, 52, 200, .1); border-radius: 320px;
  box-shadow: 1px 1px 8px 1px rgba(182, 165, 208, .68);
  cursor: pointer; transition: background-color .2s, border-color .2s, color .2s, transform .2s;
}
.keuzepil.gekozen, .keuzepil:has(input:checked) {
  background: rgba(23, 128, 139, .71); border-color: #36b37e; color: #fff;
  transform: scale(1.05);
}
/* Waar je er meerdere mag kiezen is de pil zelf de checkbox — precies zoals
   op het voorbeeld, waar elke pil een <label> om een verborgen vakje is. */
.keuzepil input[type="checkbox"] { position: absolute; opacity: 0; width: 0; height: 0; }
/* In een popup zijn de pillen een suggestielijst, geen wizardkeuze: kleiner,
   links uitgelijnd en met ruimte tot het veld eronder (Alex, 20-09). */
dialog.popup .keuzepillen { justify-content: flex-start; gap: 8px; margin: 0 0 20px; }
dialog.popup .keuzepil {
  min-height: 0; padding: 8px 16px; font-size: 18px; line-height: 1.2;
  border-radius: var(--radius-pill); box-shadow: var(--shadow-card);
  transform: none;
}
dialog.popup .keuzepil.gekozen { transform: none; background: var(--ik-spirulina); border-color: var(--ik-spirulina); }

/* Beeld kiezen: een pil als knop met het gekozen plaatje erboven. Het eigen
   bestandsknopje van de browser past hier niet, dus dat zit verstopt in het
   label — net als bij de uploadknop op de detailpagina. */
.beeldkiezer { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.beeldkiezer input[type="file"] { position: absolute; opacity: 0; width: 0; height: 0; }
.beeld-voorbeeld {
  max-width: 100%; max-height: 240px; border-radius: var(--radius-md);
  box-shadow: var(--shadow-card); object-fit: contain;
}

/* Blokkenbouwer (mailing): elk blok een rij met het prullenbakje ernaast. */
.blokkenbouwer { text-align: left; }
.blokken { display: flex; flex-direction: column; gap: 14px; margin-bottom: 14px; }
.blok-rij {
  display: flex; align-items: flex-start; gap: 12px;
  background: var(--card-row-bg); border-radius: var(--radius-md); padding: 14px;
}
.blok-rij > :first-child + * { flex: 1; min-width: 0; }
.blok-rij textarea { margin: 0; }
.blok-rij .beeldkiezer { flex: 1; }
.blokken-erbij { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; }
.blokken-erbij .blok-erbij-tekst { display: flex; gap: 12px; align-items: flex-start; flex: 1; min-width: 260px; }
.blokken-erbij .blok-erbij-tekst textarea { margin: 0; }
.blokken-erbij input[type="file"] { position: absolute; opacity: 0; width: 0; height: 0; }

/* De mail zoals hij wordt: blok onder blok, met een prullenbakje ernaast. */
.mailblokken { display: flex; flex-direction: column; gap: 14px; margin-bottom: 18px; }
.mailblok { display: flex; align-items: flex-start; gap: 12px; }
.mailblok > :first-child { flex: 1; min-width: 0; margin: 0; }
.mailblok img { max-width: 100%; border-radius: var(--radius-md); box-shadow: var(--shadow-card); }
.mailblok-weg { flex: none; }

@media (max-width: 640px) {
  .wizard-kaart { padding: 74px 20px 24px; }
  .wizard-ring-hoek { top: 20px; right: 20px; }
  .wizard-ring-uitleg { display: none; }
}
.grid { display: grid; gap: 18px; grid-template-columns: 1fr; }
/* Op het dashboard (widgets) al vanaf mobiel 2 kolommen — de kpi-tegels
   zijn klein genoeg om als vierkantjes naast elkaar te staan; grafieken/
   tabellen krijgen hun volle breedte terug via de regel verderop. */
.grid.cols-2 { grid-template-columns: 1fr 1fr; }
@media (min-width: 900px) {
  .grid.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
  .grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
}
/* Afdelingenraster: op mobiel al 2x2 i.p.v. gestapeld, op desktop 4 op een rij.
   minmax(0,1fr) i.p.v. kaal 1fr: anders duwt een lange naam ("Participatiekeuken")
   de kolom breder dan de beschikbare ruimte (CSS Grid's min-content-bug). */
.grid.afdelingen { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 12px; }
@media (min-width: 900px) { .grid.afdelingen { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 18px; } }

/* Ringbadge-kaarten — exact: 29:1116 e.a. (radius 15px, per-merk gloed-
   schaduw, titel Barlow Condensed Regular 34px wit) */
.badge-kaart {
  border-radius: 15px; padding: 20px 24px; color: #fff;
  transition: transform .15s; min-height: 130px; display: flex; flex-direction: column;
  justify-content: space-between;
}
a.badge-kaart:hover { transform: translateY(-2px); }
/* 34px is de Figma-maat bij 308px brede kaarten; bij smallere kolommen
   schaalt hij mee zodat namen niet midden in een woord breken. */
.badge-kaart h3 { color: #fff; margin: 0; font-size: clamp(18px, 2.8vw, 34px); font-weight: 400; text-transform: none; overflow-wrap: break-word; }
.badge-kaart .sub { font-size: 13px; opacity: .92; margin-top: 2px; }
.brand-pk   { background: var(--brand-pk);   box-shadow: var(--gloed-pk); }
.brand-asft { background: var(--brand-asft); box-shadow: var(--gloed-asft); }
.brand-kk   { background: var(--brand-kk);   box-shadow: var(--gloed-kk); }
.brand-wk   { background: var(--brand-wk);   box-shadow: var(--gloed-wk); }
.tekst-pk   { color: var(--brand-pk); }
.tekst-asft { color: var(--brand-asft); }
.tekst-kk   { color: var(--brand-kk); }
.tekst-wk   { color: var(--brand-wk); }

/* Voortgangsring — parametrische SVG-boog, zie macros/icons.html::progress_ring.
   Percentage taken afgerond, exact zoals Figma's "75%" (tekst Barlow
   Condensed SemiBold 20px wit, zelfde plek). */
.ring { position: relative; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.ring-svg { position: absolute; inset: 0; }
.ring-tekst { position: relative; font-weight: 600; font-size: 20px; color: #fff; font-family: var(--font-ui); }

/* Zoekbalk — exact uit Figma (45:907 veld, 45:908 knop, 45:909 tekst):
   veld 462x68 met rgba(255,255,255,.58), radius 57.5px en een brede zachte
   schaduw; knop 91x55 in spirulina met radius 72px, tekst Barlow Condensed
   Bold 26px wit. De knop zit 6px vanaf de bovenkant en 10px vanaf rechts. */
.zoekbalk {
  display: flex; align-items: center; gap: 12px;
  width: 100%; max-width: 462px; height: 68px;
  background: rgba(255,255,255,.58); border-radius: 57.5px;
  box-shadow: 0px 4px 7.3px 7px rgba(0,0,0,.03);
  padding: 0 10px 0 26px; margin: 0 0 28px; overflow: hidden;
}
/* Op de homepage staat de zoekbalk gecentreerd, met ruimte onder de kaarten
   — in Figma 88px tussen de kaartenrij en de balk (1:15). */
.zoekbalk-midden { margin-left: auto; margin-right: auto; margin-top: clamp(32px, 6vw, 88px); }
.zoekbalk input[type="search"] {
  flex: 1; min-width: 0; background: transparent; border: 0; padding: 0;
  height: auto; border-radius: 0; box-shadow: none;
  font-family: var(--font-ui); font-size: 20px; color: var(--fg);
}
.zoekbalk input[type="search"]:focus { outline: none; }
.zoekbalk input[type="search"]::placeholder { color: var(--muted); }
.zoekbalk button {
  flex: none; width: 91px; height: 55px; padding: 0;
  background: var(--ik-spirulina); color: #fff; border: 0; border-radius: 72px;
  font-family: var(--font-ui); font-weight: 700; font-size: 26px;
  text-transform: uppercase; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}
.zoekbalk button:hover { background: var(--ik-aubergine); }

/* ---------- Knoppen ---------- */
/* Hoofdknop — exact de "+ Item toevoegen"-stijl (48:37/48:39), met Alex
   afgestemd: lichtgrijs #d9d9d9, radius 12px, padding 16/20, gap 12px,
   teal-getinte gloed, tekst Barlow Condensed Bold 22px aubergine. */
/* Bevestigknop — exact: add-item-button (82:1395): spirulina, radius 12px,
   padding 16/20, Bold 22px wit, slagschaduw 0 8px 10px spirulina op 20%. */
.knop {
  display: inline-flex; align-items: center; gap: 12px; font-family: var(--font-ui);
  background: var(--ik-spirulina); color: #fff; border: 0; border-radius: 12px;
  padding: 16px 20px; font-weight: 700; font-size: 22px; text-transform: none;
  cursor: pointer; text-decoration: none; line-height: 1.2;
}
.knop.klein { padding: 10px 14px; font-size: 18px; gap: 8px; }
/* Tweede knop ("Annuleren") — exact 82:1399: amandel, radius 12px, dezelfde
   maat, Bold 22px aubergine, slagschaduw in diezelfde amandelkleur. */
.knop.licht {
  background: var(--ik-amandel); color: var(--ik-aubergine); border-radius: 12px;
  padding: 16px 20px; font-weight: 700; font-size: 22px;
  box-shadow: none;
}
.knop.licht.klein { padding: 10px 14px; font-size: 18px; }
button.knop { font-family: var(--font-ui); }
/* De iconen zijn aubergine geëxporteerd; op het spirulina vlak van .knop
   moeten ze wit zijn. Op .knop.licht (amandel) blijven ze aubergine. */
.knop .icoon { filter: brightness(0) invert(1); }
.knop.licht .icoon { filter: none; }
/* Icoon boven de tekst i.p.v. ernaast (bijv. de "Gegevens"-knop op een
   evenement) — verder dezelfde knop, alleen de richting gedraaid. */
.knop-gestapeld { flex-direction: column; gap: 4px; text-align: center; }
.knop-gestapeld span { font-size: 14px; }

/* Icoon-knopjes (potlood/prullenbak) — exact: team-kaart (46:71/46:74):
   amandel-vlak, radius 16px (vierkant-afgerond, geen cirkel), 32x32. */
/* Standaard-icoonknopje (Alex, 20-09): altijd rond, aubergine, alleen een
   icoon — nooit tekst. De iconen zijn svg's met een aubergine lijn, dus die
   worden hier wit gemaakt; svg's die currentColor gebruiken erven dat vanzelf. */
.icoon-knop {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--ik-aubergine); color: #fff; padding: 0; flex: none;
}
.icoon-knop:hover { background: var(--ik-granaatappel); }
/* Even groen als het kopiëren gelukt is. */
.icoon-knop.gekopieerd, .icoon-knop.gekopieerd:hover { background: var(--ik-appel); }
.knop.gekopieerd { background: var(--ik-appel); color: #fff; }
.icoon-knop:active { background: var(--ik-granaatappel); filter: brightness(.85); }
.icoon-knop img.icoon { filter: brightness(0) invert(1); }

/* Agendapunt-toevoegen-knop: rond, alleen de + zichtbaar, granaatappel-
   achtergrond. Alleen deze knop (agenda.html/department.html) — de andere
   ".knop.klein"-knoppen elders blijven de gewone grijze pil met tekst. */
/* De aanmaakknop staat onderaan bij elkaar: zie .rondknop. */

/* Pil-knop "+ Persoon/Gerecht toevoegen" — exact: team-kaart (48:98/48:100):
   wit vlak, radius 28px, tekst Barlow Condensed Medium 20px aubergine. */
.knop-zacht {
  display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-ui);
  background: var(--white); color: var(--fg); border: 0; border-radius: 28px;
  padding: 14px 16px; font-weight: 500; font-size: 20px; text-transform: none; cursor: pointer;
  box-shadow: var(--shadow-card);
}
/* "+ Item toevoegen" — exact: add-item-button (48:37/48:39): lichtgrijs
   #d9d9d9, radius 12px, padding 16px/20px, gap 12px, teal-getinte schaduw
   0 8px 10px rgba(0,169,157,.2), tekst Barlow Condensed Bold 22px aubergine. */
.knop-item {
  display: inline-flex; align-items: center; gap: 12px; font-family: var(--font-ui);
  background: #d9d9d9; color: var(--fg); border: 0; border-radius: 12px;
  padding: 16px 20px; font-weight: 700; font-size: 22px; text-transform: none;
  cursor: pointer;
}
.knop-item:hover { background: var(--ik-amandel); }
.knop-zacht:hover { background: var(--ik-amandel); }
summary.knop-zacht { list-style: none; cursor: pointer; }
summary.knop-zacht::-webkit-details-marker { display: none; }

/* Pil — exact de maat van de rol-pil op de teamkaart (46:58/46:59):
   padding 4/12, radius 16px, Barlow Condensed SemiBold 14px. Alle pillen
   hebben deze maat; alleen kleur en radius verschillen per soort. */
.pill {
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 16px;
  font-size: 14px; font-weight: 600; text-transform: uppercase; letter-spacing: .02em;
  font-style: normal;                     /* nooit schuin (Alex, 20-09) */
  /* Altijd dezelfde maat (Alex, 20-09). Een vaste hoogte in plaats van
     padding boven/onder: de ene pil is een <span> en de andere een <button>
     (de statuspil is klikbaar), en die twee hebben een verschillende
     standaard regelhoogte — daardoor was de ene pil hoger dan de andere.
     `align-self` houdt 'm op maat naast een hoger element in dezelfde rij,
     zoals de ronde potloodknop van 36px. */
  height: 32px; padding: 0 14px; line-height: 1; box-sizing: border-box;
  flex: none; align-self: center; white-space: nowrap;
}
.pill.status-actief { background: var(--ik-appel); color: #fff; }
.pill.status-concept { background: var(--ik-sinaasappel); color: #fff; }   /* oranje zolang het concept is (Alex, 20-09) */
.pill.status-afgerond { background: var(--ik-aubergine); color: #fff; }
.pill.status-optie { background: transparent; color: var(--muted); border: 1px dashed var(--muted); }   /* nog niet definitief (Alex, 24-09) */

/* Een evenement in optie staat doorzichtig in de agenda: het is
   gereserveerd maar de knoop is nog niet doorgehakt (Alex, 24-09-2026). */
.agenda-optie { opacity: .55; }
.agenda-item.agenda-optie { border: 1px dashed var(--border); }
.agenda-tegel.agenda-optie, .kalender-event.agenda-optie { border-style: dashed; }

/* Optiedata op de evenementpagina. */
.optiedatum-rij { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.optiedata-lijst .optiedatum-rij:last-child { border-bottom: 0; }
.optiedatum-acties { display: flex; align-items: center; gap: 8px; }
.optiedatum-toevoegen { margin-top: 16px; }
/* De statuspil is een knop: klikken zet concept om naar actief en terug. */
.status-knop { border: 0; cursor: pointer; font-family: var(--font-ui); }
.status-knop:hover { filter: brightness(1.08); }
.status-knop:active { filter: brightness(.88); }
/* Locatielabel — exact: location-tag (48:123): lichtgrijs #d9d9d9,
   radius 42px, tekst Barlow Condensed SemiBold 18px aubergine. */
.pill-locatie { background: #d9d9d9; color: var(--fg); border-radius: 42px; }
/* Eigenschappenlabel (afdeling/categorie) — exact: status-badge (45:1013):
   lychee #f3c8d2, radius 30px, padding 8/20, Bold 20px aubergine.
   Met Alex afgestemd: deze roze badge toont eigenschappen van iets. */
.pill-eigenschap { background: var(--ik-lychee); color: var(--fg); border-radius: 30px; }
.pill-rol { background: var(--ik-aubergine); color: #fff; border-radius: var(--radius-pill); }

/* ---------- Popup (native <dialog>) ---------- */
/* Invulvenster — exact: 82:1383 (wit, radius 16px, 568 breed) met dezelfde
   schaduw als de velden erin (82:1384). */
dialog.popup {
  border: 0; padding: 0; background: var(--white); color: var(--fg);
  border-radius: 16px; box-shadow: 0px 4px 31px 0px rgba(0, 0, 0, .25);
  width: min(568px, calc(100% - 32px)); font-family: var(--font-ui);
}
/* Het groene laagje over de pagina — exact 82:1387: spirulina op 22%. */
dialog.popup::backdrop { background: rgba(0, 169, 157, .22); }
/* Kop — exact 82:1409: Barlow Condensed Bold 46px aubergine, in hoofdletters,
   45px vanaf de bovenkant en 44px vanaf de zijkant van het venster. */
.popup-kop { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 45px 44px 0; }
.popup-kop h3 {
  margin: 0; font-size: clamp(30px, 6vw, 46px); line-height: 1.019;
  font-weight: 700; text-transform: uppercase; color: var(--ik-aubergine);
}
/* Sluitknop — dezelfde knop als de back-button (46:16), alleen met het
   kruis: dus ook hier geen eigen achtergrond, rand of hover. */
.sluitknop { background: none; border: 0; padding: 0; margin: 0 -4px -8px 0; line-height: 0; cursor: pointer; flex: none; }
.popup-body { padding: 24px 44px 44px; }
/* Beheeroverzicht in een popup: bestaande items wijzigen of weghalen. */
.beheerlijst { margin-top: 18px; border-top: 1px solid var(--border); }
.beheerrij { display: flex; align-items: center; gap: 8px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.beheerform { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.beheerform input { flex: 1; min-width: 0; height: 44px; padding: 0 18px; font-size: 16px; box-shadow: none; }
.beheerform input.smal { flex: none; width: 96px; padding: 0 14px; }
.beheerform .knop { padding: 8px 12px; font-size: 15px; flex: none; }
/* Kant-en-klare prompt voor de AI-agent op de server. */
.ai-prompt { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--border); }
.ai-prompt textarea { font-size: 14px; line-height: 1.45; }
.ai-prompt .knop { margin-top: 10px; padding: 8px 14px; font-size: 15px; }
.popup-body .form-rij { flex-direction: column; }
.popup-body .form-rij > * { width: 100%; min-width: 0; }
.popup-acties { display: flex; gap: 10px; justify-content: flex-end; margin-top: 28px; }

/* ---------- Formulieren ----------
   Exact: het invulvenster in Figma (82:1410). Veld 82:1384: vlak #f9f9f9,
   radius 200px (dus een pil), schaduw 0 4px 31px rgba(0,0,0,.25), hoogte 81px
   en 38px ruimte links. Opschrift erboven (82:1406): Medium 22px aubergine.
   Wat je moet invullen (82:1394): Medium 22px #d1d5db. */
.form-veld { margin-bottom: 16px; }
.autocomplete-veld { position: relative; }
.autocomplete-lijst {
  position: absolute; z-index: 20; left: 0; right: 0; margin: 4px 0 0; padding: 4px 0;
  list-style: none; background: #fff; border-radius: var(--radius-md);
  box-shadow: var(--shadow-card); max-height: 220px; overflow-y: auto;
}
.autocomplete-lijst li { padding: 10px 16px; font-size: 16px; color: var(--fg); cursor: pointer; }
.autocomplete-lijst li:hover { background: var(--card-row-bg); }
/* Invoerveld met titel — exact uit Figma Dashboard-Pk node 111:91 (Alex,
   20-09: "maak alle invoervelden met titels zo"). Label 15px Medium in
   hoofdletters, 16px ingesprongen, 8px boven het veld; veld 54px hoog met
   radius 15, een dunne rand en een verloop van wit naar #f2f2f7. De
   zware schaduw van het vorige ontwerp is vervallen. */
.form-veld label {
  display: block; margin: 0 0 8px 8px;
  font-weight: 500; font-size: 15px; line-height: 16px;
  text-transform: uppercase; letter-spacing: 0; color: var(--ik-aubergine);
}
input:where(:not([type="checkbox"]):not([type="radio"]):not([type="file"])),
textarea, select {
  width: 100%; font-family: var(--font-ui); font-weight: 400; font-size: 21px;
  border: 1px solid #e5e5ea; color: var(--ik-aubergine);
  background: linear-gradient(180deg, #ffffff 0%, #f2f2f7 100%);
  box-shadow: none; caret-color: var(--ik-granaatappel);
}
input:where(:not([type="checkbox"]):not([type="radio"]):not([type="file"])), select {
  height: 54px; padding: 0 15px; border-radius: 15px;
}
/* Een meerregelig veld: zelfde vlak, rand en radius, alleen hoger. */
textarea { min-height: 112px; padding: 14px 15px; border-radius: 15px; resize: vertical; }
::placeholder { color: #b9b4bd; opacity: 1; }
input:focus, textarea:focus, select:focus { outline: 2px solid var(--ik-spirulina); outline-offset: 2px; }
.form-rij { display: flex; gap: 12px; flex-wrap: wrap; }
/* Meerdere afdelingen aanvinken (waar een evenement óók getoond wordt). */
.keuzelijst { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.keuze { display: inline-flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--fg); }
/* Aankruisvakjes en rondjes: groter en in de huisstijl (Alex, 20-09).
   `accent-color` laat de browser zijn eigen vinkje tekenen in onze kleur —
   blijft daarmee toegankelijk en werkt op de telefoon net zo goed. */
.keuze input { width: auto; }
input[type="checkbox"], input[type="radio"] {
  width: 22px; height: 22px; margin: 0; flex: none;
  accent-color: var(--ik-spirulina); cursor: pointer;
}
.keuze { gap: 10px; }
.form-rij > * { flex: 1; min-width: 160px; }
.inline-form { display: inline; }

/* ---------- Hero-kaart (projectpagina) — exact: hero-reservation-card (48:108) ---------- */
.hero-project { display: flex; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-hero); margin-bottom: 18px; }
.hero-datum {
  background: var(--ik-spirulina); color: #fff; padding: 32px 16px; flex: none; width: 147px;
  display: flex; flex-direction: column; justify-content: center; gap: 8px;
}
.hero-datum .dag { font-weight: 700; font-size: 32px; text-transform: uppercase; line-height: 1.02; }
.hero-datum .tijd { font-size: 24px; font-weight: 400; line-height: 1.02; }
.hero-inhoud { background: var(--white); padding: 40px; flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 24px; min-width: 0; }
.hero-titelrij { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
/* Figma is 47px; op verzoek van Alex een slag kleiner (38px). */
.hero-titelrij h1 { margin: 0; font-size: clamp(22px, 3.4vw, 38px); color: var(--fg); }
.hero-meta { display: flex; gap: 8px; flex-wrap: wrap; }
/* Status-badge — kleur/radius uit 48:115/117 (groen #6fb737, radius 30px);
   de maat is die van de team-pil (46:58), op verzoek van Alex. */
.hero-titelrij .pill.status-actief,
.hero-titelrij .pill.status-concept,
.hero-titelrij .pill.status-afgerond {
  border-radius: 30px;
}
/* Mobiel: de datumband blijft links staan, alles schaalt mee omlaag. */
@media (max-width: 700px) {
  .hero-datum { width: 96px; padding: 20px 12px; gap: 4px; }
  .hero-datum .dag { font-size: 22px; }
  .hero-datum .tijd { font-size: 16px; }
  .hero-inhoud { padding: 20px; gap: 12px; }
  .hero-titelrij { gap: 8px; }
}

/* ---------- Kleine vierkante kaartjes (checklist-items in projectstijl) —
   exact qua kleur/radius/font uit de "Taken"-tegels (45:742), de layout
   (checkbox + los verwijderknopje) is aangepast: Figma's tegels tonen 4
   vaste voorbeeldkaarten + 1 "meer"-pijl-kaart, geen variabele lijst. ---------- */
/* Takenrij — exact: Frame 43 (45:742). Vaste tegels van 180x180 met
   radius 15px, in een rij. Figma gebruikt gap 63px; hier een raster dat
   meeschaalt (het ontwerp is alleen op desktopbreedte getekend). */
.mini-kaarten { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 20px; margin-bottom: 18px; }
.mini-form { display: contents; }
.mini-kaart {
  position: relative; border-radius: 15px; padding: 30px 25px;
  min-height: 180px; display: flex; flex-direction: column; justify-content: space-between;
  /* de hele tegel is de knop waarmee je afvinkt */
  width: 100%; border: 0; text-align: left; font-family: inherit; cursor: pointer;
}
.mini-kaart .mini-bovenrij { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
/* Openstaande taak — exact: 45:764/45:766: granaatappel, witte tekst
   Barlow Condensed Regular 22px op 25px/30px inset. */
.mini-kaart.open { background: var(--ik-granaatappel); color: #fff; }
/* Afgeronde taak — exact: 45:737 e.a.: aubergine op 10% dekking,
   aubergine tekst. */
.mini-kaart.klaar { background: rgba(97,0,57,.1); color: var(--fg); }
.mini-kaart .mini-tekst { font-size: 22px; font-weight: 400; line-height: 1.15; font-family: var(--font-ui); }
.mini-kaart.open .checkbox-knop { border-color: #fff; }
.mini-kaart.klaar .checkbox-knop { border-color: var(--ik-appel); background: var(--ik-appel); }
/* Datum (en bij een afgevinkte taak de tijd) klein rechtsboven op de tegel.
   Maat 14px, dezelfde "kleine" maat als de pillen (46:59); in Figma staat de
   datum groot rechtsonder (45:738), kleiner en bovenin op verzoek van Alex. */
.mini-kaart .mini-datum { display: flex; align-items: baseline; gap: 6px; flex: none; font-family: var(--font-datum); }
.mini-kaart .mini-datum .datum { font-size: 14px; font-weight: 700; line-height: 1; }
.mini-kaart .mini-datum .tijd { font-size: 14px; font-weight: 400; line-height: 1; opacity: .85; }

/* Onderrij op de taaktegel (20-09-2026): links wie de taak oppakt, rechts wie
   'm heeft afgevinkt. De taaktekst blijft onderaan staan — vandaar margin-top
   auto in plaats van space-between, dat zou de tekst naar het midden duwen. */
.mini-kaart { justify-content: flex-start; }
.mini-kaart .mini-tekst { margin-top: auto; }
.mini-kaart .mini-onderrij {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 10px; margin-top: 10px; min-width: 0;
}
.mini-kaart .mini-wie { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.mini-kaart .mini-door {
  font-size: 12px; line-height: 1.2; opacity: .8; flex: none;
  text-align: right; max-width: 45%; overflow-wrap: anywhere;
}
.wie-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 20px; font-size: 12px; line-height: 1.4;
  background: rgba(255,255,255,.22); color: inherit; white-space: nowrap;
}
.mini-kaart.klaar .wie-chip { background: rgba(97,0,57,.14); }
.chip-weg {
  border: 0; background: none; color: inherit; cursor: pointer;
  font-size: 15px; line-height: 1; padding: 0; opacity: .7;
}
.chip-weg:hover { opacity: 1; }

/* De kiezer zelf, in de popup en in de beheerlijst. */
.personen-kiezer .personen-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.personen-kiezer .personen-chips:empty { display: none; }
.personen-kiezer .wie-chip { background: rgba(97,0,57,.1); color: var(--fg); }
.beheerform-taak { flex-direction: column; align-items: stretch; gap: 10px; }
.beheerform-taak .beheerform-regel { display: flex; align-items: center; gap: 8px; min-width: 0; }
.beheerform-taak .beheerform-regel input { flex: 1; min-width: 0; height: 44px; padding: 0 18px; font-size: 16px; box-shadow: none; }
.beheerform-taak .beheerform-regel input.smal { flex: none; width: 96px; padding: 0 14px; }

/* Datum rechtsonder met het verticale streepje ervoor — exact: 45:738
   (Manrope Bold 24px) en 45:740 (4x20px staafje, radius 20px). */
.mini-datum { display: flex; align-items: center; gap: 10px; align-self: flex-end; }
.mini-datum .streep { width: 4px; height: 20px; border-radius: 20px; background: currentColor; flex: none; }
.mini-datum .datum { font-family: var(--font-datum); font-weight: 700; font-size: 24px; line-height: 1; }
/* Tijd waarop de taak is afgevinkt — klein naast de datum, dezelfde
   verhouding datum/tijd als in de herokaart (48:110 vs 48:111). */
.mini-datum .tijd { font-family: var(--font-datum); font-weight: 400; font-size: 18px; line-height: 1; }
/* Voortgangskaart vooraan de rij — exact: 29:1179/45:859: spirulina,
   180x180, label Barlow Condensed Regular 34px wit, ring linksonder. */
.voortgang-kaart {
  background: var(--ik-spirulina); color: #fff; border-radius: 15px;
  padding: 24px 12px; min-height: 180px;
  display: flex; flex-direction: column; justify-content: space-between; gap: 12px;
}
/* Kleiner op verzoek van Alex (20-09-2026), was 34px. */
.voortgang-kaart .voortgang-label { font-size: 24px; font-weight: 400; line-height: 1; }

/* ---------- Blokken (projecten) ---------- */
/* Blok-omhulsel op de projectpagina — exact: team-section-card (46:52) en
   menu-card (46:37) hebben GEEN achtergrondvulling, alleen een drop-shadow
   op een transparante container (die schaduw valt dus op de losse items
   erin). De secties staan direct op het paginaverloop. */
.blok {
  background: transparent; border-radius: var(--radius-lg); padding: 32px 0;
  filter: drop-shadow(0px 4px 5.2px rgba(0,0,0,.09));
}
.blok-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; gap: 8px; }
/* Knopjes om een sectie te verplaatsen of te verwijderen: witte achtergrond
   (zoals de knop "Persoon toevoegen", 48:98) en geen hover-effect. */
.blok-header .acties { display: flex; gap: 4px; }
/* De knopjes bij een blokkop volgen gewoon de standaard (Alex, 20-09):
   rond, aubergine, wit icoon. Stonden hier wit, waardoor het witgemaakte
   icoon erin onzichtbaar werd. */
.blok-header .acties { gap: 6px; }
/* Sectiekop — exact: 45:858 ("26 APRIL TEAM"): één regel, 50px,
   line-height 1.019, datum in Bold en de sectienaam in Light, beide
   aubergine. Op smalle schermen schaalt 50px mee omlaag (die maat staat
   niet in Figma; het ontwerp is alleen op desktopbreedte getekend). */
.blok-header h2 {
  /* Figma is 50px; op verzoek van Alex een slag kleiner (40px). */
  margin: 0; font-size: clamp(24px, 4vw, 40px); line-height: 1.019;
  text-transform: uppercase; font-weight: 300; display: flex; gap: 12px;
  flex-wrap: wrap; align-items: baseline;
}
.blok-header .kop-datum { font-weight: 700; }
.blok-header .kop-titel { font-weight: 300; }

/* Team-kaarten — exact: team-member (46:55): #f9fafb, radius 16px,
   padding 24px, gap 12px; naam Bold 24px, rol-pil, notitie Inter 15px #4b5563 */
.team-grid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 32px; }
@media (min-width: 640px) { .team-grid { grid-template-columns: 1fr 1fr; } }
/* Nog niemand op deze plek: zelfde maat en padding als een gevulde kaart,
   alleen met een gestippelde rand zodat je ziet dat er iets ontbreekt. */
.team-kaart.leeg { border: 1px dashed rgba(97,0,57,.30); background: rgba(231,216,200,.28); box-shadow: none; padding: 23px; }
.team-plus {
  display: inline-flex; align-items: center; gap: 8px; padding: 0;
  border: 0; cursor: pointer; background: none;
  color: var(--ik-aubergine); font-family: var(--font-ui); font-size: 20px; font-weight: 700;
}
.team-plus .icoon { filter: none; }
.team-plus span { text-decoration: underline; text-underline-offset: 3px; }
.team-plus:hover { filter: brightness(.95); }
.team-kaart { background: var(--card-row-bg); border-radius: 16px; padding: 24px; display: flex; flex-direction: column; gap: 12px; }
.team-kaart .team-naamrij { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.team-kaart .team-naam { font-weight: 700; font-size: 24px; }
.team-kaart .team-note { font-family: var(--font-body); font-size: 15px; color: #4b5563; margin: 0; }
.team-kaart .team-acties { display: flex; gap: 8px; }
/* Onderrij van de teamkaart: knopjes links, de tijd rechts met het
   verticale streepje ervoor — dezelfde opmaak als de datum op een
   taaktegel (45:740/45:738). */
.team-kaart .team-onderrij { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: auto; }
.team-kaart .mini-datum { align-self: flex-end; }
/* Twee tijdvelden naast elkaar in de popup. */
.tijdvak { display: flex; gap: 8px; }
.tijdvak input { flex: 1; min-width: 0; }

/* Menu-regels — exact: dish-item (46:40): #f9fafb, radius 12px, padding
   16px; naam SemiBold 22px aubergine + toelichting Regular #6b7280 */
.menu-regel { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--card-row-bg); border-radius: var(--radius-md); padding: 16px; margin-bottom: 12px; }
.menu-regel .menu-naam { color: var(--fg); font-weight: 600; font-size: 22px; }
.menu-regel .menu-note { color: #6b7280; font-size: 22px; font-weight: 400; }
.menu-regel .acties { display: flex; gap: 8px; flex: none; }
/* Slepen om de volgorde te wijzigen (Alex, 20-09). Het greepje is alleen op
   een muis zichtbaar nuttig; op een telefoon blijft de volgorde zoals hij is. */
/* Het greepje is het enige waaraan je sleept; `touch-action: none` zorgt dat
   een vinger daar sleept in plaats van de pagina te scrollen. Groot genoeg
   om met een duim te raken. */
.sleepgreep {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; margin: -6px 4px -6px -6px; vertical-align: middle;
  color: var(--muted); cursor: grab; touch-action: none; -webkit-user-select: none; user-select: none;
}
.sleepgreep:active { cursor: grabbing; color: var(--ik-aubergine); }
.menu-regel.sleept { opacity: .55; box-shadow: 0 6px 16px rgba(0,0,0,.14); }

/* Documentrij — exact: reservation-row (48:133): radius 15px, schaduw
   diep/breed, spirulina datumblok 147px, download-knop granaatappel 97px */
.document-rij { display: flex; border-radius: 15px; overflow: hidden; margin-bottom: 8px; box-shadow: var(--shadow-doc); }
.document-rij .doc-label { background: var(--white); flex: 1; padding: 18px 32px; font-weight: 400; font-size: 22px; display: flex; align-items: center; }
.document-rij .doc-download { background: var(--ik-granaatappel); color: #fff; width: 97px; display: flex; align-items: center; justify-content: center; flex: none; }
.document-rij .doc-download:hover { background: var(--ik-aubergine); }

/* ---------- Bestanden (Microsoft 365) ----------
   Zelfde document-rij als bij evenementen (48:133): witte balk, gekleurd
   knopvlak rechts. Een map heeft een aubergine vlak met een pijltje, een
   bestand het granaatappel-vlak met het download-icoon. Geen nieuwe kleuren. */
.document-rij.bestand-rij .doc-label,
.document-rij.sitekaart .doc-label { flex-direction: column; align-items: flex-start; gap: 2px; padding: 14px 28px; }
.bestandsrij-naam { font-size: 22px; line-height: 1.15; word-break: break-word; }
.bestandsrij-meta { font-family: var(--font-body); font-size: 13px; color: var(--muted); }
.document-rij .doc-download.map { background: var(--ik-aubergine); font-size: 34px; line-height: 1; text-decoration: none; }
.document-rij.sitekaart .doc-download { background: var(--ik-spirulina); font-size: 34px; line-height: 1; }
.document-rij.sitekaart .doc-label span:first-child { font-size: 22px; }
.document-rij.uit { opacity: .6; }
a.document-rij { color: var(--fg); text-decoration: none; }
a.doc-bekijk { color: var(--fg); text-decoration: none; }

/* Foto's en video's in een map: tegels met miniatuur (Microsoft levert die
   kant-en-klaar), zelfde witte kaart en schaduw als de rest. */
.fotoraster { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-bottom: 18px; }
.fototegel { display: flex; flex-direction: column; background: var(--white); border-radius: 15px; overflow: hidden; box-shadow: var(--shadow-doc); color: var(--fg); text-decoration: none; }
.fototegel-beeld { position: relative; display: block; aspect-ratio: 1 / 1; background: var(--card-row-bg); }
.fototegel-beeld img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fototegel-video { position: absolute; right: 8px; bottom: 8px; width: 28px; height: 28px; border-radius: 50%; background: rgba(97,0,57,.85); color: #fff; font-size: 12px; display: flex; align-items: center; justify-content: center; }
.fototegel-naam { padding: 8px 10px; font-family: var(--font-body); font-size: 12px; line-height: 1.3; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fototegel:hover .fototegel-naam { color: var(--ik-spirulina); }
a.doc-bekijk:hover .bestandsrij-naam { color: var(--ik-spirulina); }
.bestand-titel { font-size: clamp(20px, 2.6vw, 28px); word-break: break-word; }
.weergave-kaart { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: 8px; }
.weergave { display: block; width: 100%; height: min(78vh, 1000px); border: 0; border-radius: 14px; background: #fff; }
a.document-rij:hover .doc-download { background: var(--ik-aubergine); }

.kruimelpad { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: -6px 0 16px; font-size: 15px; text-transform: uppercase; font-weight: 600; }
.kruimelpad a { color: var(--ik-spirulina); }
.kruimelpad span:not(.kruimel-scheiding) { color: var(--muted); }
.kruimel-scheiding { color: var(--muted); }

/* In de filterrij mag de zoekbalk niet de hele breedte pakken. */
.tabsrij .zoekbalk.zoekbalk-klein { max-width: 380px; height: 52px; margin: 0; padding: 0 6px 0 20px; flex: 1 1 260px; }
.tabsrij .zoekbalk.zoekbalk-klein input[type="search"] { font-size: 17px; }
.tabsrij .zoekbalk.zoekbalk-klein button { width: 72px; height: 40px; font-size: 20px; }

/* Checklist (algemeen, o.a. afdelingspagina) */
.checklist-item { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--border); }
.checklist-item.done { opacity: .55; text-decoration: line-through; }
.checkbox-knop {
  width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--ik-appel);
  background: transparent; cursor: pointer; flex: none; display: flex; align-items: center; justify-content: center; color: #fff;
}
.checkbox-knop.aan { background: var(--ik-appel); }

/* ---------- Widgets/grafieken (dashboardkaarten) — exact: Card (54:24):
   wit, radius 12px, schaduw zacht (0 4px 6px .03), padding 24, gap 16;
   titel Bold 16px #4d1240 UPPERCASE; ondertitel Inter 12px #6b7280 ---------- */
.kaart-dashboard { background: var(--white); border-radius: 12px; box-shadow: var(--shadow-dash); padding: 24px; margin-bottom: 18px; }
.widget-header { margin-bottom: 4px; }
.widget-eyebrow { font-size: 16px; font-weight: 700; text-transform: uppercase; letter-spacing: 0; margin: 0; color: var(--titel-donker); }
.widget-subtitel { font-family: var(--font-body); font-size: 12px; line-height: 1.4; color: #6b7280; margin: 2px 0 0; }
.widget-legend-top { display: flex; gap: 12px; font-size: 11px; color: var(--muted); }
/* Statistiektegel — vorm exact uit Figma "Dashboard-Pk" (node 2:1434):
   een zacht gekleurd vlak (daar 10% dekking van de accentkleur) met het
   opschrift linksboven, en onderin een staand streepje van 4x30 links naast
   een groot getal rechts. Figma gebruikt blauw; hier de PK-accentkleur van
   de widget, zodat de huisstijl klopt. */
.kaart-dashboard.kaart-kpi { background: var(--accent-tint, #f4f7fa); border-color: transparent; }
.grid.cols-2 .kaart-dashboard:not(.kaart-kpi) { grid-column: 1 / -1; }

/* Dashboard (één pagina): de cijfers bovenaan als kleine blokjes, vier naast
   elkaar op desktop, twee op mobiel; de grafieken eronder in twee kolommen. */
.cijferraster { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-bottom: 18px; }
@media (min-width: 720px) { .cijferraster { grid-template-columns: repeat(4, 1fr); } }
.cijferblok { position: relative; padding: 16px 18px; margin: 0; }
.cijferblok .widget-eyebrow { margin-bottom: 4px; }
.kaart-dashboard { position: relative; }
.widget-weg { position: absolute; top: 10px; right: 10px; opacity: 0; transition: opacity .15s; display: flex; gap: 6px; align-items: center; }
.widget-weg .icoon-knop { display: inline-flex; }
.kaart-dashboard:hover .widget-weg, .cijferblok:hover .widget-weg { opacity: 1; }
.grafiekraster .kaart-dashboard { grid-column: auto !important; }
/* Eén grafiek per rij, ook op desktop (Alex 18-09: "grafieken op desktop
   groter maken") — de SVG schaalt mee met de kaartbreedte, dus volle breedte
   = ongeveer twee keer zo groot als de vorige tweekolomsopstelling. */
.grafiekraster.grid.cols-2 { grid-template-columns: 1fr; }
.widget-kpi { display: flex; flex-direction: column; justify-content: flex-end; min-height: 92px; }
.widget-kpi-label { font-size: 16px; color: var(--muted); line-height: 1.25; margin: 0 0 18px; }
.widget-kpi-rij { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.widget-kpi-streep { width: 4px; height: 30px; border-radius: 20px; background: var(--accent, var(--ik-spirulina)); flex: none; }
.widget-kpi-value { font-size: 40px; font-weight: 700; line-height: 1; color: var(--accent, var(--ik-spirulina)); font-variant-numeric: tabular-nums; }
.widget-chart { width: 100%; height: auto; display: block; overflow: visible; margin-top: 26px; }
.widget-legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 8px; font-size: 12px; color: var(--muted); font-family: var(--font-body); }
.legend-item { display: flex; align-items: center; gap: 5px; }
.legend-item i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.widget-empty { color: var(--muted); font-style: italic; font-size: 14px; }
.widget-table { width: 100%; border-collapse: collapse; font-size: 14px; font-family: var(--font-body); }
.widget-table th, .widget-table td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--border); }
/* "Toon als tabel" — exact: CardFooter (54:46/47): gecentreerd, Inter
   SemiBold 13px spirulina, onderstreept. Nu een ECHTE toggle (<details>),
   geen dode link. */
.widget-footer { text-align: center; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
/* Sinds 20-09-2026 een pil in aubergine (Alex), zelfde vorm als .baan-link;
   de opmaak komt daarvandaan, hier alleen nog het driehoekje weghalen. */
.widget-footer summary { list-style: none; cursor: pointer; font-family: var(--font-body); }
.widget-footer summary::-webkit-details-marker { display: none; }
.widget-footer[open] .widget-table { margin-top: 12px; text-align: left; }

/* ---------- Datumkiezer (20-09-2026, maten uit Figma 20-09) ----------
   Losse vakjes met een driehoekje erboven en eronder. Verhoudingen uit
   Dashboard-Pk node 104:61 (vakje 52x34, 11 ertussen, cijfers 31px,
   driehoek 45x22 met 5 ertussen); op verzoek van Alex staat alles op
   desktop een slag kleiner dan het ontwerp, met dezelfde verhoudingen.
   Vakjes zijn cream; het vakje waar je in staat wordt amandel, zoals het
   derde vakje in het ontwerp. Alle driehoekjes zijn altijd aubergine. */
.datumkiezer { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dk-vak { display: inline-flex; flex-direction: column; align-items: center; gap: 4px; }
.dk-pijl {
  border: 0; background: none; padding: 0; line-height: 0; cursor: pointer;
  color: var(--ik-aubergine);
}
.dk-driehoek { display: block; width: 40px; height: 20px; }
/* Even hoog en met dezelfde vorm als de gewone invoervelden (Alex, 20-09):
   54px, radius 15, dezelfde rand en tekstgrootte. Alleen het vlak verschilt,
   want daarmee laten we zien in welk vakje je staat. */
.dk-cijfer {
  width: 54px; height: 54px; padding: 0; margin: 0; text-align: center;
  font-family: var(--font-ui); font-size: 21px; font-weight: 400; color: var(--ik-aubergine);
  background: linear-gradient(180deg, #ffffff 0%, #f2f2f7 100%);
  border: 1px solid #e5e5ea; box-shadow: none; border-radius: 15px;
  font-variant-numeric: tabular-nums; caret-color: var(--ik-granaatappel);
  transition: background .12s;
}
/* Het vakje waar je mee bezig bent: donkerder beige (Alex 20-09). */
.dk-vak:focus-within .dk-cijfer { background: var(--ik-amandel); border-color: var(--ik-amandel); }
.dk-cijfer::placeholder { color: var(--ik-aubergine); opacity: .35; font-size: 21px; }
.dk-cijfer:focus { outline: none; }
/* Streepje tussen datum en tijd; dubbele punt tussen uur en minuut (Alex). */
.dk-scheiding { width: 10px; height: 2px; border-radius: 2px; background: var(--fg); opacity: .25; }
.dk-dubbelepunt {
  font-family: var(--font-ui); font-size: 24px; line-height: 1;
  color: var(--ik-aubergine); margin: 0 -4px;
}
.dk-fout .dk-cijfer { color: var(--ik-granaatappel); }
@media (max-width: 700px) {
  .datumkiezer { gap: 8px; }
  .dk-cijfer { width: 40px; height: 28px; font-size: 24px; }
  .dk-dubbelepunt { font-size: 21px; margin: 0 -2px; }
  .dk-cijfer::placeholder { font-size: 19px; }
  .dk-driehoek { width: 32px; height: 16px; }
}

/* Tekstvoorstel voor een flyer, klaargezet vanuit een aanvraag
   (Alex, 21-09-2026). Uitklapbaar zodat het mediablok kort blijft. */
.tekstvoorstel { margin: 6px 0 12px; }
.tekstvoorstel summary {
  list-style: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  height: 32px; padding: 0 14px; border-radius: 16px;
  border: 1.5px solid var(--ik-aubergine); color: var(--ik-aubergine); background: transparent;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .02em;
}
.tekstvoorstel summary::-webkit-details-marker { display: none; }
.tekstvoorstel[open] summary { background: var(--ik-aubergine); color: #fff; }
.tekstvoorstel p {
  margin: 10px 0 10px; padding: 16px 20px; border-radius: var(--radius-md, 15px);
  background: var(--ik-cream); font-family: var(--font-body); font-size: 15px;
  line-height: 1.55; white-space: pre-wrap;
}

/* ---------- Overige ---------- */
.muted { color: var(--muted); font-size: 14px; }
.hero-sub { color: var(--muted); margin-top: -6px; }
.leeg { color: var(--muted); font-style: italic; padding: 12px 0; }
.tabs { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
.tabs a { padding: 6px 14px; border-radius: var(--radius-pill); background: var(--white); font-size: 13px; font-weight: 700; text-transform: uppercase; box-shadow: var(--shadow-card); }
.tabs a.actief { background: var(--ik-spirulina); color: #fff; }
/* Terugknop — exact: back-button (46:16), samengesteld plaatje (witte
   cirkel + schaduw + pijl), dus geen losse CSS-cirkel meer nodig. Geen
   hover-effect: de knop ziet er altijd hetzelfde uit. */
.terugknop { display: inline-block; margin-bottom: 14px; line-height: 0; }
/* De slagschaduw van 46:16 (dy 4, blur 2, zwart 25%) staat hier in plaats van
   in het SVG-bestand: een filter binnen een SVG wordt naar pixels omgezet en
   dat geeft rafelige randen op een scherp scherm. */
.terugknop img, .sluitknop img { filter: drop-shadow(0 4px 4px rgba(0, 0, 0, .25)); }
/* Terugknop, titel en knop op één rij (department.html), titel in het
   midden i.p.v. tegen de terugknop aan. */
.paginakop-centered { display: flex; align-items: center; gap: 16px; }
.paginakop-centered .terugknop { margin-bottom: 0; flex: none; }
.paginakop-centered h1 { flex: 1; text-align: center; }
.paginakop-centered .knop { flex: none; }
.rij-item { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.rij-item:last-child { border-bottom: 0; }
.rij-item .acties { display: flex; gap: 6px; flex: none; }
.flex-tussen { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
table.overzicht { width: 100%; border-collapse: collapse; }
table.overzicht th, table.overzicht td { text-align: left; padding: 8px; border-bottom: 1px solid var(--border); }
@media (max-width: 640px) {
  table.overzicht thead { display: none; }
  table.overzicht tr { display: block; border-bottom: 2px solid var(--border); padding: 8px 0; }
  table.overzicht td { display: flex; justify-content: space-between; border-bottom: 0; padding: 4px 0; }
  table.overzicht td::before { content: attr(data-label); font-weight: 700; margin-right: 8px; }
}

/* ---------- Maandkalender (afdelingspagina en agenda) ----------
   Opzet zoals de vergaderkalender die Alex als voorbeeld gaf, opgebouwd uit
   het eigen palet: lychee kopbalk, witte kaart met radius 20px en de
   kaartschaduw, events als pil in de merkkleur van de afdeling. */
/* Paginakop: titel links, de actieknop rechts (indeling zoals het voorbeeld
   dat Alex gaf). Daaronder pas de maand met de pijlen. */
.paginakop { align-items: center; gap: 16px; margin-bottom: 18px; }
.paginakop h1 { margin: 0; }

/* Maandkop: de maand in het midden met de pijlen er direct naast. De pijl is
   de kale arrow-left (45:896), dus zonder het witte cirkeltje — dat hoort bij
   de terug- en sluitknop en nergens anders. */
.kalender-kop { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 18px; }
.kalender-kop h2 .jaartal { font-weight: 300; }
.kalender-kop h2 {
  margin: 0; font-size: clamp(24px, 4vw, 40px); line-height: 1.019;
  text-transform: uppercase; font-weight: 700; text-align: center;
}
.kalender-kop .blader { flex: none; line-height: 0; display: inline-block; }
.kalender-kop .gespiegeld img { transform: scaleX(-1); }

/* Kop met maandkeuze (20-09, Alex): titel, de maandkeuze en de plusknop op
   één rij. Gebruikt door de agenda, Marcom en de afdelingspagina's; die
   laatste heeft ook een terugknop vooraan. */
/* Grid met twee gelijke buitenkolommen (Alex, 21-09: "zet maand selectie
   altijd in het midden"): de maandkeuze staat in de middelste, vanzelf zo
   smal mogelijke kolom (`auto`), en die kolom centreert altijd op de rij
   omdat links en rechts precies evenveel ruimte krijgen (`1fr` elk) — ook
   als de titel links veel breder is dan de knop rechts. Was eerst flex met
   `flex:1` op de maandkeuze, en dat centreerde alleen in de rúimte die na
   de titel overbleef, niet op de hele rij. */
.kop-met-maand {
  display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  align-items: center; gap: 16px; margin-bottom: 18px;
}
.kop-met-maand .kop-links { display: flex; align-items: center; gap: 16px; min-width: 0; }
.kop-met-maand h1 { margin: 0; min-width: 0; }
.kop-met-maand .kalender-kop { margin-bottom: 0; }
.kop-met-maand .rondknop { justify-self: end; flex: none; }
.kop-met-maand .terugknop { flex: none; margin-bottom: 0; }
@media (max-width: 700px) {
  /* Een lange afdelingsnaam mag inkorten in plaats van de rij te breken. */
  .kop-met-maand h1 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
/* Met een terugknop én een lange afdelingsnaam past de maandkeuze er op een
   telefoon niet meer naast; die krijgt daar een eigen regel. Op desktop en
   tablet staat alles wél op één rij, gecentreerd via de grid hierboven. */
@media (max-width: 620px) {
  .kop-met-maand.met-terug { display: flex; flex-wrap: wrap; }
  .kop-met-maand.met-terug .kop-links { flex: 1; min-width: 0; }
  .kop-met-maand.met-terug .kalender-kop { flex: 1 1 100%; order: 3; justify-content: center; }
}
@media (max-width: 560px) {
  .kop-met-maand { gap: 10px; }
  .kop-met-maand h1 { font-size: 22px; }
  .kop-met-maand .kalender-kop { gap: 8px; }
  .kop-met-maand .kalender-kop h2 { font-size: 21px; }
  .kop-met-maand .kalender-kop .blader img { width: 20px; height: 20px; }
  .kop-met-maand .rondknop { width: 38px; height: 38px; }
  .kop-met-maand .terugknop { width: 38px; height: 38px; }
  .kop-met-maand .terugknop svg { width: 38px; height: 38px; }
}

.kalender-omhulsel {
  overflow-x: auto; background: var(--white); border-radius: 0;
  box-shadow: var(--shadow-card); margin-bottom: 24px;
}

/* ---------- Flyertekst-editor (marcom_flyer_tekst.html) ----------
   Gewone tekstvelden links, voorbeeldafbeelding rechts (op mobiel eronder)
   — bewust geen tekst-over-de-afbeelding-trucje, dat bleek zonder browser
   om het mee te testen te broos om goed te vertrouwen. */
.flyer-editor-grid { display: grid; grid-template-columns: 1fr; gap: 18px; }
@media (min-width: 900px) { .flyer-editor-grid { grid-template-columns: 1fr 1fr; align-items: start; } }
.flyer-voorbeeld-kaart { position: sticky; top: 18px; text-align: center; }
.flyer-voorbeeld-afbeelding { max-width: 100%; border-radius: var(--radius-md); box-shadow: var(--shadow-card); }
.flyer-afbeeldingen-lijst { display: flex; flex-wrap: wrap; gap: 12px; }
.flyer-afbeelding-veld { margin: 0; }
.flyer-afbeelding-knop {
  display: flex; flex-direction: column; align-items: center; gap: 6px; width: 140px;
  padding: 8px; border: 1px solid var(--border); border-radius: var(--radius-md);
  cursor: pointer; text-align: center; font-size: 0.85em;
}
.flyer-afbeelding-knop:hover { border-color: var(--ik-aubergine); }
.flyer-afbeelding-knop img { max-width: 100%; max-height: 90px; border-radius: var(--radius-md); }
.flyer-afbeelding-knop input[type="file"] { display: none; }
.kalender { display: grid; grid-template-columns: repeat(7, minmax(96px, 1fr)); min-width: 700px; }
.kalender-weekdag {
  background: var(--ik-lychee); color: var(--ik-aubergine);
  padding: 14px 12px; font-size: 18px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em;
}
.kalender-dag {
  min-height: 112px; padding: 10px; display: flex; flex-direction: column; gap: 6px;
  border-top: 1px solid var(--border); border-left: 1px solid var(--border); min-width: 0;
}
/* De eerste zeven cellen zijn de weekdagkoppen, dus de dagcellen beginnen bij
   kind 8: precies de 7n+1-reeks. */
.kalender-dag:nth-child(7n+1) { border-left: 0; }
.kalender-dag.buiten { background: var(--card-row-bg); }
.kalender-dag.buiten .dagnummer { color: var(--muted); }
.kalender-dag .dagnummer { font-size: 16px; font-weight: 700; }
.kalender-dag.vandaag .dagnummer {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 9999px;
  background: var(--ik-aubergine); color: #fff;
}
.kalender-event {
  display: block; border-radius: 16px; padding: 4px 12px;
  font-size: 14px; font-weight: 600; color: #fff; background: var(--ik-aubergine);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.kalender-event.brand-pk   { background: var(--brand-pk);   box-shadow: none; }
.kalender-event.brand-asft { background: var(--brand-asft); box-shadow: none; }
.kalender-event.brand-kk   { background: var(--brand-kk);   box-shadow: none; }
.kalender-event.brand-wk   { background: var(--brand-wk);   box-shadow: none; }
.kalender-events { display: flex; flex-direction: column; gap: 6px; min-width: 0; }

/* Mobiel: een smalle kalender die wél past. Alleen het daggetal met een
   gekleurd streepje per item; de namen staan in de lijst eronder. */
@media (max-width: 700px) {
  .kalender { min-width: 0; grid-template-columns: repeat(7, 1fr); }
  .kalender-weekdag { padding: 8px 2px; font-size: 15px; text-align: center; }
  .kalender-dag { min-height: 54px; padding: 6px 2px; align-items: center; gap: 4px; }
  .kalender-dag .dagnummer { font-size: 14px; }
  .kalender-dag.vandaag .dagnummer { width: 24px; height: 24px; }
  .kalender-events { flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 3px; width: 100%; }
  .kalender-event { width: 100%; height: 8px; padding: 0; border-radius: 2px; }
  .kalender-event .event-naam { display: none; }
}

/* Legenda onder de kalender: één blokje per afdeling. */
.kalender-legenda { display: flex; flex-wrap: wrap; gap: 18px; margin: -8px 0 24px; }
.kalender-legenda span { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; }
.kalender-legenda i { width: 14px; height: 14px; border-radius: 4px; display: block; }

/* Agenda-item — exact: hero-reservation-card (48:108), dezelfde kaart als op
   de projectpagina. De datumband krijgt de merkkleur van de afdeling. */
.agenda-item { display: flex; margin-bottom: 16px; }
/* De datumband is in Figma 147px breed bij "26 APRIL"; een lange maandnaam
   ("18 SEPTEMBER") past daar niet in, dus hij mag meegroeien. */
.agenda-item .hero-datum { width: 147px; }
@media (max-width: 700px) { .agenda-item .hero-datum { width: 96px; } }
/* Titel een stukje kleiner (Alex, 23-09-2026, optie B uit drie voorbeelden):
   was clamp(22px, 3.4vw, 38px). Geldt voor alle agenda-achtige kaarten
   (agenda, Media, afdelingen, evenementenlijst — zelfde regel/klasse). */
.agenda-item .hero-titelrij h2 { margin: 0; font-size: clamp(17px, 2.2vw, 24px); color: var(--fg); }
.hero-datum.merk-pk   { background: var(--brand-pk); }
.hero-datum.merk-asft { background: var(--brand-asft); }
.hero-datum.merk-kk   { background: var(--brand-kk); }
.hero-datum.merk-wk   { background: var(--brand-wk); }

/* Kaartenraster met maandstreep (23-09, Alex: eerst voor Media — "op desktop
   2 kolommen, meer in een oogopslag, met een streeptje met maand ertussen" —
   daarna hetzelfde gevraagd voor de agenda: "maak agenda events net als
   marcom agenda met de blokken zo en de lijntjes met maand"). Gedeeld door
   marcom.html, agenda.html en department.html (dezelfde .hero-project/
   .agenda-item-kaart). Op mobiel gewoon gestapeld; vanaf 860px twee
   kolommen, met een maandstreep die over allebei de kolommen loopt zodra de
   maand wisselt. EXTRAPOLATIE: dit grid en de maandstreep staan niet in
   Figma. */
.kaarten-raster { display: grid; grid-template-columns: 1fr; gap: 16px; }
.kaarten-raster .agenda-item, .kaarten-raster .hero-project { margin-bottom: 0; }
.maandstreep {
  grid-column: 1 / -1; display: flex; align-items: center; gap: 12px;
  font-family: var(--font-ui); font-weight: 700; font-size: 16px;
  text-transform: uppercase; letter-spacing: 0; color: var(--ik-aubergine);
}
.maandstreep .jaartal { font-weight: 300; }
.maandstreep::before, .maandstreep::after { content: ""; flex: 1; height: 1px; background: var(--ik-aubergine); opacity: .25; }
.maandstreep:first-child { margin-top: 0; }
@media (min-width: 860px) {
  .kaarten-raster { grid-template-columns: 1fr 1fr; gap: 18px 24px; }
}

/* ---------- Opkomen bij het scrollen ----------
   Elk item begint doorzichtig en 16px lager en schuift in 400ms op zijn plek.
   De klasse `opkomer` zet app.js erop zodra hij gaat kijken; `opgekomen`
   zodra het item in beeld komt. Zonder JS of met "verminder beweging" aan
   gebeurt er niets en staat alles gewoon meteen goed. */
.opkomer { opacity: 0; transform: translateY(16px); transition: opacity .4s ease-out, transform .4s ease-out; }
.opkomer.opgekomen { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .opkomer { opacity: 1; transform: none; transition: none; }
}

/* ---------- Grafieken: aanwijzen en aflezen ---------- */
.widget-grafiek { position: relative; }
/* Streepje en bolletjes verschijnen alleen als je over die baan gaat. */
.tipband .tipband-lijn { stroke: rgba(97, 0, 57, .25); stroke-width: 1; opacity: 0; }
.tipband .tipband-punt { opacity: 0; }
.tipband:hover .tipband-lijn, .tipband:hover .tipband-punt { opacity: 1; }
.tipband { cursor: crosshair; }

.grafiek-tip {
  position: absolute; z-index: 5; pointer-events: none;
  background: var(--ik-aubergine); color: #fff; border-radius: 10px;
  padding: 8px 12px; font-family: var(--font-ui); font-size: 14px; line-height: 1.3;
  box-shadow: 0 6px 18px rgba(97, 0, 57, .25); white-space: nowrap;
}
.grafiek-tip .tip-label { display: block; font-weight: 700; margin-bottom: 4px; }
.grafiek-tip .tip-reeks { display: flex; align-items: center; gap: 8px; }
.grafiek-tip .tip-reeks i { width: 10px; height: 10px; border-radius: 3px; flex: none; }
.grafiek-tip .tip-naam { opacity: .85; }
.grafiek-tip .tip-waarde { font-weight: 700; margin-left: auto; padding-left: 10px; }

/* Legenda: een blokje voor een doorgetrokken reeks, een streepje voor een
   gestippelde (het jaar ervoor). */
.widget-legend .legend-item i.legend-blok { width: 10px; height: 10px; border-radius: 3px; }
.widget-legend .legend-item i.legend-streep {
  width: 16px; height: 0; border: 0; border-top: 2px dashed currentColor; border-radius: 0; background: none;
}

/* ---------- Marcom ---------- */
/* Weekbord: zeven kolommen naast elkaar. Op mobiel schuift het zijwaarts in
   zijn eigen vak, net als de maandkalender op grote schermen. */
.weekbord { display: grid; grid-template-columns: repeat(7, minmax(120px, 1fr)); min-width: 840px; }
.weekbord-kolom { border-left: 1px solid var(--border); padding: 12px 10px; min-height: 220px; display: flex; flex-direction: column; gap: 8px; }
.weekbord-kolom:first-child { border-left: 0; }
.weekbord-kop { display: flex; align-items: baseline; gap: 8px; }
.weekbord-kop .weekdag { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--muted); }
.weekbord-kop .dagnummer { font-size: 18px; font-weight: 700; }
.weekbord-kolom.vandaag .weekbord-kop .dagnummer {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 9999px; background: var(--ik-aubergine); color: #fff;
}

/* Weergave- en filterknoppen staan op één rij zolang ze passen; pas als het
   niet meer past breken ze af naar de volgende regel. */
.tabsrij { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 28px; margin-bottom: 18px; }
.tabsrij .tabs { margin: 0; }

/* De drukgang: vijf stappen, bereikte stappen in de merkkleur. */
.fasenbalk { list-style: none; display: flex; flex-wrap: wrap; gap: 10px 20px; margin: 0 0 16px; padding: 0; }
.fasenbalk li { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; text-transform: uppercase; letter-spacing: .02em; color: var(--muted); }
.fasenbalk li .stip { width: 12px; height: 12px; border-radius: 9999px; border: 2px solid var(--border); display: block; }
.fasenbalk li.bereikt { color: var(--ik-aubergine); }
.fasenbalk li.bereikt .stip { background: var(--ik-spirulina); border-color: var(--ik-spirulina); }

.marcom-tekst { white-space: pre-wrap; margin: 0 0 12px; font-family: var(--font-body); font-size: 16px; }
/* Alleen om te kunnen kopiëren; niet in beeld. */
.verborgen-kopie { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

/* Bestanden bij een Marcom-item: voorbeeld plus de naam eronder. */
.bestandenrij { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 16px; }
.bestand { width: 180px; }
.bestand img:not(.icoon) { width: 180px; height: 180px; object-fit: cover; border-radius: var(--radius-md); display: block; }
.bestand .bestand-pdf {
  width: 180px; height: 180px; border-radius: var(--radius-md); background: var(--card-row-bg);
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; font-weight: 700; color: var(--ik-aubergine);
}
.bestand-onder { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; }
.bestand-naam { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bestand-formulier { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.bestand-formulier { margin-top: 14px; }

/* ---------- Aanmaakknop ----------
   Overal hetzelfde: een aubergine rondje met een witte plus (keuze van Alex).
   44px, de maat die sinds 13-09 al op de agenda stond. Geen hover-effect,
   net als de terug- en de sluitknop. */
.rondknop, button.rondknop, a.rondknop {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 9999px; flex: none;
  background: var(--ik-aubergine); border: 0; padding: 0; cursor: pointer;
  box-shadow: var(--shadow-card);
}
.rondknop .icoon { width: 20px; height: 20px; }

/* Knoppen: geen schaduw (Alex, 15-09-2026). Ingedrukt = een slag grijzer;
   dat geldt voor alle knopsoorten, ook de ronde en die in de zoekbalk. */
.knop:active, .knop.licht:active, .knop-zacht:active, .knop-item:active,
.rondknop:active, .icoon-knop:active, .zoekbalk button:active, .keuzepil:active {
  filter: brightness(.82) saturate(.85);
}
/* Bezig (formulier verstuurd, wacht op antwoord): grijzer, en een ringetje
   dat draait in de eigen tekstkleur — "je moet een loadertje zien lopen". */
.knop.bezig { position: relative; pointer-events: none; filter: brightness(.82) saturate(.85); }
.knop.bezig::after {
  content: ""; display: inline-block; width: 16px; height: 16px; margin-left: 10px;
  border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%;
  vertical-align: -3px; animation: knop-draai .7s linear infinite;
}
@keyframes knop-draai { to { transform: rotate(360deg); } }

/* ---------- Gebruikersbeheer ---------- */
.vinkjes { border: 0; padding: 0; margin: 0 0 18px; }
.vinkjes legend { font-family: var(--font-ui); font-weight: 700; font-size: 18px; text-transform: uppercase; color: var(--fg); margin-bottom: 8px; padding: 0; }
.vinkjes .keuze { display: flex; align-items: flex-start; gap: 10px; padding: 6px 0; }
.vinkjes .keuze input { margin-top: 4px; }
.vinkjes .keuze-admin { padding-bottom: 10px; margin-bottom: 6px; border-bottom: 1px solid var(--border); }
.vinkjes-uitleg { margin: 6px 0 0; }
.mappenlijst { padding-left: 26px; max-height: 260px; overflow-y: auto; }
.radiorij { display: flex; flex-wrap: wrap; gap: 4px 22px; }
.vinkjes.uit .keuze:not(.keuze-admin) { opacity: .45; }
.beheerlink { margin-top: 28px; font-size: 15px; }
.gebruiker { margin-bottom: 16px; }
.gebruiker h3 { margin: 0; }
.gebruiker-acties { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 14px; }
.gebruiker-acties .beheerform { flex: 1; min-width: 260px; }
.gebruiker-acties select { height: 44px; padding: 0 18px; font-size: 16px; box-shadow: none; }
.melding { background: var(--white); border-radius: var(--radius-md); padding: 12px 16px; box-shadow: var(--shadow-card); margin-bottom: 16px; }
.melding.fout { color: var(--ik-rode_peper, #E0292B); }

/* Keren van een uitgezet terugkerend proces: je ziet nog wát er zou gebeuren,
   maar duidelijk als uitgezet. */
.kalender-event.uitgezet { background: var(--grijs, #D1D1D1) !important; color: #6b6b6b; text-decoration: line-through; }
.agenda-item.uitgezet { opacity: .55; }
.agenda-item.uitgezet .hero-titelrij h2 { text-decoration: line-through; }
.kaart.proces.uit { opacity: .7; }

/* ---------- Marcom-item: compact, met een voorbeeld van de post ----------
   Eén strook bovenaan met alles wat je kunt doen, en daaronder hoe de post
   er straks uitziet. Geen losse blokken met grote koppen meer. */
.marcom-kop {
  display: flex; border-radius: var(--radius-lg); overflow: hidden;
  box-shadow: var(--shadow-hero); background: var(--white); margin-bottom: 20px;
}
.marcom-kop-datum {
  background: var(--ik-spirulina); color: #fff; flex: none;
  padding: 18px 16px; min-width: 120px; white-space: nowrap;
  display: flex; flex-direction: column; justify-content: center; gap: 2px;
}
.marcom-kop-datum .dag { font-weight: 700; font-size: 22px; text-transform: uppercase; line-height: 1.02; }
.marcom-kop-datum .tijd { font-size: 16px; line-height: 1.02; }
.marcom-kop-inhoud { flex: 1; min-width: 0; padding: 16px 20px; }
.marcom-kop-titelrij { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.marcom-kop-titelrij h1 { margin: 0; font-size: clamp(20px, 2.6vw, 28px); }
.marcom-kop-acties { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px; font-size: 14px; }

/* Het voorbeeld: zo breed als een bericht op een tijdlijn, niet breder. */
.post-voorbeeld {
  max-width: 520px; background: var(--white); border-radius: 16px;
  box-shadow: var(--shadow-card); overflow: hidden;
}
.post-beeld { position: relative; line-height: 0; }
/* Alleen de foto zelf, niet de icoontjes in de knoppen erop: die werden
   anders opgerekt tot een onherkenbare vorm (18-09-2026). */
.post-beeld img:not(.icoon) { width: 100%; display: block; max-height: 420px; object-fit: cover; }
.post-beeld-weg { position: absolute; top: 10px; right: 10px; }
.post-tekst { padding: 16px 18px; font-family: var(--font-body); font-size: 16px; line-height: 1.5; white-space: pre-wrap; }
.post-onder {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 0 18px 16px; border-top: 1px solid var(--border); padding-top: 14px; margin-top: 2px;
}
.post-kanalen { display: flex; gap: 14px; flex-wrap: wrap; }
.post-kanaal { display: inline-flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 600; }
.post-kanaal i { width: 10px; height: 10px; border-radius: 9999px; display: block; }
/* De herkenbare kleuren van de kanalen zelf, alleen als stipje. */
.stip-facebook  { background: #1877F2; }
.stip-instagram { background: #E1306C; }
.stip-linkedin  { background: #0A66C2; }
.post-beeld-erbij { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* Het bestandsveld zelf is onzichtbaar; de knop eromheen doet het werk. */
.knop input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
label.knop { position: relative; cursor: pointer; }
.post-uitleg { max-width: 520px; margin-top: 12px; font-size: 14px; }

/* ---------- Widget bouwen met de AI ---------- */
.wizard-kaart .bouwer-laatste, .wizard-kaart .bouwer-laatste .form-veld, .wizard-kaart .bouwer-laatste .bouwer-technisch { text-align: left; }
.wizard-kaart .bouwer-laatste h2, .wizard-kaart .bouwer-laatste > .wizard-uitleg { text-align: center; }
.bouwer-voorbeeld { margin: 0 0 12px; }
.bouwer-voorbeeld .kaart-dashboard { grid-column: 1 / -1 !important; }
.bouwer-uitleg { margin: 0 0 18px; font-family: var(--font-body); font-size: 14px; }
.bouwer-rij { display: flex; gap: 10px; align-items: center; }
.bouwer-rij input { flex: 1; min-width: 0; }
.bouwer-technisch { margin: 6px 0 14px; }
.bouwer-technisch summary { cursor: pointer; font-weight: 600; color: var(--ik-spirulina); margin-bottom: 10px; }
.bouwer-technisch textarea { font-family: ui-monospace, Menlo, monospace; font-size: 14px; border-radius: 16px; }

/* ---------- Homepage: drie banen onder de afdelingskaarten ---------- */
/* Homepage (15-09): zoekbalk, agendategels in de afdelingskleur, openstaand
   als lijst, cijfers onderaan. Tegel naar het voorbeeld van Alex: 227×248,
   radius 24, witte tekst; datum vet, tijd licht, titel vet en afgekort. */
.agenda-tegels { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
/* Tegel: wit (Alex 17-09, was eerst grijs op 15-09), aubergine tekst,
   met alleen een streepje in de afdelingskleur. */
.agenda-tegel {
  display: flex; flex-direction: column; justify-content: center; gap: 6px;
  min-height: 190px; padding: 22px 20px; border-radius: 20px; min-width: 0;
  background: var(--white); color: var(--fg); text-decoration: none; font-family: var(--font-ui);
  box-shadow: var(--shadow-card);
}
.agenda-tegel:hover { filter: brightness(1.04); }
.agenda-tegel .tegel-streep { width: 28px; height: 4px; border-radius: 4px; margin-bottom: 8px; background: var(--brand-pk); }
.agenda-tegel.merk-pk   .tegel-streep { background: var(--brand-pk); }
.agenda-tegel.merk-asft .tegel-streep { background: var(--brand-asft); }
.agenda-tegel.merk-kk   .tegel-streep { background: var(--brand-kk); }
.agenda-tegel.merk-wk   .tegel-streep { background: var(--brand-wk); }
.agenda-tegel .tegel-dag { font-size: 26px; font-weight: 700; text-transform: uppercase; line-height: 1.05; }
.agenda-tegel .tegel-tijd { font-size: 19px; font-weight: 300; line-height: 1.05; min-height: 1.05em; white-space: nowrap; }
.agenda-tegel .tegel-titel {
  margin-top: 18px; font-size: 17px; font-weight: 700; text-transform: uppercase; line-height: 1.1;
  overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
/* Kop van de evenementpagina in dezelfde vorm als de agendategels hierboven
   (Alex, 20-09-2026): witte kaart, streepje in de afdelingskleur, daaronder
   datum, tijd en titel. Hergebruikt bewust .tegel-streep/-dag/-tijd, zodat
   één wijziging aan die stijl overal doorwerkt. */
.hero-kaart {
  display: flex; align-items: flex-start; gap: 28px;
  background: var(--white); color: var(--fg); font-family: var(--font-ui);
  border-radius: 20px; padding: 28px 30px; margin-bottom: 18px;
  box-shadow: var(--shadow-card);
}
/* Datum links, naam ernaast (Alex, 20-09-2026). De datumkolom groeit niet mee
   maar krimpt ook niet weg; "18 SEPTEMBER" moet er nog in passen. */
.hero-kaart-datum { display: flex; flex-direction: column; gap: 6px; flex: none; max-width: 45%; }
.hero-kaart-tekst { flex: 1; min-width: 0; }
.hero-kaart .tegel-streep { width: 28px; height: 4px; border-radius: 4px; margin-bottom: 8px; background: var(--brand-pk); }
.hero-kaart.merk-pk   .tegel-streep { background: var(--brand-pk); }
.hero-kaart.merk-asft .tegel-streep { background: var(--brand-asft); }
.hero-kaart.merk-kk   .tegel-streep { background: var(--brand-kk); }
.hero-kaart.merk-wk   .tegel-streep { background: var(--brand-wk); }
.hero-kaart .tegel-dag { font-size: 26px; font-weight: 700; text-transform: uppercase; line-height: 1.05; }
.hero-kaart .tegel-tijd { font-size: 19px; font-weight: 300; line-height: 1.05; white-space: nowrap; }
/* De titel begint op dezelfde hoogte als de datum: het streepje erboven is
   4px hoog met 8px eronder, dus 12px extra ruimte aan de tekstkant. */
.hero-kaart h1 { margin: 12px 0 0; font-size: clamp(20px, 3vw, 34px); color: var(--fg); overflow-wrap: anywhere; }
.hero-kaart .hero-sub { margin: 4px 0 0; }
.hero-kaart .hero-meta { margin-top: 16px; }
@media (max-width: 700px) {
  .hero-kaart { padding: 20px; border-radius: 16px; gap: 16px; }
  .hero-kaart .tegel-dag { font-size: 20px; }
  .hero-kaart .tegel-tijd { font-size: 14px; white-space: normal; }
  .hero-kaart .tegel-streep { width: 20px; height: 3px; margin-bottom: 5px; }
  .hero-kaart h1 { margin-top: 8px; }
  .hero-kaart .hero-meta { margin-top: 12px; }
}

/* Op mobiel een stuk kleiner (Alex 15-09): drie naast elkaar, compacte tekst. */
@media (max-width: 900px) {
  .agenda-tegels { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
  .agenda-tegel { min-height: 0; padding: 12px 12px 14px; border-radius: 14px; gap: 3px; }
  .agenda-tegel .tegel-streep { width: 20px; height: 3px; margin-bottom: 4px; }
  .agenda-tegel .tegel-dag { font-size: 17px; }
  .agenda-tegel .tegel-tijd { font-size: 13px; }
  .agenda-tegel .tegel-titel { margin-top: 8px; font-size: 12px; }
}
.raster-link { text-align: right; margin: 10px 0 26px; }
/* "Hele agenda" / "Alle cijfers": een omlijnde knop in aubergine met
   kapitalen (Alex 18-09, was een onderstreepte spirulina-tekstlink). */
.baan-link {
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: .02em;
  color: var(--ik-aubergine); text-decoration: none; background: transparent;
  border: 1.5px solid var(--ik-aubergine); border-radius: var(--radius-pill); padding: 6px 14px;
}
.baan-link:hover { background: var(--ik-aubergine); color: #fff; }
.taakbalken { display: flex; flex-direction: column; gap: 10px; margin-bottom: 26px; }
/* Taakkaart — stijl exact: Task Card (161:13) uit Figma "Dashboard-Pk": wit,
   rand 1px #d9d9d9, radius 16px, schaduw 0 6px 8px rgba(74,62,61,.04),
   padding 16/20, gap 16 (Alex 23-09). Merkkleur-blokje, toewijzen/uitnodigen
   en de persoon-pil stonden niet in dat voorbeeld — op Alex' keuze bewaard
   met de al bestaande stijlelementen (zie hun eigen regels verderop). */
.taakbalk {
  display: flex; align-items: center; gap: 16px; padding: 16px 20px;
  background: var(--white); border: 1px solid #d9d9d9; border-radius: 16px;
  box-shadow: 0px 6px 8px 0px rgba(74,62,61,.04);
  color: var(--fg); text-decoration: none; overflow: hidden; box-sizing: border-box;
}
/* Geen gekleurd vlak meer (Alex, 23-09): het soort-icoon staat los, in de
   merkkleur zelf i.p.v. wit-op-kleur. EXTRAPOLATIE, dit blokje staat niet
   in Figma. */
.taakbalk-kleur {
  flex: none; width: 40px; height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  background: none; color: var(--brand-pk);
}
.taakbalk-kleur svg { width: 22px; height: 22px; }
.taakbalk:hover .taakbalk-titel { color: var(--ik-spirulina); }
.taakbalk.klaar { opacity: .4; }
.taakbalk-form { display: contents; }
/* Checkbox-rand exact: Checkbox Wrapper (161:14): 24px, licht grijs
   onafgevinkt; groen-afgevinkt is bestaand gedrag (checkbox-knop.aan). */
.taakbalk .checkbox-knop { width: 24px; height: 24px; border-color: #d9d9d9; }
.taakbalk .checkbox-knop.aan { border-color: var(--ik-appel); }
/* Kleiner dan een gewone pil, en met alleen de voornaam erin (Alex, 23-09):
   in deze kleine kaart trok de standaardmaat te veel aandacht. */
.taakbalk-persoon { flex: none; max-width: 120px; height: 22px; padding: 0 10px; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.taakbalk-toewijs {
  flex: none; width: 32px; height: 32px; border-radius: 16px; border: 0; cursor: pointer; padding: 0;
  display: inline-flex; align-items: center; justify-content: center; background: var(--ik-amandel); color: var(--fg);
}
.taakbalk-toewijs:hover { filter: brightness(.94); }
/* Nu net als taakbalk-toewijs een rond icoonknopje, geen tekst meer
   (Alex, 23-09) — icon.persoon_plus() i.p.v. persoon()+"Uitnodigen". */
.taakbalk-uitnodig {
  flex: none; width: 32px; height: 32px; border-radius: 16px; border: 0; cursor: pointer; padding: 0;
  display: inline-flex; align-items: center; justify-content: center; background: var(--ik-amandel); color: var(--fg);
}
.taakbalk-uitnodig:hover { filter: brightness(.94); }
@media (max-width: 700px) {
  .taakbalk { gap: 10px; padding: 14px 16px; }
  .taakbalk-kleur { width: 34px; height: 34px; }
  .taakbalk-kleur svg { width: 17px; height: 17px; }
  .taakbalk-titel { font-size: 15px; }
  .taakbalk-subtitel, .taakbalk-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .taakbalk-datum { display: none; }
  .taakbalk-persoon { max-width: 90px; }
}
.taakbalk.rand-pk   .taakbalk-kleur { color: var(--brand-pk); }
.taakbalk.rand-asft .taakbalk-kleur { color: var(--brand-asft); }
.taakbalk.rand-kk   .taakbalk-kleur { color: var(--brand-kk); }
.taakbalk.rand-wk   .taakbalk-kleur { color: var(--brand-wk); }
.taakbalk-tekst { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; color: inherit; text-decoration: none; }
/* Titel/subtekst — exact: Task Title (161:17) Inter Semibold 16px aubergine;
   Task Content 2e regel (162:12) Inter Medium 12px #8c828a. */
.taakbalk-titel { font-family: var(--font-body); font-size: 16px; font-weight: 600; line-height: normal; color: var(--ik-aubergine); }
.taakbalk-subtitel { font-family: var(--font-body); font-size: 12px; font-weight: 500; color: #8c828a; }
.taakbalk-meta { font-size: 13px; color: #8c828a; font-family: var(--font-body); }
/* Datum-tag — exact: Category Tag (161:19): lychee op 80% dekking, pil,
   kalendericoon, hoofdletters Semibold 11px aubergine. */
.taakbalk-datum {
  flex: none; display: inline-flex; align-items: center; gap: 4px;
  background: var(--ik-lychee); opacity: .8; padding: 4px 10px; border-radius: var(--radius-pill);
  font-family: var(--font-body); font-size: 11px; font-weight: 600; letter-spacing: .02em;
  text-transform: uppercase; color: var(--ik-aubergine); white-space: nowrap;
}
.cijfers-home { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); margin: 0; }
.cijfers-home .cijferblok { text-decoration: none; color: var(--fg); display: block; }
.cijfers-home .cijferblok:hover { filter: brightness(.97); }
.cijfers-home .widget-kpi { min-height: 64px; }
.cijfers-home .widget-kpi-value { font-size: 34px; }

/* Aannames van de AI op de laatste stap van de evenementenwizard. */
.aannames { text-align: left; margin: 14px auto 0; max-width: 46ch; padding-left: 20px; font-family: var(--font-body); font-size: 15px; color: var(--fg); }
.aannames li { margin-bottom: 4px; }

/* Kiezer "uit Microsoft 365" (popup in Marcom, fragment bestanden_kiezer.html):
   dezelfde beheerrij-regels als elders, maar aanklikbaar als knop. */
.kiezer-rij {
  width: 100%; background: none; border: 0; border-bottom: 1px solid var(--border);
  padding: 10px 4px; cursor: pointer; font-family: var(--font-ui); font-size: 17px;
  color: var(--fg); display: flex; align-items: center; gap: 12px;
}
.kiezer-rij:hover { background: var(--card-row-bg); }
.kiezer-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 6px; flex: none; }
.kiezer-kruimels { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.kiezer-kruimel {
  background: none; border: 0; padding: 0; cursor: pointer;
  font-family: var(--font-body); font-size: 13px; color: var(--ik-spirulina); text-decoration: underline;
}

/* Bonnetje inschieten (financien_bon_scannen.html): twee grote keuzeknoppen
   met een pictogram in plaats van het kale bestandsveld van de browser
   (Alex 18-09). Zelfde vorm als de teamlink-pagina, met de eigen tokens. */
.bon-opdracht { font-family: var(--font-body); font-size: 16px; line-height: 1.5; margin: 0 0 20px; }
.bonknoppen { display: flex; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.bonknop {
  flex: 1; min-width: 160px; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 10px; padding: 26px 12px; cursor: pointer; text-align: center;
  border: 2px solid var(--ik-spirulina); border-radius: var(--radius-lg); background: var(--white);
  color: var(--fg); font-family: var(--font-ui); font-weight: 600; font-size: 16px;
  text-transform: uppercase; letter-spacing: .02em;
}
.bonknop:active { background: var(--card-row-bg); }
.bonknop svg { width: 34px; height: 34px; stroke: var(--ik-spirulina); }
.bonknop input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

/* Bonnetje nakijken door de indiener (financien_bon_nakijken.html). */
.bon-nakijken .bon-foto { width: 100%; max-height: 300px; object-fit: contain; border-radius: var(--radius-md); background: var(--card-row-bg); display: block; margin-bottom: 18px; }

/* Dagschema-blok op de evenementpagina (bloktype 'dagschema', 20-09-2026):
   tijd links, wat er gebeurt ernaast; klikken opent de pop-up om te wijzigen. */
.dagschema-tabel .dagschema-tijd { font-family: var(--font-ui); font-weight: 700; width: 74px; white-space: nowrap; }
/* Dagschema in dezelfde vorm als het menu (Alex, 20-09): zelfde vlak en
   tekstgrootte, met de tijd ervoor in de kleur van het merk. */
.media-regel { text-decoration: none; color: var(--fg); }
.media-regel:hover .menu-naam { color: var(--ik-spirulina); }
.media-regel .pill-eigenschap { margin-right: 10px; }
.dagschema-regel { cursor: pointer; }
.dagschema-regel:hover { background: var(--ik-amandel); }
.dagschema-regel .dagschema-tijd {
  display: inline-block; min-width: 74px; font-family: var(--font-ui);
  font-weight: 700; font-size: 22px; color: var(--ik-spirulina);
}
/* Witte kaart eromheen (Alex, 20-09-2026). De tabel loopt tot de rand van de
   kaart door; de laatste rij hoeft geen streepje meer, de kaartrand doet dat. */
.dagschema-kaart { padding: 10px 24px; }
.dagschema-kaart .widget-table { margin: 0; }
.dagschema-kaart .widget-table tr:last-child td { border-bottom: 0; }
.dagschema-kaart .leeg { margin: 12px 0; }
