*{box-sizing:border-box}body{margin:0;font:14px system-ui,sans-serif;background:#f6f7f9;color:#1b1f24}header{background:#1f3864;color:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center}main{padding:16px 20px;max-width:1400px;margin:auto}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.card{background:#fff;border:1px solid #dde1e6;border-radius:8px;padding:10px 12px}.card .l{font-size:12px;color:#5b6570}.card .v{font-size:22px;font-weight:600;margin-top:2px}.card.warn .v{color:#b42318}.bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;align-items:center}button,input,select,textarea{font:inherit;padding:5px 7px;border:1px solid #c5cbd3;border-radius:6px;background:#fff}button{cursor:pointer}button.p{background:#1f3864;color:#fff;border-color:#1f3864}table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #dde1e6}th{background:#1f3864;color:#fff;text-align:left;padding:6px;font-weight:500;white-space:nowrap}td{padding:3px 4px;border-top:1px solid #eceff2;vertical-align:middle}td input,td select{width:100%;border-color:transparent;background:transparent}td input:focus,td input:hover,td select:focus,td select:hover{border-color:#c5cbd3;background:#fff}tr.done td{background:#e7f6ec;color:#056}tr.done .t input{text-decoration:line-through}tr.Overdue td{background:#fdeceb}tr.At.Risk td,tr.AtRisk td{background:#fff6dc}tr.blocked td{opacity:.7}.badge{padding:2px 8px;border-radius:10px;font-size:12px;white-space:nowrap}.b-Overdue{background:#f8c9c6;color:#8a1c14}.b-AtRisk{background:#ffe7a3;color:#7a5200}.b-OnTrack{background:#cfeedb;color:#0b5a2b}.b-Done{background:#d5d9de}.b-NoDueDate{background:#e8eaf0}.panel{border:1px solid #dde1e6;border-radius:8px;padding:12px;margin-bottom:16px}.login,.panel{background:#fff}.login{max-width:320px;margin:18vh auto;padding:24px;border-radius:10px;border:1px solid #dde1e6;display:flex;flex-direction:column;gap:10px}.err{color:#b42318}