/* Opname VVE Multidiensten - opmaak
   versie 1.0 */

:root {
  --accent: #00A4FF;
  --accent-donker: #0087d1;
  --accent-licht: #e8f6ff;
  --tekst: #1e293b;
  --tekst-zacht: #64748b;
  --rand: #e2e8f0;
  --achtergrond: #f4f6f8;
  --kaart: #ffffff;
  --groen: #16a34a;
  --rood: #dc2626;
  --oranje: #ea580c;
  --radius-klein: 6px;
  --radius: 10px;
  --radius-groot: 16px;
}

* { box-sizing: border-box; }
[v-cloak] { display: none; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--achtergrond);
  color: var(--tekst);
  font-family: 'Source Sans 3', 'Segoe UI', system-ui, -apple-system, sans-serif;
  font-size: 16px;
  line-height: 1.45;
  -webkit-text-size-adjust: 100%;
}

h1, h2, h3 { font-family: Montserrat, 'Segoe UI', system-ui, sans-serif; font-weight: 600; }
h1 { font-size: 1.35rem; margin: 0; }
h2 { font-size: 1.05rem; margin: 0 0 .6rem; }

/* ---------- kop ---------- */
.kop {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem;
  padding: .6rem 1rem;
  padding-top: calc(.6rem + env(safe-area-inset-top));
  background: var(--kaart);
  border-bottom: 1px solid var(--rand);
}
.kop-merk {
  display: flex; align-items: center; gap: .5rem;
  background: none; border: 0; padding: 0; cursor: pointer;
  font: inherit; color: inherit;
}
.kop-titel { font-family: Montserrat, sans-serif; font-weight: 600; font-size: 1.05rem; }
.kop-rechts { display: flex; align-items: center; gap: .75rem; font-size: .85rem; }
.kop-naam { color: var(--tekst-zacht); }
.kop-uit { color: var(--tekst-zacht); text-decoration: none; }
.kop-uit:hover { color: var(--rood); }

.merk-teken {
  display: inline-block; width: 22px; height: 22px; flex: 0 0 22px;
  border-radius: 4px;
  background: linear-gradient(135deg, var(--accent), var(--accent-donker));
}

.laadbalk {
  position: sticky; top: 0; z-index: 30;
  height: 3px; background: var(--accent-licht); overflow: hidden;
}
.laadbalk::after {
  content: ''; display: block; height: 100%; width: 40%;
  background: var(--accent);
  animation: schuif 1s linear infinite;
}
@keyframes schuif { from { transform: translateX(-100%); } to { transform: translateX(300%); } }

/* ---------- blad ---------- */
.blad {
  max-width: 900px;
  margin: 0 auto;
  padding: 1rem 1rem 7rem;
}
.blad-kop {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; margin-bottom: 1rem;
}

.vak {
  background: var(--kaart);
  border: 1px solid var(--rand);
  border-radius: var(--radius);
  padding: 1rem;
  margin-bottom: 1rem;
}

