/* VirtuFlow Klantenportaal — huisstijl
   Kleuren: blauw #0079FE, oranje #F4AF27, paars #A259FF
   Lettertype: Jost (Google Fonts, enkel geladen op de portaalpagina) */

:root {
	--vf-blauw: #0079FE;
	--vf-oranje: #F4AF27;
	--vf-paars: #A259FF;
	--vf-tekst: #1B1F27;
	--vf-tekst-zacht: #5B6272;
	--vf-rand: #E6E8EE;
	--vf-achtergrond: #F7F8FB;
	--vf-wit: #FFFFFF;
	--vf-groen: #23A26D;
	--vf-rood: #E5484D;
}

.vf-portal, .vf-portal * {
	box-sizing: border-box;
}

.vf-portal {
	font-family: 'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	color: var(--vf-tekst);
	background: var(--vf-achtergrond);
	min-height: 100vh;
	display: flex;
	line-height: 1.5;
}

/* ---------- Login ---------- */

.vf-portal-login {
	width: 100%;
	align-items: center;
	justify-content: center;
	padding: 40px 20px;
}

.vf-login-card {
	background: var(--vf-wit);
	border: 1px solid var(--vf-rand);
	border-radius: 16px;
	padding: 40px;
	width: 100%;
	max-width: 400px;
	box-shadow: 0 8px 30px rgba(27, 31, 39, 0.06);
}

.vf-login-logo {
	font-weight: 700;
	font-size: 22px;
	color: var(--vf-blauw);
	margin-bottom: 16px;
}

.vf-login-card h2 {
	font-size: 18px;
	margin: 0 0 20px;
}

.vf-login-card p.login-remember { display: none; }

.vf-login-card label {
	display: block;
	font-size: 13px;
	font-weight: 500;
	margin-bottom: 6px;
	color: var(--vf-tekst-zacht);
}

.vf-login-card input[type="text"],
.vf-login-card input[type="password"] {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--vf-rand);
	border-radius: 10px;
	margin-bottom: 16px;
	font-family: inherit;
	font-size: 14px;
}

.vf-login-card input[type="submit"] {
	width: 100%;
	background: var(--vf-blauw);
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 12px;
	font-family: inherit;
	font-weight: 600;
	font-size: 15px;
	cursor: pointer;
}

.vf-login-hulp {
	text-align: center;
	margin-top: 16px;
	font-size: 13px;
}

.vf-login-hulp a { color: var(--vf-blauw); text-decoration: none; }

/* ---------- Layout: navigatie + hoofdinhoud ---------- */

.vf-portal-nav {
	width: 250px;
	flex-shrink: 0;
	background: var(--vf-wit);
	border-right: 1px solid var(--vf-rand);
	padding: 24px 16px;
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.vf-portal-nav-logo {
	font-weight: 700;
	font-size: 20px;
	color: var(--vf-blauw);
	padding: 0 8px 4px;
}

.vf-portal-nav-klant {
	font-size: 13px;
	color: var(--vf-tekst-zacht);
	padding: 0 8px 20px;
	border-bottom: 1px solid var(--vf-rand);
	margin-bottom: 12px;
}

.vf-portal-nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
	flex-grow: 1;
}

.vf-portal-nav-list li a {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border-radius: 10px;
	color: var(--vf-tekst);
	text-decoration: none;
	font-size: 14px;
	font-weight: 500;
	margin-bottom: 2px;
}

.vf-portal-nav-list li a .dashicons {
	font-size: 18px;
	width: 18px;
	height: 18px;
	color: var(--vf-tekst-zacht);
}

.vf-portal-nav-list li a:hover {
	background: var(--vf-achtergrond);
}

.vf-portal-nav-list li.actief a {
	background: rgba(0, 121, 254, 0.1);
	color: var(--vf-blauw);
}

.vf-portal-nav-list li.actief a .dashicons {
	color: var(--vf-blauw);
}

