:root{--bg:#f6f7f9;--panel:#fff;--text:#1d2330;--muted:#677085;--border:#dfe3ea;--accent:#1f5fbf;--accent-soft:#e8f0fc;--ok:#18794e;--ok-soft:#e6f4ec;--warn:#9a5b00;--warn-soft:#fff4dc;--err:#b42318;--err-soft:#fdecea;--manual:#fff7d6;--estimated:#eef3ff;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0 0 4px;font-size:20px}h2{margin:0 0 10px;font-size:16px}h3{margin:14px 0 8px;font-size:14px}p.lead{color:var(--muted);margin:0 0 16px}.layout{grid-template-columns:230px 1fr;min-height:100vh;display:grid}.sidebar{color:#c9d1e3;background:#172033;height:100vh;padding:16px 0;position:sticky;top:0;overflow-y:auto}.sidebar .brand{color:#fff;padding:0 18px 4px;font-size:17px;font-weight:700}.sidebar .company{color:#8e9ab3;padding:0 18px 14px;font-size:12px}.sidebar .group{text-transform:uppercase;letter-spacing:.06em;color:#7783a0;padding:14px 18px 4px;font-size:11px}.sidebar a{color:#c9d1e3;border-left:3px solid #0000;padding:6px 18px;display:block}.sidebar a.active{color:#fff;background:#22304a;border-left-color:#5b9bff;text-decoration:none}.sidebar a:hover{background:#1e2a41;text-decoration:none}.sidebar .user{color:#8e9ab3;border-top:1px solid #26324b;margin-top:16px;padding:16px 18px;font-size:12px}.main{min-width:0;padding:22px 28px 60px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:16px;overflow-x:auto}.row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.grow{flex:1}.grid2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}label.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}input,select,textarea{font:inherit;border:1px solid var(--border);color:var(--text);background:#fff;border-radius:6px;padding:6px 8px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}textarea{min-height:60px}button{font:inherit;border:1px solid var(--border);cursor:pointer;color:var(--text);background:#fff;border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--err)}button:disabled{opacity:.5;cursor:default}button.link{color:var(--accent);background:0 0;border:none;padding:0}button.link.danger{color:var(--err)}table.data{border-collapse:collapse;width:100%}table.data th,table.data td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 8px}table.data th{color:var(--muted);background:#fafbfc;font-size:12px;font-weight:600;position:sticky;top:0}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.data tr.total td{background:#fafbfc;font-weight:600}table.data tr.clickable:hover td{background:var(--accent-soft);cursor:pointer}.neg{color:var(--err)}.pos{color:var(--ok)}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.badge{color:var(--muted);white-space:nowrap;background:#eef0f4;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.err{background:var(--err-soft);color:var(--err)}.badge.info{background:var(--accent-soft);color:var(--accent)}.msg{border:1px solid #0000;border-radius:6px;margin:8px 0;padding:8px 12px}.msg.err{background:var(--err-soft);color:var(--err);border-color:#f5c2bd}.msg.warn{background:var(--warn-soft);color:var(--warn);border-color:#f2d9a6}.msg.ok{background:var(--ok-soft);color:var(--ok);border-color:#b9e0c9}.msg.info{background:var(--accent-soft);color:var(--accent);border-color:#c9dbf7}ul.issues{margin:0;padding:0;list-style:none}ul.issues li{border-left:3px solid var(--border);background:#fafbfc;margin-bottom:4px;padding:5px 8px}ul.issues li.fout{border-color:var(--err)}ul.issues li.waarschuwing{border-color:var(--warn)}ul.issues li.info{border-color:var(--accent)}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:14px;display:flex}.tabs button{background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 12px}.tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.steps{gap:8px;margin-bottom:14px;display:flex}.steps span{color:var(--muted);background:#eef0f4;border-radius:12px;padding:4px 10px;font-size:12px}.steps span.active{background:var(--accent);color:#fff}.steps span.done{background:var(--ok-soft);color:var(--ok)}.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi{border:1px solid var(--border);background:#fff;border-radius:8px;padding:12px 14px}.kpi .label{color:var(--muted);font-size:12px}.kpi .value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:20px;font-weight:650}.kpi .sub{color:var(--muted);margin-top:2px;font-size:12px}.matrix-wrap{border:1px solid var(--border);background:#fff;border-radius:6px;max-height:64vh;overflow:auto}table.matrix{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}table.matrix th,table.matrix td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);white-space:nowrap;height:28px;padding:0}table.matrix th{z-index:2;background:#f3f5f8;padding:4px 8px;font-size:12px;font-weight:600;position:sticky;top:0}table.matrix td.sticky,table.matrix th.sticky{z-index:1;background:#fafbfc;position:sticky;left:0}table.matrix th.sticky{z-index:3}table.matrix td.sticky2,table.matrix th.sticky2{z-index:1;background:#fafbfc;position:sticky;left:80px}table.matrix th.sticky2{z-index:3}table.matrix td .cell{text-align:right;cursor:cell;outline:none;min-width:96px;padding:4px 8px}table.matrix td.text .cell{text-align:left;cursor:default;min-width:0}table.matrix td.manual{background:var(--manual)}table.matrix td.estimated{background:var(--estimated)}table.matrix td.selected{box-shadow:inset 0 0 0 2px var(--accent)}table.matrix td.inrange{background:var(--accent-soft)}table.matrix td input.editor{text-align:right;outline:2px solid var(--accent);border:none;border-radius:0;width:100%;height:27px;padding:4px 8px}table.matrix tr.unbalanced td.annual{background:var(--err-soft)}table.matrix tr.kindrow td{background:#f3f5f8;font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin:8px 0;font-size:12px;display:flex}.legend i{border:1px solid var(--border);vertical-align:-2px;width:12px;height:12px;margin-right:4px;display:inline-block}.levels{grid-template-columns:repeat(9,minmax(150px,1fr));gap:8px;display:grid;overflow-x:auto}.level-col{border:1px solid var(--border);background:#fafbfc;border-radius:6px;min-width:150px;padding:8px}.level-col h4{text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:12px}.obj{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:5px;margin-bottom:5px;padding:5px 7px;font-size:12px}.obj.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.obj.noroute{border-left:3px solid var(--warn)}.obj .code{color:var(--muted);font-family:ui-monospace,Menlo,monospace;font-size:11px}.login{max-width:360px;margin:12vh auto}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.spacer{flex:1}details summary{cursor:pointer;color:var(--accent)}.sankey text{fill:var(--text);font-size:11px}.sankey path{fill:none;stroke-opacity:.28}.sankey path:hover{stroke-opacity:.55}.sidebar select.company-select{color:#fff;background:#22304a;border:1px solid #34456a;width:100%;font-weight:600}.row.spread{justify-content:space-between;align-items:center}table.data tr.selected td{background:var(--accent-soft)}.months{gap:2px;display:flex}.months .m,.m-legend{border:1px solid var(--border);background:#eef0f4;border-radius:3px;width:14px;height:14px;display:inline-block}.m.maand,.m-legend.maand{background:var(--ok);border-color:var(--ok)}.m.samengevoegd,.m-legend.samengevoegd{background:var(--ok-soft);border-color:var(--ok)}.m-legend{vertical-align:-2px;margin:0 3px 0 10px}.m-legend:first-child{margin-left:0}.nowrap{white-space:nowrap}
