:root{--bg:#f6f7f9;--panel:#fff;--ink:#1d2430;--muted:#6b7480;--line:#e6e9ee;--brand:#2f6df6;--brand-ink:#1b4fc4;--hot:#e8503a;--good:#1f9d6b;--shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);--radius:10px}*{box-sizing:border-box}body,html{margin:0;height:100%}body{font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit}.app{display:grid;grid-template-columns:232px 1fr;height:100vh}.side{background:#0f1623;color:#c7d0dd;padding:18px 14px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 16px;font-weight:700;color:#fff;font-size:16px}.brand .dot{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,#2f6df6,#7b5bff);display:grid;place-items:center;color:#fff;font-size:13px}.nav{flex-direction:column;gap:2px;margin-top:4px}.nav,.nav a{display:flex}.nav a{align-items:center;gap:10px;padding:9px 11px;border-radius:8px;color:#aeb8c6;font-weight:500;text-decoration:none}.nav a .ic{width:18px;text-align:center;opacity:.85}.nav a:hover{background:#1a2330;color:#e7ecf3}.nav a.active{background:var(--brand);color:#fff}.side .spacer{flex:1 1}.side .note{font-size:11px;color:#6b7686;padding:8px;line-height:1.4;border-top:1px solid #1c2533}.main{overflow:auto}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:rgba(246,247,249,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:14px 26px}.topbar h1{font-size:18px;margin:0;font-weight:650}.topbar .sub{color:var(--muted);font-size:12.5px}.right{margin-left:auto;display:flex;align-items:center;gap:10px}.repfilter{display:flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:3px}.repfilter a{padding:6px 12px;border-radius:6px;font-weight:550;font-size:12.5px;color:var(--muted);text-decoration:none}.repfilter a.active{background:var(--brand);color:#fff}.searchbox{display:flex;gap:6px}.searchbox input{padding:7px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;min-width:200px;background:#fff}.searchbox input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,109,246,.12)}.wrap{padding:22px 26px 60px;max-width:1180px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin-bottom:22px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.kpi .n{font-size:26px;font-weight:700;letter-spacing:-.5px}.kpi .l{color:var(--muted);font-size:12px;margin-top:2px}.kpi .l b{color:var(--hot)}.section-h{display:flex;align-items:center;gap:10px;margin:26px 0 12px}.section-h h2{font-size:14px;margin:0;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.section-h .count{background:var(--line);color:var(--muted);border-radius:20px;padding:1px 9px;font-size:11.5px;font-weight:600}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;background:#fafbfc}td,th{padding:11px 14px;border-bottom:1px solid var(--line)}td{vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr{cursor:pointer}tbody tr:hover{background:#f5f8ff}.name{font-weight:600}.sub2{color:var(--muted);font-size:12px}.avatars{display:inline-flex}.av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700;border:2px solid #fff;margin-left:-6px}.av:first-child{margin-left:0}.av.oliver{background:#2f6df6}.av.miles{background:#7b5bff}.av.admin{background:#475467}.av.x{background:#667085}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap}.p-high{background:#fdecea;color:#c0392b}.p-medium{background:#fef6e6;color:#9a6700}.p-low{background:#eef1f4;color:#5c6672}.h-healthy{background:#e6f6ee;color:#127a4f}.h-at_risk{background:#fef6e6;color:#9a6700}.h-critical{background:#fdecea;color:#c0392b}.st{background:#eef2ff;color:#3b53b5}.src{background:#eef1f4;color:#5c6672;margin-right:4px}.badge{padding:1px 8px;border-radius:6px;font-size:11px;font-weight:650}.b-done{background:#e6f6ee;color:#127a4f}.b-in_progress{background:#eef2ff;color:#3b53b5}.b-blocked{background:#fdecea;color:#c0392b}.b-todo{background:#eef1f4;color:#5c6672}.overdue-tag{background:#fdecea;color:#c0392b;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:650}.multi-assign{display:flex;flex-wrap:wrap;gap:7px}.multi-assign .chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:20px;padding:5px 11px;font-size:12.5px;cursor:pointer;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.multi-assign .chip.on{border-color:var(--brand);background:#eef4ff;color:var(--brand-ink);font-weight:600}.multi-assign .chip input{margin:0}.side-user{border-top:1px solid #1c2533;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:8px}.su-name{color:#fff;font-weight:600;font-size:13px}.su-role{color:#6b7686;font-size:11px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#0f1623,#1a2740);padding:20px}.login-card{background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.35);padding:30px 28px;width:380px;max-width:100%;display:flex;flex-direction:column;gap:12px}.login-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px}.login-brand .dot{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,#2f6df6,#7b5bff);display:grid;place-items:center;color:#fff;font-size:13px}.login-card h1{margin:6px 0 0;font-size:22px}.login-f{display:flex;flex-direction:column;gap:5px;margin-top:6px}.login-f span{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}.login-f input{padding:10px 12px;border:1px solid var(--line);border-radius:9px;font:inherit}.login-f input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,109,246,.12)}.login-err{background:#fdecea;color:#c0392b;border-radius:8px;padding:9px 12px;font-size:13px}.grp{margin-top:18px}.grp .gh{display:flex;align-items:center;gap:10px;padding:8px 4px;font-weight:650}.grp .gh .bar{width:4px;height:18px;border-radius:3px}.grp .gh .gc{color:var(--muted);font-weight:600;font-size:12.5px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:14px;gap:14px}.ccard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:15px;cursor:pointer}.ccard:hover{border-color:#cdd7e6}.ccard .ch{justify-content:space-between;gap:8px}.ccard .ch,.ccard .meta{display:flex;align-items:center}.ccard .meta{flex-wrap:wrap;gap:6px;margin:10px 0}.ccard .feat{color:var(--muted);font-size:12px;border-top:1px dashed var(--line);padding-top:9px;margin-top:4px}.tag{background:#eef1f4;color:#5c6672;border-radius:6px;padding:1px 8px;font-size:11px}.btn{cursor:pointer;background:var(--brand);color:#fff;font-weight:600;font-size:12.5px;padding:7px 13px;border-radius:8px;border:none;display:inline-flex;align-items:center;gap:6px}.btn:hover{background:var(--brand-ink)}.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.ghost:hover{background:#f5f8ff;border-color:#cdd7e6}.btn.danger{background:#fff;color:#c0392b;border:1px solid #f3c9c4}.btn.danger:hover{background:#fdecea}.btn.sm{padding:5px 10px;font-size:11.5px}.btn:disabled{opacity:.5;cursor:not-allowed}.section-h .btn{margin-left:auto}.scrim{position:fixed;inset:0;background:rgba(15,22,35,.38);z-index:40}.drawer{position:fixed;top:0;right:0;height:100%;width:540px;max-width:96vw;background:var(--panel);box-shadow:-8px 0 30px rgba(16,24,40,.18);z-index:41;display:flex;flex-direction:column}.dh{padding:20px 22px;border-bottom:1px solid var(--line)}.dh .x{float:right;cursor:pointer;color:var(--muted);font-size:20px;border:none;background:none}.dh h3{margin:0 0 4px;font-size:19px}.dh .actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.db{padding:18px 22px;overflow:auto}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 18px;gap:12px 18px;margin:6px 0 18px}.f label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:3px}.f div{font-weight:550}.dsec{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin:18px 0 10px;border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between;align-items:center}.task{border:1px solid var(--line);border-radius:9px;padding:11px 12px;margin-bottom:9px}.task .tt{display:flex;align-items:center;justify-content:space-between;gap:8px}.task .tt b{font-size:13px}.task .date{color:var(--muted);font-size:11.5px}.task .next{margin-top:6px;font-size:12.5px}.task .next em{color:var(--muted);font-style:normal}.task a{color:var(--brand);text-decoration:none;font-size:12px}.task .trow{display:flex;gap:8px;align-items:center}.timeline{position:relative;margin-left:6px;padding-left:16px}.timeline:before{content:"";position:absolute;left:3px;top:4px;bottom:4px;width:2px;background:var(--line)}.tlrow{position:relative;padding:0 0 12px}.tlrow:before{content:"";position:absolute;left:-16px;top:4px;width:8px;height:8px;border-radius:50%;background:var(--brand)}.tlrow .d{font-size:11.5px}.empty,.tlrow .d{color:var(--muted)}.empty{font-size:13px;padding:6px 0}.demoflag{font-size:11px;color:#8a93a0;margin-top:10px}.modal-scrim{position:fixed;inset:0;background:rgba(15,22,35,.42);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow:auto}.modal{background:var(--panel);border-radius:14px;width:560px;max-width:100%;box-shadow:0 20px 60px rgba(16,24,40,.32)}.modal .mh{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal .mh h3{margin:0;font-size:17px}.modal .mh .x{cursor:pointer;border:none;background:none;font-size:19px;color:var(--muted)}.modal form{padding:18px 22px}.frow{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 16px;gap:12px 16px;margin-bottom:14px}.field{display:flex;flex-direction:column;gap:4px}.field.full{grid-column:1/-1}.field label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}.field label .req{color:var(--hot)}.field input,.field select,.field textarea{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,109,246,.12)}.field.invalid input,.field.invalid select{border-color:var(--hot)}.mf{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.err-text{color:var(--hot);font-size:12px;padding:0 22px 10px}.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:#0f1623;color:#fff;padding:11px 18px;border-radius:10px;font-weight:550;font-size:13px;box-shadow:var(--shadow);z-index:80}.movebar{display:flex;align-items:center;gap:6px}.movebar select{font:inherit;padding:4px 8px;border:1px solid var(--line);border-radius:7px;background:#fff}.grp .droptarget{transition:box-shadow .12s,border-color .12s}.grp.dragover .droptarget{outline:2px dashed var(--brand);outline-offset:2px;background:#f1f6ff}.grp.dragover .gh{color:var(--brand)}tr[draggable]{cursor:-webkit-grab;cursor:grab}tr.dragging{opacity:.45;background:#eef4ff}.grip{color:#b6bec9;cursor:-webkit-grab;cursor:grab;font-size:12px;letter-spacing:-1px}tr:hover .grip{color:#8a93a0}.dropzone-empty{padding:18px 14px;color:var(--muted);font-size:12.5px;text-align:center}.board-wrap{max-width:none}.board{gap:14px;align-items:flex-start;overflow-x:auto;padding-bottom:14px}.board,.col{display:flex}.col{flex:0 0 268px;background:#eef1f5;border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;max-height:calc(100vh - 190px)}.col.dragover{outline:2px dashed var(--brand);outline-offset:2px;background:#e8f0ff}.col-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;font-weight:650;font-size:12.5px;border-top:3px solid #ccc;border-radius:var(--radius) var(--radius) 0 0;background:#fff;position:-webkit-sticky;position:sticky;top:0}.col-h .gc{background:var(--line);color:var(--muted);border-radius:20px;padding:1px 9px;font-size:11px}.col-body{padding:10px;overflow-y:auto;display:flex;flex-direction:column;gap:9px;min-height:60px}.lcard{background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px 11px;box-shadow:var(--shadow);cursor:-webkit-grab;cursor:grab}.lcard.dragging{opacity:.45}.lcard:hover{border-color:#cdd7e6}.lcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.lcard-top .name{font-size:13px}.lcard-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}.lcard-rem{font-size:11.5px;color:var(--muted);margin-top:6px}