:root{color:#172033;background:#eef5ff;font-family:Inter,ui-sans-serif,system-ui,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{margin:0}.page{max-width:1100px;margin:0 auto;padding:20px 16px 60px}h1{margin:0;font-size:26px}h2{margin:28px 0 10px;font-size:18px}.sub{color:#5b6b86;margin:4px 0 16px}.err{color:#c0392b}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.card{background:#fff;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:2px;box-shadow:0 1px 3px #0001}.card b{font-size:26px}.card span{color:#5b6b86;font-size:13px}.card.warn b{color:#d9480f}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}select,button.ghost{min-height:36px;padding:0 10px;border:1px solid #c5d3ea;border-radius:8px;background:#fff;font:inherit;cursor:pointer}button.th{border:0;background:none;padding:0;min-height:0;font-weight:600}.scroll{overflow-x:auto;background:#fff;border-radius:10px}table{width:100%;min-width:640px;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #eef1f6;font-size:14px}tr.overdue td{background:#ffe3e3;color:#c92a2a}.tag{padding:2px 8px;border-radius:10px;font-size:12px;background:#e9ecef;white-space:nowrap}.tag.doing{background:#d0ebff}.tag.blocked,.tag.lv-high{background:#ffc9c9}.tag.done{background:#d3f9d8}.tag.lv-mid{background:#ffec99}.tag.lv-low{background:#d3f9d8}ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}li{background:#fff;border-radius:10px;padding:10px 12px;font-size:14px}small{color:#5b6b86;display:block;margin-top:4px}a{color:#1c6ed5}