.vf-portal-nav-logout {
	font-size: 13px;
	color: var(--vf-tekst-zacht);
	text-decoration: none;
	padding: 10px 12px;
}

.vf-portal-nav-logout:hover { color: var(--vf-rood); }

.vf-portal-main {
	flex-grow: 1;
	padding: 32px 40px;
	max-width: 1100px;
}

.vf-portal-melding {
	width: 100%;
	align-items: flex-start;
	justify-content: center;
	padding: 60px 20px;
}

/* ---------- Kopteksten ---------- */

.vf-page-header { margin-bottom: 24px; }
.vf-page-header h1 { font-size: 24px; margin: 0 0 4px; }
.vf-subtitel { color: var(--vf-tekst-zacht); margin: 0; font-size: 14px; }

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

.vf-melding {
	padding: 12px 16px;
	border-radius: 10px;
	margin-bottom: 20px;
	font-size: 14px;
}

.vf-melding-ok { background: rgba(35, 162, 109, 0.1); color: var(--vf-groen); }
.vf-melding-fout { background: rgba(229, 72, 77, 0.1); color: var(--vf-rood); }

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

.vf-card {
	background: var(--vf-wit);
	border: 1px solid var(--vf-rand);
	border-radius: 14px;
	padding: 24px;
	margin-bottom: 20px;
}

.vf-card-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 16px;
}

.vf-card-header h2 { font-size: 16px; margin: 0; }

.vf-cards-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 16px;
	margin-bottom: 20px;
}

.vf-stat-card {
	background: var(--vf-wit);
	border: 1px solid var(--vf-rand);
	border-radius: 14px;
	padding: 20px;
}

.vf-stat-card-actief { border-color: var(--vf-oranje); background: rgba(244, 175, 39, 0.06); }

.vf-stat-getal { font-size: 28px; font-weight: 700; color: var(--vf-blauw); }
.vf-stat-label { font-size: 13px; color: var(--vf-tekst-zacht); margin: 4px 0 10px; }
.vf-stat-link { font-size: 13px; color: var(--vf-blauw); text-decoration: none; font-weight: 500; }

.vf-empty-state {
	padding: 24px;
	text-align: center;
	color: var(--vf-tekst-zacht);
	background: var(--vf-achtergrond);
	border-radius: 10px;
	font-size: 14px;
}

/* ---------- Tabellen ---------- */

.vf-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.vf-table th {
	text-align: left;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--vf-tekst-zacht);
	padding: 8px 12px;
	border-bottom: 1px solid var(--vf-rand);
}
.vf-table td { padding: 12px; border-bottom: 1px solid var(--vf-rand); vertical-align: top; }
.vf-table tr:last-child td { border-bottom: none; }
.vf-tabel-omschrijving { color: var(--vf-tekst-zacht); font-size: 13px; margin-top: 2px; }

.vf-lijst { list-style: none; margin: 0; padding: 0; }
.vf-lijst li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 10px 0;
	border-bottom: 1px solid var(--vf-rand);
	font-size: 14px;
}
.vf-lijst li:last-child { border-bottom: none; }

/* ---------- Badges (status) ---------- */

.vf-badge {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 20px;
	font-size: 12px;
	font-weight: 600;
	background: var(--vf-rand);
	color: var(--vf-tekst-zacht);
	text-transform: capitalize;
}

.vf-badge-nieuw, .vf-badge-open { background: rgba(0, 121, 254, 0.12); color: var(--vf-blauw); }
.vf-badge-in_uitvoering, .vf-badge-wacht_op_klant, .vf-badge-wacht_op_virtuflow { background: rgba(244, 175, 39, 0.16); color: #8a6414; }
.vf-badge-afgerond, .vf-badge-beantwoord, .vf-badge-actief, .vf-badge-gesloten { background: rgba(35, 162, 109, 0.14); color: var(--vf-groen); }

/* ---------- Detailgrid (abonnement e.d.) ---------- */

.vf-detail-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 16px;
}
.vf-detail-label { display: block; font-size: 12px; color: var(--vf-tekst-zacht); margin-bottom: 4px; }
.vf-detail-waarde { display: block; font-size: 14px; font-weight: 500; }

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

