@charset "UTF-8";
/* ==========================================================================
   ZENTRO KOERIER, DASHBOARD
   Bestand : _dashboard/assets/dashboard.css

   Kleuren komen uit het ontwerpsysteem van de website (site/assets/zentro.css),
   zodat het dashboard onmiskenbaar bij hetzelfde bedrijf hoort. De
   contrastregel van de site geldt hier onverkort: oranje is een VLAKkleur en
   draagt nooit witte tekst.

   Lettertypen: alleen systeemletters. Geen enkel verzoek naar buiten, want dan
   gaat het IP-adres van de gebruiker naar een derde partij. Dat is bij een
   beheerpaneel net zo ongewenst als op de site zelf.
   ========================================================================== */

:root {
	color-scheme: light;

	--paars:        #4A2BCC;
	--paars-donker: #341AA1;
	--paars-diep:   #25107A;
	--paars-licht:  #E7E6FD;
	--accent:       #F7931E;
	--accent-donker:#8A4B00;

	--navy:        #000038;
	--tekst:       #4C4C5B;
	--tekst-zacht: #6A6A78;
	--wit:         #FFFFFF;
	--vlak:        #F6F4FC;
	--rand:        #D9D8E4;
	--rand-sterk:  #767689;

	--goed:        #1B7A4B;
	--goed-vlak:   #E4F5EC;
	--fout:        #B3261E;
	--fout-vlak:   #FCEAE8;
	--letop:       #8A4B00;
	--letop-vlak:  #FDF1E0;

	--body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	--rond:   10px;
	--rond-s: 6px;
	--schaduw: 0 1px 2px rgba(0, 0, 56, .06), 0 4px 16px rgba(0, 0, 56, .05);
	--breedte: 1240px;
}

*, *::before, *::after { box-sizing: border-box; }

body {
	margin: 0;
	font-family: var(--body);
	font-size: 16px;
	line-height: 1.55;
	color: var(--tekst);
	background: var(--vlak);
	-webkit-text-size-adjust: 100%;
}

h1, h2, h3 { color: var(--navy); line-height: 1.2; margin: 0; font-weight: 700; }
h1 { font-size: clamp(1.5rem, 1.3rem + 1vw, 2rem); }
h2 { font-size: 1.0625rem; }
p  { margin: 0 0 1rem; }
a  { color: var(--paars-donker); }
a:hover { color: var(--paars-diep); }

img, svg { max-width: 100%; }

/* Zichtbare focus, overal. Wie met het toetsenbord werkt moet kunnen zien
   waar hij is; dit is de goedkoopste toegankelijkheidswinst die er is. */
:focus-visible {
	outline: 3px solid var(--paars);
	outline-offset: 2px;
	border-radius: 3px;
}

