/* ===== 灿禾源供应链综合管理平台 ===== */
:root{
  --brand-900:#0a241e;
  --brand-800:#0c2f26;
  --brand-700:#0e5c4a;
  --brand-600:#12795f;
  --brand-500:#1a9a78;
  --brand-400:#3cb894;
  --brand-100:#e6f4ee;
  --brand-50:#f1f9f5;
  --gold:#e8a33d;
  --gold-soft:#fdf3e2;
  --ink:#182a25;
  --ink-2:#3d4f49;
  --muted:#74847e;
  --muted-2:#9aa8a3;
  --line:#e4ebe7;
  --line-soft:#eef3f0;
  --bg:#f4f7f5;
  --card:#ffffff;
  --red:#cf4b45;
  --red-soft:#fdeceb;
  --blue:#3a7bd5;
  --blue-soft:#eaf1fc;
  --purple:#7b61c9;
  --purple-soft:#f1edfb;
  --shadow:0 1px 2px rgba(16,42,34,.04), 0 8px 24px rgba(16,42,34,.04);
  --shadow-lg:0 24px 60px rgba(9,32,25,.18);
  --radius:14px;
  --font:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);background:var(--bg);color:var(--ink);
  font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
a{color:inherit;text-decoration:none}
svg{display:block}
.hidden{display:none!important}
::selection{background:#cdeadd;color:#0c2f26}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#cbd8d2;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#adc0b8;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* ===== 登录页 ===== */
.login{display:flex;min-height:100vh;background:#fff}
.login-brand{
  flex:1;position:relative;overflow:hidden;
  background:radial-gradient(1200px 600px at 15% 0%, #16553f 0%, #0b2e26 42%, #071d18 100%);
  color:#fff;display:flex;flex-direction:column;padding:48px 56px 32px;
}
.login-brand:before{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(700px 500px at 40% 40%,#000 20%,transparent 85%);
}
.login-brand-inner{position:relative;z-index:2;max-width:520px;display:flex;flex-direction:column;flex:1}
.brand-mark{display:flex;align-items:center;gap:14px}
.brand-mark svg{width:48px;height:48px}
.brand-name{font-size:22px;font-weight:700;letter-spacing:.16em}
.brand-sub{font-size:9px;letter-spacing:.28em;color:rgba(255,255,255,.45);margin-top:2px}
.login-brand h1{font-size:clamp(30px,3.2vw,44px);line-height:1.35;font-weight:600;margin:74px 0 18px;letter-spacing:.02em}
.login-lead{color:rgba(255,255,255,.62);font-size:15px;max-width:430px}
.login-points{list-style:none;margin:44px 0 0;display:grid;gap:16px;max-width:360px}
.login-points li{display:flex;gap:14px;align-items:center;font-size:14px;color:rgba(255,255,255,.8)}
.login-points span{font-family:var(--mono);font-size:11px;color:#7fd6b7;border:1px solid rgba(127,214,183,.35);border-radius:7px;padding:2px 8px;letter-spacing:.05em}
.login-net{position:absolute;right:-30px;bottom:60px;width:56%;opacity:.55;z-index:1}
.login-foot{position:relative;z-index:2;font-size:12px;color:rgba(255,255,255,.28);margin-top:40px}
.login-panel{width:min(560px,46%);display:flex;align-items:center;justify-content:center;padding:40px;background:linear-gradient(180deg,#fbfcfb,#f6f8f7)}
.login-card{width:100%;max-width:350px}
.login-eyebrow{font-size:12px;letter-spacing:.16em;color:var(--brand-600);font-weight:600;text-transform:uppercase}
.login-card h2{font-size:30px;font-weight:600;margin:10px 0 6px}
.login-desc{color:var(--muted);font-size:13px;margin-bottom:34px}
.field{display:block;margin-bottom:18px}
.field>span{display:block;font-size:13px;color:var(--ink-2);margin-bottom:7px}
.field input,.field select,.field textarea{
  width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;
  padding:11px 13px;font-size:14px;outline:none;transition:.18s;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(26,154,120,.1)}
.login-row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 24px;font-size:12px;color:var(--muted)}
.check{display:flex;align-items:center;gap:6px;cursor:pointer}
.check input{accent-color:var(--brand-600)}
.link{color:var(--brand-600)}
.link:hover{text-decoration:underline}
.btn-block{width:100%;justify-content:center;padding:12px}
.login-demo{margin-top:18px;font-size:12px;color:var(--muted);text-align:center;background:#eef4f1;border-radius:8px;padding:8px}
.login-help{margin-top:14px;font-size:11px;color:var(--muted-2);text-align:center}

/* ===== 基础控件 ===== */
.btn{
  display:inline-flex;align-items:center;gap:7px;border-radius:9px;
  padding:8px 15px;font-size:13px;font-weight:500;transition:.16s;
  border:1px solid var(--line);background:#fff;color:var(--ink-2);white-space:nowrap;
}
.btn:hover{background:#f8faf9;border-color:#d3ded8}
.btn svg{width:15px;height:15px}
.btn-primary{background:var(--brand-600);border-color:var(--brand-600);color:#fff;box-shadow:0 4px 12px rgba(18,121,95,.18)}
.btn-primary:hover{background:var(--brand-700);border-color:var(--brand-700);color:#fff}
.btn-gold{background:var(--gold);border-color:var(--gold);color:#fff}
.btn-ghost{background:transparent;border-color:transparent}
.btn-ghost:hover{background:rgba(18,121,95,.07);color:var(--brand-700)}
.btn-danger{color:var(--red);border-color:#f0d3d1}
.btn-danger:hover{background:var(--red-soft)}
.btn-sm{padding:5px 10px;font-size:12px;border-radius:7px}
.btn-xs{padding:3px 9px;font-size:12px;border-radius:6px}
.icon-btn{width:34px;height:34px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);position:relative;transition:.16s}
.icon-btn:hover{background:#f0f5f2}
.icon-btn svg{width:19px;height:19px}
.only-mobile{display:none}

/* ===== 应用框架 ===== */
.app{display:flex;height:100vh;overflow:hidden}
.sidebar{
  width:236px;flex:0 0 236px;display:flex;flex-direction:column;position:relative;z-index:40;
  background:linear-gradient(180deg,#0c2b24 0%,#081f1a 100%);
  color:#fff;transition:width .22s ease,flex-basis .22s ease;
}
.sb-head{height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 16px 0 18px;flex:0 0 66px}
.sb-logo{display:flex;align-items:center;gap:10px;min-width:0}
.sb-logo svg{width:38px;height:38px;flex:0 0 38px}
.sb-title{display:flex;flex-direction:column;line-height:1.25;overflow:hidden;white-space:nowrap}
.sb-title b{font-size:16px;letter-spacing:.12em;font-weight:700}
.sb-title span{font-size:10px;color:rgba(255,255,255,.4);letter-spacing:.06em}
.sb-collapse{width:24px;height:24px;border-radius:6px;color:rgba(255,255,255,.4);display:flex;align-items:center;justify-content:center}
.sb-collapse:hover{background:rgba(255,255,255,.08);color:#fff}
.sb-collapse svg{width:18px;height:18px}
.nav{flex:1;overflow-y:auto;padding:6px 10px 20px;scrollbar-width:thin}
.nav::-webkit-scrollbar{width:4px}
.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14)}
.nav-group{margin-bottom:2px}
.nav-item{
  display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border-radius:8px;
  color:rgba(255,255,255,.66);font-size:13.5px;transition:.15s;text-align:left;
}
.nav-item:hover{background:rgba(255,255,255,.055);color:#fff}
.nav-item .ic{width:18px;height:18px;flex:0 0 18px;opacity:.8}
.nav-item .chev{margin-left:auto;width:14px;height:14px;transition:.2s;opacity:.4}
.nav-group.open>.nav-item .chev{transform:rotate(180deg)}
.nav-group.open>.nav-item{color:#fff}
.nav-sub{overflow:hidden;height:0;transition:height .22s ease;padding-left:8px}
.nav-group.open .nav-sub{height:auto}
.nav-sub a{
  display:flex;align-items:center;gap:8px;padding:7px 10px 7px 28px;border-radius:7px;
  color:rgba(255,255,255,.48);font-size:12.8px;transition:.15s;position:relative;
}
.nav-sub a:before{content:"";position:absolute;left:16px;top:50%;width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,.22)}
.nav-sub a:hover{color:#fff;background:rgba(255,255,255,.05)}
.nav-sub a.active{color:#fff;background:rgba(26,154,120,.2)}
.nav-sub a.active:before{background:var(--gold);width:5px;height:5px;box-shadow:0 0 0 3px rgba(232,163,61,.16)}
.nav-badge{margin-left:auto;background:rgba(232,163,61,.95);color:#3d2a08;font-size:10px;font-weight:600;border-radius:20px;padding:0 6px;line-height:16px}
.sb-foot{flex:0 0 auto;padding:12px 14px;border-top:1px solid rgba(255,255,255,.06)}
.sb-user{display:flex;align-items:center;gap:9px}
.avatar{
  width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#2a7d64,#16553f);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex:0 0 auto;
}
.avatar.sm{width:30px;height:30px;border-radius:9px;font-size:12px}
.sb-user-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.sb-user-info b{font-size:12.5px;color:rgba(255,255,255,.9);font-weight:500}
.sb-user-info span{font-size:10.5px;color:rgba(255,255,255,.36)}
.sb-logout{margin-left:auto;width:28px;height:28px;border-radius:7px;color:rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center}
.sb-logout:hover{background:rgba(255,255,255,.08);color:#fff}
.sb-logout svg{width:16px;height:16px}
.sidebar.collapsed{width:72px;flex-basis:72px}
.sidebar.collapsed .sb-title,.sidebar.collapsed .sb-user-info,.sidebar.collapsed .sb-logout,
.sidebar.collapsed .nav-item span,.sidebar.collapsed .nav-item .chev,.sidebar.collapsed .nav-badge,
.sidebar.collapsed .nav-sub{display:none}
.sidebar.collapsed .nav-item{justify-content:center;padding:10px}
.sidebar.collapsed .sb-head{justify-content:center;padding:0}
.sidebar.collapsed .sb-collapse{display:none}
.sidebar.collapsed .sb-logo svg{width:34px;height:34px}
.sidebar.collapsed .sb-user{justify-content:center}

.main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}
.topbar{
  height:62px;flex:0 0 62px;display:flex;align-items:center;justify-content:space-between;
  padding:0 24px;background:rgba(255,255,255,.86);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);position:relative;z-index:30;
}
.topbar-left{display:flex;align-items:center;gap:10px;min-width:0}
.crumb{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.crumb b{color:var(--ink);font-weight:500;font-size:13.5px}
.crumb .sep{color:#cbd5d0}
.crumb .home{display:flex;align-items:center;color:var(--muted)}
.crumb .home svg{width:16px;height:16px}
.topbar-right{display:flex;align-items:center;gap:10px}
.search-btn{
  display:flex;align-items:center;gap:8px;height:34px;padding:0 10px 0 11px;
  border:1px solid var(--line);border-radius:9px;background:#fafcfb;color:var(--muted);font-size:12.5px;
  min-width:230px;transition:.16s;
}
.search-btn:hover{border-color:#d2ddd7;background:#fff}
.search-btn svg{width:16px;height:16px;flex:0 0 16px}
.search-btn kbd{margin-left:auto;font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:4px;padding:0 4px;color:var(--muted-2);background:#fff}
.topbar-date{font-size:11.5px;color:var(--muted);padding:0 4px;white-space:nowrap}
.dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--gold);border:1.5px solid #fff}
.topbar-user{display:flex;align-items:center;gap:8px;padding:4px 6px 4px 4px;border-radius:10px;cursor:pointer;position:relative}
.topbar-user:hover{background:#f2f6f4}
.tu-meta{display:flex;flex-direction:column;line-height:1.25}
.tu-meta b{font-size:12.5px;font-weight:500}
.tu-meta span{font-size:10.5px;color:var(--muted)}
.topbar-user .chev{width:14px;height:14px;color:var(--muted)}
.user-menu{
  position:absolute;top:calc(100% + 10px);right:0;width:160px;background:#fff;border:1px solid var(--line);
  border-radius:11px;box-shadow:var(--shadow-lg);padding:6px;display:none;
}
.topbar-user.open .user-menu{display:block}
.user-menu a{display:block;padding:8px 10px;border-radius:7px;font-size:12.5px;color:var(--ink-2)}
.user-menu a:hover{background:var(--brand-50);color:var(--brand-700)}
.content{flex:1;overflow-y:auto;padding:22px 26px 60px;scroll-behavior:smooth}
.page{max-width:1440px;margin:0 auto;animation:fadeUp .28s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ===== 页面头 ===== */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.page-title{font-size:22px;font-weight:600;letter-spacing:.01em;display:flex;align-items:center;gap:10px}
.page-title .tag{font-size:11px;font-weight:500;color:var(--brand-700);background:var(--brand-100);padding:3px 8px;border-radius:6px;letter-spacing:0}
.page-sub{font-size:12.5px;color:var(--muted);margin-top:5px}
.page-actions{display:flex;gap:9px;align-items:center}
.page-actions .btn{height:34px}

/* ===== 卡片 / KPI ===== */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0;gap:12px}
.card-title{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.card-title svg{width:16px;height:16px;color:var(--brand-600)}
.card-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.card-body{padding:16px 18px 18px}
.card-link{font-size:12px;color:var(--brand-600);display:flex;align-items:center;gap:3px}
.card-link:hover{text-decoration:underline}
.card-link svg{width:13px;height:13px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.kpi{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 14px;
  position:relative;overflow:hidden;box-shadow:var(--shadow);transition:.18s;
}
.kpi:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(16,42,34,.07)}
.kpi:after{content:"";position:absolute;right:-24px;top:-24px;width:96px;height:96px;border-radius:50%;background:var(--brand-50);opacity:.8}
.kpi.gold:after{background:var(--gold-soft)}
.kpi.blue:after{background:var(--blue-soft)}
.kpi.purple:after{background:var(--purple-soft)}
.kpi-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;position:relative;z-index:1}
.kpi-label i{width:6px;height:6px;border-radius:50%;background:var(--brand-500);display:inline-block}
.kpi.gold .kpi-label i{background:var(--gold)}
.kpi.blue .kpi-label i{background:var(--blue)}
.kpi.purple .kpi-label i{background:var(--purple)}
.kpi-value{font-size:26px;font-weight:600;letter-spacing:-.02em;margin:9px 0 4px;font-family:var(--font);position:relative;z-index:1}
.kpi-value small{font-size:12px;font-weight:400;color:var(--muted);margin-left:3px}
.kpi-foot{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);position:relative;z-index:1}
.trend{display:inline-flex;align-items:center;gap:2px;font-weight:500;font-size:11px}
.trend.up{color:#18865f}
.trend.down{color:var(--red)}
.trend svg{width:12px;height:12px}
.kpi-spark{position:absolute;right:14px;bottom:12px;width:88px;height:34px;opacity:.75;z-index:1}

.grid{display:grid;gap:14px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-main{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}
.grid-left{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr)}
.mt14{margin-top:14px}
.mt16{margin-top:16px}

/* ===== 数据表格 ===== */
.table-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.toolbar{display:flex;align-items:center;gap:10px;padding:14px 16px;flex-wrap:wrap;border-bottom:1px solid var(--line-soft)}
.toolbar .tb-title{font-size:13.5px;font-weight:500;margin-right:auto;display:flex;align-items:center;gap:8px}
.count-chip{font-size:11px;color:var(--muted);background:#f1f5f3;border-radius:20px;padding:1px 8px}
.filter-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:0 10px;height:32px;background:#fff;min-width:210px}
.filter-search svg{width:15px;height:15px;color:var(--muted-2)}
.filter-search input{border:none;outline:none;font-size:12.5px;width:100%;background:none}
.filter-select{
  height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 26px 0 10px;font-size:12.5px;
  color:var(--ink-2);outline:none;appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5' fill='none' stroke='%2374847e' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;
}
.filter-select:focus{border-color:var(--brand-500)}
.tb-actions{display:flex;gap:8px;align-items:center}
.table-scroll{overflow-x:auto}
table.data{width:100%;border-collapse:collapse;font-size:12.8px;white-space:nowrap}
table.data th{
  text-align:left;font-weight:500;color:var(--muted);font-size:11.5px;letter-spacing:.02em;
  padding:10px 14px;background:#fafcfb;border-bottom:1px solid var(--line-soft);
}
table.data th.num,table.data td.num{text-align:right}
table.data td{padding:11px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink-2);vertical-align:middle}
table.data tbody tr{transition:.12s}
table.data tbody tr:hover{background:#f8fbf9}
table.data tbody tr:last-child td{border-bottom:none}
table.data .strong{color:var(--ink);font-weight:500}
table.data .code{font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}
table.data .muted{color:var(--muted);font-size:11.5px}
table.data .link-cell{color:var(--brand-600);font-weight:500;cursor:pointer}
table.data .link-cell:hover{text-decoration:underline}
.cell-main{display:flex;align-items:center;gap:9px}
.cell-avatar{width:28px;height:28px;border-radius:8px;background:var(--brand-50);color:var(--brand-700);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex:0 0 28px}
.cell-two{display:flex;flex-direction:column;line-height:1.35}
.cell-two b{font-weight:500;color:var(--ink)}
.cell-two span{font-size:11px;color:var(--muted)}
.row-acts{display:flex;gap:4px;justify-content:flex-end}
.row-acts button{font-size:11.5px;color:var(--brand-600);padding:2px 6px;border-radius:5px}
.row-acts button:hover{background:var(--brand-50)}
.row-acts button.danger{color:var(--red)}
.row-acts button.danger:hover{background:var(--red-soft)}
.empty{padding:54px 20px;text-align:center;color:var(--muted);font-size:13px}
.empty svg{width:44px;height:44px;margin:0 auto 10px;color:#c6d3cd;display:block}
.pager{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-top:1px solid var(--line-soft);font-size:12px;color:var(--muted);flex-wrap:wrap;gap:8px}
.pager-btns{display:flex;gap:5px;align-items:center}
.pager-btns button{min-width:28px;height:28px;border-radius:7px;border:1px solid var(--line);background:#fff;font-size:12px;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;padding:0 7px}
.pager-btns button:hover:not(:disabled){border-color:var(--brand-400);color:var(--brand-700)}
.pager-btns button.on{background:var(--brand-600);border-color:var(--brand-600);color:#fff}
.pager-btns button:disabled{opacity:.4;cursor:not-allowed}
.pager-btns .ell{color:var(--muted-2);padding:0 2px}

/* 徽标 */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:20px;line-height:1.6;white-space:nowrap;font-weight:500}
.badge:before{content:"";width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.8}
.badge.green{background:#e9f6ef;color:#157a58}
.badge.amber{background:#fdf2df;color:#a56a13}
.badge.red{background:#fdeceb;color:#b8443e}
.badge.blue{background:#eaf1fc;color:#356fbf}
.badge.gray{background:#f0f3f1;color:#76827d}
.badge.purple{background:#f2eefb;color:#6a52b4}
.badge.teal{background:#e4f4f2;color:#1a7f75}
.badge.plain:before{display:none}
.progress{display:flex;align-items:center;gap:7px;min-width:96px}
.progress .bar{flex:1;height:5px;background:#eef3f0;border-radius:4px;overflow:hidden;min-width:52px}
.progress .bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#24a67f,#12795f)}
.progress span{font-size:11px;color:var(--muted);min-width:30px;text-align:right}

/* ===== 抽屉 / 弹窗 ===== */
.overlay{position:fixed;inset:0;background:rgba(8,28,22,.36);backdrop-filter:blur(2px);z-index:80;animation:fadeIn .18s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{
  position:fixed;z-index:90;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(520px,calc(100vw - 32px));background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);
  animation:modalIn .22s cubic-bezier(.2,.8,.2,1);max-height:86vh;display:flex;flex-direction:column;
}
@keyframes modalIn{from{opacity:0;transform:translate(-50%,-46%) scale(.98)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.modal.wide{width:min(720px,calc(100vw - 32px))}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 22px 0;gap:16px}
.modal-head h3{font-size:17px;font-weight:600}
.modal-head p{font-size:12px;color:var(--muted);margin-top:3px}
.modal-close{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.modal-close:hover{background:#f1f5f3;color:var(--ink)}
.modal-close svg{width:18px;height:18px}
.modal-body{padding:18px 22px 4px;overflow-y:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:16px 22px 20px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.form-grid .full{grid-column:1/-1}
.form-grid .field{margin-bottom:15px}
.form-grid .field>span{font-size:12px;margin-bottom:6px}
.form-grid input,.form-grid select,.form-grid textarea{padding:9px 11px;font-size:13px;border-radius:8px}
.form-grid textarea{min-height:74px;resize:vertical}
.modal-note{font-size:11.5px;color:var(--muted);background:#f7faf8;border:1px solid var(--line-soft);border-radius:8px;padding:9px 11px;margin-bottom:14px}

.drawer{
  position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:#fff;z-index:90;
  box-shadow:-20px 0 60px rgba(9,32,25,.16);display:flex;flex-direction:column;
  animation:drawerIn .24s cubic-bezier(.2,.8,.2,1);
}
@keyframes drawerIn{from{transform:translateX(30px);opacity:.4}to{transform:none;opacity:1}}
.drawer-head{padding:20px 22px 16px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.drawer-head h3{font-size:17px;font-weight:600}
.drawer-head p{font-size:12px;color:var(--muted);margin-top:3px}
.drawer-body{flex:1;overflow-y:auto;padding:18px 22px}
.drawer-foot{padding:14px 22px;border-top:1px solid var(--line-soft);display:flex;justify-content:flex-end;gap:9px;background:#fbfcfb}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-bottom:20px}
.detail-item span{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
.detail-item b{font-size:13px;font-weight:500;color:var(--ink);word-break:break-all}
.detail-item.full{grid-column:1/-1}
.section-label{font-size:12px;font-weight:600;color:var(--ink);margin:18px 0 10px;display:flex;align-items:center;gap:7px}
.section-label:before{content:"";width:3px;height:12px;border-radius:2px;background:var(--brand-500)}

/* 审批流程 */
.flow{display:flex;flex-direction:column;gap:0;margin-top:4px}
.flow-step{display:flex;gap:12px;position:relative;padding-bottom:18px}
.flow-step:last-child{padding-bottom:0}
.flow-step:before{content:"";position:absolute;left:8px;top:20px;bottom:0;width:1px;background:var(--line)}
.flow-step:last-child:before{display:none}
.flow-node{width:17px;height:17px;border-radius:50%;border:2px solid var(--line);background:#fff;flex:0 0 17px;margin-top:2px;position:relative;z-index:1}
.flow-step.done .flow-node{border-color:var(--brand-500);background:var(--brand-500);box-shadow:inset 0 0 0 3px #fff}
.flow-step.now .flow-node{border-color:var(--gold);background:var(--gold-soft);box-shadow:inset 0 0 0 3px #fff}
.flow-step h5{font-size:12.5px;font-weight:500}
.flow-step p{font-size:11px;color:var(--muted);margin-top:2px}
.flow-step .ftime{margin-left:auto;font-size:10.5px;color:var(--muted-2);white-space:nowrap}

/* Toast */
.toast-root{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{
  background:#123a30;color:#fff;font-size:12.5px;padding:9px 16px;border-radius:9px;
  box-shadow:0 12px 32px rgba(9,32,25,.25);display:flex;align-items:center;gap:8px;
  animation:toastIn .2s ease;max-width:80vw;
}
.toast svg{width:16px;height:16px;color:#7fd6b7}
@keyframes toastIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* 通知浮层 */
.notify-pop{
  position:fixed;top:60px;right:120px;width:340px;background:#fff;border:1px solid var(--line);
  border-radius:13px;box-shadow:var(--shadow-lg);z-index:70;overflow:hidden;
}
.notify-head{padding:13px 16px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:500}
.notify-head span{font-size:11px;color:var(--brand-600);cursor:pointer;font-weight:400}
.notify-list{max-height:360px;overflow-y:auto}
.notify-item{padding:12px 16px;border-bottom:1px solid var(--line-soft);display:flex;gap:10px;cursor:pointer}
.notify-item:hover{background:#f8fbf9}
.notify-item:last-child{border-bottom:none}
.ni-ic{width:30px;height:30px;border-radius:8px;background:var(--brand-50);color:var(--brand-600);display:flex;align-items:center;justify-content:center;flex:0 0 30px}
.ni-ic svg{width:15px;height:15px}
.ni-ic.amber{background:var(--gold-soft);color:#a56a13}
.ni-ic.red{background:var(--red-soft);color:var(--red)}
.ni-main{min-width:0}
.ni-main p{font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.ni-main span{font-size:10.5px;color:var(--muted-2)}

/* ===== 图表 ===== */
.chart{width:100%;display:block}
.chart-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:11.5px;color:var(--muted)}
.chart-legend i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:5px}
.chart-tip{font-size:10px;fill:var(--muted-2);font-family:var(--mono)}
.axis-label{font-size:10.5px;fill:#9aa8a3}
.donut-center{font-size:20px;font-weight:600;fill:var(--ink);font-family:var(--font)}
.donut-center-sub{font-size:10px;fill:var(--muted)}

/* ===== 工作台 ===== */
.welcome{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px;flex-wrap:wrap}
.welcome h1{font-size:23px;font-weight:600;letter-spacing:.01em}
.welcome h1 em{font-style:normal;color:var(--brand-600)}
.welcome p{font-size:12.5px;color:var(--muted);margin-top:4px}
.quick-actions{display:flex;gap:8px;flex-wrap:wrap}
.qa{
  display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:9px;
  padding:7px 12px;font-size:12.5px;color:var(--ink-2);box-shadow:var(--shadow);transition:.16s;
}
.qa:hover{border-color:var(--brand-400);color:var(--brand-700);transform:translateY(-1px)}
.qa svg{width:15px;height:15px;color:var(--brand-600)}
.todo-list{display:flex;flex-direction:column}
.todo{display:flex;gap:11px;padding:11px 0;border-bottom:1px dashed var(--line-soft);align-items:flex-start}
.todo:last-child{border-bottom:none;padding-bottom:0}
.todo:first-child{padding-top:2px}
.todo-ic{width:32px;height:32px;border-radius:9px;background:var(--gold-soft);color:#a56a13;display:flex;align-items:center;justify-content:center;flex:0 0 32px}
.todo-ic svg{width:16px;height:16px}
.todo-main{flex:1;min-width:0}
.todo-main b{font-size:12.5px;font-weight:500;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.todo-main span{font-size:11px;color:var(--muted);display:block;margin-top:1px}
.todo-main .badge{margin-top:5px}
.todo .btn{align-self:center}
.alert-list{display:flex;flex-direction:column;gap:10px}
.alert-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;background:#fbf7f2;border:1px solid #f5e8d7}
.alert-item.crit{background:#fdf4f3;border-color:#f6dedc}
.alert-item .ai-ic{width:26px;height:26px;border-radius:7px;background:#fff;display:flex;align-items:center;justify-content:center;color:#a56a13;flex:0 0 26px}
.alert-item.crit .ai-ic{color:var(--red)}
.alert-item svg{width:14px;height:14px}
.alert-item .ai-main{flex:1;min-width:0}
.alert-item b{display:block;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert-item span{font-size:10.5px;color:var(--muted)}
.alert-item .ai-val{font-size:11.5px;font-family:var(--mono);color:#a56a13;white-space:nowrap}
.alert-item.crit .ai-val{color:var(--red)}
.activity{display:flex;flex-direction:column;gap:0}
.act{display:flex;gap:10px;padding:9px 0;position:relative}
.act .act-dot{width:7px;height:7px;border-radius:50%;background:var(--brand-400);margin-top:7px;flex:0 0 7px;position:relative}
.act .act-dot:after{content:"";position:absolute;left:3px;top:12px;width:1px;height:calc(100% + 2px);background:var(--line-soft)}
.act:last-child .act-dot:after{display:none}
.act p{font-size:12px;color:var(--ink-2);line-height:1.5}
.act p b{font-weight:500;color:var(--ink)}
.act span{font-size:10.5px;color:var(--muted-2)}
.mini-table{width:100%;border-collapse:collapse;font-size:12px}
.mini-table th{text-align:left;color:var(--muted);font-size:10.5px;font-weight:500;padding:0 0 8px;border-bottom:1px solid var(--line-soft)}
.mini-table td{padding:8px 0;border-bottom:1px dashed var(--line-soft);color:var(--ink-2)}
.mini-table tr:last-child td{border-bottom:none}
.mini-table td.r{text-align:right;font-family:var(--mono);font-size:11px}
.mini-table .name{font-weight:500;color:var(--ink)}

/* ===== 库存总览 ===== */
.wh-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.wh-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}
.wh-card .wh-top{display:flex;justify-content:space-between;align-items:center}
.wh-card h4{font-size:13px;font-weight:500}
.wh-card .wh-tag{font-size:10px;padding:2px 7px;border-radius:20px;background:var(--brand-50);color:var(--brand-700)}
.wh-card .wh-num{font-size:22px;font-weight:600;margin:7px 0 2px}
.wh-card .wh-num small{font-size:11px;color:var(--muted);font-weight:400;margin-left:2px}
.wh-card .wh-line{height:5px;background:#eef3f0;border-radius:4px;overflow:hidden;margin-top:9px}
.wh-card .wh-line i{display:block;height:100%;background:linear-gradient(90deg,#3cb894,#12795f)}
.wh-card .wh-meta{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted);margin-top:5px}
.expiry-tag{font-size:11px;font-family:var(--mono)}
.expiry-tag.warn{color:#a56a13}
.expiry-tag.crit{color:var(--red)}

/* ===== 统计 / 报表 ===== */
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 15px;box-shadow:var(--shadow)}
.stat-box span{font-size:11.5px;color:var(--muted);display:block}
.stat-box b{font-size:20px;font-weight:600;display:block;margin-top:4px;letter-spacing:-.01em}
.stat-box b small{font-size:11px;font-weight:400;color:var(--muted);margin-left:2px}
.stat-box em{font-style:normal;font-size:11px;color:var(--muted)}
.rank-list{display:flex;flex-direction:column;gap:12px}
.rank-item{display:flex;align-items:center;gap:11px}
.rank-no{width:20px;height:20px;border-radius:6px;background:#f1f5f3;color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);flex:0 0 20px}
.rank-item:nth-child(1) .rank-no{background:var(--gold-soft);color:#a56a13}
.rank-item:nth-child(2) .rank-no{background:var(--brand-100);color:var(--brand-700)}
.rank-item:nth-child(3) .rank-no{background:#eef1f6;color:#5d6f8a}
.rank-main{flex:1;min-width:0}
.rank-main b{font-size:12px;font-weight:500;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-bar{height:4px;background:#f0f4f2;border-radius:3px;margin-top:5px;overflow:hidden}
.rank-bar i{display:block;height:100%;background:linear-gradient(90deg,#3cb894,#12795f);border-radius:3px}
.rank-val{font-size:11.5px;font-family:var(--mono);color:var(--ink-2);white-space:nowrap}

/* ===== 审批 ===== */
.appr-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.pill-tab{padding:6px 13px;border-radius:20px;font-size:12px;color:var(--muted);background:#fff;border:1px solid var(--line);transition:.15s}
.pill-tab:hover{border-color:#cfdcd5;color:var(--ink)}
.pill-tab.on{background:var(--brand-600);border-color:var(--brand-600);color:#fff}

/* ===== 组织架构 ===== */
.org-wrap{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px}
.org-tree{padding:8px 8px 8px 4px}
.org-node{margin-left:20px;position:relative;padding-left:16px;border-left:1px dashed #dfe8e3}
.org-node.root{margin-left:0;padding-left:0;border-left:none}
.org-node>.org-row{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;transition:.15s;cursor:pointer;margin-bottom:3px}
.org-node>.org-row:hover{background:#f6faf8}
.org-node>.org-row.on{background:var(--brand-50)}
.org-row .o-ic{width:26px;height:26px;border-radius:7px;background:var(--brand-100);color:var(--brand-700);display:flex;align-items:center;justify-content:center;flex:0 0 26px}
.org-row .o-ic svg{width:14px;height:14px}
.org-row b{font-size:12.5px;font-weight:500}
.org-row span{font-size:10.5px;color:var(--muted);margin-left:auto}
.org-node.root>.org-row .o-ic{background:var(--gold-soft);color:#a56a13}
.org-detail-card{background:#fbfdfc;border:1px solid var(--line-soft);border-radius:12px;padding:16px}
.org-detail-card h4{font-size:15px;font-weight:600;margin-bottom:3px}
.org-detail-card p{font-size:11.5px;color:var(--muted);margin-bottom:13px}
.org-person{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px dashed var(--line-soft)}
.org-person:last-child{border-bottom:none}
.org-person .avatar{width:30px;height:30px;border-radius:8px;font-size:11px;background:linear-gradient(135deg,#7fae9d,#4f8b76)}
.org-person b{font-size:12px;font-weight:500;display:block}
.org-person span{font-size:10.5px;color:var(--muted)}
.org-person .badge{margin-left:auto}

/* ===== 权限矩阵 ===== */
.matrix{width:100%;border-collapse:collapse;font-size:12px}
.matrix th,.matrix td{padding:9px 10px;border-bottom:1px solid var(--line-soft);text-align:center}
.matrix th{font-size:11px;color:var(--muted);font-weight:500;background:#fafcfb}
.matrix th:first-child,.matrix td:first-child{text-align:left}
.matrix td:first-child{font-weight:500;color:var(--ink-2)}
.matrix input[type=checkbox]{width:15px;height:15px;accent-color:var(--brand-600);cursor:pointer}
.matrix tr.group-row td{background:#f7faf8;font-size:11px;color:var(--muted);font-weight:500;text-align:left;letter-spacing:.05em}
.role-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.role-chip{padding:5px 12px;border-radius:8px;background:#fff;border:1px solid var(--line);font-size:12px;color:var(--ink-2)}
.role-chip.on{background:var(--brand-50);border-color:#bfe0d3;color:var(--brand-700)}

/* ===== 考勤 ===== */
.att-cal{width:100%;border-collapse:separate;border-spacing:3px;font-size:11.5px}
.att-cal th{font-size:10.5px;color:var(--muted);font-weight:500;padding:4px 0;text-align:center}
.att-cal td{height:52px;border-radius:8px;background:#f8fbf9;padding:5px 6px;vertical-align:top;border:1px solid transparent}
.att-cal td.other{background:transparent}
.att-cal td.today{border-color:var(--brand-400);background:var(--brand-50)}
.att-cal .d{font-size:10.5px;color:var(--muted);display:block;font-family:var(--mono)}
.att-cal .st{font-size:10px;padding:1px 5px;border-radius:4px;display:inline-block;margin-top:4px}
.att-cal .st.ok{background:#e9f6ef;color:#157a58}
.att-cal .st.late{background:#fdf2df;color:#a56a13}
.att-cal .st.leave{background:#eaf1fc;color:#356fbf}
.att-cal .st.absent{background:#fdeceb;color:#b8443e}

/* ===== 报表中心 ===== */
.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.report-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px;box-shadow:var(--shadow);transition:.18s;display:flex;flex-direction:column}
.report-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(16,42,34,.08);border-color:#cfe2d9}
.report-ic{width:38px;height:38px;border-radius:10px;background:var(--brand-50);color:var(--brand-600);display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.report-ic svg{width:19px;height:19px}
.report-card h4{font-size:14px;font-weight:600}
.report-card p{font-size:11.5px;color:var(--muted);margin:4px 0 14px;line-height:1.55;flex:1}
.report-card .rc-foot{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted-2)}
.report-preview{background:#fbfdfc;border:1px solid var(--line-soft);border-radius:11px;padding:16px;margin-top:14px}
.report-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-bottom:14px}
.report-meta b{color:var(--ink-2);font-weight:500}

/* ===== 商城 ===== */
.sync-banner{
  display:flex;align-items:center;gap:16px;background:linear-gradient(110deg,#0f4a3c,#0c3229 60%,#134f3f);
  color:#fff;border-radius:13px;padding:18px 20px;margin-bottom:14px;position:relative;overflow:hidden;
}
.sync-banner:after{content:"";position:absolute;right:-40px;top:-70px;width:220px;height:220px;border-radius:50%;border:1px solid rgba(255,255,255,.13)}
.sync-banner .sb-ic{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;flex:0 0 44px}
.sync-banner .sb-ic svg{width:22px;height:22px}
.sync-banner h3{font-size:15px;font-weight:500}
.sync-banner p{font-size:11.5px;color:rgba(255,255,255,.6);margin-top:2px}
.sync-banner .sync-meta{margin-left:auto;text-align:right;font-size:11px;color:rgba(255,255,255,.55)}
.sync-banner .sync-meta b{display:block;font-size:15px;color:#fff;font-weight:500;margin-bottom:1px}
.sync-banner .btn{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.18);color:#fff}
.sync-banner .btn:hover{background:rgba(255,255,255,.2)}
.log-list{display:flex;flex-direction:column}
.log-row{display:flex;gap:11px;padding:10px 0;border-bottom:1px dashed var(--line-soft);font-size:12px}
.log-row:last-child{border-bottom:none}
.log-dot{width:6px;height:6px;border-radius:50%;background:var(--brand-400);margin-top:7px;flex:0 0 6px}
.log-row .lr-main{flex:1;min-width:0}
.log-row b{font-weight:500}
.log-row span{color:var(--muted);font-size:11px}
.log-row time{color:var(--muted-2);font-size:10.5px;font-family:var(--mono);white-space:nowrap}

/* ===== 基础资料 ===== */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}
.tab{padding:9px 15px;font-size:12.5px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px}
.tab:hover{color:var(--ink)}
.tab.on{color:var(--brand-700);border-bottom-color:var(--brand-600);font-weight:500}
.tag-cloud{display:flex;flex-wrap:wrap;gap:8px}
.tag-item{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;font-size:12px}
.tag-item span{color:var(--muted-2);font-size:10px}
.tag-item button{color:#c0ccc6;font-size:14px;line-height:1;padding:0 2px}
.tag-item button:hover{color:var(--red)}
.tag-ops{display:inline-flex;align-items:center;gap:3px;margin-left:2px}
.tag-ops .tag-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;border:1px solid var(--line);background:#fff;color:#c0ccc6;cursor:pointer;font-size:0;padding:0}
.tag-ops .tag-btn svg{width:11px;height:11px}
.tag-ops .tag-btn:hover{color:var(--brand-600);border-color:var(--brand-200);background:var(--brand-50)}
.tag-ops .tag-btn.danger:hover{color:var(--red);border-color:#f0d3d1;background:var(--red-soft)}

/* ===== 空状态 / 占位 ===== */
.section-title{font-size:14px;font-weight:600;margin:22px 0 12px;display:flex;align-items:center;gap:8px}
.hint{font-size:11.5px;color:var(--muted);line-height:1.6}

/* ===== 响应式 ===== */
@media (max-width:1180px){
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .stat-row{grid-template-columns:repeat(2,1fr)}
  .report-grid{grid-template-columns:repeat(2,1fr)}
  .wh-grid{grid-template-columns:repeat(2,1fr)}
  .grid-main,.grid-left{grid-template-columns:1fr}
  .org-wrap{grid-template-columns:1fr}
  .search-btn{min-width:auto}
  .search-btn span{display:none}
  .search-btn kbd{display:none}
  .topbar-date{display:none}
}
@media (max-width:900px){
  .login-brand{display:none}
  .login-panel{width:100%;background:#fff}
  .sidebar{position:fixed;left:0;top:0;bottom:0;transform:translateX(-100%);transition:transform .22s;box-shadow:20px 0 50px rgba(0,0,0,.18)}
  .sidebar.mobile-open{transform:none}
  .only-mobile{display:inline-flex}
  .content{padding:16px 16px 50px}
  .topbar{padding:0 14px}
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .page-title{font-size:19px}
  .report-grid{grid-template-columns:1fr}
  .wh-grid{grid-template-columns:1fr}
  .notify-pop{right:10px;width:calc(100vw - 20px)}
  .tu-meta{display:none}
}
@media (max-width:560px){
  .kpi-grid{grid-template-columns:1fr}
  .stat-row{grid-template-columns:1fr 1fr!important}
  .stat-row .stat-box:last-child:nth-child(odd){grid-column:span 2}
  .page-actions{width:100%}
  .page-actions .btn{flex:1;justify-content:center}
  .toolbar{padding:12px}
  .filter-search{min-width:100%;flex:1}
  .quick-actions{display:none}
}

/* ===== 补充状态 ===== */
.nav-item.active{background:rgba(26,154,120,.2);color:#fff}
.nav-item.active .ic{opacity:1;color:#7fd6b7}
.flow-step.rej .flow-node{border-color:var(--red);background:var(--red)}
.flow-step.rej h5{color:var(--red)}
.flow-step.rej p{color:var(--red)}
.role-chip{cursor:pointer;transition:.15s}
.role-chip:hover{border-color:#c4dcd1;color:var(--brand-700)}
.report-card{cursor:pointer}
.tag-item{cursor:default}
.notify-item{cursor:pointer}
.att-cal td{font-size:10.5px}
.org-node .org-node:hover>.org-row{background:#f8fbf9}
.matrix input[type=checkbox]{pointer-events:auto}


/* 拿货单打印 */@media print { body * { visibility: hidden; } #pickupPrintArea, #pickupPrintArea * { visibility: visible; } #pickupPrintArea { position: fixed; left: 0; top: 0; width: 100%; border: none !important; box-shadow: none !important; } }
