:root{--pca:#6366f1;--fox:#0ea5e9;--casix:#10b981;--ing:#f59e0b;--oud:#ef4444;--new:#8b5cf6;--bg:#f1f5f9;--card:#fff;--border:#e2e8f0;--text:#1e293b;--muted:#64748b;--col-w:320px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}header{background:#1e293b;color:#fff;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}header h1{font-size:1.15rem;font-weight:700;letter-spacing:-.3px}header h1 span{color:#60a5fa}#tab-bar{background:#1e293b;border-top:1px solid #334155;display:flex;gap:4px;padding:0 20px}.tab-btn{padding:10px 22px;font-size:.85rem;font-weight:600;background:transparent;color:#94a3b8;cursor:pointer;border:none;border-bottom:3px solid transparent;transition:all .15s}.tab-btn.active{color:#fff;border-bottom-color:#60a5fa}.tab-btn:hover:not(.active){color:#cbd5e1}.login-overlay{position:fixed;inset:0;background:#0f172a;display:flex;align-items:center;justify-content:center;z-index:9000;padding:16px}.login-box{background:#1e293b;border-radius:16px;padding:36px 40px;width:100%;max-width:380px;box-shadow:0 24px 80px rgba(0,0,0,.6)}.login-box .lb-logo{text-align:center;margin-bottom:24px}.login-box .lb-logo h2{color:#fff;font-size:1.2rem;font-weight:800}.login-box .lb-logo p{color:#94a3b8;font-size:.8rem;margin-top:4px}.login-box .lb-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.login-box .lb-field label{font-size:.75rem;font-weight:600;color:#94a3b8}.login-box .lb-field input{background:#0f172a;border:1.5px solid #334155;border-radius:8px;padding:10px 14px;color:#fff;font-size:.9rem;outline:none;transition:border .15s}.login-box .lb-field input:focus{border-color:#6366f1}.login-box .lb-error{background:#7f1d1d;color:#fca5a5;border-radius:8px;padding:8px 12px;font-size:.8rem;margin-bottom:14px;display:none}.login-box .lb-error.show{display:block}.login-box .lb-btn{width:100%;background:#6366f1;color:#fff;border:none;border-radius:8px;padding:11px;font-size:.9rem;font-weight:700;cursor:pointer;transition:background .15s}.login-box .lb-btn:hover{background:#4f46e5}.login-box .lb-btn:disabled{opacity:.6;cursor:default}.role-badge{border-radius:6px;font-size:.72rem;font-weight:700;padding:3px 10px}.role-badge.admin{background:#4ade80;color:#14532d}.role-badge.viewer{background:#fbbf24;color:#78350f}.logout-btn{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:#cbd5e1;border-radius:6px;padding:4px 12px;font-size:.75rem;cursor:pointer;transition:all .15s}.logout-btn:hover{background:hsla(0,0%,100%,.2);color:#fff}body.viewer-mode #import-bar,body.viewer-mode .add-btn,body.viewer-mode .card-actions{display:none!important}body.viewer-mode .card{cursor:default}#import-bar{background:#f8fafc;border-bottom:1px solid var(--border);padding:8px 24px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}#import-bar .ib-label{font-size:.75rem;font-weight:600;color:var(--muted);margin-right:4px}.ib-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;border:none;transition:all .15s}.ib-btn-tpl{background:#e0f2fe;color:#0369a1;border:1.5px solid #bae6fd}.ib-btn-tpl:hover{background:#bae6fd}.ib-btn-imp{background:#ede9fe;color:#6d28d9;border:1.5px solid #ddd6fe}.ib-btn-imp:hover{background:#ddd6fe}#file-input{display:none}#filters{background:#fff;border-bottom:1px solid var(--border);padding:10px 24px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}#filters label{font-size:.75rem;font-weight:600;color:var(--muted);margin-right:4px}.filter-btn{border:2px solid transparent;border-radius:20px;padding:4px 14px;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s;background:#f1f5f9;color:#475569}.filter-btn.active{color:#fff}.filter-btn[data-group=all]{border-color:#cbd5e1}.filter-btn[data-group=all].active{background:#334155;border-color:#334155;color:#fff}.filter-btn[data-group=pca]{border-color:var(--pca)}.filter-btn[data-group=pca].active{background:var(--pca);color:#fff}.filter-btn[data-group=fox]{border-color:var(--fox)}.filter-btn[data-group=fox].active{background:var(--fox);color:#fff}.filter-btn[data-group=casix]{border-color:var(--casix)}.filter-btn[data-group=casix].active{background:var(--casix);color:#fff}.filter-btn[data-group=ing]{border-color:var(--ing)}.filter-btn[data-group=ing].active{background:var(--ing);color:#fff}.filter-btn[data-group=oud]{border-color:var(--oud)}.filter-btn[data-group=oud].active{background:var(--oud);color:#fff}.filter-btn[data-group=new]{border-color:var(--new)}.filter-btn[data-group=new].active{background:var(--new);color:#fff}#pipeline-bar{background:#1e293b;color:#fff;padding:8px 24px;display:flex;gap:24px;align-items:center;flex-wrap:wrap;font-size:.8rem}#pipeline-bar .pb-label{color:#94a3b8}#pipeline-bar .pb-val{font-weight:700;font-size:.95rem;color:#60a5fa}#pipeline-bar .pb-sep{color:#334155}#board{gap:16px;padding:20px 24px;overflow-x:auto;align-items:flex-start;min-height:calc(100vh - 200px)}#board,.col{display:flex}.col{flex:0 0 var(--col-w);flex-direction:column;gap:0}.col-header{background:#334155;color:#fff;border-radius:10px 10px 0 0;padding:12px 16px}.col-header.lost{background:#6b7280}.col-header h2{font-size:.92rem;font-weight:700}.col-header .col-meta{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}.col-header .meta-pill{background:hsla(0,0%,100%,.12);border-radius:6px;padding:3px 10px;font-size:.72rem}.col-header .meta-pill strong{color:#93c5fd}.col-weight-badge{display:inline-block;background:#4ade80;color:#14532d;border-radius:4px;font-size:.68rem;font-weight:700;padding:1px 6px;margin-left:8px;vertical-align:middle}.col-sort{display:flex;gap:4px;padding:6px 10px;background:#e2e8f0;border-left:1px solid var(--border);border-right:1px solid var(--border)}.sort-btn{flex:1 1;border:1.5px solid #cbd5e1;background:#f8fafc;border-radius:6px;padding:4px 6px;font-size:.68rem;font-weight:600;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:3px;transition:all .15s;white-space:nowrap}.sort-btn:hover{border-color:#6366f1;color:#6366f1;background:#eef2ff}.sort-btn.active-asc,.sort-btn.active-desc{background:#6366f1;border-color:#6366f1;color:#fff}.sort-arrow{font-size:.8rem;line-height:1}.col-body{background:#e9eef5;border-left:1px solid var(--border);border-right:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:10px;min-height:200px;transition:background .15s}.col-body.drag-over{background:#dbeafe}.col-footer{background:#f8fafc;border:1px solid var(--border);border-top:2px solid #cbd5e1;border-radius:0 0 10px 10px;padding:10px 14px}.col-footer .totals-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px 12px;gap:4px 12px}.col-footer .t-label{font-size:.68rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.col-footer .t-val{font-size:.88rem;font-weight:700;color:var(--text)}.col-footer .t-val.weighted{color:#6366f1}.col-footer .add-btn{margin-top:10px;width:100%;border:2px dashed #cbd5e1;background:transparent;border-radius:8px;padding:7px;font-size:.8rem;color:var(--muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:6px}.col-footer .add-btn:hover{border-color:#6366f1;color:#6366f1;background:#eef2ff}.card{background:var(--card);border-radius:10px;border:1px solid var(--border);box-shadow:0 1px 3px rgba(0,0,0,.07);cursor:-webkit-grab;cursor:grab;transition:box-shadow .15s,opacity .15s;position:relative;overflow:hidden}.card:active{cursor:-webkit-grabbing;cursor:grabbing}.card.dragging{opacity:.4;box-shadow:0 8px 24px rgba(0,0,0,.18)}.card-stripe{height:5px;width:100%}.card-body{padding:11px 13px 10px}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.card-name{font-weight:700;font-size:.88rem;line-height:1.3}.card-group-badge{border-radius:4px;font-size:.62rem;font-weight:700;padding:2px 7px;white-space:nowrap;color:#fff;flex-shrink:0}.card-meta-line{font-size:.72rem;color:var(--muted);margin-top:2px}.card-meta-line.first{margin-top:4px}.card-meta-line.note{color:#6366f1;font-style:italic}.card-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:4px;gap:4px;margin-top:10px}.card-stat{background:#f8fafc;border-radius:6px;padding:5px 7px}.card-stat .s-label{font-size:.62rem;color:var(--muted);font-weight:600;text-transform:uppercase}.card-stat .s-val{font-size:.85rem;font-weight:700;color:var(--text);margin-top:1px}.card-stat .s-val.highlight{color:#6366f1}.card-actions{display:flex;gap:6px;margin-top:9px}.card-actions button{flex:1 1;padding:5px;border:1px solid var(--border);background:#f8fafc;border-radius:6px;font-size:.72rem;cursor:pointer;color:var(--muted);transition:all .15s}.card-actions button:hover{background:#e0e7ff;border-color:#6366f1;color:#6366f1}.card-actions .del-btn:hover{background:#fee2e2;border-color:#ef4444;color:#ef4444}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal{background:#fff;border-radius:14px;width:100%;max-width:480px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden}.modal-header{background:#1e293b;color:#fff;padding:16px 20px;display:flex;justify-content:space-between;align-items:center}.modal-header h3{font-size:1rem;font-weight:700}.modal-header button{background:none;border:none;color:#94a3b8;font-size:1.3rem;cursor:pointer;line-height:1}.modal-header button:hover{color:#fff}.modal-body{padding:20px;display:flex;flex-direction:column;gap:14px;max-height:75vh;overflow-y:auto}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.form-group{display:flex;flex-direction:column;gap:4px}.form-group label{font-size:.75rem;font-weight:600;color:var(--muted)}.form-group input,.form-group select{border:1.5px solid var(--border);border-radius:8px;padding:8px 12px;font-size:.88rem;color:var(--text);outline:none;transition:border .15s}.form-group input:focus,.form-group select:focus{border-color:#6366f1}.form-group.full{grid-column:span 2}.modal-footer{padding:14px 20px;display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--border);background:#f8fafc}.btn{padding:8px 20px;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer;border:none;transition:all .15s}.btn-primary{background:#6366f1;color:#fff}.btn-primary:hover{background:#4f46e5}.btn-ghost{background:transparent;color:var(--muted);border:1.5px solid var(--border)}.btn-ghost:hover{background:#f1f5f9}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.confirm-box{background:#fff;border-radius:12px;padding:24px;max-width:360px;width:90%;box-shadow:0 12px 40px rgba(0,0,0,.2);text-align:center}.confirm-box h4{font-size:1rem;margin-bottom:8px}.confirm-box p{font-size:.85rem;color:var(--muted);margin-bottom:18px}.confirm-box .btn-row{display:flex;gap:10px;justify-content:center}#doelen-view{padding:24px}.doelen-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.doel-card{background:#fff;border-radius:12px;border:1px solid var(--border);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.07)}.doel-card-header{padding:14px 16px 10px;display:flex;align-items:center;gap:10px}.doel-color-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.doel-card-header h3{font-size:.92rem;font-weight:700}.doel-body{padding:0 16px 16px}.doel-progress-track{background:#e2e8f0;border-radius:99px;height:10px;overflow:hidden;margin-bottom:8px}.doel-progress-fill{height:100%;border-radius:99px;transition:width .4s ease}.doel-numbers{display:flex;justify-content:space-between;align-items:baseline}.doel-real{font-size:1.6rem;font-weight:800}.doel-slash{margin:0 4px}.doel-slash,.doel-target{font-size:1rem;color:var(--muted)}.doel-target{font-weight:600}.doel-pct{font-size:.8rem;font-weight:700;border-radius:6px;padding:2px 8px}.doel-pct.ok{background:#dcfce7;color:#15803d}.doel-pct.mid{background:#fef9c3;color:#854d0e}.doel-pct.low{background:#fee2e2;color:#991b1b}.doel-sub{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.doel-sub-item .ds-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}.doel-sub-item .ds-val{font-size:.85rem;font-weight:700;margin-top:1px}.omzet-card{background:linear-gradient(135deg,#1e293b,#334155);color:#fff;border-radius:14px;padding:24px;margin-bottom:24px;display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;align-items:center}.omzet-left h2{font-size:.85rem;color:#94a3b8;font-weight:600;margin-bottom:8px}.omzet-left .big-num{font-size:2.2rem;font-weight:800;color:#60a5fa}.omzet-left .big-doel{font-size:1rem;color:#94a3b8;margin-top:2px}.omzet-right .omzet-track{background:hsla(0,0%,100%,.15);border-radius:99px;height:14px;overflow:hidden;margin-bottom:8px}.omzet-right .omzet-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#34d399,#60a5fa);transition:width .5s ease}.omzet-right .omzet-pct{font-size:1.4rem;font-weight:800}.omzet-right .omzet-rest{font-size:.78rem;color:#94a3b8;margin-top:2px}.contracted-table{background:#fff;border-radius:12px;border:1px solid var(--border);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.07)}.contracted-table h3{padding:14px 18px;font-size:.92rem;font-weight:700;border-bottom:1px solid var(--border);background:#f8fafc}.ct-table{width:100%;border-collapse:collapse;font-size:.82rem}.ct-table th{background:#f1f5f9;padding:8px 14px;text-align:left;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border)}.ct-table td{padding:9px 14px;border-bottom:1px solid #f1f5f9}.ct-table tr:last-child td{border-bottom:none}.ct-table tr:hover td{background:#f8fafc}.ct-badge{border-radius:4px;font-size:.65rem;font-weight:700;padding:2px 8px;color:#fff;white-space:nowrap}.imp-modal{background:#fff;border-radius:14px;width:100%;max-width:880px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden;max-height:90vh;display:flex;flex-direction:column}.imp-table-wrap{overflow:auto;flex:1 1}.imp-table{width:100%;border-collapse:collapse;font-size:.78rem}.imp-table th{background:#1e293b;color:#fff;padding:8px 12px;text-align:left;white-space:nowrap;position:-webkit-sticky;position:sticky;top:0}.imp-table td{padding:7px 12px;border-bottom:1px solid #f1f5f9}.imp-table tr:hover td{background:#f8fafc}.imp-table .err-row td{background:#fef2f2}.imp-table .err-cell{color:#dc2626;font-weight:600}.imp-badge{border-radius:4px;font-size:.62rem;font-weight:700;padding:2px 7px;color:#fff}.imp-stat{display:flex;gap:16px;margin-bottom:12px;flex-wrap:wrap}.imp-stat-item{background:#f1f5f9;border-radius:8px;padding:8px 14px}.imp-stat-item .is-label{font-size:.68rem;color:var(--muted);font-weight:600}.imp-stat-item .is-val{font-size:1.1rem;font-weight:800}.imp-stat-item.ok .is-val{color:#15803d}.imp-stat-item.err .is-val{color:#dc2626}.imp-stat-item.info .is-val{color:#6366f1}.imp-mode-row{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.imp-mode-row label{font-size:.8rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px;cursor:pointer}.imp-mode-row input[type=radio]{accent-color:#6366f1}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--muted);font-size:.9rem}