:root{
  --primary:#1565C0; --primary-dark:#0D47A1; --navy:#16233A; --navy-2:#1E2E4A;
  --bg:#F4F6FA; --panel:#FFFFFF; --line:#E3E9F2; --text:#1E2430; --muted:#6B7688;
  --red:#D32F2F; --red-bg:#FDECEC; --orange:#EF6C00; --orange-bg:#FFF3E6;
  --yellow:#B7791F; --yellow-bg:#FFF8E1; --green:#2E7D32; --green-bg:#EAF6EC;
  --gray:#8A94A6; --gray-bg:#F0F2F6;
  --radius:10px; --shadow:0 1px 3px rgba(16,24,40,.06),0 1px 2px rgba(16,24,40,.04);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:-apple-system,"Segoe UI","Microsoft YaHei",system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:13px;line-height:1.6}
a{color:var(--primary);text-decoration:none}
button{font-family:inherit}
.hidden{display:none!important}

/* ---------- 登录 ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#16233A 0%,#1E3A5F 55%,#0D47A1 100%);padding:24px}
.login-card{width:400px;background:#fff;border-radius:16px;padding:34px 32px;box-shadow:0 20px 50px rgba(0,0,0,.28)}
.login-card h1{font-size:21px;margin:0 0 4px}
.login-card .sub{color:var(--muted);font-size:12px;margin-bottom:22px}
.login-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 5px}
.login-card input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#FBFCFE}
.login-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(21,101,192,.12)}
.login-card .btn-primary{width:100%;margin-top:20px}
.demo-list{margin-top:18px;border-top:1px dashed var(--line);padding-top:12px}
.demo-list .item{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);padding:3px 0;cursor:pointer}
.demo-list .item:hover{color:var(--primary)}
/* 登录页已不再展示演示账号，保留样式仅为兼容旧缓存 */
.brand-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#F9A825;margin-right:6px}