/* ---------- knoppen ---------- */
.knop {
  font: inherit;
  font-weight: 600;
  border: 1px solid transparent;
  border-radius: var(--radius-klein);
  padding: .55rem 1rem;
  cursor: pointer;
  white-space: nowrap;
}
.knop:disabled { opacity: .5; cursor: default; }
.knop.blauw { background: var(--accent); color: #fff; }
.knop.blauw:hover:not(:disabled) { background: var(--accent-donker); }
.knop.grijs { background: #f1f5f9; color: var(--tekst); border-color: var(--rand); }
.knop.rood { background: var(--rood); color: #fff; }
.knop.klein { padding: .35rem .7rem; font-size: .85rem; }
.knop.breed { flex: 1; }

.mini {
  width: 38px; height: 38px;
  font-size: 1.2rem; line-height: 1;
  border: 1px solid var(--rand);
  background: #f8fafc;
  border-radius: var(--radius-klein);
  cursor: pointer;
  color: var(--tekst);
}
.mini:disabled { opacity: .35; cursor: default; }
.mini.weg {
  width: 22px; height: 22px; font-size: .9rem;
  margin-left: .35rem; color: var(--rood); border-color: transparent; background: none;
}

/* ---------- velden ---------- */
label { display: block; font-size: .85rem; color: var(--tekst-zacht); }
input[type=text], input[type=date], input[type=number], input[type=search],
input[type=password], select, textarea {
  width: 100%;
  font: inherit;
  color: var(--tekst);
  background: #fff;
  border: 1px solid var(--rand);
  border-radius: var(--radius-klein);
  padding: .5rem .6rem;
  margin-top: .2rem;
}
input:focus, select:focus, textarea:focus {
  outline: 2px solid var(--accent);
  outline-offset: -1px;
  border-color: var(--accent);
}
textarea { resize: vertical; }

.veldrij { display: flex; gap: .75rem; margin-bottom: .6rem; flex-wrap: wrap; }
.veldrij > label { flex: 1 1 200px; }
.ster { color: var(--rood); }

.zoek { margin-bottom: 1rem; }

/* ---------- overzicht ---------- */
.kaartlijst { list-style: none; margin: 0; padding: 0; }
.kaart {
  background: var(--kaart);
  border: 1px solid var(--rand);
  border-radius: var(--radius);
  padding: .8rem 1rem;
  margin-bottom: .6rem;
  cursor: pointer;
}
.kaart:hover { border-color: var(--accent); }
.kaart-hoofd { display: flex; justify-content: space-between; gap: 1rem; }
.kaart-hoofd .datum { color: var(--tekst-zacht); font-size: .85rem; white-space: nowrap; }
.kaart-sub { color: var(--tekst-zacht); font-size: .9rem; }
.kaart-voet {
  display: flex; gap: 1rem; flex-wrap: wrap;
  margin-top: .4rem; font-size: .8rem; color: var(--tekst-zacht);
}
.leeg { color: var(--tekst-zacht); text-align: center; padding: 2rem 0; }

.concept-strook {
  display: flex; align-items: center; gap: .6rem; flex-wrap: wrap;
  background: #fff7ed; border: 1px solid #fed7aa;
  border-radius: var(--radius); padding: .7rem 1rem;
  font-size: .9rem;
}

/* ---------- rubrieken en regels ---------- */
.rubriek-kop {
  display: flex; align-items: center; justify-content: space-between;
  cursor: pointer; user-select: none;
  margin: 0; padding-bottom: .6rem;
  border-bottom: 2px solid var(--accent);
}
.rubriek-tel { display: flex; align-items: center; gap: .6rem; font-size: .85rem; color: var(--tekst-zacht); }
.rubriek-tel em {
  font-style: normal; background: var(--accent-licht); color: var(--accent-donker);
  border-radius: 999px; padding: .1rem .55rem; font-weight: 600;
}
.pijl { transition: transform .15s; display: inline-block; }
.pijl.open { transform: rotate(180deg); }

.regel { border-bottom: 1px solid var(--rand); padding: .6rem 0; }
.regel:last-of-type { border-bottom: 0; }
.regel.gevuld { background: linear-gradient(90deg, var(--accent-licht), transparent 40%); }

.regel-kop { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.regel-naam { font-weight: 500; }
.teller { display: flex; align-items: center; gap: .3rem; }
.tel-veld {
  width: 56px; text-align: center; margin-top: 0;
  -moz-appearance: textfield;
}
.tel-veld::-webkit-outer-spin-button,
.tel-veld::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.regel-detail { margin-top: .6rem; padding-left: .2rem; }
.detail-rij { display: flex; gap: .6rem; flex-wrap: wrap; }
.klein-veld { flex: 1 1 130px; }
.notitie { margin-top: .5rem; }

.regel-uitklap {
  margin-top: .3rem; background: none; border: 0; padding: 0;
  color: var(--accent-donker); font: inherit; font-size: .82rem; cursor: pointer;
}

.eigen-toevoegen { display: flex; gap: .5rem; margin-top: .9rem; }
.eigen-toevoegen input { margin-top: 0; }

.rubriek-totaal {
  display: flex; gap: 1rem; flex-wrap: wrap;
  margin-top: .9rem; padding-top: .7rem;
  border-top: 1px dashed var(--rand);
  font-size: .85rem; color: var(--tekst-zacht);
}

/* ---------- foto's ---------- */
.fotorij { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; }
.duim { position: relative; display: inline-block; }
.duim img {
  width: 64px; height: 64px; object-fit: cover;
  border-radius: var(--radius-klein); border: 1px solid var(--rand);
  display: block;
}
.duim-weg {
  position: absolute; top: -6px; right: -6px;
  width: 20px; height: 20px; line-height: 1;
  border-radius: 50%; border: 0; cursor: pointer;
  background: var(--rood); color: #fff; font-size: .8rem;
}
.verborgen { display: none; }

.fotoraster { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; }
.fotoraster figure { margin: 0; }
.fotoraster img { width: 100%; border-radius: var(--radius-klein); border: 1px solid var(--rand); display: block; }
.fotoraster figcaption { font-size: .78rem; color: var(--tekst-zacht); margin-top: .25rem; }

/* ---------- totalen ---------- */
.totaalvak { border-color: var(--accent); }
.totaalrij {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .35rem 0; border-bottom: 1px solid var(--rand);
}
.totaalrij.eind { border-bottom: 0; font-weight: 600; font-size: 1.05rem; padding-top: .6rem; }
.fijn { font-size: .78rem; color: var(--tekst-zacht); margin: .5rem 0 0; }

/* ---------- detail ---------- */
.detail-gegevens { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .75rem; }
.detail-gegevens span { display: block; font-size: .78rem; color: var(--tekst-zacht); }

.tabel { width: 100%; border-collapse: collapse; font-size: .9rem; }
.tabel th {
  text-align: left; font-size: .78rem; text-transform: uppercase;
  letter-spacing: .03em; color: var(--tekst-zacht);
  border-bottom: 1px solid var(--rand); padding: .4rem .4rem;
}
.tabel td { padding: .45rem .4rem; border-bottom: 1px solid var(--rand); vertical-align: top; }
.tabel .r { text-align: right; }
.tabel-notitie { font-size: .8rem; color: var(--tekst-zacht); }
.voorgevormd { white-space: pre-wrap; margin: 0; }

/* ---------- voetbalk ---------- */
.voetbalk {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  display: flex; align-items: center; gap: .6rem;
  padding: .7rem 1rem;
  padding-bottom: calc(.7rem + env(safe-area-inset-bottom));
  background: var(--kaart);
  border-top: 1px solid var(--rand);
}
.voetbalk > .knop { min-width: 90px; }
.bewaard { font-size: .8rem; color: var(--groen); white-space: nowrap; }

/* ---------- meldingen ---------- */
.zwever {
  position: fixed; left: 50%; bottom: 5.5rem; transform: translateX(-50%);
  z-index: 40;
  padding: .6rem 1.1rem; border-radius: 999px;
  color: #fff; font-size: .9rem;
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
  max-width: 90vw;
}
.zwever.goed { background: var(--groen); }
.zwever.fout { background: var(--rood); }

/* ---------- inlogpagina ---------- */
.inlogpagina {
  display: flex; align-items: center; justify-content: center;
  min-height: 100vh; padding: 1rem;
  background: linear-gradient(160deg, #f0f9ff, #e2e8f0);
}
.inlogkaart {
  width: 100%; max-width: 380px;
  background: var(--kaart);
  border: 1px solid var(--rand);
  border-radius: var(--radius-groot);
  padding: 1.75rem;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .08);
}
.merk { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.25rem; }
.merk strong { display: block; font-family: Montserrat, sans-serif; }
.merk span { font-size: .85rem; color: var(--tekst-zacht); }
.inlogkaart label { margin-top: .8rem; }
.inlogkaart .knop { margin-top: 1.25rem; width: 100%; }
.melding { border-radius: var(--radius-klein); padding: .6rem .8rem; font-size: .9rem; }
.melding.fout { background: #fef2f2; color: var(--rood); border: 1px solid #fecaca; }
.uitleg { font-size: .88rem; color: var(--tekst-zacht); }

/* ---------- mobiel ---------- */
@media (max-width: 600px) {
  .blad { padding: .75rem .75rem 7rem; }
  .vak { padding: .8rem; border-radius: var(--radius-klein); }
  .blad-kop { flex-wrap: wrap; }
  .voetbalk > .knop { flex: 1; min-width: 0; }
  .kop-naam { display: none; }
  .tabel { font-size: .82rem; }
}
