*{margin:0;padding:0;box-sizing:border-box}
html{overflow-x:hidden;overflow-y:scroll}
@keyframes spin{to{transform:rotate(360deg)}}
:root{
  --primary:#1a3a5c;--primary-light:#2563a8;--accent:#f97316;
  --success:#16a34a;--warning:#d97706;--danger:#dc2626;--info:#0891b2;
  --bg:#f1f5f9;--card:#fff;--border:#e2e8f0;--text:#1e293b;--muted:#64748b;
  --sidebar-w:240px;
  --shadow-sm:0 1px 4px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --shadow-md:0 4px 16px rgba(0,0,0,.08),0 2px 6px rgba(0,0,0,.04);
  --shadow-lg:0 8px 32px rgba(0,0,0,.12),0 4px 12px rgba(0,0,0,.06);
}
body{font-family:'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text);display:flex;min-height:100vh}

/* ===== LOGIN — FULL-SCREEN PHOTO BACKGROUND ===== */
#login-screen{
  position:fixed;inset:0;display:flex;align-items:stretch;z-index:9999;
  background:
    linear-gradient(105deg,
      rgba(2,8,22,.80) 0%,
      rgba(3,9,22,.68) 35%,
      rgba(3,9,20,.72) 65%,
      rgba(2,7,18,.78) 100%),
    url('../images/login-bg.jpg') center 52%/cover no-repeat;
  overflow:hidden;
}
#login-screen.hidden{display:none}
/* Subtle vignette overlay */
#login-screen::before{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 100% 100% at 50% 50%,transparent 40%,rgba(0,0,0,.35) 100%);
}
/* Blue tone wash (keeps corporate feel) */
#login-screen::after{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(180deg,rgba(8,20,50,.25) 0%,transparent 50%,rgba(4,10,28,.2) 100%);
}

/* Ambient glow orbs */
.lg-orb{position:absolute;border-radius:50%;pointer-events:none;z-index:0}

/* ── Left brand area ── */
.lg-brand{
  flex:0 0 56%;display:flex;flex-direction:column;justify-content:center;
  padding:60px 56px 60px 80px;position:relative;z-index:1;overflow:hidden;
}

/* Ship as background watermark */
.lg-ship-wrap{display:none}
.lg-ship-svg{width:100%;height:auto;display:block}

/* Company identity */
.lg-identity{margin-bottom:20px;position:relative;z-index:1}
.lg-identity-en{font-size:10px;color:rgba(255,255,255,.35);letter-spacing:.2em;text-transform:uppercase}

/* Hero title (like Kingdee's big company name) */
.lg-hero{margin-bottom:18px;position:relative;z-index:1}
.lg-hero-name{
  font-size:72px;font-weight:900;color:#fff;
  line-height:1;letter-spacing:-.04em;margin-bottom:14px;
  text-shadow:0 2px 40px rgba(0,0,0,.4);
}
.lg-accent{background:linear-gradient(90deg,#22d3ee,#7dd3fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.lg-hero-sub{
  font-size:13px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(255,255,255,.35);
}
/* Welcome message (internal tool) */
.lg-welcome{position:relative;z-index:1;margin-top:6px}
.lg-welcome p{
  font-size:14.5px;color:rgba(255,255,255,.45);
  letter-spacing:.02em;line-height:1.6;
  border-left:2px solid rgba(34,211,238,.4);
  padding-left:14px;margin-top:8px;
}

/* (features & stats removed — internal tool) */

/* ── Right: Card area ── */
.lg-card-area{
  flex:1;display:flex;align-items:center;justify-content:center;
  padding:40px 68px 40px 16px;position:relative;z-index:1;
}

/* Dark glassmorphic card */
.lg-card{
  width:100%;max-width:388px;
  background:rgba(5,12,28,.85);
  backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);
  border-radius:20px;
  padding:44px 40px 38px;
  box-shadow:0 32px 80px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.07);
  position:relative;overflow:hidden;
}
.lg-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,#22d3ee 0%,#2563a8 55%,#f97316 100%);
}