.verborgen {
	position: absolute; width: 1px; height: 1px;
	padding: 0; margin: -1px; overflow: hidden;
	clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.overslaan {
	position: absolute; left: -9999px; top: 0; z-index: 100;
	background: var(--navy); color: #fff; padding: .75rem 1rem;
}
.overslaan:focus { left: 0; }

/* --- Kopbalk ------------------------------------------------------------ */

.kopbalk {
	background: var(--paars-diep);
	border-bottom: 3px solid var(--accent);
}
.kopbalk__binnen {
	max-width: var(--breedte);
	margin: 0 auto;
	padding: .75rem 1.25rem;
	display: flex;
	align-items: center;
	gap: 1.5rem;
	flex-wrap: wrap;
}

.merk { display: flex; align-items: center; gap: .625rem; text-decoration: none; }
.merk__teken {
	display: grid; place-items: center;
	width: 34px; height: 34px; flex: none;
	background: var(--accent); color: var(--navy);
	font-weight: 800; font-size: 1.125rem;
	border-radius: 8px;
}
.merk__teken--groot { width: 52px; height: 52px; font-size: 1.75rem; margin: 0 auto .75rem; }
.merk__naam { color: #fff; font-weight: 700; line-height: 1.15; }
.merk__naam small { display: block; font-weight: 500; font-size: .75rem; color: #C9C3F5; }

.menu { display: flex; gap: .25rem; flex-wrap: wrap; margin-right: auto; }
.menu__item {
	color: #DEDAFA; text-decoration: none;
	padding: .5rem .875rem; border-radius: var(--rond-s);
	font-weight: 600; font-size: .9375rem;
	display: inline-flex; align-items: center; gap: .5rem;
}
.menu__item:hover { background: rgba(255, 255, 255, .12); color: #fff; }
.menu__item--actief { background: #fff; color: var(--paars-diep); }

.kopbalk__rechts { display: flex; align-items: center; gap: .75rem; }
.gebruiker { color: #C9C3F5; font-size: .875rem; }

.teller {
	background: var(--accent); color: var(--navy);
	font-size: .75rem; font-weight: 800;
	min-width: 20px; padding: 0 .375rem;
	border-radius: 999px; text-align: center;
}

/* --- Omhulsel ----------------------------------------------------------- */

.omhulsel {
	max-width: var(--breedte);
	margin: 0 auto;
	padding: 1.75rem 1.25rem 3rem;
}

.paginakop { margin-bottom: 1.5rem; }
.paginakop p { color: var(--tekst-zacht); margin: .375rem 0 0; max-width: 62ch; }
.paginakop--met-actie {
	display: flex; justify-content: space-between;
	align-items: flex-start; gap: 1rem; flex-wrap: wrap;
}

.kruimel { font-size: .875rem; color: var(--tekst-zacht); margin-bottom: .75rem; }
.kruimel span { margin: 0 .375rem; }

/* --- Kaarten ------------------------------------------------------------ */

.kaart {
	background: #fff;
	border: 1px solid var(--rand);
	border-radius: var(--rond);
	box-shadow: var(--schaduw);
	padding: 1.25rem;
	margin-bottom: 1.25rem;
}
.kaart--vlak { padding: 0; overflow: hidden; }

.kaart__kop {
	display: flex; justify-content: space-between; align-items: baseline;
	gap: 1rem; margin-bottom: .75rem;
}
.kaart--vlak .kaart__kop { padding: 1.25rem 1.25rem 0; }

.verwijzing { font-size: .875rem; font-weight: 600; text-decoration: none; }
.verwijzing:hover { text-decoration: underline; }

.kolommen { display: grid; gap: 1.25rem; grid-template-columns: 1fr 1fr; align-items: start; }
.kolommen--breed-links { grid-template-columns: 1.6fr 1fr; }
.kolom { display: block; }

/* --- Cijfers ------------------------------------------------------------ */

.cijfers {
	display: grid; gap: 1rem; margin-bottom: 1.5rem;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.cijfer {
	background: #fff; border: 1px solid var(--rand); border-left: 4px solid var(--paars);
	border-radius: var(--rond); padding: 1rem 1.125rem;
	text-decoration: none; color: inherit; display: block;
	box-shadow: var(--schaduw);
}
a.cijfer:hover { border-color: var(--paars); border-left-color: var(--paars-diep); }
.cijfer--stil { border-left-color: var(--rand-sterk); }
.cijfer--waarschuwing { border-left-color: var(--fout); background: var(--fout-vlak); }
.cijfer__getal { display: block; font-size: 2rem; font-weight: 800; color: var(--navy); line-height: 1.1; }
.cijfer__naam  { display: block; font-weight: 600; color: var(--navy); font-size: .9375rem; }
.cijfer__bij   { display: block; color: var(--tekst-zacht); font-size: .8125rem; margin-top: .125rem; }

/* --- Lijsten ------------------------------------------------------------ */

.lijst { list-style: none; margin: 0; padding: 0; }
.lijst li + li { border-top: 1px solid var(--rand); }
.lijst__regel {
	display: grid; gap: .125rem;
	grid-template-columns: 1fr auto;
	padding: .75rem .25rem; text-decoration: none; color: inherit;
}
.lijst__regel:hover { background: var(--vlak); }
.lijst__hoofd { grid-column: 1; display: flex; align-items: center; gap: .5rem; color: var(--navy); }
.lijst__bij   { grid-column: 1; color: var(--tekst-zacht); font-size: .875rem; }
.lijst__tijd  { grid-column: 2; grid-row: 1 / span 2; color: var(--tekst-zacht); font-size: .8125rem; white-space: nowrap; }
.lijst__regel--nieuw .lijst__hoofd strong { font-weight: 800; }

.leeg { color: var(--tekst-zacht); padding: 1rem .25rem; margin: 0; }
.kaart--vlak .leeg { padding: 1.5rem 1.25rem; }
.zacht { color: var(--tekst-zacht); }
.klein { font-size: .8125rem; }

.stip {
	width: 8px; height: 8px; border-radius: 50%;
	background: var(--paars); display: inline-block; flex: none;
}

/* --- Vlaggen ------------------------------------------------------------ */

.vlag {
	display: inline-block; font-size: .75rem; font-weight: 700;
	padding: .125rem .5rem; border-radius: 999px; white-space: nowrap;
}
.vlag--nieuw    { background: var(--paars-licht); color: var(--paars-diep); }
.vlag--opgepakt { background: var(--letop-vlak);  color: var(--letop); }
.vlag--afgerond { background: var(--goed-vlak);   color: var(--goed); }
.vlag--let-op   { background: var(--letop-vlak);  color: var(--letop); }
.vlag--fout     { background: var(--fout-vlak);   color: var(--fout); }
.vlag--stil     { background: var(--vlak);        color: var(--tekst-zacht); }

/* --- Meldingen ---------------------------------------------------------- */

.melding {
	padding: .75rem 1rem; border-radius: var(--rond-s);
	border-left: 4px solid; margin: 0 0 1.25rem; font-size: .9375rem;
}
.melding--goed   { background: var(--goed-vlak);  border-color: var(--goed);  color: #10502F; }
.melding--fout   { background: var(--fout-vlak);  border-color: var(--fout);  color: #7A1A15; }
.melding--let-op { background: var(--letop-vlak); border-color: var(--accent); color: var(--letop); }

/* --- Knoppen ------------------------------------------------------------ */

.knop {
	display: inline-flex; align-items: center; justify-content: center;
	gap: .5rem; padding: .625rem 1.125rem;
	border-radius: var(--rond-s); border: 1px solid var(--rand-sterk);
	background: #fff; color: var(--navy);
	font: inherit; font-weight: 600; font-size: .9375rem;
	text-decoration: none; cursor: pointer;
	min-height: 44px;   /* raakvlak volgens WCAG 2.5.8 */
}
.knop:hover { background: var(--vlak); }
.knop--primair { background: var(--paars); border-color: var(--paars); color: #fff; }  /* 8,37:1 */
.knop--primair:hover { background: var(--paars-donker); border-color: var(--paars-donker); color: #fff; }
.knop--stil { border-color: var(--rand); color: var(--tekst); }
.knop--gevaar { border-color: var(--fout); color: var(--fout); }
.knop--gevaar:hover { background: var(--fout-vlak); }
.knop--klein { padding: .375rem .75rem; min-height: 36px; font-size: .875rem; }
.knop--breed { width: 100%; }
.knop:disabled { opacity: .55; cursor: not-allowed; }

.knop--status { border-color: var(--rand); }
.knop--status-actief { background: var(--paars); border-color: var(--paars); color: #fff; }
.statusknoppen { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .5rem; }

.inline { display: inline; }

/* --- Filters ------------------------------------------------------------ */

.filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.filter {
	padding: .375rem .875rem; border-radius: 999px;
	border: 1px solid var(--rand); background: #fff;
	text-decoration: none; color: var(--tekst); font-size: .875rem; font-weight: 600;
}
.filter:hover { border-color: var(--rand-sterk); }
.filter--actief { background: var(--navy); border-color: var(--navy); color: #fff; }
.filter span { opacity: .7; }

/* --- Tabel -------------------------------------------------------------- */

.tabelrol { overflow-x: auto; }
.tabel { width: 100%; border-collapse: collapse; font-size: .9375rem; }
.tabel th {
	text-align: left; padding: .75rem 1rem;
	background: var(--navy); color: #fff;   /* huisregel: donkere kop, witte vette tekst */
	font-weight: 700; font-size: .8125rem;
	text-transform: uppercase; letter-spacing: .04em;
	white-space: nowrap;
}
.tabel td { padding: .75rem 1rem; border-top: 1px solid var(--rand); vertical-align: top; }
.tabel tr:hover td { background: var(--vlak); }
.rij--nieuw td { background: #FCFBFF; }
.tabel__tijd { white-space: nowrap; color: var(--tekst-zacht); font-size: .875rem; }
.tabel__actie { text-align: right; white-space: nowrap; }

/* --- Gegevenslijst ------------------------------------------------------ */

.gegevens { display: grid; grid-template-columns: max-content 1fr; gap: .5rem 1rem; margin: 0 0 1rem; }
.gegevens dt { color: var(--tekst-zacht); font-size: .875rem; }
.gegevens dd { margin: 0; color: var(--navy); }
.gegevens--compact { gap: .25rem 1rem; font-size: .9375rem; }
.opmerking { background: var(--vlak); padding: 1rem; border-radius: var(--rond-s); margin: 0; }

/* --- Mail --------------------------------------------------------------- */

.mailindeling { display: grid; grid-template-columns: 200px 1fr; gap: 1.25rem; align-items: start; }

.mappen { display: flex; flex-direction: column; gap: .25rem; }
.mappen__item {
	padding: .625rem .875rem; border-radius: var(--rond-s);
	text-decoration: none; color: var(--tekst); font-weight: 600; font-size: .9375rem;
	display: flex; align-items: center; justify-content: space-between; gap: .5rem;
}
.mappen__item:hover { background: #fff; }
.mappen__item--actief { background: var(--paars); color: #fff; }
.mappen__item--actief .teller { background: #fff; color: var(--paars-diep); }

.berichten { list-style: none; margin: 0; padding: 0; }
.bericht + .bericht { border-top: 1px solid var(--rand); }
.bericht__link {
	display: grid; gap: .125rem;
	grid-template-columns: minmax(0, 15rem) minmax(0, 1fr) auto;
	align-items: baseline;
	padding: .875rem 1.25rem; text-decoration: none; color: inherit;
}
.bericht__link:hover { background: var(--vlak); }
.bericht__van { color: var(--navy); display: flex; align-items: center; gap: .5rem; min-width: 0; }
.bericht__onderwerp { color: var(--tekst); min-width: 0; display: flex; align-items: center; gap: .5rem; }
.bericht__tijd { color: var(--tekst-zacht); font-size: .8125rem; white-space: nowrap; }
.bericht--nieuw .bericht__van,
.bericht--nieuw .bericht__onderwerp { font-weight: 700; color: var(--navy); }

.bladeren { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.25rem; border-top: 1px solid var(--rand); }

.berichtkop { border-bottom: 1px solid var(--rand); padding-bottom: 1rem; margin-bottom: 1rem; }
.berichtkop h1 { margin-bottom: .75rem; }
.berichtacties { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin-bottom: 1.25rem; }

.bijlagen { background: var(--vlak); border-radius: var(--rond-s); padding: .875rem 1rem; margin-bottom: 1.25rem; }
.bijlagen h2 { font-size: .875rem; margin-bottom: .5rem; }
.bijlagen ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .375rem; }
.bijlagen li { display: flex; gap: .5rem; align-items: baseline; font-size: .9375rem; }

.berichtromp { overflow-wrap: anywhere; }
.berichtromp table { max-width: 100%; border-collapse: collapse; }
.berichtromp td, .berichtromp th { border: 1px solid var(--rand); padding: .375rem .5rem; }
.berichtromp blockquote {
	margin: 0 0 1rem; padding-left: 1rem;
	border-left: 3px solid var(--rand); color: var(--tekst-zacht);
}
.berichtromp pre { overflow-x: auto; background: var(--vlak); padding: .75rem; border-radius: var(--rond-s); }

/* --- Formulieren -------------------------------------------------------- */

.veld { margin-bottom: 1rem; }
.veld label { display: block; font-weight: 600; color: var(--navy); margin-bottom: .375rem; font-size: .9375rem; }
.veld input, .veld textarea {
	width: 100%; font: inherit; color: var(--tekst);
	padding: .625rem .75rem;
	border: 1px solid var(--rand-sterk);   /* WCAG 1.4.11 eist 3:1 op de begrenzing */
	border-radius: var(--rond-s);
	background: #fff;
}
.veld textarea { resize: vertical; min-height: 12rem; line-height: 1.6; }
.veld input:focus, .veld textarea:focus { border-color: var(--paars); }
.formulier__voet { display: flex; gap: .625rem; flex-wrap: wrap; margin-top: .5rem; }

/* --- Inlogpagina -------------------------------------------------------- */

.inlogpagina {
	background: linear-gradient(160deg, #351C9F 0%, #472AC6 55%, #7A59E9 100%);
	min-height: 100vh;
	display: grid; place-items: center;
	padding: 1.5rem;
}
.inlogvak {
	background: #fff; border-radius: 14px;
	box-shadow: 0 10px 40px rgba(0, 0, 56, .28);
	padding: 2rem; width: 100%; max-width: 25rem;
}
.inlogvak__merk { text-align: center; margin-bottom: 1.5rem; }
.inlogvak__merk h1 { font-size: 1.375rem; }
.inlogvak__merk p { color: var(--tekst-zacht); font-size: .9375rem; margin: .25rem 0 0; }
.inlogformulier { margin-top: 1rem; }
.inlogvak__voet { color: var(--tekst-zacht); font-size: .8125rem; text-align: center; margin: 1.25rem 0 0; }

/* --- Voet --------------------------------------------------------------- */

.voet {
	border-top: 1px solid var(--rand);
	background: #fff;
	padding: 1.25rem;
}
.voet p {
	max-width: var(--breedte); margin: 0 auto;
	color: var(--tekst-zacht); font-size: .8125rem; text-align: center;
}

/* --- Smallere schermen --------------------------------------------------- */

@media (max-width: 900px) {
	.kolommen, .kolommen--breed-links { grid-template-columns: 1fr; }
	.mailindeling { grid-template-columns: 1fr; }
	.mappen { flex-direction: row; flex-wrap: wrap; }
	.bericht__link { grid-template-columns: 1fr auto; }
	.bericht__van { grid-column: 1; }
	.bericht__onderwerp { grid-column: 1; }
	.bericht__tijd { grid-column: 2; grid-row: 1 / span 2; }
}

@media (max-width: 620px) {
	.kopbalk__binnen { gap: .75rem; }
	.menu { order: 3; width: 100%; }
	.menu__item { flex: 1; justify-content: center; }
	.paginakop--met-actie .knop { width: 100%; }
	.berichtacties .knop { width: 100%; }
	.berichtacties form { width: 100%; }
}