.vf-form-group { margin-bottom: 16px; }
.vf-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 6px; }
.vf-form input[type="text"],
.vf-form input[type="email"],
.vf-form input[type="date"],
.vf-form input[type="file"],
.vf-form select,
.vf-form textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--vf-rand);
	border-radius: 10px;
	font-family: inherit;
	font-size: 14px;
	background: var(--vf-wit);
}
.vf-form textarea { resize: vertical; }

.vf-btn {
	display: inline-block;
	padding: 10px 18px;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	border: none;
	font-family: inherit;
}
.vf-btn-klein { padding: 6px 12px; font-size: 13px; }
.vf-btn-primary { background: var(--vf-blauw); color: #fff; }
.vf-btn-primary:hover { background: #0062cc; color: #fff; }
.vf-btn-secundair { background: var(--vf-achtergrond); color: var(--vf-tekst); border: 1px solid var(--vf-rand); }

/* ---------- Tickets ---------- */

.vf-ticket-lijst { list-style: none; margin: 0; padding: 0; }
.vf-ticket-item { border-bottom: 1px solid var(--vf-rand); padding: 14px 0; }
.vf-ticket-item:last-child { border-bottom: none; }
.vf-ticket-rij { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.vf-ticket-detail { margin-top: 14px; padding: 16px; background: var(--vf-achtergrond); border-radius: 10px; }

.vf-reactie { margin-bottom: 12px; padding: 10px 12px; border-radius: 8px; background: var(--vf-wit); border: 1px solid var(--vf-rand); }
.vf-reactie-staff { border-left: 3px solid var(--vf-blauw); }
.vf-reactie-klant { border-left: 3px solid var(--vf-paars); }
.vf-reactie-auteur { font-size: 12px; font-weight: 600; color: var(--vf-tekst-zacht); margin-bottom: 4px; }
.vf-reactie-tekst { font-size: 14px; }

.vf-antwoord-weergave { background: var(--vf-achtergrond); border-radius: 10px; padding: 14px; font-size: 14px; }

/* ---------- Beheerdersgedeelte (wp-admin) ---------- */

.vf-admin-wrap .vf-badge { text-transform: capitalize; }

.vf-takenbord {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
	margin-top: 16px;
}
.vf-takenbord-kolom {
	background: var(--vf-wit);
	border: 1px solid var(--vf-rand);
	border-radius: 12px;
	padding: 12px;
}
.vf-takenbord-kolom h2 { font-size: 14px; margin: 0 0 12px; }
.vf-kolom-teller { color: var(--vf-tekst-zacht); font-weight: 400; }
.vf-takenbord-kaart {
	background: var(--vf-achtergrond);
	border-radius: 8px;
	padding: 10px;
	margin-bottom: 10px;
	font-size: 13px;
}
.vf-takenbord-kaart-titel { font-weight: 600; margin-bottom: 4px; }
.vf-takenbord-kaart-klant { color: var(--vf-tekst-zacht); margin-bottom: 4px; }
.vf-takenbord-kaart-deadline { color: var(--vf-oranje); font-size: 12px; margin-bottom: 6px; }
.vf-takenbord-kaart select { width: 100%; font-size: 12px; padding: 4px; }

.vf-inline-form {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: flex-start;
	margin: 12px 0 28px;
}
.vf-inline-form input,
.vf-inline-form select,
.vf-inline-form textarea {
	padding: 6px 8px;
	border: 1px solid var(--vf-rand);
	border-radius: 6px;
	font-family: inherit;
}

@media (max-width: 900px) {
	.vf-portal { flex-direction: column; }
	.vf-portal-nav { width: 100%; min-height: auto; }
	.vf-portal-main { padding: 20px; }
	.vf-takenbord { grid-template-columns: 1fr; }
}