/* Card header */
.lg-card-head{text-align:center;margin-bottom:28px}
.lg-card-logo{
  width:52px;height:52px;border-radius:14px;margin:0 auto 16px;
  background:#fff;
  border:none;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 16px rgba(0,0,0,.3);
  overflow:hidden;
  padding:4px;
}
.lg-card-logo img{width:100%;height:100%;object-fit:contain;}
.lg-card-head h2{font-size:22px;font-weight:800;color:#fff;margin-bottom:6px;letter-spacing:-.02em}
.lg-card-head p{font-size:12px;color:rgba(255,255,255,.35)}

/* ── Login form fields — dark card ── */
.login-field{margin-bottom:18px}
.login-field label{
  display:block;font-size:10.5px;font-weight:600;
  color:rgba(255,255,255,.4);margin-bottom:8px;
  letter-spacing:.1em;text-transform:uppercase;
}
.login-input-wrap{position:relative;display:flex;align-items:center}
.login-input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:1;opacity:.35}
.login-field input{
  width:100%;
  background:rgba(255,255,255,.06);
  border:1.5px solid rgba(255,255,255,.09);
  border-radius:10px;
  padding:13px 14px 13px 42px;
  font-size:14px;color:#fff;
  outline:none;transition:.2s;font-family:inherit;
}
.login-field input::placeholder{color:rgba(255,255,255,.2)}
.login-field input:focus{
  background:rgba(255,255,255,.09);
  border-color:rgba(34,211,238,.45);
  box-shadow:0 0 0 3px rgba(34,211,238,.08);
}
/* Fix autofill on dark background */
.login-field input:-webkit-autofill,
.login-field input:-webkit-autofill:hover,
.login-field input:-webkit-autofill:focus,
.login-field input:-webkit-autofill:active{
  -webkit-box-shadow:0 0 0 100px rgba(5,12,28,.98) inset !important;
  -webkit-text-fill-color:#fff !important;
  caret-color:#fff;
  transition:background-color 9999s ease-in-out 0s;
}
/* Login button */
.login-btn{
  width:100%;
  background:linear-gradient(135deg,#1d6fcb 0%,#1a4a96 100%);
  color:#fff;border:none;border-radius:10px;padding:14px;
  font-size:15px;font-weight:700;cursor:pointer;margin-top:10px;
  transition:.2s;letter-spacing:.05em;font-family:inherit;
  box-shadow:0 4px 22px rgba(29,111,203,.45);
}
.login-btn:hover{
  background:linear-gradient(135deg,#2563a8 0%,#1e3d80 100%);
  box-shadow:0 8px 30px rgba(29,111,203,.55);transform:translateY(-1px);
}
.login-btn:active{transform:translateY(0)}
.login-error{color:#f87171;font-size:12px;text-align:center;margin-top:10px;min-height:18px;font-weight:500}
/* Forgot password link */
.lg-forgot{text-align:center;margin-top:20px}
.lg-forgot a{font-size:12px;color:rgba(255,255,255,.28);text-decoration:none;transition:.15s;letter-spacing:.02em}
.lg-forgot a:hover{color:rgba(255,255,255,.55)}

/* ── Login responsive ── */
@media(max-width:1200px){
  .lg-brand{padding:0 44px 60px 60px}
  .lg-hero-name{font-size:54px}
}
@media(max-width:960px){
  .lg-brand{flex:0 0 52%;padding:0 32px 48px}
  .lg-hero-name{font-size:44px}
  .lg-card-area{padding:32px 36px 32px 12px}
}
@media(max-width:680px){
  #login-screen{flex-direction:column;overflow-y:auto}
  .lg-brand{flex:none;padding:36px 24px 28px;justify-content:center;order:1}
  .lg-ship-wrap{display:none}
  .lg-hero-name{font-size:36px}
  .lg-card-area{flex:none;padding:0 20px 36px;order:2}
  .lg-card{padding:30px 24px}
}

/* ===== ROLE BADGES ===== */
.role-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.04em}
.role-总经理{background:#fdf4ff;color:#7e22ce;border:1px solid #e9d5ff}
.role-经理{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.role-主管{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.role-销售{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}
.role-财务{background:#fef9c3;color:#a16207;border:1px solid #fde68a}
.role-操作{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}

/* ===== SIDEBAR ===== */
#sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,#0f2236 0%,#1a3a5c 55%,#153258 100%);display:flex;flex-direction:column;position:fixed;height:100vh;z-index:100;transition:width .25s cubic-bezier(.4,0,.2,1),transform .3s;overflow:hidden}
.logo{padding:18px 14px 14px;border-bottom:1px solid rgba(255,255,255,.07);display:flex;align-items:flex-start;justify-content:space-between;gap:6px;min-width:0}
.logo-text{min-width:0;flex:1}
.logo h1{color:#fff;font-size:13.5px;font-weight:700;line-height:1.4;white-space:nowrap}
.logo p{color:rgba(255,255,255,.35);font-size:10px;margin-top:3px;letter-spacing:.03em;white-space:nowrap}
.nav-section{padding:6px 8px;flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
.nav-section::-webkit-scrollbar{display:none}
.nav-label{
  color:rgba(255,255,255,.35);
  font-size:10px;font-weight:700;letter-spacing:.14em;
  padding:14px 10px 6px;
  text-transform:uppercase;white-space:nowrap;overflow:hidden;
  transition:color .2s,opacity .2s,height .2s,padding .2s;
  display:flex;align-items:center;justify-content:space-between;
  cursor:pointer;user-select:none;
}
.nav-label:hover{color:rgba(255,255,255,.6)}
.nav-label .nav-section-arrow{
  font-size:9px;
  transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .2s;
  opacity:.5;letter-spacing:0;font-style:normal;
}
.nav-label:hover .nav-section-arrow{opacity:.85}
.nav-label.nav-section-collapsed .nav-section-arrow{transform:rotate(-90deg)}
.nav-section-items{overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1)}
/* 2026-05-15 Phase A 视觉升级：参考物流巴巴的激活态卡片样式 + 微动效，深蓝主题保留 */
.nav-item{
  position:relative;
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;
  margin-bottom:2px;
  color:rgba(255,255,255,.65);
  cursor:pointer;
  transition:background .2s cubic-bezier(.4,0,.2,1),color .2s,transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s;
  font-size:13px;
  border-radius:8px;
  white-space:nowrap;overflow:hidden;
  user-select:none;-webkit-user-select:none;
}
.nav-item:hover:not(.active){
  background:rgba(255,255,255,.08);
  color:rgba(255,255,255,.95);
  transform:translateX(3px);  /* 轻微右移 - 悬停反馈 */
}
.nav-item.active{
  background:rgba(74,158,255,.16);  /* 浅蓝半透明卡片 */
  color:#7cc4ff;                     /* 亮蓝文字 */
  font-weight:600;
  box-shadow:inset 0 0 0 1px rgba(74,158,255,.18), 0 2px 8px rgba(0,0,0,.15);
}
/* 左侧亮蓝竖条（物流巴巴风格指示器） */
.nav-item.active::before{
  content:'';
  position:absolute;
  left:-4px;top:50%;
  transform:translateY(-50%);
  width:3px;height:62%;
  background:#4a9eff;
  border-radius:0 3px 3px 0;
  box-shadow:0 0 8px rgba(74,158,255,.55);
  animation:navActivePulse .35s cubic-bezier(.34,1.56,.64,1);
}
@keyframes navActivePulse{
  0%{height:0;opacity:0}
  100%{height:62%;opacity:1}
}
.nav-item.disabled{opacity:.28;pointer-events:none}
.nav-item .icon{
  width:22px;height:22px;
  text-align:center;font-size:14px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:transform .2s cubic-bezier(.4,0,.2,1),filter .2s;
}
.nav-item:hover .icon{transform:scale(1.12)}
.nav-item.active .icon{
  transform:scale(1.08);
  filter:drop-shadow(0 0 6px rgba(74,158,255,.6));  /* 蓝色光晕替换原橙色 */
}
/* 拖拽手柄 */
.nav-item[data-sortable="1"]>span{pointer-events:none}
.nav-drag-handle{margin-left:auto;color:rgba(255,255,255,.2);font-size:13px;cursor:grab;opacity:0;transition:opacity .15s;padding:0 2px;flex-shrink:0;line-height:1;user-select:none}
.nav-item:hover .nav-drag-handle{opacity:1}
.nav-item.nav-dragging{opacity:.35;background:rgba(255,255,255,.05)!important;outline:1px dashed rgba(255,255,255,.25)}
.nav-item.nav-drag-over-top{box-shadow:0 -2px 0 0 #4a9eff}
.nav-item.nav-drag-over-bot{box-shadow:0 2px 0 0 #4a9eff}
/* 折叠按钮 */
.sidebar-collapse-btn{background:rgba(255,255,255,.1);border:none;color:rgba(255,255,255,.5);cursor:pointer;border-radius:5px;padding:3px 6px;font-size:11px;line-height:1;transition:.15s;flex-shrink:0;align-self:center}
.sidebar-collapse-btn:hover{background:rgba(255,255,255,.2);color:#fff}
/* 折叠态 */
#sidebar.sidebar-collapsed{width:54px}
#sidebar.sidebar-collapsed .logo-text{display:none}
#sidebar.sidebar-collapsed .logo{justify-content:center;padding:14px 8px}
#sidebar.sidebar-collapsed .nav-label{height:0;padding:0;opacity:0;pointer-events:none}
#sidebar.sidebar-collapsed .nav-item{justify-content:center;padding:10px 0;gap:0;position:relative}
#sidebar.sidebar-collapsed .nav-item::after{content:attr(data-label);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:#1a3a5c;color:#fff;padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap;z-index:999;pointer-events:none;box-shadow:0 3px 10px rgba(0,0,0,.3);opacity:0;transition:opacity .12s .08s}
#sidebar.sidebar-collapsed .nav-item:hover::after{opacity:1}
#sidebar.sidebar-collapsed .nav-text{display:none}
#sidebar.sidebar-collapsed .nav-drag-handle{display:none}
#sidebar.sidebar-collapsed .nav-backup-btns{display:none}
#sidebar.sidebar-collapsed .nav-bottom{padding:8px 6px 12px}
.sidebar-collapsed#main,.sidebar-collapsed #main{margin-left:54px;--sidebar-w:54px}
.nav-backup-btns{display:flex;gap:6px}
.nav-backup-btns .btn{flex:1;font-size:11px;padding:5px 6px;justify-content:center}

/* ===== SIDEBAR OVERLAY ===== */
#sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99;backdrop-filter:blur(2px)}
#sidebar-overlay.show{display:block}

/* ===== HAMBURGER ===== */
.hamburger{display:none;background:none;border:none;font-size:22px;cursor:pointer;padding:4px 8px;color:var(--text)}

/* ===== MAIN ===== */
#main{margin-left:var(--sidebar-w);flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh;transition:margin-left .25s cubic-bezier(.4,0,.2,1)}
.topbar{background:#fff;border-bottom:1px solid rgba(226,232,240,.7);box-shadow:0 1px 8px rgba(0,0,0,.06);padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;position:fixed;top:0;left:var(--sidebar-w);right:0;z-index:50;transition:left .25s cubic-bezier(.4,0,.2,1)}
.topbar h2{font-size:15px;font-weight:700;color:var(--text)}
.topbar-left{display:flex;align-items:center;gap:10px}
.topbar-right{display:flex;align-items:center;gap:12px}
.topbar-user-pill{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--border);border-radius:20px;padding:4px 12px 4px 5px;font-size:12px;color:var(--muted);cursor:default;transition:.15s}
.topbar-user-pill:hover{background:#f1f5f9}
.topbar-user-dot{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--primary-light),var(--primary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}

/* ===== BUTTONS ===== */
.btn{padding:7px 16px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:.15s;display:inline-flex;align-items:center;gap:6px;font-family:inherit;letter-spacing:.01em}
.btn-primary{background:linear-gradient(135deg,#2563a8 0%,#1e4d8c 100%);color:#fff;box-shadow:0 2px 8px rgba(37,99,168,.2)}
.btn-primary:hover{background:linear-gradient(135deg,#1d4ed8 0%,#1a3a5c 100%);box-shadow:0 3px 12px rgba(37,99,168,.3);transform:translateY(-1px)}
.btn-primary:active{transform:translateY(0)}
.btn-success{background:var(--success);color:#fff;box-shadow:0 2px 6px rgba(22,163,74,.2)}.btn-success:hover{opacity:.9}
.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.9}
.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{opacity:.9}
.btn-outline{background:#fff;color:var(--text);border:1.5px solid var(--border)}.btn-outline:hover{background:var(--bg);border-color:#cbd5e1}
.btn-sm{padding:5px 10px;font-size:12px}
.pg-btn{padding:5px 10px;font-size:12px;border:1.5px solid var(--border);background:#fff;border-radius:6px;cursor:pointer;color:var(--text);transition:all .15s}.pg-btn:hover:not(:disabled){background:var(--bg);border-color:#94a3b8}.pg-btn:disabled{opacity:.4;cursor:not-allowed}.pg-active{background:var(--primary-light)!important;color:#fff!important;border-color:var(--primary-light)!important}.pg-ellipsis{padding:0 6px;color:var(--muted);font-size:13px;line-height:30px}
.btn-ghost-del{background:transparent;color:var(--muted);border:1.5px solid transparent;padding:4px 7px;font-size:13px;line-height:1;border-radius:6px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center}.btn-ghost-del:hover{background:#fee2e2;color:var(--danger);border-color:#fca5a5}
.content{padding:80px 24px 24px;flex:1}
.page{display:none}.page.active{display:block}

/* ===== KPI CARDS ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.kpi-card{background:var(--card);border-radius:12px;padding:18px 20px;border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s;position:relative;overflow:hidden}
.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.kpi-card .kpi-icon{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px}
.kpi-card .label{font-size:12px;color:var(--muted);margin-bottom:8px;font-weight:500;letter-spacing:.02em}
.kpi-card .value{font-size:26px;font-weight:800;color:var(--text);letter-spacing:-.02em;line-height:1.2}
.kpi-card .sub{font-size:11px;color:var(--muted);margin-top:6px}

/* ===== GENERAL CARDS ===== */
.card{background:var(--card);border-radius:12px;border:1px solid var(--border);margin-bottom:20px;box-shadow:var(--shadow-sm)}
.card-header{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;background:linear-gradient(135deg,#fafbfc 0%,#f8fafc 100%);border-radius:12px 12px 0 0}
.card-header h3{font-size:14px;font-weight:700;color:var(--text)}
.card-body{padding:20px}

/* ===== TABLE ===== */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.fin-table{width:100%;font-size:12px}
.fin-table th,.fin-table td{padding:7px 6px;vertical-align:middle}
.fin-table td.ellip{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;cursor:help}
.fin-table td.ellip:hover{overflow:visible;white-space:normal;background:#fffbe6;position:relative;z-index:2}
.fin-table .btn-sm{padding:3px 8px;font-size:11px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);font-weight:700;color:var(--muted);padding:11px 14px;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;font-size:11px;letter-spacing:.04em;text-transform:uppercase}
td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:#f6f9ff}
tbody tr{transition:background .1s}

/* ===== TAGS ===== */
.tag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.tag-blue{background:#dbeafe;color:#1d4ed8}
.tag-green{background:#dcfce7;color:#15803d}
.tag-orange{background:#fed7aa;color:#c2410c}
.tag-red{background:#fee2e2;color:#b91c1c}
.tag-gray{background:#f1f5f9;color:#475569}
.tag-purple{background:#ede9fe;color:#6d28d9}
.tag-yellow{background:#fef9c3;color:#a16207}
.tag-cyan{background:#cffafe;color:#0e7490}
.tag-gold{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border:1px solid #f59e0b}

/* ===== MODAL ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:200;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.modal-overlay.show{display:flex}
.modal{background:#fff;border-radius:16px;width:600px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.2)}
.modal-header{padding:18px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:linear-gradient(135deg,#fafbfc 0%,#f8fafc 100%);z-index:1;border-radius:16px 16px 0 0}
.modal-header h3{font-size:15px;font-weight:700;color:var(--text)}
.modal-close{background:rgba(100,116,139,.1);border:none;width:28px;height:28px;border-radius:50%;font-size:16px;cursor:pointer;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:.15s;line-height:1}
.modal-close:hover{background:rgba(220,38,38,.1);color:var(--danger)}
.modal-body{padding:20px}
.modal-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:#fafbfc;border-radius:0 0 16px 16px}
.form-section-title{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.06em;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:10px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group.full{grid-column:1/-1}
.form-group label{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.form-group input,.form-group select,.form-group textarea{border:1.5px solid var(--border);border-radius:8px;padding:9px 11px;font-size:13px;color:var(--text);font-family:inherit;outline:none;transition:.15s;background:#fff;width:100%;box-sizing:border-box;height:40px;line-height:1.4}
.form-group textarea{height:auto;min-height:72px;resize:vertical}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px rgba(37,99,168,.08)}
.form-group input:disabled,.form-group select:disabled{background:#f8fafc;color:var(--muted)}
/* select 去掉原生箭头，换统一样式，保证和 input 等高 */
.form-group select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M1 1l4.5 4.5L10 1' stroke='%2394a3b8' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}

/* ===== FILTER BAR ===== */
.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.filter-bar input,.filter-bar select{border:1.5px solid var(--border);border-radius:8px;padding:8px 11px;font-size:13px;color:var(--text);outline:none;background:#fff;transition:.15s}
.filter-bar input:focus,.filter-bar select:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px rgba(37,99,168,.07)}

/* ===== TIMELINE ===== */
.timeline{position:relative;padding-left:24px}
.timeline::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--border)}
.tl-item{position:relative;margin-bottom:16px}
.tl-dot{position:absolute;left:-20px;width:14px;height:14px;border-radius:50%;border:2px solid #fff;top:2px}
.tl-dot.done{background:var(--success)}.tl-dot.active{background:var(--accent)}.tl-dot.pending{background:var(--border)}
.tl-content{background:#f8fafc;border-radius:8px;padding:10px 14px;border:1px solid var(--border)}
.tl-content h4{font-size:13px;font-weight:600}
.tl-content p{font-size:11px;color:var(--muted);margin-top:3px}

/* ===== CHARTS ===== */
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}
.chart-wrap{position:relative;height:220px}

/* ===== EMPTY ===== */
.empty{text-align:center;padding:48px 40px;color:var(--muted)}
.empty .ei{font-size:40px;margin-bottom:10px;opacity:.7}
.empty p{font-size:13px;line-height:1.6}

/* ===== TABS ===== */
.tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:20px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:9px 18px;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:.15s;white-space:nowrap}
.tab:hover{color:var(--text)}
.tab.active{color:var(--primary-light);border-bottom-color:var(--primary-light);font-weight:600}

/* ===== PERMISSION NOTICE ===== */
.perm-notice{background:#fef9c3;border:1px solid #fde68a;border-radius:8px;padding:12px 16px;font-size:13px;color:#a16207;margin-bottom:16px}

/* ===== ROUTE MINI TAGS ===== */
.route-mini-tag{display:inline-block;padding:2px 7px;border-radius:10px;background:#e8f0fe;color:#1558d6;font-size:10px;white-space:nowrap;line-height:1.6}
.route-mini-more{display:inline-block;padding:2px 7px;border-radius:10px;background:#f0f0f0;color:var(--muted);font-size:10px;white-space:nowrap;line-height:1.6}

/* ===== FINANCE — FX BAR ===== */
.fx-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px;background:linear-gradient(135deg,#1e3a5f 0%,#1a3a5c 100%);border-radius:12px;padding:12px 20px;flex-wrap:wrap;border:none}
.fx-bar-title{font-size:11px;color:rgba(255,255,255,.55);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.fx-input-group{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.1);border-radius:8px;padding:4px 10px}
.fx-input-group span{font-size:11px;color:rgba(255,255,255,.55);font-weight:600}
.fx-input-group input{background:none;border:none;outline:none;font-size:14px;font-weight:700;color:#fff;width:72px;font-family:inherit}
.fx-input-group input::placeholder{color:rgba(255,255,255,.3)}
.fx-time{font-size:11px;color:rgba(255,255,255,.4);margin-left:4px}

/* ===== FINANCE — PANEL HANDLE ===== */
.fin-panel-handle{display:flex;align-items:center;min-height:36px;height:auto;margin-bottom:10px;cursor:pointer;
  user-select:none;border-radius:8px;padding:4px 6px;transition:background .15s;overflow:hidden}
.fin-panel-handle:hover{background:var(--bg-light)}
.fin-handle-line{flex:1;height:1px;background:var(--border)}
.fin-handle-label{font-size:11px;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:5px;
  padding:0 10px;letter-spacing:.01em}
.fin-handle-arrow{font-size:9px;display:inline-block;transition:transform .3s}
.fin-handle-title{font-size:11px;font-weight:600;color:var(--muted);margin-right:14px;white-space:nowrap;letter-spacing:.02em}
.fin-handle-expand{margin-left:auto;font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px;
  white-space:nowrap;padding-left:12px}
/* chips in collapsed state */
.fin-sum-chip{font-size:11.5px;white-space:nowrap;padding:3px 8px;border-radius:5px;line-height:1}
.fin-sum-chip strong{font-size:12.5px;font-weight:700}
.fin-sum-chip.blue  {color:#2563a8;background:#eff6ff}
.fin-sum-chip.green {color:#16a34a;background:#f0fdf4}
.fin-sum-chip.red   {color:#dc2626;background:#fff1f2}
.fin-sum-chip.violet{color:#7c3aed;background:#f5f3ff}
.fin-sum-chip.amber {color:#d97706;background:#fffbeb}
.fin-sum-div{width:1px;height:14px;background:var(--border);margin:0 4px;flex-shrink:0}

/* ===== FINANCE — KPI CARDS ===== */
.fin-kpi-card{background:var(--card);border-radius:12px;border:1px solid var(--border);padding:14px 18px;display:flex;align-items:center;gap:14px;transition:box-shadow .2s,transform .2s;cursor:default;box-shadow:var(--shadow-sm)}
.fin-kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.fin-kpi-icon{font-size:20px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:12px;flex-shrink:0}
.fin-kpi-label{font-size:11px;color:var(--muted);font-weight:600;margin-bottom:3px;letter-spacing:.02em}
.fin-kpi-value{font-size:20px;font-weight:800;line-height:1.2;color:var(--text)}
.fin-kpi-sub{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.4}
.fin-kpi-blue  {border-left:3px solid #3b82f6}.fin-kpi-blue   .fin-kpi-icon{background:#eff6ff}
.fin-kpi-green {border-left:3px solid #16a34a}.fin-kpi-green  .fin-kpi-icon{background:#f0fdf4}
.fin-kpi-red   {border-left:3px solid #dc2626}.fin-kpi-red    .fin-kpi-icon{background:#fff1f2}
.fin-kpi-violet{border-left:3px solid #7c3aed}.fin-kpi-violet .fin-kpi-icon{background:#f5f3ff}
.fin-kpi-amber {border-left:3px solid #d97706}.fin-kpi-amber  .fin-kpi-icon{background:#fffbeb}

/* ===== FINANCE — CHART CARDS ===== */
.fin-chart-card{background:var(--card);border-radius:12px;border:1px solid var(--border);margin-bottom:0;box-shadow:var(--shadow-sm);overflow:visible}
.fin-chart-header{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#fafbfc,#f8fafc);border-radius:12px 12px 0 0}
.fin-chart-title{font-size:13px;font-weight:700;color:var(--text)}
.fin-chart-sub{font-size:11px;color:var(--muted)}
.fin-chart-body{padding:12px 16px 16px;overflow:visible}
/* donut 容器：不限高度，由图表自然撑开，overflow:visible 防裁剪 */
.fin-chart-body-donut{padding:8px 14px 12px;overflow:visible}
.fin-chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:120px;color:var(--muted);gap:8px}
.fin-chart-empty .ei{font-size:28px}
.fin-chart-empty p{font-size:12px}

/* ===== FINANCE — PILL TABS ===== */
#page-finance .tabs{background:#f1f5f9;border-radius:10px;padding:4px;gap:2px;border-bottom:none;margin-bottom:18px;overflow-x:auto;scrollbar-width:none}
#page-finance .tabs::-webkit-scrollbar{display:none}
#page-finance .tab{border-radius:7px;color:var(--muted);border-bottom:none !important;margin-bottom:0;padding:8px 14px;font-size:12.5px;transition:.15s}
#page-finance .tab:hover{color:var(--text);background:rgba(255,255,255,.8)}
#page-finance .tab.active{background:#fff;color:var(--primary-light);font-weight:700;box-shadow:0 1px 6px rgba(0,0,0,.1)}

/* ===== ROUTE SELECTOR ===== */
.route-selector{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg);display:flex;flex-direction:column;gap:0}
.route-group{border-bottom:1px solid var(--border)}.route-group:last-child{border-bottom:none}
.route-group-label{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;user-select:none;background:var(--card);transition:background .15s}
.route-group-label:hover{background:#f0f2f5}
.rg-title{font-size:12px;font-weight:600;color:var(--text);flex:1}
.rg-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;opacity:0;transition:opacity .15s}
.rg-badge:not(:empty){opacity:1}
.rg-arrow{font-size:10px;color:var(--muted);transition:transform .2s;line-height:1}
.route-group:not(.collapsed) .rg-arrow{transform:rotate(90deg)}
.route-group.collapsed .route-tags{display:none}
.route-tags{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;background:#fff}
.route-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--border);border-radius:20px;font-size:12px;cursor:pointer;background:#fff;transition:all .15s;white-space:nowrap;user-select:none}
.route-tag:hover{border-color:var(--primary);color:var(--primary)}
.route-tag input[type=checkbox]{display:none}
.route-tag:has(input:checked){background:var(--primary);color:#fff;border-color:var(--primary)}

/* ===== MY CUSTOMER CARDS ===== */
.my-cust-card{background:#fff;border:1px solid var(--border);border-left-width:4px;border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:12px;margin-bottom:8px;transition:box-shadow .15s,transform .15s;box-shadow:var(--shadow-sm)}
.my-cust-card:hover{box-shadow:var(--shadow-md)}
.my-cust-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex-shrink:0;align-self:flex-start;margin-top:2px}
.my-cust-info{flex:1;min-width:0}
.my-cust-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:5px}
.my-cust-name{font-weight:700;font-size:14px;line-height:1.3}
.my-cust-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--muted);margin-bottom:6px}
.my-cust-footer{font-size:12px;color:var(--muted)}
.my-cust-actions{display:flex;flex-direction:column;gap:5px;flex-shrink:0;width:100px;padding-left:14px;border-left:1px solid var(--border);align-self:stretch;justify-content:center}
.my-cust-actions .btn{width:100%;justify-content:center;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cust-more-wrap{position:relative}
.cust-more-drop{display:none;position:absolute;left:50%;transform:translateX(-50%);top:calc(100% + 4px);background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:9999;min-width:80px;padding:4px 0}
.cust-more-item{padding:8px 12px;cursor:pointer;font-size:13px;transition:background .1s;text-align:center;white-space:nowrap}
.cust-more-item:hover{background:var(--bg)}

/* ===== POOL LIST ===== */
.pool-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:linear-gradient(135deg,#e0f2fe,#f0fdf4);border-radius:10px;margin-bottom:10px;font-size:13px;font-weight:500}
.pool-list{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm)}
.pool-list-head{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--border);font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.pool-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--border);transition:background .1s}
.pool-row:last-child{border-bottom:none}
.pool-row:hover{background:#f8fafc}
.pool-row-valued{border-left:3px solid var(--info)}
.pool-row-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:768px){
  .pool-list-head{display:none}
  .pool-row{flex-wrap:wrap;gap:6px}
  .my-cust-footer{flex-direction:column;align-items:flex-start;gap:8px}
}

/* ===== QUOTATION CARDS ===== */
.quot-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 20px;display:flex;align-items:flex-start;gap:16px;margin-bottom:10px;transition:box-shadow .15s,transform .15s;box-shadow:var(--shadow-sm)}
.quot-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.quot-card-main{flex:1;min-width:0}
.quot-card-top{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.quot-no{font-weight:700;font-size:14px;color:var(--text);font-family:monospace}
.quot-customer{font-size:14px;font-weight:600;color:var(--primary)}
.quot-card-meta{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}
.quot-card-meta span{display:flex;align-items:center;gap:3px}
.quot-card-right{flex-shrink:0;text-align:right;min-width:150px}
.quot-amount{font-size:18px;font-weight:700;color:var(--primary-light);margin-bottom:4px}
@media(max-width:768px){
  .quot-card{flex-direction:column}
  .quot-card-right{text-align:left;width:100%}
  .quot-amount{font-size:16px}
}

/* ===== USER MGMT ===== */
.user-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:var(--shadow-sm)}
.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary-light),var(--primary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex-shrink:0}

/* ===== NOTIFICATION BELL ===== */
.notif-bell{position:relative;cursor:pointer;font-size:18px;padding:4px;user-select:none}
.notif-badge{position:absolute;top:-2px;right:-4px;background:var(--danger);color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}
.notif-badge:empty,.notif-badge.hide{display:none}

/* ===== NOTIFICATION PANEL ===== */
.notif-panel{position:absolute;top:56px;right:16px;width:360px;max-height:480px;background:#fff;border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:300;display:none;flex-direction:column}
.notif-panel.show{display:flex}
.notif-panel-header{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#fafbfc,#f8fafc);border-radius:12px 12px 0 0}
.notif-panel-header h4{font-size:14px;font-weight:700}
.notif-list{overflow-y:auto;flex:1;max-height:400px}
.notif-item{padding:12px 16px;border-bottom:1px solid #f1f5f9;cursor:pointer;transition:.1s}
.notif-item:hover{background:#f8fafc}
.notif-item.unread{background:#f0f7ff;border-left:3px solid var(--primary-light)}
.notif-item .ni-title{font-size:13px;font-weight:600;margin-bottom:2px}
.notif-item .ni-desc{font-size:12px;color:var(--muted)}
.notif-item .ni-time{font-size:10px;color:var(--muted);margin-top:4px}
.notif-empty{text-align:center;padding:40px;color:var(--muted);font-size:13px}
/* === R1+R2 通知重构样式 === */
.notif-item.read{background:#fafbfc;opacity:.72;cursor:default}
.notif-item.read .ni-title{color:#64748b;font-weight:500}
.notif-item.read .ni-desc{color:#94a3b8}
.notif-item .ni-row{display:flex;gap:8px;align-items:flex-start}
.notif-item .ni-body{flex:1;min-width:0}
.notif-item .ni-del,.notif-item .ni-lock{background:none;border:none;cursor:pointer;font-size:14px;opacity:.35;padding:4px 6px;border-radius:4px;flex-shrink:0;transition:.15s}
.notif-item .ni-del:hover{opacity:1;background:#fee2e2}
.notif-item .ni-lock{cursor:not-allowed;opacity:.5}
.notif-item .ni-lock:hover{opacity:.7}
.notif-section-head{padding:8px 16px;font-size:11px;font-weight:700;color:#64748b;background:#f8fafc;border-bottom:1px solid #e5e7eb;letter-spacing:.04em}
.notif-section-toggle{cursor:pointer;user-select:none}
.notif-section-toggle:hover{background:#eef2f7;color:#334155}
.notif-section-empty{padding:18px 16px;text-align:center;color:#94a3b8;font-size:12px}

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}

/* ===== MOBILE BOTTOM NAV ===== */
.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--border);z-index:80;padding:4px 0 env(safe-area-inset-bottom,0)}
.mobile-nav-inner{display:flex;justify-content:space-around;align-items:center}
.mobile-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;font-size:10px;color:var(--muted);cursor:pointer;flex:1;text-align:center;transition:.15s}
.mobile-nav-item.active{color:var(--primary-light)}
.mobile-nav-item .mn-icon{font-size:18px}

/* ===== RESPONSIVE ===== */
@media(max-width:768px){
  #sidebar{transform:translateX(-100%)}
  #sidebar.open{transform:translateX(0)}
  #main{margin-left:0}
  .hamburger{display:block}
  .topbar{padding:0 12px;height:48px}
  .topbar h2{font-size:14px}
  .content{padding:60px 12px 72px}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
  .kpi-card .value{font-size:20px}
  .chart-grid{grid-template-columns:1fr}
  .form-grid{grid-column:1fr}
  .modal{width:100%;max-width:100%;max-height:100%;border-radius:0;min-height:100vh}
  .modal-overlay.show{align-items:flex-start}
  .filter-bar{gap:6px}
  .filter-bar input,.filter-bar select{flex:1;min-width:0;font-size:12px;padding:6px 8px}
  .filter-bar .btn{padding:6px 10px;font-size:12px}
  .card-header{flex-direction:column;align-items:flex-start}
  table{font-size:12px}
  th,td{padding:8px 6px}
  .mobile-nav{display:block}
  .notif-panel{width:calc(100vw - 24px);right:12px;top:48px}
  .user-card{flex-direction:column;align-items:flex-start}
  div[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  .topbar-right .date-display{display:none}
  .topbar-right .user-display{display:none}
  .topbar-user-pill{display:none}
}
@media(max-width:480px){
  .kpi-grid{grid-template-columns:1fr}
  .login-box{width:100%;padding:28px 24px}
  .tabs{gap:0}
  .tab{padding:8px 12px;font-size:12px}
}

/* ===== PAY ITEM ROW ===== */
.pay-item-row{display:flex;gap:8px;align-items:center;margin-bottom:8px;padding:8px 10px;background:#f8fafc;border-radius:8px;border:1px solid var(--border)}
.pay-item-row select,.pay-item-row input{border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px;font-family:inherit}
.pay-item-row select{flex:1;min-width:0}
.pay-item-row input[type=number]{width:100px}
.pay-item-row input[type=text]{flex:1;min-width:0}
.pay-item-remove{background:none;border:none;color:var(--danger);cursor:pointer;font-size:16px;padding:0 4px;flex-shrink:0}
@media(max-width:768px){.pay-item-row{flex-wrap:wrap}.pay-item-row select,.pay-item-row input{flex:1 1 45%}}

/* ===== ORDER SPLIT VIEW ===== */
.order-split-view{display:flex;gap:0;height:calc(100vh - 170px);border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;box-shadow:var(--shadow-sm)}
/* 左栏 */
.order-cust-panel{position:relative;width:220px;min-width:32px;max-width:400px;border-right:1px solid var(--border);background:#fafbfc;flex-shrink:0;display:flex;flex-direction:column;transition:width .25s cubic-bezier(.4,0,.2,1)}
.order-cust-panel.collapsed{width:32px}
.order-cust-panel.resizing{transition:none}
/* 折叠按钮：固定在左栏右上角内侧 */
.cust-toggle-btn{position:absolute;right:6px;top:10px;width:24px;height:24px;border-radius:6px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 4px rgba(0,0,0,.1);cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center;padding:0;color:var(--muted);transition:background .15s,color .15s,box-shadow .15s}
.cust-toggle-btn:hover{background:var(--primary-light);color:#fff;border-color:var(--primary-light);box-shadow:0 2px 6px rgba(37,99,168,.25)}
.cust-toggle-btn svg{transition:transform .25s cubic-bezier(.4,0,.2,1);flex-shrink:0}
.order-cust-panel.collapsed .cust-toggle-btn{right:4px;top:10px}
.order-cust-panel.collapsed .cust-toggle-btn svg{transform:rotate(180deg)}
/* 展开态内容 */
.cust-panel-body{flex:1;overflow-y:auto;opacity:1;transition:opacity .15s}
.order-cust-panel.collapsed .cust-panel-body{opacity:0;pointer-events:none;overflow:hidden}
/* 折叠态提示文字 */
.cust-panel-hint{display:none;writing-mode:vertical-rl;font-size:11px;color:var(--muted);letter-spacing:3px;cursor:pointer;padding-top:48px;text-align:center;flex:1;user-select:none}
.cust-panel-hint:hover{color:var(--primary-light)}
.order-cust-panel.collapsed .cust-panel-hint{display:block}
/* 拖拽调宽手柄 */
.cust-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;z-index:5;transition:background .15s}
.cust-resize-handle:hover,.cust-resize-handle.dragging{background:var(--primary-light)}
.order-cust-panel.collapsed .cust-resize-handle{display:none}
/* 右栏 */
.order-main-panel{flex:1;overflow-y:auto;padding:8px 12px;min-width:0}
.order-cust-item{padding:10px 12px;cursor:pointer;border-bottom:1px solid #f1f5f9;transition:.1s}
.order-cust-item:hover{background:#f0f7ff}
.order-cust-item.active{background:#e8f0fe;border-left:3px solid var(--primary-light)}
.order-cust-item .oci-name{font-size:13px;font-weight:600;color:var(--text);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.order-cust-item .oci-meta{font-size:10px;color:var(--muted);display:flex;gap:4px;align-items:center;flex-wrap:wrap}
@media(max-width:768px){
  .order-split-view{flex-direction:column;height:auto}
  .order-cust-panel,.order-cust-panel.collapsed{width:100%!important;max-width:100%!important;max-height:200px;border-right:none;border-bottom:1px solid var(--border)}
  .order-cust-panel.collapsed{max-height:36px}
  .cust-toggle-btn{right:8px;top:6px}
  .cust-panel-hint{writing-mode:horizontal-tb;letter-spacing:1px;padding:8px 0}
  .cust-resize-handle{display:none}
}

/* ===== ORDER CARDS ===== */
.order-card{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;overflow:hidden;transition:.15s;box-shadow:var(--shadow-sm)}
.order-card.expanded{border-color:var(--primary-light);box-shadow:0 4px 20px rgba(37,99,168,.12)}
.order-card-row{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;transition:.1s}
.order-card-row:hover{background:#fafbfc}
/* 展开时：标题行 + 时间线 + 状态 pill 视觉上是一个组（共享浅色背景，无分割线） */
.order-card.expanded .order-card-row{background:#f8fafc;padding-bottom:10px}
.order-card.expanded .order-card-row:hover{background:#f8fafc}
.order-card.expanded .ord-journey-line{margin:0 18px 8px !important;padding:6px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}
.order-card.expanded .ord-journey-slim{margin:0 18px 8px !important;border-left-width:3px}
.order-card.expanded .order-detail{border-top:1px solid #e2e8f0;background:#fff;padding-top:12px}
.order-card.expanded .order-detail-grid{padding-top:6px}
.order-card-main{flex:1;min-width:0}
.order-card-no{font-size:14px;margin-bottom:4px;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.order-card-info{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px}
.order-card-right{text-align:right;flex-shrink:0}
.order-card-arrow{color:var(--muted);font-size:12px;flex-shrink:0;margin-left:4px}
.order-progress-bar{height:3px;background:#e2e8f0;border-radius:2px;margin-top:8px;overflow:hidden}
.order-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary-light),var(--success));border-radius:2px;transition:width .3s}
/* 已完成订单折叠分割线 */
.ord-done-divider{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;margin:8px 0 4px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:12px;color:var(--muted);user-select:none;transition:background .15s}
.ord-done-divider:hover{background:#f0f7ff;color:var(--primary-light)}
.ord-done-divider em{font-style:normal;color:var(--primary-light)}
.order-detail{padding:0 18px 18px;border-top:1px solid var(--border);background:#fafbfc}
.order-detail-grid{display:grid;grid-template-columns:1fr 280px;gap:20px;padding-top:16px}
.order-detail-info{min-width:0}
.order-detail-track{min-width:0}
.od-section{margin-bottom:16px}
.od-section h4{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--text)}
.od-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px;font-size:13px}
.od-label{font-size:11px;color:var(--muted);display:block}
.od-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--border);margin-top:12px}
@media(max-width:900px){.order-detail-grid{grid-template-columns:1fr}}
@media(max-width:768px){
  .order-card-row{flex-wrap:wrap;padding:12px}
  .order-card-right{width:100%;text-align:left;display:flex;align-items:center;gap:8px;margin-top:6px}
  .od-fields{grid-template-columns:1fr}
  .od-actions{flex-direction:column}
  .od-actions .btn{width:100%;justify-content:center}
}

/* ===== TRACKING EVENTS ===== */
.track-events{position:relative;padding-left:16px;margin:8px 0}
.track-events::before{content:'';position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:#cbd5e1}
.track-event{position:relative;padding:6px 0 10px 12px}
.track-event-dot{position:absolute;left:-14px;top:9px;width:10px;height:10px;border-radius:50%;background:#cbd5e1;border:2px solid #f0f7ff}
.track-event-dot.active{background:var(--success);box-shadow:0 0 0 3px rgba(22,163,74,.2)}
.track-event.latest .track-event-status{font-weight:700;color:var(--success)}
.track-event-time{font-size:10px;color:var(--muted)}
.track-event-status{font-size:12px;font-weight:500;color:var(--text);margin:1px 0}
.track-event-location{font-size:11px;color:var(--info)}

/* ===== PORT SEARCH DROPDOWN ===== */
.port-input-wrap{position:relative;flex:1}
.port-input-wrap input{width:100%}
.port-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:0 0 8px 8px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:10;max-height:240px;overflow-y:auto;display:none}
.port-item{padding:10px 14px;font-size:13px;cursor:pointer;border-bottom:1px solid #f1f5f9;transition:.1s}
.port-item:hover{background:#f0f7ff}
.port-item:last-child{border-bottom:none}

/* ===== SCHEDULE SEARCH ===== */
.schedule-search-bar{display:flex;gap:12px;align-items:flex-end;margin-bottom:20px;flex-wrap:wrap}
.schedule-search-bar .form-group{margin-bottom:0;min-width:180px;flex:1}
.schedule-search-bar .form-group label{font-size:11px;margin-bottom:4px}
.schedule-search-bar .btn{height:38px;white-space:nowrap}
@media(max-width:768px){
  .schedule-search-bar{flex-direction:column}
  .schedule-search-bar .form-group{min-width:100%;width:100%}
  .schedule-search-bar .btn{width:100%}
}

/* ===== EXPENSE KPI BAR ===== */
#exp-kpi-bar .fin-kpi-card{cursor:default}

/* ===== SIDEBAR BOTTOM (nav-bottom) ===== */
.nav-bottom{padding:8px 10px 12px;border-top:1px solid rgba(255,255,255,.07)}

/* ===== TOPBAR USER MENU ===== */
.topbar-user-pill{cursor:pointer;user-select:none}
.topbar-user-pill:hover{background:#f1f5f9;border-color:#cbd5e1}
.topbar-user-pill:hover .user-dd-caret{stroke:#475569}
.user-dd-caret{flex-shrink:0;transition:transform .2s}
.user-menu-wrap{position:relative}

/* Dropdown panel */
.user-dropdown{
  position:absolute;top:calc(100% + 8px);right:0;
  width:220px;background:#fff;border-radius:12px;
  border:1px solid var(--border);box-shadow:var(--shadow-lg);
  z-index:500;display:none;flex-direction:column;overflow:hidden;
}
.user-dropdown.show{display:flex}

/* Header */
.user-dd-header{
  display:flex;align-items:center;gap:12px;
  padding:16px 16px 14px;
  background:linear-gradient(135deg,#f0f6ff 0%,#f8fafc 100%);
  border-bottom:1px solid var(--border);
}
.user-dd-big-avatar{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary-light),var(--primary));
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:700;
  box-shadow:0 2px 8px rgba(37,99,168,.25);
}
.user-dd-name{font-size:14px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Divider */
.user-dd-divider{height:1px;background:var(--border);margin:0}

/* Items */
.user-dd-item{
  display:flex;align-items:center;gap:10px;
  padding:11px 16px;font-size:13px;font-weight:500;
  color:var(--text);cursor:pointer;transition:background .12s;
}
.user-dd-item:hover{background:#f8fafc}
.user-dd-icon{font-size:15px;width:20px;text-align:center;flex-shrink:0}
.user-dd-danger{color:var(--danger)}
.user-dd-danger:hover{background:#fff1f2}

/* Caret animation when open */
.topbar-user-pill:has(+ .user-dropdown.show) .user-dd-caret,
.user-menu-wrap.open .user-dd-caret{transform:rotate(180deg)}

/* ===== 操作节点 Milestone Pills ===== */
/* 操作节点 checklist */
.od-ms-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:4px}
.ms-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;border:1px solid;transition:background .18s,border-color .18s;cursor:pointer;user-select:none}
.ms-row.ms-pending{background:#fafafa;border-color:#e5e7eb}
.ms-row.ms-done{background:#f0fdf4;border-color:#bbf7d0}
.ms-row.ms-readonly{cursor:default}
.ms-row:not(.ms-readonly):hover{box-shadow:0 2px 6px rgba(0,0,0,.07)}
.ms-circle{width:20px;height:20px;border-radius:50%;border:2px solid;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0;transition:all .18s}
.ms-row.ms-pending .ms-circle{border-color:#d1d5db;color:transparent;background:#fff}
.ms-row.ms-done .ms-circle{border-color:#16a34a;background:#16a34a;color:#fff}
.ms-body{display:flex;flex-direction:column;gap:1px;min-width:0}
.ms-name{font-size:12px;font-weight:700;color:var(--text);line-height:1.2}
.ms-stat{font-size:10.5px;line-height:1.2}
.ms-row.ms-pending .ms-stat{color:#9ca3af}
.ms-row.ms-done .ms-stat{color:#16a34a}

/* ===== 状态选择器 Status Picker ===== */
.status-picker{display:flex;flex-wrap:wrap;gap:7px}
.sp-item{padding:6px 13px;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600;border:1.5px solid #e5e7eb;background:#f3f4f6;color:#6b7280;transition:all .18s;user-select:none}
.sp-item:hover{border-color:#94a3b8;color:#374151;transform:translateY(-1px)}
.sp-item.active[data-color="blue"]{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8}
.sp-item.active[data-color="yellow"]{background:#fef9c3;border-color:#fde047;color:#a16207}
.sp-item.active[data-color="orange"]{background:#ffedd5;border-color:#fdba74;color:#c2410c}
.sp-item.active[data-color="purple"]{background:#f3e8ff;border-color:#d8b4fe;color:#7e22ce}
.sp-item.active[data-color="cyan"]{background:#cffafe;border-color:#67e8f9;color:#0e7490}
.sp-item.active[data-color="green"]{background:#dcfce7;border-color:#86efac;color:#15803d}

/* ===== 参考资料库 ===== */
.ref-tabs{display:flex;gap:6px;margin-bottom:18px;border-bottom:2px solid var(--border);padding-bottom:0}
.ref-tab{background:none;border:none;padding:9px 18px;font-size:13px;font-weight:600;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;border-radius:6px 6px 0 0;transition:all .15s}
.ref-tab:hover{color:var(--primary);background:var(--hover)}
.ref-tab.active{color:var(--primary);border-bottom-color:var(--primary);background:#eff6ff}

.ref-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.ref-search{flex:1;max-width:280px;padding:7px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;transition:border-color .15s}
.ref-search:focus{border-color:var(--primary)}
.btn-ref-add{background:var(--primary);color:#fff;border:none;padding:7px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}
.btn-ref-add:hover{background:#1d4ed8}

.ref-table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border)}
.ref-table{width:100%;border-collapse:collapse;font-size:13px}
.ref-table thead th{background:#f8fafc;padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:12px;border-bottom:1px solid var(--border)}
.ref-table tbody td{padding:10px 14px;border-bottom:1px solid #f1f5f9;vertical-align:middle;color:var(--text-primary)}
.ref-table tbody tr:last-child td{border-bottom:none}
.ref-table tbody tr:hover{background:#f8fafc}
.ref-empty{text-align:center;color:var(--text-secondary);padding:30px!important}
.ref-remark{color:var(--text-secondary);max-width:240px}
.ref-actions{white-space:nowrap}
.btn-ref-edit{background:#f0f9ff;color:#0369a1;border:1px solid #bae6fd;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer;margin-right:4px;transition:all .15s}
.btn-ref-edit:hover{background:#e0f2fe}
.btn-ref-del{background:#fff1f2;color:#be123c;border:1px solid #fecdd3;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer;transition:all .15s}
.btn-ref-del:hover{background:#ffe4e6}
.btn-ref-detail{background:#f5f3ff;color:#6d28d9;border:1px solid #ddd6fe;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer;margin-right:4px;transition:all .15s}
.btn-ref-detail:hover{background:#ede9fe}
/* 报价参考列表紧凑显示 */
.ref-name-cell{max-width:280px;white-space:nowrap;overflow:visible}
.ref-name-first{font-weight:600;color:var(--text-primary)}
.ref-more{display:inline-block;background:#eff6ff;color:#2563eb;font-size:11px;padding:1px 7px;border-radius:10px;margin-left:4px;font-weight:600;cursor:help;transition:.15s}
.ref-more:hover{background:#dbeafe}
.ref-more-pop{position:fixed;min-width:160px;max-width:300px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.15);padding:9px;display:none;flex-wrap:wrap;gap:5px;z-index:10001;animation:pselFadeIn .12s;pointer-events:none}
.ref-more-item{display:inline-block;background:#f1f5f9;color:#334155;font-size:11.5px;padding:3px 9px;border-radius:6px;white-space:nowrap;font-weight:500}
.ref-price-cell{font-weight:700;color:#0f172a;white-space:nowrap}
.ref-cur{font-size:11px;color:#94a3b8;font-weight:500;margin-left:2px}
.ref-spec-cell{display:flex;flex-wrap:nowrap;align-items:center;gap:16px;font-size:12.5px;white-space:nowrap}
.ref-spec-line{display:inline-flex;align-items:baseline;gap:5px}
.ref-spec-k{color:#94a3b8;font-size:11px}
.ref-spec-v{color:#1e293b;font-weight:600}
/* 详情弹窗的行 */
.rd-row{display:flex;padding:10px 0;border-bottom:1px dashed #e5e7eb;align-items:flex-start}
.rd-row:last-child{border-bottom:none}
.rd-label{flex:0 0 88px;color:var(--text-secondary);font-size:13px}
.rd-val{flex:1;color:var(--text-primary);font-size:13px;word-break:break-word}

.ref-tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700}
.ref-tag-red{background:#fff1f2;color:#be123c;border:1px solid #fecdd3}
.ref-tag-orange{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.ref-tag-yellow{background:#fefce8;color:#a16207;border:1px solid #fde68a}

/* 参考资料库弹窗 */
.ref-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9999;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s}
.ref-modal{background:#fff;border-radius:14px;width:520px;max-width:95vw;max-height:90vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.ref-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 14px;border-bottom:1px solid var(--border);font-size:15px;font-weight:700}
.ref-modal-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--text-secondary);line-height:1;padding:2px 6px;border-radius:6px}
.ref-modal-close:hover{background:var(--hover)}
.ref-modal-body{padding:20px 22px}
.ref-modal-footer{display:flex;justify-content:flex-end;gap:9px;padding:14px 22px 18px;border-top:1px solid var(--border)}
.btn-ref-cancel{background:#f1f5f9;color:var(--text-primary);border:none;padding:8px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.btn-ref-cancel:hover{background:#e2e8f0}
.btn-ref-save{background:var(--primary);color:#fff;border:none;padding:8px 22px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.btn-ref-save:hover{background:#1d4ed8}

.ref-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ref-span2{grid-column:span 2}
.ref-form-group label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:5px}
.ref-req{color:#ef4444}
.ref-form-group input,.ref-form-group select,.ref-form-group textarea{width:100%;padding:8px 11px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;box-sizing:border-box;transition:border-color .15s;font-family:inherit}
.ref-form-group input:focus,.ref-form-group select:focus,.ref-form-group textarea:focus{border-color:var(--primary)}
.ref-form-group textarea{resize:vertical;min-height:60px}
.ref-tag-green{background:#dcfce7;color:#15803d;border:1px solid #86efac}
.ref-tag-gray{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1}
.ref-tag-blue{background:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}
.btn-ref-refresh{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0;padding:7px 12px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.btn-ref-refresh:hover{background:#e2e8f0;color:#1e293b}
.si-tip{background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:9px 14px;border-radius:8px;font-size:12px;margin-bottom:12px}
.si-bl-name{font-family:monospace;font-size:12px;color:#1e40af;max-width:200px;white-space:pre-wrap;word-break:break-word}
.si-section-title{font-size:12px;font-weight:700;color:var(--text-secondary);letter-spacing:.05em;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.si-hint{font-weight:400;color:#94a3b8;font-size:11px}
.ref-modal-wide{width:640px}
.si-goods-cell{max-width:180px}
.si-goods-tag{display:inline-block;background:#f0f9ff;color:#0369a1;border:1px solid #bae6fd;padding:1px 7px;border-radius:10px;font-size:11px;margin:2px 2px 2px 0;white-space:nowrap}

/* ===== 经验墙 ===== */
.exp-wrap{display:flex;flex-direction:column;gap:0}

/* 加载状态 */
.exp-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:60px 0;color:var(--text-secondary);font-size:15px}
.exp-load-err{color:#dc2626}

/* 状态栏 */
.exp-status-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:14px}
.exp-level-badge{display:flex;align-items:center;gap:6px;font-size:13px;padding:5px 13px;border-radius:20px;font-weight:600;border:1.5px solid transparent}
.exp-lv-sep{opacity:.4}
.exp-level-badge.exp-lv1{background:#f0fdf4;color:#15803d;border-color:#86efac}
.exp-level-badge.exp-lv2{background:#fefce8;color:#a16207;border-color:#fde68a}
.exp-level-badge.exp-lv3{background:#fff7ed;color:#c2410c;border-color:#fdba74}
.exp-level-badge.exp-lv4{background:#faf5ff;color:#7e22ce;border-color:#d8b4fe}
.exp-lock-tip{font-size:12px;color:#d97706;background:#fffbeb;border:1px solid #fde68a;padding:4px 12px;border-radius:20px}
.exp-status-btns{display:flex;gap:8px;margin-left:auto}

/* 筛选栏 */
.exp-filters{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.exp-search-input{flex:1;min-width:160px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;background:var(--card-bg);color:var(--text-primary)}
.exp-search-input:focus{border-color:var(--primary)}
.exp-filter-sel{padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;background:var(--card-bg);color:var(--text-primary);cursor:pointer}
.exp-count-badge{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap}

/* 章节标题 */
.exp-section-title{font-size:13px;font-weight:700;color:var(--text-secondary);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.exp-badge{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600}
.exp-badge-green{background:#dcfce7;color:#15803d;border-color:#86efac}
.exp-unlock-hint{font-size:11px;font-weight:400;color:#94a3b8}
.exp-empty{text-align:center;color:var(--text-secondary);padding:40px 0;font-size:14px}

/* 经验卡片网格 */
.exp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;margin-bottom:20px}

/* 经验卡片 */
.exp-card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden;transition:box-shadow .15s,transform .15s}
.exp-card:hover{box-shadow:0 4px 18px rgba(0,0,0,.08);transform:translateY(-1px)}
.exp-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px}
.exp-card-tags{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
.exp-cat-tag{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap}
.exp-port-tag{background:#f0fdf4;color:#15803d;border:1px solid #86efac;padding:2px 8px;border-radius:10px;font-size:11px;white-space:nowrap}
.exp-del-btn{background:none;border:none;cursor:pointer;font-size:14px;color:#9ca3af;padding:2px 4px;border-radius:6px;flex-shrink:0;transition:color .15s,background .15s}
.exp-del-btn:hover{color:#dc2626;background:#fee2e2}
.exp-card-title{font-size:14px;font-weight:700;color:var(--text-primary);line-height:1.4}
.exp-card-content{font-size:13px;color:#4b5563;line-height:1.65;flex:1}
.exp-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:6px;border-top:1px solid var(--border);flex-wrap:wrap}
.exp-footer-left{display:flex;align-items:center;gap:10px}
.exp-contributor{font-size:11px;color:var(--text-secondary)}
.exp-date{font-size:11px;color:#94a3b8}

/* 投票按钮 */
.exp-votes{display:flex;gap:6px}
.exp-vote-btn{background:var(--hover);border:1px solid var(--border);border-radius:8px;padding:3px 10px;font-size:12px;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .15s;color:var(--text-secondary)}
.exp-vote-btn:hover{background:#e0e7ff;color:#4338ca;border-color:#a5b4fc}
.exp-voted-good{background:#dcfce7!important;color:#15803d!important;border-color:#86efac!important}
.exp-voted-q{background:#fef3c7!important;color:#b45309!important;border-color:#fcd34d!important}

/* 锁定卡片 */
.exp-locked{pointer-events:none;user-select:none}
.exp-lock-overlay{position:absolute;inset:0;background:rgba(248,250,252,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:13px;color:#64748b;font-weight:600;z-index:2;border-radius:12px;text-align:center;padding:10px}
.exp-lock-overlay div:first-child{font-size:26px}
.exp-blur{filter:blur(4px);user-select:none}

/* 我的提交 */
.exp-mine-section{background:#f8fafc;border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.exp-mine-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.exp-mine-card{background:var(--card-bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.exp-mine-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.exp-mine-status{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px}
.exp-status-pending{background:#fef9c3;color:#a16207;border:1px solid #fde68a}
.exp-status-rejected{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}
.exp-mine-title{font-size:13px;font-weight:600;color:var(--text-primary)}
.exp-mine-reason{font-size:12px;color:#dc2626;background:#fee2e2;padding:6px 10px;border-radius:6px}
.exp-mine-date{font-size:11px;color:#94a3b8}

/* 待审核（管理员） */
.exp-pending-section{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:14px 16px;margin-bottom:14px}
.exp-pending-list{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.exp-pending-card{background:#fff;border:1px solid #fde68a;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.exp-pending-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.exp-pending-title{font-size:14px;font-weight:700;color:var(--text-primary)}
.exp-pending-content{font-size:13px;color:#4b5563;line-height:1.65;white-space:pre-wrap;background:#f9fafb;border-radius:8px;padding:10px 12px;max-height:200px;overflow-y:auto}
.exp-pending-btns{display:flex;gap:8px;justify-content:flex-end}

/* 排行榜 & 图例 */
.exp-leaderboard,.exp-legend{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px}
.exp-lb-title{font-size:13px;font-weight:700;color:var(--text-secondary);margin-bottom:10px}
.exp-lb-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}
.exp-lb-row:last-child{border-bottom:none}
.exp-lb-rank{width:24px;text-align:center;font-size:16px}
.exp-lb-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}
.exp-lb-lv{font-size:14px}
.exp-lb-count{font-size:11px;color:var(--text-secondary);white-space:nowrap}
.exp-lb-empty{font-size:13px;color:var(--text-secondary);text-align:center;padding:10px 0}
.exp-lv-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:13px;color:var(--text-primary)}
.exp-lv-icon{font-size:16px;width:24px;text-align:center}

/* 提交提示 */
.exp-submit-tip{background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;padding:8px 13px;border-radius:8px;font-size:12px;margin-bottom:8px}

/* 响应式 */
@media(max-width:768px){
  .exp-layout{flex-direction:column}
  .exp-sidebar{width:100%}
  .exp-cards{grid-template-columns:1fr}
}

/* 全局统计 */
.exp-global-stat{font-size:13px;color:var(--text-secondary)}
.exp-global-stat strong{color:var(--text-primary)}

/* 响应式覆盖（去掉旧的侧边栏响应式） */
@media(max-width:768px){
  .exp-status-bar{flex-direction:column;align-items:flex-start}
  .exp-status-btns{margin-left:0}
  .exp-cards{grid-template-columns:1fr}
}

/* 经验墙顶栏（简洁版） */
.exp-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.exp-topbar-left{}
.exp-total-stat{font-size:13px;color:var(--text-secondary)}
.exp-total-stat strong{color:var(--text-primary);font-size:14px}
.exp-topbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:768px){.exp-topbar{flex-direction:column;align-items:flex-start}.exp-topbar-right{width:100%}}

/* ===== 报价单两栏布局 ===== */
/* 报价单弹窗本身不自滚，改由两栏各自滚动 */
.modal-quot{overflow:hidden;display:flex;flex-direction:column;max-height:90vh}
.modal-body-2col{
  display:grid;
  grid-template-columns:1fr 230px;
  gap:0;
  padding:0;
  overflow:hidden;
  flex:1; /* 配合 modal-quot 的 flex 布局撑满中间 */
  min-height:0;
}
.modal-2col-main{
  padding:20px;
  overflow-y:auto;
  min-width:0;
}
.modal-2col-hint{
  border-left:1px solid var(--border);
  background:#f8faff;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
/* 右侧面板头部 */
.hint-panel-hd{
  display:flex;align-items:center;gap:8px;
  padding:12px 14px;
  background:linear-gradient(135deg,#eff6ff 0%,#dbeafe 100%);
  border-bottom:1px solid #c7d2fe;
  font-size:13px;font-weight:600;color:#1d4ed8;
  flex-shrink:0;
}
.hint-panel-icon{font-size:15px}
.hint-panel-title{flex:1}
.hint-panel-count{
  background:#3b82f6;color:#fff;
  border-radius:10px;padding:1px 8px;
  font-size:11px;font-weight:700;letter-spacing:.3px;
}
/* 右侧面板内容区 */
.hint-panel-bd{
  flex:1;overflow-y:auto;
}
/* 空状态 */
.hint-panel-empty{
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;
  padding:28px 20px;text-align:center;
  color:#94a3b8;font-size:12px;line-height:1.7;gap:10px;
}
.hint-panel-empty-icon{font-size:36px;opacity:.35}
.hint-panel-empty strong{color:#64748b}
/* 经验条目 */
.hint-panel-item{
  padding:10px 14px;
  border-bottom:1px solid #e0e7ff;
  transition:background .12s;
}
.hint-panel-item:last-child{border-bottom:none}
.hint-panel-item:hover{background:#eff6ff}
.hint-panel-item-title{
  font-size:12.5px;font-weight:600;color:#1e3a5f;
  margin-bottom:4px;line-height:1.4;
}
.hint-panel-item-desc{
  font-size:11.5px;color:#475569;
  line-height:1.6;margin-bottom:5px;
}
.hint-panel-item-meta{
  display:flex;align-items:center;gap:8px;
  font-size:10.5px;color:#94a3b8;flex-wrap:wrap;
}
/* 响应式：屏幕窄时隐藏右侧面板 */
@media(max-width:860px){
  .modal-body-2col{grid-template-columns:1fr}
  .modal-2col-hint{display:none}
}

/* ===== 经验提示条（弹窗内嵌，用于预录单/订单）===== */
.exp-hint-strip{
  margin:6px 0 4px;
  border:1.5px solid #bfdbfe;
  border-radius:9px;
  background:linear-gradient(135deg,#f0f9ff 0%,#eff6ff 100%);
  overflow:hidden;
  box-shadow:0 1px 6px rgba(59,130,246,.10);
}
.exp-hint-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:7px 12px;cursor:pointer;font-size:12.5px;
  color:#1d4ed8;user-select:none;gap:8px;
  background:linear-gradient(90deg,#eff6ff 0%,#f0f9ff 100%);
}
.exp-hint-header:hover{background:linear-gradient(90deg,#dbeafe 0%,#e0f2fe 100%)}
.exp-hint-header .hint-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;background:#dbeafe;border-radius:50%;
  font-size:12px;flex-shrink:0;
}
.exp-hint-chevron{
  font-size:10.5px;color:#6b7280;white-space:nowrap;
  background:#e0e7ff;color:#4f46e5;border-radius:10px;
  padding:2px 9px;flex-shrink:0;letter-spacing:.3px;
}
.exp-hint-body{border-top:1px solid #bfdbfe;padding:0 2px 4px;max-height:240px;overflow-y:auto}
.exp-hint-item{
  display:grid;grid-template-columns:1fr auto;
  padding:8px 14px;border-bottom:1px solid #e0f2fe;gap:4px 12px;
  align-items:start;
}
.exp-hint-item:last-child{border-bottom:none}
.exp-hint-title{font-size:12.5px;font-weight:600;color:#1e3a5f;margin-bottom:3px;grid-column:1/-1}
.exp-hint-desc{font-size:11.5px;color:#475569;line-height:1.6;margin-bottom:4px;grid-column:1/-1}
.exp-hint-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:#94a3b8;flex-wrap:wrap;grid-column:1/-1}

/* ===== 报价单费率明细（两段式）===== */
.quot-fee-wrap{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.quot-seg{border:1px solid var(--border);border-radius:10px;overflow:hidden}
.quot-seg-hd{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border)}
.quot-seg-cn .quot-seg-hd{background:#eff6ff}
.quot-seg-cn .quot-seg-hd span{font-weight:600;font-size:13px;color:#1e40af}
.quot-seg-kh .quot-seg-hd{background:#f0fdf4}
.quot-seg-kh .quot-seg-hd span{font-weight:600;font-size:13px;color:#15803d}
.qf-list{padding:6px 8px 2px}
.qf-row{position:relative;display:flex;gap:6px;align-items:center;margin-bottom:5px;min-width:0;overflow-x:auto}
/* 当行内含有非空参考价徽章时，留出 14px 底部空间放徽章 */
.qf-row:has(.qf-ref-hint:not(:empty)){margin-bottom:18px}
/* Local 参考价 hint badge */
/* 参考价徽章：绝对定位浮在行下方右侧（不挤压金额输入框） */
.qf-ref-hint{position:absolute;right:30px;top:100%;margin-top:-2px;line-height:1;pointer-events:auto;z-index:1}
.qf-ref-hint:empty{display:none}
.qf-ref-hint > span{font-size:10.5px;font-weight:400;padding:0;border:none;background:none;border-radius:0;white-space:nowrap;cursor:help;display:inline-block;box-shadow:none;letter-spacing:.2px}
.ref-hint{display:inline-block}
.ref-ok{color:#666}
.ref-warn{color:#666}
.ref-alert{color:#111;font-weight:500!important}
.ref-info{color:#666}
/* 参考价侧边面板（折叠/展开） */
.ref-panel{margin:6px 10px 8px;border:1.5px solid #bfdbfe;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.04);max-height:360px;overflow-y:auto}
.qf-row .qf-name{flex:1 1 130px;padding:6px 9px;border:1px solid var(--border);border-radius:6px;font-size:12.5px;min-width:110px;color:var(--text);box-sizing:border-box}
.qf-row .qf-agent{flex:0 0 110px;width:110px;padding:6px 8px;border:1px solid #fde68a;border-radius:6px;font-size:12px;color:var(--text);background:#fffbeb;box-sizing:border-box}
.qf-row .qf-agent::placeholder{color:#d97706;font-style:italic}
.qf-row .qf-currency{flex:0 0 50px;width:50px;padding:6px 4px;border:1px solid #111;border-radius:6px;font-size:14px;font-weight:700;text-align:center;background:#fffbeb;color:#111;box-sizing:border-box;transition:all .15s}
/* Rams: 币种 = 该有的币种 → 隐形（无边框、灰色、不抢戏）；被覆盖时 → 上面的强调态 */
.qf-row .qf-currency.qf-cur-canon{border:1px solid transparent;background:transparent;color:#999;font-weight:400}
/* 行内 USD 折算提示 — 录 RMB 时实时显示客户视角的美金 */
.qf-row-usd{flex:0 0 auto;min-width:54px;font-size:10.5px;color:#999;white-space:nowrap;text-align:left;padding-left:2px;font-variant-numeric:tabular-nums}
.qf-row-usd:empty{min-width:0;padding:0}
.qf-row .qf-amount{flex:2 1 160px;min-width:130px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-weight:600;text-align:right;color:var(--text);box-sizing:border-box}
.qf-row .qf-amount:focus,.qf-row .qf-name:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 2px rgba(99,102,241,.12)}
.qf-del{background:none;border:none;color:#f87171;cursor:pointer;font-size:17px;padding:0 3px;line-height:1;flex-shrink:0;opacity:.7;transition:opacity .15s}
.qf-del:hover{opacity:1}
.qf-subtotal{padding:4px 14px 8px;font-size:12px;color:var(--muted);text-align:right;line-height:1.7}
.qf-subtotal strong{color:var(--primary);font-weight:600}
.qf-rate-note{font-size:11px;color:#94a3b8;font-weight:400;margin-left:4px}

/* ===== 汇总卡片 — Rams: 客户报价是头条，成本和毛利是脚注 ===== */
.qf-summary{margin-top:10px;border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;background:#fff}
.qf-sum-row{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid #f0f0f0;font-size:12.5px}
.qf-sum-row:last-child{border-bottom:none}
.qf-sum-label{font-weight:400;color:#666}
.qf-sum-row strong{font-size:13px;font-weight:500;color:#666}
/* 成本：次要灰色信息 */
.qf-sum-cost{background:#fafafa}
.qf-sum-cost strong{color:#666;font-weight:400}
/* 客户报价：唯一头条，大字、白底、上下空间最足 */
.qf-sum-quote{padding:18px 14px;background:#fff;border-bottom:1px solid #e5e5e5;border-top:1px solid #e5e5e5}
.qf-sum-quote .qf-sum-label{font-size:13px;font-weight:600;color:#111}
.qf-sum-inputs{display:flex;gap:8px;align-items:center}
.qf-sum-inputs select{width:64px;padding:7px 4px;border:none;border-bottom:1px solid #e5e5e5;border-radius:0;font-size:13px;background:transparent;color:#111;font-weight:600;text-align:center}
.qf-sum-inputs select:focus{outline:none;border-bottom-color:#111}
.qf-sum-inputs input{width:160px;padding:9px 12px;border:1px solid #111;border-radius:6px;font-weight:700;font-size:20px;text-align:right;color:#111;font-variant-numeric:tabular-nums}
.qf-sum-inputs input:focus{outline:none;box-shadow:0 0 0 2px rgba(0,0,0,.1)}
/* 毛利：次要，颜色仅在数值上（盈/亏） */
.qf-sum-profit{background:#fafafa}
.qf-sum-profit strong{font-size:13px;font-weight:600}
.qf-margin-pct{font-size:11.5px;font-weight:500;margin-left:2px}

/* ===== 订单/预录单：成本卡 — Rams 极简版 ===== */
.cost-card{border:1px solid #e5e5e5;border-radius:8px;background:#fff;overflow:hidden}
.cost-card-hd{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:#fafafa;border-bottom:1px solid #f0f0f0;font-size:12.5px;font-weight:600;color:#111}
.cost-card-hd .btn-outline,.cost-card-hd button{border:1px solid #e5e5e5;color:#666;background:#fff;padding:3px 10px!important;font-size:11.5px!important;border-radius:4px;cursor:pointer;height:auto!important;line-height:1.5!important;font-weight:400}
.cost-card-hd .btn-outline:hover,.cost-card-hd button:hover{background:#111;color:#fff;border-color:#111}
.cost-simple{padding:12px 14px}
.cost-simple-row{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}
.cost-simple-agent{flex:3 1 260px;min-width:160px;height:34px;padding:6px 10px;border:1px solid #e5e5e5;border-radius:6px;font-size:13px;background:#fff;color:#111;box-sizing:border-box}
.cost-simple-agent:focus{outline:none;border-color:#111}
.cost-simple-cur{flex:0 0 24px;width:24px;height:34px;padding:0;border:1px solid #111;border-radius:6px;font-size:13px;font-weight:700;text-align:center;background:#fffbeb;color:#111;box-sizing:border-box;cursor:pointer;transition:all .15s;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none}
.cost-simple-cur.cost-cur-canon{border:1px solid transparent;background:transparent;color:#999;font-weight:400}
.cost-simple-amount{flex:1.5 1 130px;min-width:100px;height:34px;padding:6px 26px 6px 10px;border:1px solid #e5e5e5;border-radius:6px;font-size:13px;font-weight:600;text-align:right;color:#111;box-sizing:border-box;font-variant-numeric:tabular-nums}
.cost-simple-amount:focus{outline:none;border-color:#111}
/* 简易模式不显示行内 USD 折算（下方汇总卡已显示，此处冗余） */
.cost-simple-row .cost-row-usd{display:none!important}
.cost-simple-hint{font-size:11px;color:#999;margin:8px 0 0}
.cost-split{padding:8px 14px 12px}
.cost-list{display:flex;flex-direction:column;gap:5px}
.cost-row{display:flex;gap:6px;align-items:center;min-width:0}
.cost-row .cost-cat{flex:0 0 100px;padding:6px 8px;border:none;border-radius:0;font-size:12px;background:transparent;color:#666;font-weight:500;box-sizing:border-box}
.cost-row input.cost-cat{border:1px solid transparent;border-bottom:1px solid #ececec;border-radius:0}
.cost-row input.cost-cat:focus{outline:none;border-bottom-color:#111}
.cost-row .cost-agent{flex:3 1 200px;min-width:140px;padding:6px 8px;border:1px solid #e5e5e5;border-radius:6px;font-size:12.5px;background:#fff;color:#111;box-sizing:border-box}
.cost-row .cost-agent::placeholder{color:#bbb}
.cost-row .cost-agent:focus{outline:none;border-color:#111}
.cost-row .cost-currency{flex:0 0 24px;width:24px;padding:6px 0;border:1px solid #111;border-radius:6px;font-size:13px;font-weight:700;text-align:center;background:#fffbeb;color:#111;box-sizing:border-box;cursor:pointer;transition:all .15s;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none}
.cost-row .cost-currency.cost-cur-canon{border:1px solid transparent;background:transparent;color:#999;font-weight:400}
.cost-row .cost-amount{flex:1.2 1 100px;min-width:80px;padding:6px 10px;border:1px solid #e5e5e5;border-radius:6px;font-size:12.5px;font-weight:600;text-align:right;color:#111;box-sizing:border-box;font-variant-numeric:tabular-nums}
.cost-row .cost-amount:focus{outline:none;border-color:#111}
/* 行内 USD 折算 — 在订单/预录单模态隐藏（下方汇总卡已显示总额，此处冗余） */
.cost-row-usd{display:none!important}
.cost-row .cost-del{background:none;border:none;color:#ccc;cursor:pointer;font-size:16px;padding:0 4px;flex-shrink:0;opacity:0;transition:opacity .15s}
.cost-row:hover .cost-del{opacity:1}
.cost-row .cost-del:hover{color:#666}
.cost-add-btn{display:inline-block;padding:4px 8px;background:none;border:none;font-size:12px;color:#999;cursor:pointer;margin-top:6px;font-weight:400}
.cost-add-btn:hover{color:#111}

/* ===== 利润汇总卡 — Rams: 数字本身才有颜色 ===== */
.profit-summary{border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;background:#fff}
.ps-row{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid #f0f0f0;font-size:12.5px;background:#fafafa;color:#666}
.ps-row:last-child{border-bottom:none}
.ps-row strong{font-size:13px;font-weight:500;color:#666}
.ps-row.ps-profit{background:#fafafa}
.ps-row.ps-profit strong{font-size:14px;font-weight:600}
.ps-pct{font-size:11.5px;font-weight:500;margin-left:2px}

/* ===== 客户报价 — 整张表单的视觉头条 ===== */
.revenue-headline{padding:18px 0 16px;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;margin:8px 0}
.revenue-headline label{display:block;font-size:13px;font-weight:600;color:#111;margin-bottom:8px}
.revenue-headline-row{display:flex;gap:8px;align-items:center}
.revenue-headline-row select{flex:0 0 64px;width:64px;padding:9px 4px;border:none;border-bottom:1px solid #e5e5e5;border-radius:0;font-size:13px;background:transparent;color:#111;font-weight:600;text-align:center;cursor:pointer}
.revenue-headline-row select:focus{outline:none;border-bottom-color:#111}
.revenue-headline-row input{flex:1 1 auto;padding:10px 14px;border:1px solid #111;border-radius:6px;font-weight:700;font-size:20px;text-align:right;color:#111;font-variant-numeric:tabular-nums;background:#fff;box-sizing:border-box}
.revenue-headline-row input:focus{outline:none;box-shadow:0 0 0 2px rgba(0,0,0,.1)}

/* 中国出口段：按代理拆分 */
.qf-agent-breakdown{margin:6px 14px 8px;padding:8px 12px;background:#fffbeb;border:1px dashed #fde68a;border-radius:6px;font-size:12px}
.qf-agent-breakdown:empty{display:none}
.qf-agent-title{font-weight:600;color:#b45309;margin-bottom:4px;font-size:11.5px}
.qf-agent-line{display:flex;justify-content:space-between;padding:2px 0;color:#78350f}
.qf-agent-line strong{color:#92400e;font-weight:700}

/* ===== 订单价格卡片 ===== */
.price-card{border:1.5px solid var(--border);border-radius:10px;overflow:hidden}
.price-card-hd{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 14px;background:var(--bg);border-bottom:1px solid var(--border);
  font-size:13px;font-weight:600;color:var(--text);
}
.price-card-hd select{height:30px;width:76px;font-size:12.5px;padding:0 6px;border-radius:6px;border:1px solid var(--border)}
.price-card-bd{
  display:flex;align-items:flex-end;gap:10px;
  padding:12px 14px 10px;
}
.price-card-field{flex:1;min-width:0}
.price-card-lbl{font-size:11px;color:var(--muted);margin-bottom:4px}
.price-card-field input{
  width:100%;box-sizing:border-box;
  border:1px solid var(--border);border-radius:7px;
  padding:7px 10px;font-size:13px;height:36px;
}
.price-card-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(59,130,246,.12)}
.price-card-op{font-size:18px;color:#94a3b8;flex-shrink:0;padding-bottom:6px}
.price-card-result-inline{
  flex-shrink:0;min-width:88px;
  text-align:center;padding:4px 10px 6px;
  background:#f8faff;border:1.5px solid #e0e7ff;
  border-radius:8px;line-height:1.4;
}
.qf-total-bar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--bg-light);border-radius:8px;border:1px solid var(--border)}
.qf-total-label{font-weight:600;font-size:13px;color:var(--text)}
.qf-total-inputs{display:flex;gap:8px;align-items:center}
.qf-total-inputs select{width:78px;padding:6px 6px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text)}
.qf-total-inputs input{width:130px;padding:7px 10px;border:2px solid var(--primary);border-radius:7px;font-weight:700;font-size:15px;text-align:right;color:var(--text)}
.btn-xs{padding:3px 10px!important;font-size:12px!important;height:auto!important;line-height:1.5!important}

/* ===== Local 杂费可折叠分组行 ===== */
.qf-row-indent{width:20px;flex-shrink:0}
.qf-group-wrap{margin-bottom:8px}
.qf-group-row{background:none;border-radius:0;padding:0;border-left:none!important}
.qf-expand-btn{width:18px;height:18px;border-radius:0;background:none;color:#888;border:none;cursor:pointer;font-size:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;line-height:1;transition:color .15s;font-weight:600}
.qf-expand-btn:hover{color:#111;background:none;border:none}
.qf-group-sum{background:#fff!important;font-weight:600!important;color:#111!important;font-size:13px!important}
.qf-group-sum::placeholder{font-style:normal;font-weight:400;color:#bbb!important;font-size:12px}

/* —— 子项区：Rams 原则 — 留白即结构，无装饰，无标签 —— */
.qf-sub-list{margin:2px 0 6px 24px;padding:0;background:none;border:none;position:relative}
.qf-sub-row{margin-bottom:2px!important;padding:0;overflow:visible!important}
.qf-sub-row:last-of-type{margin-bottom:4px!important}
/* 子项隐位：保持与父行同一栅格，不显示 bullet/币种 chip */
.qf-sub-name{flex:1 1 130px!important;background:transparent!important;font-size:12.5px!important;color:#444!important;padding:5px 8px!important;border:1px solid transparent!important;border-bottom:1px solid #ececec!important;border-radius:0!important}
.qf-sub-name:focus{border:1px solid transparent!important;border-bottom:1px solid #111!important;background:transparent!important;box-shadow:none!important;outline:none!important}
.qf-sub-row .qf-amount{flex:1 1 110px!important;min-width:90px!important;font-size:12.5px!important;font-weight:500!important;padding:5px 9px!important;border:1px solid transparent!important;border-bottom:1px solid #ececec!important;background:transparent!important;border-radius:0!important;color:#222!important}
.qf-sub-row .qf-amount:focus{border:1px solid transparent!important;border-bottom:1px solid #111!important;box-shadow:none!important;outline:none!important}
.qf-sub-row .qf-del{font-size:14px;color:#ccc;opacity:0;transition:opacity .15s}
.qf-sub-row:hover .qf-del{opacity:1}
.qf-sub-row .qf-del:hover{color:#666}
/* 添加子项：纯文字，无边框、无背景、无圆角 */
.qf-add-sub{display:inline-block;padding:4px 8px 4px 8px;background:none;border:none;font-size:12px;color:#999;cursor:pointer;margin-top:2px;font-weight:400}
.qf-add-sub:hover{color:#111}

/* ===== Pretty Select 美化下拉 ===== */
.psel-wrap{position:relative;width:100%;display:block}
.psel-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;overflow:hidden!important}
.psel-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:13px;color:#1e293b;cursor:pointer;box-sizing:border-box;transition:border-color .15s, box-shadow .15s;min-height:36px;line-height:1.4}
.psel-trigger:hover{border-color:#94a3b8}
.psel-trigger:focus,.psel-trigger:focus-visible{outline:none;border-color:var(--primary,#2563eb);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.psel-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.psel-text.psel-placeholder{color:#94a3b8;font-weight:400}
.psel-arrow{flex-shrink:0;color:#64748b;font-size:11px;transition:transform .18s}
.psel-panel{position:fixed;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px -4px rgba(15,23,42,.18),0 2px 6px -2px rgba(15,23,42,.08);z-index:10000;display:none;max-height:280px;overflow-y:auto;padding:4px;animation:pselFadeIn .12s ease-out}
.psel-panel.psel-open{display:block}
.psel-panel.psel-open ~ .psel-trigger .psel-arrow,
.psel-wrap:has(.psel-panel.psel-open) .psel-arrow{transform:rotate(180deg)}
.psel-opt{padding:9px 12px;font-size:13px;color:#1e293b;cursor:pointer;border-radius:5px;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s}
.psel-opt:hover{background:#eff6ff;color:#2563eb}
.psel-opt.psel-selected{background:#dbeafe;color:#1d4ed8;font-weight:600}
.psel-opt.psel-placeholder-opt{color:#94a3b8}
.psel-opt.psel-placeholder-opt.psel-selected{background:transparent;font-weight:400}
.psel-panel::-webkit-scrollbar{width:8px}
.psel-panel::-webkit-scrollbar-track{background:#f8fafc;border-radius:4px}
.psel-panel::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}
.psel-panel::-webkit-scrollbar-thumb:hover{background:#94a3b8}
@keyframes pselFadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.psel-with-search{padding:0;display:none;flex-direction:column;max-height:340px}
.psel-with-search.psel-open{display:flex}
.psel-search-wrap{padding:8px;border-bottom:1px solid #f1f5f9;background:#fff;position:sticky;top:0;z-index:1}
.psel-search{width:100%;padding:7px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;outline:none;box-sizing:border-box;background:#f8fafc}
.psel-search:focus{border-color:var(--primary,#2563eb);background:#fff;box-shadow:0 0 0 2px rgba(37,99,235,.1)}
.psel-opt-list{flex:1;overflow-y:auto;padding:4px}
.psel-opt-list::-webkit-scrollbar{width:8px}
.psel-opt-list::-webkit-scrollbar-track{background:#f8fafc;border-radius:4px}
.psel-opt-list::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}
.psel-opt-list::-webkit-scrollbar-thumb:hover{background:#94a3b8}
.psel-empty{padding:20px;text-align:center;color:#94a3b8;font-size:13px}

/* ===== 财务费用表 hover 浮窗 + 预览按钮 ===== */
.exp-note-icon{cursor:help;font-size:14px;opacity:.85;display:inline-block;padding:2px 6px;border-radius:4px;transition:background .12s,opacity .12s}
.exp-note-icon:hover{opacity:1;background:#f1f5f9}
.exp-approval-info{display:inline-block;margin-left:5px;color:#94a3b8;font-size:12px;cursor:help;font-weight:600;padding:2px 4px;border-radius:4px;transition:background .12s,color .12s}
.exp-approval-info:hover{color:#475569;background:#f1f5f9}
.exp-hover-pop{position:fixed;max-width:340px;min-width:200px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.18);padding:10px 12px;display:none;z-index:10001;animation:pselFadeIn .12s;pointer-events:none;font-size:12.5px;line-height:1.55}
.exp-pop-title{font-weight:700;color:#1e293b;border-bottom:1px solid #e2e8f0;padding-bottom:6px;margin-bottom:6px;font-size:12px}
.exp-pop-body{color:#475569;word-break:break-word}
.btn-exp-view{background:#f5f3ff;color:#6d28d9;border:1px solid #ddd6fe;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer;transition:.15s;font-weight:600}
.btn-exp-view:hover{background:#ede9fe;border-color:#c4b5fd}

/* ===== Rams + CPA: 中国段加价 / 三色灯 / 柬段卡片 / 全包 / 双视角损益 ===== */

/* 中国段小计 + 加价 + 结算价 — Jony Ive precision */
.seg-subtotal-block{margin-top:18px;padding-top:14px;border-top:1px solid #eef0f2}
.seg-sub-row{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:#6b7280;padding:5px 0;letter-spacing:.2px}
.seg-sub-row strong{color:#111;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0}
.seg-sub-row .qf-rate-note{margin-left:8px}
.seg-markup-row{display:flex;align-items:center;gap:12px;padding:10px 0 4px;flex-wrap:nowrap}
.seg-markup-row label{font-size:12.5px;color:#374151;font-weight:500;flex:0 0 auto;letter-spacing:.2px}
.seg-markup-input{display:inline-flex;align-items:center;border:1px solid #d1d5db;border-radius:7px;padding:0 10px;background:#fff;width:140px;flex:0 0 140px;height:32px;transition:border-color .15s}
.seg-markup-input:focus-within{border-color:#111}
.seg-markup-input input{border:none !important;outline:none;background:transparent;width:100% !important;padding:0 !important;height:auto !important;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;color:#111}
.seg-cur-prefix{color:#9ca3af;font-size:12px;margin-right:6px;font-weight:500;flex:0 0 auto}
.seg-headline-row{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0 0;font-size:13px;color:#111;letter-spacing:.3px;font-weight:500}
.seg-headline-row strong{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#111;letter-spacing:0}
.seg-std-hint{margin:4px 0 0;padding-left:0;font-size:11px;color:#9ca3af;font-weight:400;letter-spacing:.2px}

/* 三色灯 — 圆点 + 文字 */
.markup-light{display:inline-block;width:9px;height:9px;border-radius:50%;background:#d1d5db;flex:0 0 auto}
.markup-light.ml-green{background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.markup-light.ml-yellow{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.14)}
.markup-light.ml-red{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.14)}
.markup-light-text{font-size:11.5px;font-weight:500;flex:0 0 auto;letter-spacing:.3px}
.mlt-green{color:#059669}
.mlt-yellow{color:#b45309}
.mlt-red{color:#b91c1c}

/* 柬埔寨进口段卡片 */
.kh-card{border:1px solid #e5e7eb;border-radius:10px;background:#fafafa;padding:14px 16px}
.kh-card-hd{font-size:13px;font-weight:600;color:#111;margin-bottom:12px}
.kh-card-bd{display:flex;flex-direction:column;gap:10px}
.kh-row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.kh-field label{display:block;font-size:11.5px;color:#6b7280;margin-bottom:4px}
.kh-field select{width:100%;padding:6px 8px;border:1px solid #d1d5db;border-radius:6px;background:#fff;font-size:13px}
.kh-price-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kh-price-row label{font-size:12.5px;color:#374151;font-weight:500;flex-shrink:0;min-width:64px}
.kh-price-input{display:flex;align-items:center;border:1px solid #d1d5db;border-radius:6px;padding:0 8px;background:#fff;width:140px}
.kh-price-input input{border:none;outline:none;background:transparent;width:100%;padding:6px 0;font-size:13px;font-variant-numeric:tabular-nums;text-align:right}
.kh-price-input input.kh-price-fromref{background:#f3f4f6;color:#6b7280}
.kh-ref-meta{font-size:11px;color:#9ca3af}
.kh-status-row{display:flex;align-items:center;gap:18px;padding-top:6px;flex-wrap:wrap}
.kh-status-opt{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#374151;cursor:pointer;white-space:nowrap;flex:0 0 auto;line-height:1}
/* 重要：覆盖 .form-group input 全局 width:100%/height:40px，否则 radio 被撑成大长条 */
.kh-status-row input[type=radio]{
  width:14px !important;height:14px !important;
  padding:0 !important;margin:0 !important;
  border:none !important;background:none !important;
  appearance:radio !important;-webkit-appearance:radio !important;
  flex:0 0 auto;box-sizing:content-box;vertical-align:middle;line-height:1;
}
.kh-confirm-meta{font-size:11px;color:#9ca3af;margin-left:4px}

/* 客户全包报价 headline */
.all-in-headline{padding:14px 0;border-top:2px solid #111;border-bottom:2px solid #111}
.all-in-headline-row{display:flex;justify-content:space-between;align-items:baseline}
.all-in-label{font-size:13px;font-weight:500;color:#111;letter-spacing:.5px}
.all-in-amount{font-size:22px;font-weight:700;color:#111;font-variant-numeric:tabular-nums}
.all-in-amount span{font-size:24px}
.all-in-formula{margin:6px 0 0;font-size:11px;color:#9ca3af}

/* 双视角损益 — Jony Ive 信息层级 */
.pnl-dual{display:flex;flex-direction:column;gap:8px;padding:14px 0 4px}
.pnl-row{display:flex;align-items:baseline;gap:12px;font-variant-numeric:tabular-nums;flex-wrap:wrap;letter-spacing:.2px}
.pnl-row.pnl-cn{font-size:13.5px;color:#111}
.pnl-row.pnl-cn .pnl-tag{font-weight:600;color:#111;min-width:88px;flex:0 0 88px;letter-spacing:.5px}
.pnl-row.pnl-cn strong{font-weight:700;color:#111;letter-spacing:0}
.pnl-row.pnl-kh{font-size:12px;color:#9ca3af}
.pnl-row.pnl-kh .pnl-tag{min-width:88px;flex:0 0 88px;color:#9ca3af;letter-spacing:.5px}
.pnl-row.pnl-kh strong{font-weight:500;color:#6b7280;letter-spacing:0}
.pnl-formula{display:inline-flex;align-items:baseline;flex-wrap:wrap}
.pnl-sep{font-style:normal;color:#d1d5db;margin:0 10px;font-size:11px;font-weight:400;flex:0 0 auto}
.pnl-row.pnl-kh .pnl-sep{color:#e5e7eb}

/* 参考报价单：录入信息列 */
.ref-upd-cell{display:flex;flex-direction:column;gap:2px;line-height:1.3}
.ref-upd-date{font-size:12px;color:#475569;font-variant-numeric:tabular-nums;letter-spacing:.3px}
.ref-upd-date.ref-upd-stale{color:#dc2626;font-weight:600}
.ref-upd-by{font-size:11px;color:#94a3b8}


/* ============================================================
   订单弹窗 Tab（基础信息 / 成本&报价）
   设计目标：操作员日常只看基础；销售/财务点 Tab 切到成本视图
   ============================================================ */
.ord-tabs{
  display:flex;gap:2px;
  border-bottom:1px solid #e5e7eb;
  margin:-4px 0 16px;
  position:sticky;top:0;background:#fff;z-index:5;
}
.ord-tab{
  appearance:none;border:none;background:transparent;
  padding:10px 18px;font-size:14px;font-weight:600;color:#64748b;
  cursor:pointer;border-bottom:2px solid transparent;
  transition:color .15s,border-color .15s;
  font-family:inherit;
}
.ord-tab:hover{color:#1e293b}
.ord-tab.active{color:#1e40af;border-bottom-color:#2563eb}
.ord-pane{animation:ordPaneIn .18s ease-out}
@keyframes ordPaneIn{from{opacity:.4;transform:translateY(2px)}to{opacity:1;transform:none}}

/* ============================================================
   「今天该做什么」工作台
   设计参考：Linear (清晰栏目)、Superhuman (优先级分组)、Notion (柔和卡片)
   ============================================================ */
.worklist{
  margin:-4px 0 24px;
  background:linear-gradient(180deg,#fafbfd 0%,#fff 100%);
  border:1px solid #e5e7eb;border-radius:14px;
  padding:18px 22px 8px;
  box-shadow:0 1px 0 rgba(15,23,42,.02), 0 8px 24px -12px rgba(15,23,42,.08);
}
.wl-header{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:14px;border-bottom:1px solid #f1f5f9;margin-bottom:8px;
}
.wl-greeting{font-size:18px;font-weight:700;color:#0f172a;letter-spacing:-.2px}
.wl-date{font-size:12px;color:#64748b;margin-top:2px;font-variant-numeric:tabular-nums}
.wl-refresh{
  appearance:none;border:1px solid #e2e8f0;background:#fff;
  width:32px;height:32px;border-radius:8px;cursor:pointer;
  font-size:16px;color:#64748b;transition:all .15s;
}
.wl-refresh:hover{background:#f1f5f9;color:#1e40af;transform:rotate(90deg)}

.wl-section{margin-top:14px}
.wl-section-empty{opacity:.5}
.wl-section-hd{
  font-size:12px;font-weight:700;color:#475569;letter-spacing:.4px;
  padding:6px 4px;display:flex;align-items:center;gap:8px;
}
.wl-section-count{
  background:#f1f5f9;color:#475569;font-size:11px;font-weight:600;
  padding:1px 8px;border-radius:10px;letter-spacing:0;
}
.wl-section-empty-text{font-size:12px;color:#94a3b8;padding:4px 4px 12px;font-style:italic}
.wl-section-bd{display:flex;flex-direction:column;gap:4px}

.wl-row{
  display:flex;align-items:center;gap:14px;
  padding:11px 14px;border-radius:10px;
  background:#fff;border:1px solid transparent;
  transition:all .12s ease;
}
.wl-row:hover{background:#f8fafc;border-color:#e2e8f0;transform:translateX(2px)}
.wl-row-icon{
  font-size:20px;flex:0 0 auto;width:32px;height:32px;
  display:flex;align-items:center;justify-content:center;
  background:#f1f5f9;border-radius:8px;
}
.wl-urgent .wl-row-icon{background:#fef2f2}
.wl-today  .wl-row-icon{background:#fefce8}
.wl-week   .wl-row-icon{background:#f0fdf4}

.wl-row-body{flex:1;min-width:0}
.wl-row-title{
  font-size:13.5px;font-weight:600;color:#0f172a;
  line-height:1.4;margin-bottom:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.wl-urgent .wl-row-title{color:#991b1b}
.wl-row-meta{
  font-size:11.5px;color:#64748b;display:flex;align-items:center;gap:0;flex-wrap:wrap;
}
.wl-row-meta span{white-space:nowrap}
.wl-row-meta i{
  font-style:normal;color:#cbd5e1;margin:0 8px;font-size:10px;
}

.wl-row-act{
  appearance:none;border:none;cursor:pointer;
  padding:6px 14px;border-radius:8px;font-size:12px;font-weight:600;
  transition:all .12s ease;flex:0 0 auto;font-family:inherit;
  white-space:nowrap;
}
.wl-urgent .wl-row-act{background:#dc2626;color:#fff}
.wl-urgent .wl-row-act:hover{background:#b91c1c;transform:scale(1.04)}
.wl-today  .wl-row-act{background:#2563eb;color:#fff}
.wl-today  .wl-row-act:hover{background:#1d4ed8;transform:scale(1.04)}
.wl-week   .wl-row-act{background:#fff;color:#16a34a;border:1px solid #bbf7d0}
.wl-week   .wl-row-act:hover{background:#f0fdf4}

.wl-empty{
  text-align:center;padding:36px 20px 28px;color:#94a3b8;
}
.wl-empty-icon{font-size:48px;margin-bottom:8px;filter:grayscale(.2)}
.wl-empty-title{font-size:16px;font-weight:600;color:#475569;margin-bottom:4px}
.wl-empty-sub{font-size:12px}
.wl-empty-sub a{color:#2563eb;cursor:pointer;text-decoration:underline}

/* 折叠的旧看板 */
.dash-overview{
  margin-top:8px;
  background:#fff;border:1px solid #e5e7eb;border-radius:12px;
  padding:0;overflow:hidden;
}
.dash-overview-sum{
  list-style:none;cursor:pointer;
  padding:14px 20px;font-weight:600;color:#1e293b;font-size:14px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  user-select:none;
}
.dash-overview-sum::-webkit-details-marker{display:none}
.dash-overview-sum::before{
  content:'▸';color:#94a3b8;transition:transform .2s;display:inline-block;margin-right:8px;
}
.dash-overview[open] .dash-overview-sum::before{transform:rotate(90deg)}
.dash-overview-sum:hover{background:#f8fafc}
.dash-overview-hint{font-size:11px;font-weight:400;color:#94a3b8}
.dash-overview .kpi-grid,
.dash-overview .chart-grid{padding:0 20px}
.dash-overview > div:last-child{padding-bottom:20px}

/* 工作台 KPI 微行：放在 dashboard 顶部时的紧凑版 */
@media (max-width: 768px){
  .worklist{padding:14px 14px 6px}
  .wl-greeting{font-size:16px}
  .wl-row{padding:10px 10px;gap:10px}
  .wl-row-act{padding:5px 10px;font-size:11px}
}

/* ============================================================
 * Cmd+K 全局命令面板 (cmdk.js)
 * ============================================================ */
.cmdk-overlay {
  display: none;
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 99999;
  align-items: flex-start;
  justify-content: center;
  padding-top: 12vh;
  animation: cmdkFadeIn .15s ease-out;
}
@keyframes cmdkFadeIn { from { opacity: 0 } to { opacity: 1 } }

.cmdk-modal {
  width: min(640px, 92vw);
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 30px 80px rgba(0,0,0,.35), 0 0 0 1px rgba(0,0,0,.04);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  max-height: 70vh;
  animation: cmdkSlideIn .18s cubic-bezier(.2,.8,.2,1);
}
@keyframes cmdkSlideIn { from { transform: translateY(-8px); opacity: 0 } to { transform: none; opacity: 1 } }

.cmdk-input-wrap {
  display: flex; align-items: center;
  padding: 14px 16px;
  border-bottom: 1px solid #eef0f3;
  gap: 10px;
}
.cmdk-search-icon {
  color: #94a3b8; font-size: 18px; line-height: 1;
}
.cmdk-input {
  flex: 1;
  border: 0; outline: 0;
  font-size: 15px;
  color: #0f172a;
  background: transparent;
}
.cmdk-input::placeholder { color: #94a3b8; }
.cmdk-kbd, .cmdk-footer kbd {
  display: inline-block;
  padding: 1px 6px;
  font-size: 11px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  color: #475569;
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
  border-bottom-width: 2px;
  border-radius: 4px;
  line-height: 1.4;
}

.cmdk-list {
  flex: 1;
  overflow-y: auto;
  padding: 6px 0;
}
.cmdk-empty {
  padding: 28px 16px;
  text-align: center;
  color: #94a3b8;
  font-size: 13px;
}
.cmdk-group {
  padding: 10px 16px 4px;
  font-size: 11px;
  font-weight: 600;
  color: #94a3b8;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.cmdk-item {
  display: flex; align-items: center;
  gap: 12px;
  padding: 8px 16px;
  cursor: pointer;
  font-size: 13.5px;
  color: #0f172a;
  border-left: 2px solid transparent;
}
.cmdk-item.active {
  background: #f0f7ff;
  border-left-color: #2563eb;
}
.cmdk-icon {
  width: 22px; text-align: center; flex: 0 0 auto;
  font-size: 15px;
}
.cmdk-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-hint { color: #64748b; font-size: 12px; flex: 0 0 auto; max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.cmdk-footer {
  display: flex; align-items: center; gap: 14px;
  padding: 8px 14px;
  border-top: 1px solid #eef0f3;
  font-size: 11px;
  color: #64748b;
  background: #fafbfc;
}
.cmdk-footer .cmdk-foot-spacer { flex: 1; }
.cmdk-footer .cmdk-brand { font-weight: 600; color: #475569; }

@media (max-width: 640px) {
  .cmdk-overlay { padding-top: 6vh; }
  .cmdk-modal   { max-height: 86vh; }
  .cmdk-hint    { display: none; }
}

/* ============================================================
 * 订单状态机：Journey bar + 智能下一步按钮 (order-state.js)
 * ============================================================ */
.ord-journey-wrap {
  margin: 0 0 14px;
  padding: 12px 14px;
  background: linear-gradient(180deg, #fafbfc 0%, #f5f7fa 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 1px 0 rgba(0,0,0,.02);
}
.oj-state-line {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-bottom: 10px;
}
.oj-state-tag {
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}
.oj-owner {
  font-size: 11px;
  color: #64748b;
}

.oj-bar {
  position: relative;
  padding: 4px 0 2px;
}
.oj-bar-draft {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 4px;
}
.oj-draft-tag {
  font-size: 13px; font-weight: 600; color: #475569;
}
.oj-draft-hint {
  font-size: 11px; color: #94a3b8;
}

.oj-track {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 2px;
  position: relative;
}
.oj-track::before {
  content: ''; position: absolute;
  top: 6px; left: 16px; right: 16px;
  height: 2px;
  background: #e2e8f0;
  z-index: 0;
}
.oj-step {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center;
  flex: 1; min-width: 0;
  cursor: default;
}
.oj-dot {
  width: 14px; height: 14px;
  border-radius: 50%;
  background: #cbd5e1;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px rgba(15,23,42,.08);
  margin-bottom: 6px;
  transition: transform .15s;
}
.oj-step.active .oj-dot {
  transform: scale(1.25);
  box-shadow: 0 0 0 4px rgba(37,99,235,.18);
}
.oj-step.done .oj-dot {
  background: #10b981;
}
/* 可点击的未来圆点：hover 浮起 + 描边 */
.oj-step.oj-clickable .oj-dot {
  transition: all .15s;
}
.oj-step.oj-clickable:hover .oj-dot {
  transform: scale(1.35);
  box-shadow: 0 0 0 4px rgba(59,130,246,.22);
  background: #3b82f6;
}
.oj-step.oj-clickable:hover .oj-label {
  color: #1d4ed8;
  font-weight: 600;
}
.oj-label {
  font-size: 9px;
  color: #94a3b8;
  white-space: nowrap;
  text-align: center;
  line-height: 1.2;
}
/* 「订单状态控制台」整合行：时间线 + 状态徽章 + 推进按钮 */
.ord-journey-combined {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 14px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  margin: 0 18px 8px;
}
.ord-journey-combined .ojc-timeline {
  flex: 1; min-width: 0;
}
.ord-journey-combined .ojc-timeline .oj-bar {
  margin: 0;
}
.ord-journey-combined .ojc-actions {
  display: flex; align-items: center; gap: 8px; flex-shrink: 0;
}
.ord-journey-combined .ojc-actions .oj-ready-badge {
  font-size: 11px;
}
.oj-step.active .oj-label {
  color: #0f172a;
  font-weight: 600;
}
.oj-step.done .oj-label {
  color: #475569;
}

.oj-action-row {
  margin-top: 12px;
  display: flex; align-items: center; gap: 10px;
  padding-top: 10px;
  border-top: 1px dashed #e2e8f0;
}
.ord-next-btn {
  font-weight: 600 !important;
  letter-spacing: .2px;
}
.ord-next-btn.btn-warning {
  background: #fff7ed !important;
  color: #c2410c !important;
  border-color: #fed7aa !important;
}
.ord-next-btn.btn-warning:hover {
  background: #ffedd5 !important;
}

@media (max-width: 768px) {
  .oj-label { display: none; }
  .oj-track::before { left: 8px; right: 8px; }
}

/* 展开卡片版本：精简一行（左：阶段标签+负责人，右：智能下一步） */
.ord-journey-slim {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  padding: 10px 14px;
  margin-bottom: 12px;
  background: linear-gradient(180deg, #fafbfc 0%, #f5f7fa 100%);
  border: 1px solid #e2e8f0;
  border-left: 3px solid #2563eb;
  border-radius: 8px;
}
.ord-journey-slim .ojs-left {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.ord-journey-slim .ojs-right .ord-next-btn {
  font-weight: 600;
}

/* ============================================================
 * 完工就绪度徽章 (readiness badge) — Zhuo+Cooper batch-N+3
 * 把"完工闸门"从 silent feature 变成可见状态
 * ============================================================ */
.oj-ready-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 12px;
  font-size: 11px; font-weight: 600; cursor: pointer;
  border: 1px solid transparent;
  transition: transform .12s ease, box-shadow .12s ease;
}
.oj-ready-badge:hover { transform: translateY(-1px); box-shadow: 0 2px 6px rgba(0,0,0,.08); }
.oj-ready-ok    { background: #dcfce7; color: #166534; border-color: #86efac; cursor: default; }
.oj-ready-ok:hover { transform: none; box-shadow: none; }
.oj-ready-warn  { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.oj-ready-bad   { background: #fee2e2; color: #991b1b; border-color: #fca5a5; }

.readiness-detail .readiness-head {
  display: flex; align-items: center; gap: 10px; margin-bottom: 12px;
  font-size: 14px;
}
.readiness-score {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; height: 44px; border-radius: 50%;
  font-weight: 700; font-size: 14px;
}
.readiness-score.ok   { background: #dcfce7; color: #166534; }
.readiness-score.warn { background: #fef3c7; color: #92400e; }
.readiness-score.bad  { background: #fee2e2; color: #991b1b; }
.readiness-list {
  list-style: none; padding: 0; margin: 0 0 14px 0;
  border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden;
}
.readiness-list li {
  padding: 10px 12px; border-bottom: 1px solid #f1f5f9;
  display: flex; align-items: center; gap: 8px;
  font-size: 13px;
}
.readiness-list li:last-child { border-bottom: none; }
.readiness-x  { color: #dc2626; font-weight: 700; }
.readiness-ok { color: #16a34a; font-weight: 700; }
.readiness-fix {
  margin-left: auto; color: #2563eb; font-size: 12px; cursor: pointer;
  text-decoration: none; white-space: nowrap;
}
.readiness-fix:hover { text-decoration: underline; }
.readiness-foot {
  padding: 10px; background: #f8fafc; border-radius: 8px;
  font-size: 13px; text-align: center;
}

/* ============================================================
 * 一键建账单确认卡 (quick-bill) — Cooper 原则：高频动作 = 零表单
 * ============================================================ */
.qb-overlay {
  position: fixed; inset: 0;
  background: rgba(15,23,42,.55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 100000;
  display: flex; align-items: center; justify-content: center;
  animation: qbFade .15s ease-out;
}
@keyframes qbFade { from { opacity:0 } to { opacity:1 } }
.qb-card {
  width: min(480px, 92vw);
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 30px 80px rgba(0,0,0,.35);
  overflow: hidden;
  animation: qbSlide .18s cubic-bezier(.2,.8,.2,1);
}
@keyframes qbSlide { from { transform: translateY(-10px); opacity:0 } to { transform:none; opacity:1 } }
.qb-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid #eef0f3;
}
.qb-title { font-size: 15px; font-weight: 600; color: #0f172a; }
.qb-close {
  background: transparent; border: 0; cursor: pointer;
  font-size: 18px; color: #94a3b8; padding: 4px 8px;
}
.qb-body { padding: 6px 6px 10px; }
.qb-row {
  display: grid; grid-template-columns: 80px 1fr;
  align-items: center; gap: 10px;
  padding: 10px 14px;
  border-bottom: 1px dashed #f1f5f9;
}
.qb-row:last-child { border-bottom: 0; }
.qb-k { color: #64748b; font-size: 12.5px; }
.qb-v { color: #0f172a; font-size: 13.5px; word-break: break-word; }
.qb-amt .qb-v strong { font-size: 17px; color: #0f172a; }
.qb-amt .qb-sub { display: block; color: #64748b; font-size: 11px; margin-top: 2px; }
.qb-foot {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; background: #fafbfc;
  border-top: 1px solid #eef0f3;
}
.qb-foot .qb-spacer { flex: 1; }
.qb-foot .qb-detail { color: #475569; }

/* ============================================================
 * 对账中心 (recon-center.js)
 * ============================================================ */
.recon-head { margin-bottom: 14px; }
.recon-h3 { margin: 0; font-size: 18px; }
.recon-h3-sub { font-size: 12px; color: #94a3b8; font-weight: 400; margin-left: 8px; }

.recon-kpi-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: 18px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  margin-bottom: 12px;
}
.recon-kpi { display: flex; flex-direction: column; gap: 2px; min-width: 90px; }
.rk-label { font-size: 11px; color: #64748b; }
.rk-val { font-size: 16px; font-weight: 700; color: #0f172a; font-variant-numeric: tabular-nums; }
.recon-kpi-sep { width: 1px; height: 32px; background: #e2e8f0; }
.recon-good { color: #16a34a !important; }
.recon-bad  { color: #dc2626 !important; }
.recon-warn { color: #d97706 !important; }
.recon-dim  { color: #cbd5e1; }

.recon-light-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  padding: 10px 4px 14px;
}
.recon-light-row .recon-spacer { flex: 1; }
.recon-pill {
  background: #f1f5f9;
  color: #475569;
  border: 1px solid transparent;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all .12s;
}
.recon-pill:hover { background: #e2e8f0; }
.recon-pill.active { background: #2563eb; color: #fff; }
.recon-pill-red.active    { background: #dc2626; }
.recon-pill-yellow.active { background: #f59e0b; }
.recon-pill-green.active  { background: #16a34a; }

.recon-table-wrap {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  overflow: hidden;
  overflow-x: auto;
}
.recon-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
.recon-table thead th {
  background: #f8fafc;
  font-weight: 600;
  color: #475569;
  padding: 10px 8px;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid #e2e8f0;
  font-size: 11px;
  text-transform: none;
  letter-spacing: .2px;
}
.recon-table thead th.num,
.recon-table tbody td.num { text-align: right; }
.recon-table tbody td {
  padding: 9px 8px;
  border-bottom: 1px solid #f1f5f9;
  white-space: nowrap;
  color: #0f172a;
}
.recon-table tbody tr:hover { background: #f0f7ff; }
.recon-table tbody tr.recon-r-red    { background: #fef2f2; }
.recon-table tbody tr.recon-r-red:hover { background: #fee2e2; }
.recon-table tbody tr.recon-r-yellow { background: #fffbeb; }
.recon-table tbody tr.recon-r-yellow:hover { background: #fef3c7; }
.recon-link {
  color: #2563eb; cursor: pointer; text-decoration: none; font-weight: 600;
}
.recon-link:hover { text-decoration: underline; }
.recon-dot {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
  vertical-align: middle;
}
.recon-status {
  font-size: 11px;
  background: #e2e8f0;
  color: #475569;
  padding: 1px 8px;
  border-radius: 999px;
}
.recon-empty {
  padding: 40px;
  text-align: center;
  color: #94a3b8;
  background: #fff;
  border-radius: 10px;
  border: 1px dashed #cbd5e1;
}

/* ============================================================
 * 订单卡折叠菜单 (Cooper：高频留主线，低频进折叠)
 * ============================================================ */
.od-overflow {
  position: relative;
  display: inline-block;
}
.od-more-btn {
  font-weight: 600;
}
.od-more-menu {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 100;
  min-width: 220px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(0,0,0,.18);
  padding: 6px;
  flex-direction: column;
  gap: 4px;
}
.od-overflow.open .od-more-menu {
  display: flex;
  animation: odMenuIn .12s ease-out;
}
@keyframes odMenuIn { from { opacity: 0; transform: translateY(-4px) } to { opacity: 1; transform: none } }
.od-more-menu .btn {
  justify-content: flex-start;
  text-align: left;
  width: 100%;
  margin: 0 !important;
  border-radius: 6px !important;
}
.od-more-menu .btn:hover {
  background: #f0f7ff !important;
}

/* ============================================================
 * 月结作战室 (month-close) — Benioff/Davenport batch-N+5
 * ============================================================ */
.mc-wrap { padding: 4px; }
.mc-head {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px; margin-bottom: 16px;
}
.mc-month-picker { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mc-actions { display: flex; gap: 8px; }

.mc-kpi-row {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px;
  margin-bottom: 18px;
}
@media (max-width: 1100px) { .mc-kpi-row { grid-template-columns: repeat(2, 1fr); } }
.mc-kpi {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  padding: 14px 16px; border-left: 4px solid #94a3b8;
}
.mc-kpi-ok   { border-left-color: #16a34a; }
.mc-kpi-warn { border-left-color: #d97706; }
.mc-kpi-bad  { border-left-color: #dc2626; }
.mc-kpi-label { font-size: 12px; color: #64748b; margin-bottom: 6px; }
.mc-kpi-val { font-size: 20px; font-weight: 700; color: #0f172a; }

.mc-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
  margin-bottom: 16px;
}
@media (max-width: 900px) { .mc-grid { grid-template-columns: 1fr; } }

.mc-panel {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  overflow: hidden; display: flex; flex-direction: column;
}
.mc-panel-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 14px; background: #f8fafc; border-bottom: 1px solid #e2e8f0;
  font-weight: 600; font-size: 14px; color: #334155;
}
.mc-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 26px; height: 22px; padding: 0 8px; border-radius: 11px;
  background: #e2e8f0; color: #475569; font-size: 12px; font-weight: 700;
}
.mc-count-warn { background: #fef3c7; color: #92400e; }
.mc-count-bad  { background: #fee2e2; color: #991b1b; }

.mc-panel-body { padding: 4px 0; max-height: 340px; overflow-y: auto; }
.mc-empty { padding: 28px 14px; text-align: center; color: #16a34a; font-size: 13px; }
.mc-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; border-bottom: 1px solid #f1f5f9;
  font-size: 13px;
}
.mc-row:last-child { border-bottom: none; }
.mc-row-bad { background: #fef2f2; }
.mc-row-main { flex: 1; min-width: 0; color: #0f172a; }
.mc-row-sub  { color: #64748b; font-size: 12px; min-width: 130px; text-align: right; }
.mc-fix {
  color: #2563eb; font-size: 12px; cursor: pointer; white-space: nowrap;
  text-decoration: none; padding: 2px 6px; border-radius: 4px;
}
.mc-fix:hover { background: #eff6ff; text-decoration: underline; }
.mc-more { padding: 8px 14px; text-align: center; color: #94a3b8; font-size: 12px; }

.mc-close-banner {
  padding: 12px 16px; border-radius: 10px; text-align: center;
  font-size: 14px; font-weight: 500;
}
.mc-close-ok   { background: #dcfce7; color: #166534; border: 1px solid #86efac; }
.mc-close-warn { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }

/* ====== 2026-05-14 乐观 UI 占位视觉（大圣定义） ====== */
/* 任何有 _pending: true 的本地记录 → JS 渲染时挂 data-pending="1" 或 .row-pending 类 */
[data-pending="1"], .row-pending {
  background: linear-gradient(90deg, transparent, #fffbeb 50%, transparent) !important;
  background-size: 200% 100%;
  animation: rowPendingShimmer 1.6s ease-in-out infinite;
  position: relative;
}
[data-pending="1"]::after, .row-pending::after {
  content: '';
  position: absolute;
  top: 50%; right: 14px;
  width: 12px; height: 12px;
  margin-top: -6px;
  border: 2px solid #f59e0b;
  border-top-color: transparent;
  border-radius: 50%;
  animation: rowPendingSpin 0.8s linear infinite;
  pointer-events: none;
}
@keyframes rowPendingShimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@keyframes rowPendingSpin {
  to { transform: rotate(360deg); }
}
