@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap');
:root {
  --ink:#1A1A1A; --ink-2:#2F3D38; --muted:#54605A; --bg:#F7F5EF; --surface:#FFFFFF;
  --line:#E7E1D4; --line-2:#F0ECE3; --green:#143A32; --green-dark:#0D2A24; --gold:#C9A961;
  --gold-soft:#F1ECE0; --gold-dark:#A88846; --warn-bg:#FFF4E5; --warn-line:#F0C48A; --warn-text:#7A3E00;
  --radius:12px; font-family:Poppins, system-ui, sans-serif; color:var(--ink); background:var(--bg);
}
* { box-sizing:border-box; }
html, body { margin:0; height:100%; }
body { background:var(--bg); font-size:14px; }
h1,h2,h3 { color:var(--green); margin:0 0 .5em; font-weight:700; }
h1 { font-size:28px; } h2 { font-size:18px; } h3 { font-size:14px; }
a { color:var(--green); }
.btn { font:inherit; font-weight:600; border-radius:8px; border:1px solid var(--green); background:var(--green); color:#fff; padding:9px 16px; cursor:pointer; white-space:nowrap; }
.btn:hover { background:var(--green-dark); }
.btn.licht { background:#fff; color:var(--ink); border-color:var(--line); }
.btn.licht:hover { border-color:var(--gold); background:var(--gold-soft); }
.btn.klein { padding:5px 10px; font-size:12px; }
.btn.gevaar { background:#fff; color:#9b2c2c; border-color:#e8c4c4; }
input, select, textarea { font:inherit; border:1px solid #C9D1D8; border-radius:8px; padding:8px 10px; background:#fff; color:var(--ink); width:100%; }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--gold); box-shadow:0 0 0 3px var(--gold-soft); }
label { display:block; font-size:12px; color:var(--muted); margin:8px 0 3px; }
.kaart { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px; }
.muted { color:var(--muted); }
.fout { background:var(--warn-bg); border:1px solid var(--warn-line); color:var(--warn-text); padding:8px 12px; border-radius:8px; margin:8px 0; }

/* login */
.login-wrap { min-height:100%; display:flex; align-items:center; justify-content:center; padding:24px; }
.login { width:100%; max-width:440px; background:#fff; border:1px solid var(--line); border-top:6px solid var(--gold); border-radius:16px; padding:32px 36px; }
.login .logo { text-align:center; margin-bottom:18px; }
.login .logo img { max-width:230px; }
.login .logo .sub { color:var(--muted); margin-top:4px; }
.login .btn { width:100%; margin-top:16px; padding:12px; font-size:16px; }

/* app layout */
.top { display:flex; align-items:center; gap:14px; padding:8px 16px; background:#fff; border-bottom:1px solid var(--line); height:58px; }
.top .logo img { height:34px; display:block; }
.top .projnaam { font-weight:600; color:var(--green); border:1px solid transparent; width:auto; min-width:220px; padding:6px 8px; }
.top .projnaam:hover { border-color:var(--line); }
.top .spacer { flex:1; }
.top nav { display:flex; gap:6px; }
.app { display:grid; grid-template-columns:330px 1fr 330px; height:calc(100% - 58px); }
.paneel { background:#fff; overflow:auto; }
.paneel.links { border-right:1px solid var(--line); display:flex; flex-direction:column; }
.paneel.rechts { border-left:1px solid var(--line); }
.paneel .kop { padding:12px 14px; border-bottom:1px solid var(--line-2); }
.midden { display:flex; flex-direction:column; min-width:0; }
.tabs { display:flex; gap:4px; padding:8px 12px; background:var(--bg); border-bottom:1px solid var(--line); align-items:center; }
.tab { font:inherit; border:1px solid transparent; background:transparent; padding:6px 12px; border-radius:8px; cursor:pointer; color:var(--ink-2); font-weight:500; }
.tab.actief { background:var(--gold-soft); color:var(--green); font-weight:700; }
.view { flex:1; position:relative; min-height:0; }
.view canvas { position:absolute; inset:0; width:100%; height:100%; display:block; }
.hint { position:absolute; left:12px; bottom:10px; font-size:12px; color:var(--muted); background:rgba(255,255,255,.85); padding:4px 8px; border-radius:6px; pointer-events:none; }

/* catalogus */
.filters { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:10px 14px; border-bottom:1px solid var(--line-2); }
.filters input { grid-column:1 / -1; }
.lijst { flex:1; overflow:auto; }
.groep { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--gold-dark); padding:10px 14px 4px; font-weight:600; position:sticky; top:0; background:#fff; }
.item { display:grid; grid-template-columns:1fr auto; gap:2px 8px; padding:7px 14px; border-bottom:1px solid var(--line-2); cursor:pointer; }
.item:hover { background:var(--gold-soft); }
.item .code { font-weight:600; color:var(--green); }
.item .nm { font-size:12px; color:var(--ink-2); grid-column:1; }
.item .mt { font-size:11px; color:var(--muted); }
.item .pr { text-align:right; font-size:12px; font-weight:600; grid-row:1 / span 2; grid-column:2; align-self:center; }
.item .pr small { display:block; font-weight:400; color:var(--muted); }

/* rechts: prijs + posities */
.sectie { padding:12px 14px; border-bottom:1px solid var(--line-2); }
.totaal { background:var(--green); color:#fff; border-radius:var(--radius); padding:14px; }
.totaal .rij { display:flex; justify-content:space-between; margin:3px 0; font-size:13px; }
.totaal .groot { font-size:22px; font-weight:800; }
.totaal .rij.inkoop { color:#d9e3df; }
.totaal hr { border:none; border-top:1px solid rgba(255,255,255,.2); margin:8px 0; }
.pos { display:grid; grid-template-columns:30px 1fr auto; gap:6px; padding:6px 0; border-bottom:1px solid var(--line-2); align-items:center; cursor:pointer; }
.pos.sel { background:var(--gold-soft); }
.pos .nr { background:var(--green); color:#fff; border-radius:50%; width:24px; height:24px; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; }
.pos .ar { font-weight:600; font-size:13px; }
.pos .om { font-size:11px; color:var(--muted); }
.pos .bd { text-align:right; font-size:12px; font-weight:600; }
.pos .bd small { display:block; color:var(--muted); font-weight:400; }
.sel-paneel { background:var(--gold-soft); border:1px solid var(--gold); border-radius:var(--radius); padding:12px; }
.rij2 { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.rij3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:6px; }
.knoppen { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }

/* dialogen */
.overlay { position:fixed; inset:0; background:rgba(13,42,36,.35); display:flex; align-items:center; justify-content:center; z-index:50; }
.dialoog { background:#fff; border-radius:16px; border-top:6px solid var(--gold); width:min(760px, 94vw); max-height:90vh; overflow:auto; padding:22px 26px; }
.dialoog .acties { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
.projlijst .p { display:flex; justify-content:space-between; padding:10px; border:1px solid var(--line); border-radius:10px; margin:6px 0; cursor:pointer; }
.projlijst .p:hover { border-color:var(--gold); background:var(--gold-soft); }
.toast { position:fixed; bottom:18px; left:50%; transform:translateX(-50%); background:var(--green); color:#fff; padding:10px 18px; border-radius:10px; z-index:60; font-weight:500; }
table.mini { width:100%; border-collapse:collapse; font-size:12px; }
table.mini td, table.mini th { padding:4px 6px; border-bottom:1px solid var(--line-2); text-align:left; }