/* ---------- 布局 ---------- */
.layout{display:flex;min-height:100vh}
.sidebar{width:212px;background:var(--navy);color:#C9D3E3;display:flex;flex-direction:column;flex:0 0 212px}
.sidebar .logo{padding:18px 18px 14px;font-size:15px;font-weight:700;color:#fff;letter-spacing:.5px}
.sidebar .logo small{display:block;font-size:10.5px;color:#7E8CA6;font-weight:400;letter-spacing:2px;margin-top:3px}
.nav{padding:6px 10px;flex:1}
.nav a{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:8px;color:#B7C3D6;font-size:12.5px;margin-bottom:2px}
.nav a:hover{background:var(--navy-2);color:#fff}
.nav a.active{background:var(--primary);color:#fff;font-weight:600}
.nav .ico{width:16px;text-align:center;opacity:.9}
.nav-group{margin-bottom:2px}
.nav .nav-mod{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:8px;color:#DCE4F2;font-size:12.5px;font-weight:600;cursor:pointer;user-select:none}
.nav .nav-mod:hover{background:var(--navy-2);color:#fff}
.nav-mod .caret{margin-left:auto;font-size:9px;opacity:.55;transition:transform .2s}
.nav-group.open .nav-mod .caret{transform:rotate(180deg)}
.nav-sub{max-height:0;overflow:hidden;transition:max-height .24s ease}
.nav-group.open .nav-sub{max-height:360px}
.nav-sub a{padding-left:26px;font-size:12px;color:#A9B7CD}
.nav-sep{height:1px;background:#24314C;margin:8px 12px}
.sidebar .foot{padding:12px 16px;font-size:10.5px;color:#63708A;border-top:1px solid #24314C}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:56px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:20}
.topbar .title{font-size:15px;font-weight:600}
.topbar .right{display:flex;align-items:center;gap:14px;font-size:12px}
.bell{position:relative;cursor:pointer;font-size:16px}
.bell .dot{position:absolute;top:-2px;right:-6px;background:var(--red);color:#fff;font-size:9px;
  border-radius:9px;padding:0 4px;line-height:14px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;display:flex;
  align-items:center;justify-content:center;font-size:12px}
.content{padding:18px 20px 40px;flex:1;min-width:0}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap}
.page-head h2{margin:0;font-size:18px}
.page-head .desc{color:var(--muted);font-size:12px;margin-top:2px}
.head-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ---------- 通用组件 ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.card h3{margin:0 0 12px;font-size:13.5px;font-weight:600;display:flex;justify-content:space-between;align-items:center}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1180px){.g4{grid-template-columns:repeat(2,1fr)}.g3,.g2{grid-template-columns:1fr}}
.kpi .label{color:var(--muted);font-size:12px}
.kpi .value{font-size:26px;font-weight:700;letter-spacing:-.5px;margin:4px 0 2px}
.kpi .hint{font-size:11.5px;color:var(--muted)}
.kpi .value.red{color:var(--red)} .kpi .value.orange{color:var(--orange)} .kpi .value.green{color:var(--green)}

.btn{border:1px solid var(--line);background:#fff;color:var(--text);padding:7px 13px;border-radius:8px;
  cursor:pointer;font-size:12.5px;transition:.15s}
.btn:hover{border-color:#C3CEDF;background:#F9FBFE}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
.btn-danger{background:#fff;border-color:#F0C4C4;color:var(--red)}
.btn-danger:hover{background:var(--red-bg)}
.btn-sm{padding:4px 9px;font-size:11.5px;border-radius:6px}
.btn[disabled]{opacity:.5;cursor:not-allowed}

.input,.select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;
  background:#fff;color:var(--text);min-width:0}
.input:focus,.select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(21,101,192,.1)}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.toolbar .spacer{flex:1}
.chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;
  border-radius:20px;padding:4px 11px;font-size:12px;cursor:pointer;color:var(--muted)}
.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}

/* 表格 */
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto;box-shadow:var(--shadow)}
table.tb{width:100%;border-collapse:collapse;font-size:12.5px;min-width:900px}
table.tb th{background:#F7F9FC;text-align:left;padding:9px 10px;font-weight:600;color:#4A5568;
  border-bottom:1px solid var(--line);white-space:nowrap;font-size:12px}
table.tb td{padding:9px 10px;border-bottom:1px solid #F0F3F8;vertical-align:middle}
table.tb th:first-child,table.tb td:first-child{min-width:150px}
table.tb tr:last-child td{border-bottom:none}
table.tb tbody tr:hover{background:#FAFCFF}
table.tb td.num{text-align:right;font-variant-numeric:tabular-nums}
table.tb .sub{color:var(--muted);font-size:11px}
.nowrap{white-space:nowrap}
.link{cursor:pointer;color:var(--primary);font-weight:500}
.link:hover{text-decoration:underline}

/* 徽标 */
.badge{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.b-red{background:var(--red-bg);color:var(--red)}
.b-orange{background:var(--orange-bg);color:var(--orange)}
.b-yellow{background:var(--yellow-bg);color:var(--yellow)}
.b-green{background:var(--green-bg);color:var(--green)}
.b-gray{background:var(--gray-bg);color:#5D6879}
.b-blue{background:#E8F1FB;color:var(--primary)}
.b-dark{background:#EDEFF5;color:#3A4761}
.count{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.count.urgent{color:var(--red)} .count.tight{color:var(--orange)} .count.watch{color:var(--yellow)}
.count.normal{color:var(--green)} .count.expired{color:#8E1B1B}

/* 进度条 */
.bar{height:7px;background:#EEF2F8;border-radius:6px;overflow:hidden}
.bar > i{display:block;height:100%;background:var(--primary);border-radius:6px}
.bar.red > i{background:var(--red)} .bar.orange > i{background:var(--orange)}
.bar.yellow > i{background:var(--yellow)} .bar.green > i{background:var(--green)}
.barlist .row{display:grid;grid-template-columns:88px 1fr 52px;gap:10px;align-items:center;margin-bottom:9px;font-size:12px}
.barlist .row .lab{color:var(--muted);white-space:nowrap}
.barlist .row .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}

/* 分组折叠 */
.group{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-bottom:12px;box-shadow:var(--shadow)}
.group .gh{display:flex;align-items:center;gap:10px;padding:11px 14px;cursor:pointer;background:#FAFBFE;border-radius:var(--radius)}
.group .gh .name{font-weight:600}
.group .gh .meta{color:var(--muted);font-size:11.5px}
.group .gb{display:none;border-top:1px solid var(--line)}
.group.open .gb{display:block}
.group .gb .table-wrap{overflow-x:auto;border:none;box-shadow:none}
.group .gb table.tb{border:none;min-width:980px}
.group .gb table.tb th{background:#FCFDFF}

/* 详情 */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 16px;flex-wrap:wrap}
.tabs .tab{padding:9px 15px;cursor:pointer;font-size:12.5px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs .tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.kv{display:grid;grid-template-columns:96px 1fr;gap:8px 12px;font-size:12.5px}
.kv .k{color:var(--muted)}
.hero{background:linear-gradient(120deg,#16233A,#1E3A5F);color:#fff;border-radius:var(--radius);padding:18px 20px;margin-bottom:14px;
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.hero .h1{font-size:19px;font-weight:700;margin-bottom:4px}
.hero .m{color:#A9B8CE;font-size:12px}
.hero .countdown{text-align:right}
.hero .countdown .big{font-size:32px;font-weight:800;letter-spacing:-1px;line-height:1.1}
.hero .countdown .cap{font-size:11.5px;color:#A9B8CE}
.alert{border-radius:9px;padding:10px 12px;font-size:12.5px;margin-bottom:10px;border:1px solid}
.alert.red{background:var(--red-bg);border-color:#F3C7C7;color:#8E1B1B}
.alert.orange{background:var(--orange-bg);border-color:#F5D5B4;color:#8A4B00}
.alert.blue{background:#EAF2FB;border-color:#C7DCF3;color:#0D47A1}
.alert b{font-weight:700}

/* 热力矩阵 */
.heat{overflow-x:auto}
table.heat-tb{border-collapse:collapse;font-size:11.5px;min-width:760px;width:100%}
table.heat-tb th{padding:6px 8px;color:var(--muted);font-weight:600;text-align:center;white-space:nowrap}
table.heat-tb td{padding:5px 6px;text-align:center;border:1px solid #fff}
table.heat-tb td.lab{text-align:left;color:var(--text);white-space:nowrap}

/* 甘特 */
.gantt{font-size:11.5px}
.gantt .track{display:grid;grid-template-columns:170px 1fr;gap:10px;align-items:center;margin-bottom:8px}
.gantt .track .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#3A4761}
.gantt .rail{position:relative;height:18px;background:#F5F7FB;border-radius:5px}
.gantt .rail .fill{position:absolute;top:3px;height:12px;border-radius:4px;background:var(--primary)}
.gantt .rail .today{position:absolute;top:-3px;width:2px;height:24px;background:var(--red)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(16,24,40,.45);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal{background:#fff;border-radius:12px;width:560px;max-width:100%;max-height:88vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.25)}
.modal .mh{padding:15px 18px;border-bottom:1px solid var(--line);font-weight:600;display:flex;justify-content:space-between;align-items:center}
.modal .mb{padding:16px 18px}
.modal .mf{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.form-row{margin-bottom:12px}
.form-row label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.form-row .input,.form-row .select,.form-row textarea{width:100%}
textarea{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;font-family:inherit;resize:vertical}
.x{cursor:pointer;color:var(--muted);font-size:18px;line-height:1}

/* 提示 */
.toast-wrap{position:fixed;top:14px;right:14px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast{background:#16233A;color:#fff;padding:9px 14px;border-radius:8px;font-size:12.5px;box-shadow:0 8px 24px rgba(0,0,0,.2);
  animation:slideIn .2s ease}
.toast.ok{background:#1B6E3C} .toast.err{background:#A32020}
@keyframes slideIn{from{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}
.empty{padding:34px;text-align:center;color:var(--muted);font-size:12.5px}
.loading{padding:30px;text-align:center;color:var(--muted)}

/* ---------- 移动端 ---------- */
body.mobile{background:#EEF1F6;font-size:14px}
.m-top{background:var(--navy);color:#fff;padding:14px 16px 16px;position:sticky;top:0;z-index:20}
.m-top .row1{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#A9B8CE}
.m-top h1{margin:8px 0 2px;font-size:18px;font-weight:700}
.m-top .sub{font-size:12px;color:#93A3BC}
.m-tabs{display:flex;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:19}
.m-tabs .t{flex:1;text-align:center;padding:10px 0;font-size:13px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent}
.m-tabs .t.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.m-body{padding:12px 12px 76px}
.m-card{background:#fff;border-radius:12px;padding:13px 14px;margin-bottom:10px;box-shadow:0 1px 2px rgba(16,24,40,.06);
  border-left:4px solid transparent}
.m-card.blocked{border-left-color:var(--red)}
.m-card.warnc{border-left-color:var(--orange)}
.m-card .top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.m-card .nm{font-weight:600;font-size:14.5px}
.m-card .code{color:var(--muted);font-size:11.5px;margin-top:1px}
.m-card .cd{text-align:right;flex:0 0 auto}
.m-card .cd .n{font-size:21px;font-weight:800;letter-spacing:-.5px}
.m-card .cd .u{font-size:10.5px;color:var(--muted)}
.m-card .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.m-card .meta{color:var(--muted);font-size:11.5px;margin-top:6px}
.m-sec{background:#fff;border-radius:12px;padding:14px;margin-bottom:12px}
.m-sec h4{margin:0 0 10px;font-size:13px;font-weight:600;display:flex;justify-content:space-between}
.m-list .it{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #F1F4F9;font-size:12.5px}
.m-list .it:last-child{border-bottom:none}
.m-tabbar{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);
  display:flex;padding:6px 0 max(6px,env(safe-area-inset-bottom));z-index:30}
.m-tabbar .i{flex:1;text-align:center;font-size:10.5px;color:var(--muted);cursor:pointer;padding:3px 0}
.m-tabbar .i.active{color:var(--primary);font-weight:600}
.m-tabbar .i .g{font-size:17px;display:block;line-height:1.3}
.m-btn{width:100%;padding:11px;border-radius:10px;border:none;background:var(--primary);color:#fff;font-size:14px;font-weight:600;margin-top:8px}
.m-btn.ghost{background:#EEF2F8;color:var(--text)}
.m-btn.danger{background:#FBECEC;color:var(--red)}
.m-check{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #F1F4F9}
.m-check .ix{width:20px;height:20px;border-radius:50%;flex:0 0 20px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff}
.m-check .nm{flex:1;font-size:12.5px}
.m-check .vl{font-size:11.5px;color:var(--muted);white-space:nowrap}

/* ---------- 移动端工作看板 ---------- */
.m-hero{padding:16px 16px 14px}
.m-hero .h-top,.m-card .h-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.m-hero .h-lab,.m-card .h-lab{font-size:13.5px;font-weight:600;color:var(--text)}
.m-hero .h-upd,.m-card .h-upd{font-size:11px;color:var(--muted)}
.m-hero .h-val{font-size:38px;font-weight:800;letter-spacing:-1px;line-height:1.15;font-variant-numeric:tabular-nums}
.m-hero .h-sub{display:flex;align-items:center;font-size:11.5px;color:var(--muted);margin-top:6px}
.m-hero .h-sub .dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:4px}
.m-hero .h-sub .dot.g{background:#2E7D32}
.m-hero .h-sub .dot.r{background:#D32F2F}
.m-hero .h-sub .gap{width:12px;display:inline-block}
.m-seg{display:flex;gap:18px;border-bottom:1px solid #F1F4F9;margin-bottom:12px}
.m-seg .seg-t{padding:0 2px 8px;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.m-seg .seg-t.active{color:var(--text);border-bottom-color:var(--primary)}
.m-kgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px}
.m-kpi{cursor:pointer;border-radius:8px;padding:2px 4px;transition:background .15s}
.m-kpi:active{background:#F2F6FB}
.m-kpi .kl{font-size:12px;color:var(--muted)}
.m-kpi .kn{font-size:22px;font-weight:800;letter-spacing:-.4px;margin:3px 0 2px;font-variant-numeric:tabular-nums}
.m-kpi .kn.red{color:#D32F2F}
.m-kpi .kn.orange{color:#EF6C00}
.m-kpi .kn.green{color:#2E7D32}
.m-kpi .kh{font-size:10.5px;color:#98A2B3}
.m-bars{display:flex;flex-direction:column;gap:9px}
.m-bars .b-row{display:flex;align-items:center;gap:8px}
.m-bars .b-row.jmp{cursor:pointer}
.m-bars .b-row.jmp:active{opacity:.7}
.m-bars .b-lab{flex:0 0 76px;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-bars .b-bar{flex:1;height:7px;border-radius:4px;background:#EEF1F6;overflow:hidden}
.m-bars .b-bar i{display:block;height:100%;border-radius:4px;background:var(--primary)}
.m-bars .b-val{flex:0 0 28px;text-align:right;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.m-preset{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;background:#fff;border-radius:10px;padding:8px 10px}

/* 可跳转卡片与分布行 */
.card.kpi.jump, .barlist .row.jump { cursor: pointer; transition: box-shadow .15s, transform .15s; }
.card.kpi.jump:hover, .barlist .row.jump:hover { box-shadow: 0 4px 14px rgba(21,101,192,.18); transform: translateY(-1px); }
.card.kpi.jump .go { color: var(--primary, #1565C0); font-size: 10.5px; margin-left: 4px; white-space: nowrap; }

/* ---------- IT 需求看板 ---------- */
#itBox .it-col-wrap { display: flex; gap: 12px; align-items: flex-start; }
#itBox { display: flex; gap: 12px; align-items: flex-start; }
.it-col { flex: 1; min-width: 0; background: #F4F6FA; border: 1px dashed transparent; border-radius: 10px; padding: 8px; min-height: 220px; }
.it-col.over { border-color: var(--primary, #1565C0); background: #EAF2FC; }
.it-colh { font-weight: 700; font-size: 12.5px; padding: 2px 4px 8px; display: flex; justify-content: space-between; align-items: center; }
.it-empty { color: #9AA4B5; font-size: 11px; text-align: center; padding: 18px 0; }
.it-card { background: #fff; border: 1px solid #E3E8F0; border-left: 3px solid #1565C0; border-radius: 8px; padding: 8px 10px; margin-bottom: 8px; cursor: grab; box-shadow: 0 1px 2px rgba(16,24,40,.05); }
.it-card:active { cursor: grabbing; }
.it-card:hover { box-shadow: 0 3px 10px rgba(16,24,40,.12); }
.it-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; }
.it-top .code { font-size: 10.5px; color: #5A6472; font-variant-numeric: tabular-nums; }
.it-title { font-size: 12.5px; font-weight: 600; line-height: 1.4; margin-bottom: 4px; }
.it-meta { display: flex; justify-content: space-between; font-size: 10.5px; color: #5A6472; gap: 6px; }
.it-acts { display: flex; justify-content: flex-end; margin-top: 6px; }
.it-acts .btn { cursor: pointer; }
.it-timeline { max-height: 200px; overflow-y: auto; border: 1px solid #E3E8F0; border-radius: 8px; padding: 6px 10px; }
.it-log { font-size: 11.5px; padding: 5px 0; border-bottom: 1px dashed #EEF1F6; line-height: 1.5; }
.it-log:last-child { border-bottom: none; }
.it-handlers { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.it-h { border: 1px solid #E3E8F0; border-radius: 8px; padding: 8px 10px; cursor: pointer; font-size: 12.5px; display: flex; justify-content: space-between; }
.it-h:hover { border-color: #1565C0; background: #F2F6FB; }
.perms-tb th { font-size: 10px; }
.perms-tb td { text-align: center; }
.perms-tb td:first-child { text-align: left; }
