*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:#f0f2f5;color:#1f2329;font-size:14px}
:root{--blue:#1677ff;--blue-l:#e6f4ff;--green:#52c41a;--green-l:#f6ffed;--orange:#fa8c16;--orange-l:#fff7e6;--red:#ff4d4f;--red-l:#fff2f0;--purple:#722ed1;--purple-l:#f9f0ff;--gray:#8c8c8c;--bd:#e8e8e8}
.layout{display:flex;height:100vh;overflow:hidden}
/* Sidebar */
.sb{width:196px;background:#001529;flex-shrink:0;display:flex;flex-direction:column;overflow-y:auto}
.sb-logo{padding:16px;font-size:15px;font-weight:700;color:#fff;border-bottom:1px solid #0d2a47;display:flex;align-items:center;gap:8px}
.sb-gt{padding:10px 16px 4px;font-size:11px;color:#6b7a99;letter-spacing:.5px;text-transform:uppercase}
.sb-gt-core{font-weight:600;color:#8b9ab9}
.sb-gt-adv{cursor:pointer;user-select:none;transition:all .15s}
.sb-gt-adv:hover{color:#a6b0cf}
.sb-group{transition:max-height .3s ease}
.sb-group.collapsed{max-height:0;overflow:hidden}
.sb-group.expanded{max-height:500px}
.sb-item{display:flex;align-items:center;gap:9px;padding:9px 16px;cursor:pointer;color:#a6b0cf;transition:all .15s;font-size:13px;border-left:3px solid transparent}
.sb-item:hover{color:#fff;background:#0d2a47}
.sb-item.on{color:#fff;background:#0d2a47;border-left-color:var(--blue)}
.sb-item .ic{font-size:15px;width:18px;text-align:center}
/* Content */
.ct{flex:1;overflow-y:auto;display:flex;flex-direction:column}
.topbar{background:#fff;padding:0 22px;height:52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--bd);flex-shrink:0;position:sticky;top:0;z-index:10}
.topbar-t{font-size:15px;font-weight:600}
.main{padding:18px;flex:1;display:flex;flex-direction:column}
.pg{display:none}.pg.on{display:block;flex:1;overflow-y:auto}
/* Cards */
.card{background:#fff;border-radius:8px;border:1px solid var(--bd);margin-bottom:14px}
.ch{padding:13px 18px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between}
.ct2{font-size:14px;font-weight:600}
.cb{padding:16px 18px}
/* Stats */
.sg{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:16px}
.sc{background:#fff;border-radius:8px;border:1px solid var(--bd);padding:16px;display:flex;align-items:center;gap:13px}
.si{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0}
.sv{font-size:26px;font-weight:700;line-height:1}
.sl{color:var(--gray);font-size:12px;margin-top:3px}
/* Table */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{background:#fafafa;padding:8px 12px;text-align:left;font-weight:600;font-size:12px;color:#595959;border-bottom:1px solid var(--bd);white-space:nowrap}
td{padding:8px 12px;border-bottom:1px solid #f5f5f5;vertical-align:middle;font-size:13px}
tr:last-child td{border-bottom:none}
tr:hover td{background:#fafafa}
/* Form */
.fg2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fg3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.fga{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.fg{display:flex;flex-direction:column;gap:3px}
.fl{font-size:12px;color:#595959;font-weight:500}
.fl.r::after{content:" *";color:var(--red)}
input,select,textarea{border:1px solid var(--bd);border-radius:6px;padding:6px 10px;font-size:13px;width:100%;outline:none;transition:border-color .15s;background:#fff;color:#1f2329}
input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(22,119,255,.1)}
textarea{resize:vertical;min-height:60px}
input[readonly]{background:#fafafa;color:#888}
/* Buttons */
.btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border-radius:6px;border:none;cursor:pointer;font-size:13px;font-weight:500;transition:all .15s;white-space:nowrap;line-height:1.4}
.bp{background:var(--blue);color:#fff}.bp:hover{background:#0958d9}
.bd2{background:#fff;color:#595959;border:1px solid var(--bd)}.bd2:hover{border-color:var(--blue);color:var(--blue)}
.bs{background:var(--green);color:#fff}.bs:hover{background:#389e0d}
.br{background:var(--red);color:#fff}.br:hover{background:#cf1322}
.bw{background:var(--orange);color:#fff}.bw:hover{background:#d46b08}
.bm{background:#722ed1;color:#fff}.bm:hover{background:#531dab}
.bsm{padding:4px 10px;font-size:12px}
.bxs{padding:2px 7px;font-size:11px;border-radius:4px}
.bg{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
/* Tags */
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:500}
.t-bl{background:var(--blue-l);color:var(--blue)}
.t-gr{background:var(--green-l);color:#389e0d}
.t-or{background:var(--orange-l);color:#d46b08}
.t-rd{background:var(--red-l);color:#cf1322}
.t-pu{background:var(--purple-l);color:var(--purple)}
.t-gy{background:#f5f5f5;color:#595959}
/* Progress */
.pb{height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden}
.pf{height:100%;border-radius:3px;transition:width .3s}
/* Inner tabs */
.itabs{display:flex;border-bottom:1px solid var(--bd);margin-bottom:14px}
.itab{padding:8px 16px;cursor:pointer;font-size:13px;color:var(--gray);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s}
.itab.on{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}
/* Toolbar */
.tb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:13px}
/* Modal */
.mo{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.mo.on{opacity:1;pointer-events:all}
.md{background:#fff;border-radius:10px;width:560px;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.md-lg{width:720px}
.mh{padding:15px 18px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.mt{font-size:15px;font-weight:600}
.mx{background:none;border:none;font-size:20px;cursor:pointer;color:var(--gray);line-height:1;padding:0 4px}
.mb{padding:18px;overflow-y:auto;flex:1}
.mf{padding:11px 18px;border-top:1px solid var(--bd);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}
/* Process flow */
.pflow{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin-bottom:13px}
.ps{padding:3px 8px;border-radius:4px;font-size:11px;white-space:nowrap}
.ps-done{background:var(--green-l);color:#389e0d}
.ps-act{background:var(--blue-l);color:var(--blue);font-weight:700}
.ps-wait{background:#f5f5f5;color:var(--gray)}
.ps-ready{background:#e6f7ff;color:#1890ff}
.ps-part{background:#fff7e6;color:#fa8c16}
.ps-rework{background:#fff1f0;color:#f5222d}
.ps-hold{background:#f5f5f5;color:#8c8c8c}
.ps-scrapped{background:#ffccc7;color:#cf1322}
.pa{color:var(--gray);font-size:11px}
/* Divider */
.dv{height:1px;background:var(--bd);margin:13px 0}
/* Alert box */
.al{padding:9px 12px;border-radius:6px;font-size:13px;margin-bottom:10px}
.al-i{background:var(--blue-l);color:#003eb3;border:1px solid #91caff}
.al-w{background:var(--orange-l);color:#874d00;border:1px solid #ffd591}
/* Toast */
#tc{position:fixed;bottom:18px;right:18px;z-index:9999;display:flex;flex-direction:column;gap:7px}
.toast{background:#fff;border-radius:8px;padding:10px 14px;box-shadow:0 4px 16px rgba(0,0,0,.15);display:flex;align-items:center;gap:8px;font-size:13px;min-width:210px;animation:sli .25s ease;border-left:4px solid var(--blue)}
.toast.s{border-left-color:var(--green)}.toast.e{border-left-color:var(--red)}.toast.w{border-left-color:var(--orange)}
@keyframes sli{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
code{background:#f5f5f5;padding:1px 5px;border-radius:3px;font-family:monospace;font-size:12px}
@media(max-width:1100px){.sg{grid-template-columns:1fr 1fr}}
.p-tab{padding:10px 20px;cursor:pointer;font-size:13px;color:var(--gray);border-bottom:2px solid transparent;margin-bottom:-2px}
.p-tab:hover{color:var(--primary)}
.p-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}

/* 补充缺失的CSS变量 */
:root {
  --primary: #1677ff;
  --bg: #f0f2f5;
  --dark: #1f2329;
  --border-light: #e8e8e8;
  --color-background-danger: #fff2f0;
  --color-background-info: #e6f4ff;
  --color-background-secondary: #f5f5f5;
  --color-background-success: #f6ffed;
  --color-background-warning: #fff7e6;
  --color-border-tertiary: #f0f0f0;
  --color-text-danger: #ff4d4f;
  --color-text-secondary: #8c8c8c;
  --color-text-success: #52c41a;
  --color-text-tertiary: #bfbfbf;
}
