/* ═══════════════════════════════════════════════════════════════════
   MARKET AGENT CONSOLE · 市场智能体工作台 · 共享设计系统
   上海电气集团 · 市场部   ·   Powered by Leadership Factory
   Style lineage: LF Console / LF Studio (warm-academic, Claude-Code-like)
   ═══════════════════════════════════════════════════════════════════ */

:root {
  /* Brand palette */
  --lf-cream:#F4EFE6; --lf-cream-deep:#ECE5D7; --lf-paper:#FAF7F1;
  --lf-espresso:#2A1E17; --lf-espresso-soft:#3D2E24; --lf-walnut:#5C4433; --lf-ink:#1A1410;
  --lf-brick:#A43A2A; --lf-brick-soft:#C85842;
  --lf-ochre:#C69A52; --lf-sand:#D9CDB6; --lf-rule:#C9BEA7; --lf-muted:#7A6A58;
  /* stage accents */
  --st-pre:#2F4A5C;   /* 战前情报 · steel */
  --st-visit:#7E5A2A; /* 拜访接待 · bronze */
  --st-post:#3D7A5B;  /* 会后落地 · green */
  --ok:#3D7A5B; --warn:#C69A52; --info:#3D5A7A; --danger:#A43A2A;

  --font-serif:"Instrument Serif","Noto Serif SC",Georgia,serif;
  --font-sans:"Inter","Noto Sans SC",-apple-system,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,monospace;

  /* Semantic — LIGHT */
  --bg-app:var(--lf-cream); --bg-panel:var(--lf-paper); --bg-panel-2:var(--lf-cream-deep);
  --bg-rail:#ECE3D2; --bg-input:#FFFCF6; --bg-canvas:#FBF8F2;
  --bg-hover:rgba(42,30,23,0.05); --bg-active:rgba(164,58,42,0.08);
  --fg-strong:var(--lf-ink); --fg-default:var(--lf-espresso); --fg-muted:var(--lf-walnut); --fg-faint:var(--lf-muted);
  --fg-inverse:var(--lf-cream); --fg-accent:var(--lf-brick);
  --border:var(--lf-rule); --border-strong:var(--lf-walnut); --border-faint:#E0D5BD;
  --accent:var(--lf-brick); --accent-soft:rgba(164,58,42,0.10);

  --sb-w:320px; --top-h:52px; --radius:4px;
  --t-fast:120ms cubic-bezier(.4,0,.2,1); --t-base:200ms cubic-bezier(.4,0,.2,1); --t-slow:300ms cubic-bezier(.4,0,.2,1);
}
[data-theme="dark"] {
  --bg-app:#1A1410; --bg-panel:#221912; --bg-panel-2:#2A1E17;
  --bg-rail:#15100B; --bg-input:#2A1F18; --bg-canvas:#1E1610;
  --bg-hover:rgba(244,239,230,0.06); --bg-active:rgba(198,154,82,0.14);
  --fg-strong:#F4EFE6; --fg-default:#E8DFD0; --fg-muted:#B6A78F; --fg-faint:#8B7A62;
  --fg-inverse:#1A1410; --fg-accent:var(--lf-ochre);
  --border:#3A2C20; --border-strong:#5C4433; --border-faint:#2D2118;
  --accent:var(--lf-ochre); --accent-soft:rgba(198,154,82,0.14);
  --st-pre:#6E93A8; --st-visit:#C69A52; --st-post:#5FA37E;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg-app);color:var(--fg-default);
  font-family:var(--font-sans);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;overflow:hidden;
  transition:background var(--t-slow),color var(--t-slow);
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,textarea,select{font:inherit;color:inherit;background:none;border:none;outline:none}
ul{list-style:none}
a{color:inherit;text-decoration:none}
.ico{width:18px;height:18px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ico-sm{width:16px;height:16px}
.ico-lg{width:22px;height:22px}
.mono{font-family:var(--font-mono)}
.serif{font-family:var(--font-serif)}

/* ═══════ APP SHELL ═══════ */
.app{display:grid;grid-template-columns:var(--sb-w) 1fr;grid-template-rows:1fr auto;height:100vh;
  grid-template-areas:"side main" "side status"}
.app.sb-collapsed{grid-template-columns:62px 1fr}

/* ═══════ SIDEBAR ═══════ */
.sidebar{grid-area:side;background:#EFEFEF;border-right:1px solid #D0D0D0;
  display:flex;flex-direction:column;overflow:hidden}
[data-theme="dark"] .sidebar{background:#1A1410;border-right-color:#2D2118}
.sb-brand{height:var(--top-h);padding:0 14px;display:flex;align-items:center;gap:10px;
  border-bottom:1px solid #D0D0D0;flex-shrink:0}
[data-theme="dark"] .sb-brand{border-bottom-color:#2D2118}
.brand-logo{width:28px;height:28px;background:var(--lf-espresso);display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}
.brand-logo::before{content:"";position:absolute;top:3px;left:3px;right:3px;height:2px;background:var(--lf-brick)}
.brand-logo span{font-family:var(--font-serif);font-size:13px;color:var(--lf-cream);font-style:italic;letter-spacing:-0.02em}
.brand-text{font-family:var(--font-mono);font-size:13px;letter-spacing:0.12em;text-transform:uppercase;color:#000;font-weight:700;overflow:hidden;white-space:nowrap;line-height:1.35}
[data-theme="dark"] .brand-text{color:var(--fg-strong)}
.brand-text small{display:block;font-size:11px;font-weight:500;color:#444;letter-spacing:0.1em;margin-top:3px}
[data-theme="dark"] .brand-text small{color:var(--fg-muted)}
.sb-collapsed .brand-text{display:none}
.sb-collapsed .theme-btn .theme-lbl{display:none}
.sb-collapsed .theme-btn{padding:0 6px}

.icon-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:#666;border-radius:var(--radius);transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}
[data-theme="dark"] .icon-btn{color:var(--fg-muted)}
.icon-btn:hover{background:var(--bg-hover);color:#000}
[data-theme="dark"] .icon-btn:hover{color:var(--fg-strong)}
.icon-btn.active{background:var(--bg-active);color:var(--fg-accent)}
.theme-btn{display:inline-flex;align-items:center;gap:6px;padding:0 10px;height:28px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#666;border-radius:var(--radius);transition:background var(--t-fast),color var(--t-fast);flex-shrink:0;white-space:nowrap}
[data-theme="dark"] .theme-btn{color:var(--fg-muted)}
.theme-btn:hover{background:var(--bg-hover);color:#000}
[data-theme="dark"] .theme-btn:hover{color:var(--fg-strong)}
.theme-btn .ico{width:15px;height:15px}

.sb-actions{padding:12px;display:flex;flex-direction:column;gap:6px}
.btn-new{display:flex;align-items:center;gap:10px;padding:13px 14px;background:#111;color:#fff;
  font-family:var(--font-mono);font-size:13px;letter-spacing:0.12em;text-transform:uppercase;font-weight:700;transition:background var(--t-fast);white-space:nowrap;overflow:hidden}
[data-theme="dark"] .btn-new{background:var(--lf-ochre);color:var(--lf-espresso)}
.btn-new:hover{background:var(--lf-brick);color:#fff}
.btn-new .btn-label{font-size:13px;letter-spacing:0.12em;text-transform:uppercase;color:inherit;font-weight:700}
.btn-new .kbd{margin-left:auto;font-size:9px;opacity:.7;letter-spacing:.05em;border:1px solid currentColor;padding:1px 4px;border-radius:3px}
.sb-collapsed .btn-new{padding:10px;justify-content:center}
.sb-collapsed .btn-new .btn-label,.sb-collapsed .btn-new .kbd{display:none}

.sb-nav{padding:4px 8px}
.sb-navitem{display:flex;align-items:center;gap:13px;padding:14px 12px;color:#1A1410;
  font-size:22px;font-weight:600;cursor:pointer;border-radius:var(--radius);transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast);white-space:nowrap;line-height:1.25;
  border-left:3px solid transparent;margin-left:2px}
[data-theme="dark"] .sb-navitem{color:var(--fg-strong)}
.sb-navitem:hover{background:var(--bg-hover);color:#000;border-left-color:rgba(164,58,42,.25)}
.sb-navitem.active{background:var(--bg-active);color:var(--fg-accent);font-weight:700;border-left-color:var(--lf-brick);box-shadow:inset 0 0 0 1px rgba(164,58,42,.06)}
/* 侧栏导航文字：衬线中文 + 适度字距，保持 22px 字号 */
.sb-navitem .nav-label{
  font-family:"Noto Serif SC",var(--font-serif);font-size:22px;font-weight:inherit;
  letter-spacing:.06em;text-transform:none;color:inherit;line-height:1.3;
  font-feature-settings:"palt" 1;-webkit-font-smoothing:antialiased
}
.sb-navitem.active .nav-label{letter-spacing:.05em}
.sb-navitem .ct{margin-left:auto;font-family:var(--font-mono);font-size:15px;font-weight:700;color:#333}
[data-theme="dark"] .sb-navitem .ct{color:var(--fg-muted)}
.sb-collapsed .sb-navitem .nav-label,.sb-collapsed .sb-navitem .ct{display:none}

.sb-boss{background:var(--bg-active)!important;color:var(--fg-accent)!important;font-weight:700!important}
.sb-boss:hover{background:var(--bg-active)!important}
.sb-section-label{padding:16px 16px 6px;font-family:var(--font-mono);font-size:11px;letter-spacing:0.2em;text-transform:uppercase;color:#666}
[data-theme="dark"] .sb-section-label{color:var(--fg-faint)}
.sb-collapsed .sb-section-label{opacity:0;height:10px;padding:6px 0}
.sb-list{flex:1;overflow-y:auto;padding:0 10px 10px}
.sb-list::-webkit-scrollbar{width:6px}.sb-list::-webkit-scrollbar-thumb{background:var(--border)}
.client-item{display:flex;align-items:center;gap:10px;padding:9px 10px;cursor:pointer;border-radius:var(--radius);transition:background var(--t-fast)}
.client-item:hover{background:var(--bg-hover)}
.client-dot{width:8px;height:8px;flex-shrink:0;background:var(--st-pre)}
.client-item .nm{font-size:16px;font-weight:600;color:#111;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
[data-theme="dark"] .client-item .nm{color:var(--fg-strong)}
.client-item .meta{margin-left:auto;font-family:var(--font-mono);font-size:13px;font-weight:600;color:#555}
[data-theme="dark"] .client-item .meta{color:var(--fg-muted)}
.sb-collapsed .client-item .nm,.sb-collapsed .client-item .meta{display:none}

.sb-user{border-top:1px solid #D0D0D0;padding:12px 14px;display:flex;align-items:center;gap:10px;flex-shrink:0}
[data-theme="dark"] .sb-user{border-top-color:#2D2118}
.avatar{width:30px;height:30px;background:var(--lf-walnut);color:var(--lf-cream);display:flex;align-items:center;justify-content:center;font-family:var(--font-serif);font-size:15px;flex-shrink:0}
.sb-user .nm{font-size:18px;font-weight:700;color:#000;line-height:1.2}
[data-theme="dark"] .sb-user .nm{color:var(--fg-strong)}
.sb-user .role{font-family:var(--font-mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#555}
[data-theme="dark"] .sb-user .role{color:var(--fg-muted)}
.sb-user .who{flex:1;min-width:0}
.btn-logout{
  flex-shrink:0;display:inline-flex;align-items:center;gap:5px;
  padding:7px 11px;font-family:var(--font-mono);font-size:10px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);
  border:1.5px solid var(--border-strong);border-radius:4px;
  background:var(--bg-panel);transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast)
}
.btn-logout:hover{color:var(--lf-brick);border-color:var(--lf-brick);background:var(--accent-soft)}
.btn-logout:disabled{opacity:.6;cursor:wait}
[data-theme="dark"] .btn-logout{background:var(--bg-panel-2)}
.sb-collapsed .sb-user{justify-content:center;padding:10px 8px}
.sb-collapsed .sb-user .who{display:none}
.sb-collapsed .btn-logout .btn-logout-lbl{display:none}
.sb-collapsed .btn-logout{padding:8px;border-radius:4px}

/* ═══════ MAIN ═══════ */
.main{grid-area:main;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-canvas)}
.main.dotted{background-image:radial-gradient(circle,var(--border) 1px,transparent 1px);background-size:20px 20px}
.topbar{height:var(--top-h);padding:0 22px;display:flex;align-items:center;gap:14px;
  border-bottom:1px solid var(--border);background:var(--bg-app);flex-shrink:0}
.crumb{font-family:var(--font-mono);font-size:10px;letter-spacing:0.16em;text-transform:uppercase;color:var(--fg-faint)}
.crumb strong{color:var(--fg-strong);font-weight:500}
.crumb a:hover{color:var(--fg-accent)}
.tb-spacer{flex:1}
.tb-pill{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;color:var(--fg-faint);padding:5px 10px;border:1px solid var(--border)}
.tb-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--st-post)}
.tb-divider{width:1px;height:22px;background:var(--border)}

.scroll{flex:1;overflow-y:auto;padding:30px 36px 48px}
.scroll::-webkit-scrollbar{width:8px}.scroll::-webkit-scrollbar-thumb{background:var(--border)}
.wrap{max-width:1180px;margin:0 auto}
.wrap-narrow{max-width:920px;margin:0 auto}

/* ═══════ SHARED TYPO / BLOCKS ═══════ */
.kicker{font-family:var(--font-mono);font-size:10px;letter-spacing:0.3em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.page-title{font-family:var(--font-serif);font-size:38px;line-height:1.05;letter-spacing:-0.015em;color:var(--fg-strong);font-weight:400}
.page-title em{font-style:italic;color:var(--accent)}
.page-sub{font-size:14.5px;color:var(--fg-muted);margin-top:10px;max-width:62ch}

.section-head{display:flex;align-items:baseline;gap:14px;padding-bottom:10px;border-bottom:1px solid var(--border-strong);margin:36px 0 18px}
.section-no{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;color:var(--accent)}
.section-name{font-family:var(--font-serif);font-size:22px;color:var(--fg-strong);font-style:italic}
.section-en{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-faint)}
.section-meta{margin-left:auto;font-family:var(--font-mono);font-size:9.5px;color:var(--fg-faint)}

.label{font-family:var(--font-mono);font-size:9px;letter-spacing:0.22em;text-transform:uppercase;color:var(--fg-faint)}
.card{background:var(--bg-panel);border:1px solid var(--border);padding:18px}
.card-tag{font-family:var(--font-mono);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);border-bottom:1px dashed var(--border);padding-bottom:8px;margin-bottom:12px;display:flex;justify-content:space-between}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;font-family:var(--font-mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;font-weight:500;border:1px solid transparent;transition:all var(--t-fast);cursor:pointer}
.btn-primary{background:var(--lf-espresso);color:var(--lf-cream)}
[data-theme="dark"] .btn-primary{background:var(--lf-ochre);color:var(--lf-espresso)}
.btn-primary:hover{background:var(--lf-brick);color:var(--lf-cream)}
.btn-ghost{border-color:var(--border-strong);color:var(--fg-default)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-sm{padding:7px 13px;font-size:9px}

/* tags / chips */
.tag{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--border);padding:3px 8px;color:var(--fg-muted);display:inline-block}
.tag.pre{border-color:var(--st-pre);color:var(--st-pre)}
.tag.visit{border-color:var(--st-visit);color:var(--st-visit)}
.tag.post{border-color:var(--st-post);color:var(--st-post)}
.tag.solid{background:var(--accent);color:var(--fg-inverse);border-color:var(--accent)}
.chip{border:1px solid var(--border);padding:7px 14px;font-size:12.5px;color:var(--fg-muted);cursor:pointer;transition:all var(--t-fast)}
.chip:hover{border-color:var(--fg-default);color:var(--fg-default)}
.chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}

/* inputs */
.field{margin-bottom:16px}
.field-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:6px;display:block}
.input{width:100%;background:var(--bg-input);border:1px solid var(--border);padding:10px 12px;font-size:13.5px;color:var(--fg-default);transition:border-color var(--t-fast)}
.input:focus{border-color:var(--accent)}
.input::placeholder{color:var(--fg-faint)}
textarea.input{resize:vertical;line-height:1.6;min-height:80px}

/* progress */
.progress{height:3px;background:var(--lf-sand)}
[data-theme="dark"] .progress{background:#2D2118}
.progress>span{display:block;height:100%;background:var(--accent);transition:width var(--t-base)}

/* table */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint);text-align:left;padding:10px 12px;border-bottom:1px solid var(--border-strong)}
.tbl td{padding:12px;border-bottom:1px solid var(--border);font-size:12.5px;color:var(--fg-default);vertical-align:middle}
.tbl tr:hover td{background:var(--bg-hover)}

/* ai hint */
.ai-hint{background:var(--accent-soft);border:1px solid var(--accent);border-left-width:3px;padding:12px 14px;display:flex;gap:11px;font-size:12.5px;line-height:1.6;color:var(--fg-default)}
.ai-hint .lbl{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}

/* stat */
.stat-num{font-family:var(--font-serif);font-size:46px;line-height:1;color:var(--fg-strong)}
.stat-num em{font-style:italic;color:var(--accent)}

/* ═══════ STATUS BAR ═══════ */
.statusbar{grid-area:status;height:30px;border-top:1px solid var(--border);background:var(--bg-panel);
  padding:0 18px;display:flex;align-items:center;gap:18px;
  font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint)}
.statusbar strong{color:var(--fg-default);font-weight:500}
.sb-stat{display:flex;align-items:center;gap:6px}
.sb-flex{flex:1}

/* ═══════ FEEDBACK BUTTON (全局反馈入口) ═══════ */
.fb-trigger{position:fixed;bottom:42px;right:18px;z-index:40;
  background:var(--accent);color:#fff;border:none;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  padding:6px 12px;cursor:pointer;display:flex;align-items:center;gap:6px;
  transition:opacity .15s}
.fb-trigger:hover{opacity:.85}
.fb-trigger .fb-dot{width:6px;height:6px;background:#fff;border-radius:50%;flex-shrink:0}

/* ═══════ FEEDBACK MODAL ═══════ */
.fb-modal-overlay{position:fixed;inset:0;background:rgba(26,20,16,.55);backdrop-filter:blur(3px);
  z-index:60;display:none;align-items:center;justify-content:center;padding:16px}
.fb-modal-overlay.open{display:flex}
.fb-modal{width:600px;max-width:100%;max-height:calc(100vh - 32px);overflow-y:auto;
  background:var(--bg-panel);border:1px solid var(--border-strong);
  box-shadow:0 20px 60px rgba(26,20,16,.3)}
.fb-modal-head{padding:20px 24px 16px;border-bottom:1px solid var(--border);
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.fb-modal-title{font-family:var(--font-serif);font-size:20px;color:var(--fg-strong);font-weight:400;line-height:1.2}
.fb-modal-sub{font-family:var(--font-mono);font-size:9px;color:var(--fg-faint);margin-top:4px;letter-spacing:.12em;text-transform:uppercase}
.fb-modal-close{background:none;border:1px solid var(--border);color:var(--fg-muted);
  width:28px;height:28px;flex-shrink:0;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .12s}
.fb-modal-close:hover{border-color:var(--accent);color:var(--accent)}
.fb-modal-body{padding:20px 24px}
.fb-type-row{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.fb-type-btn{border:1px solid var(--border);background:var(--bg-panel-2);
  color:var(--fg-muted);font-size:12px;
  padding:8px 14px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:5px}
.fb-type-btn:hover{border-color:var(--fg-muted)}
.fb-type-btn.sel{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.fb-field{margin-bottom:16px}
.fb-field-label{display:block;font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--fg-faint);margin-bottom:7px}
.fb-modal textarea{width:100%;height:140px;background:var(--bg-input);
  border:1px solid var(--border);color:var(--fg-default);
  font-size:14px;padding:12px 14px;resize:vertical;outline:none;
  font-family:var(--font-sans);box-sizing:border-box;line-height:1.65;min-height:120px}
.fb-modal textarea:focus{border-color:var(--accent)}
.fb-char-count{font-family:var(--font-mono);font-size:9px;color:var(--fg-faint);text-align:right;margin-top:4px}
.fb-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fb-readonly{font-family:var(--font-mono);font-size:12px;color:var(--fg-muted);
  background:var(--bg-panel-2);border:1px solid var(--border);
  padding:8px 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fb-select{width:100%;background:var(--bg-input);border:1px solid var(--border);
  color:var(--fg-default);padding:8px 12px;font-size:13px;font-family:var(--font-sans);outline:none;cursor:pointer}
.fb-select:focus{border-color:var(--accent)}
.fb-modal-foot{padding:14px 24px;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.fb-who{font-family:var(--font-mono);font-size:10px;color:var(--fg-faint)}
.fb-who strong{color:var(--fg-muted)}
.fb-submit{background:var(--accent);color:#fff;border:none;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  padding:10px 22px;cursor:pointer;transition:opacity .15s;white-space:nowrap}
.fb-submit:hover:not(:disabled){opacity:.85}
.fb-submit:disabled{opacity:.35;cursor:not-allowed}
.fb-success{padding:48px 24px;text-align:center;display:none}
.fb-success.show{display:block}
.fb-success-icon{font-size:36px;margin-bottom:12px}
.fb-success-msg{font-family:var(--font-serif);font-size:18px;color:var(--fg-strong);font-weight:400}
.fb-success-sub{font-size:11px;color:var(--fg-faint);margin-top:8px;font-family:var(--font-mono);letter-spacing:.1em}

/* ═══════ COMMAND PALETTE ═══════ */
.overlay{position:fixed;inset:0;background:rgba(26,20,16,0.45);backdrop-filter:blur(2px);display:none;align-items:flex-start;justify-content:center;z-index:50}
.overlay.open{display:flex}
.palette{margin-top:12vh;width:600px;max-width:92vw;background:var(--bg-panel);border:1px solid var(--border-strong);box-shadow:0 24px 64px rgba(26,20,16,.35)}
.pal-input{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border)}
.pal-input .ico{color:var(--fg-faint)}
.pal-input input{flex:1;font-size:16px}
.pal-input .esc{font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;color:var(--fg-faint);border:1px solid var(--border);padding:3px 7px}
.pal-body{max-height:46vh;overflow-y:auto;padding:8px}
.pal-group{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--fg-faint);padding:10px 12px 6px}
.pal-item{display:flex;align-items:center;gap:12px;padding:10px 12px;cursor:pointer;transition:background var(--t-fast)}
.pal-item:hover,.pal-item.sel{background:var(--bg-active)}
.pal-item .pno{font-family:var(--font-mono);font-size:9px;width:30px}
.pal-item .pnm{font-size:14px;color:var(--fg-strong)}
.pal-item .pone{font-size:11.5px;color:var(--fg-faint);margin-left:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pal-item .parrow{margin-left:auto;color:var(--fg-faint)}

/* toast */
.toast{position:fixed;bottom:46px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;
  background:var(--lf-espresso);color:var(--lf-cream);padding:12px 20px;display:flex;align-items:center;gap:12px;
  font-size:13px;z-index:60;transition:opacity var(--t-base),transform var(--t-base);pointer-events:none}
[data-theme="dark"] .toast{background:var(--lf-ochre);color:var(--lf-espresso)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast .tk{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;opacity:.8}

/* workflow three-pane */
.flow{grid-area:main;display:grid;grid-template-columns:240px 1fr 380px;grid-template-rows:var(--top-h) 3px 1fr;
  grid-template-areas:"ftop ftop ftop" "fprog fprog fprog" "fleft fmid fright";overflow:hidden}
.flow-top{grid-area:ftop}
.flow-prog{grid-area:fprog}
.flow-left{grid-area:fleft;background:var(--lf-espresso);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}
[data-theme="dark"] .flow-left{background:#15100B}
.flow-mid{grid-area:fmid;overflow-y:auto;background:var(--bg-canvas)}
.flow-right{grid-area:fright;background:var(--bg-panel-2);border-left:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}
.flow-left::-webkit-scrollbar,.flow-mid::-webkit-scrollbar,.flow-right::-webkit-scrollbar{width:7px}
.flow-left::-webkit-scrollbar-thumb,.flow-mid::-webkit-scrollbar-thumb,.flow-right::-webkit-scrollbar-thumb{background:var(--border)}
@media(max-width:1200px){.flow{grid-template-columns:200px 1fr 320px}}

/* step list (left rail in workflow) */
.steps{padding:18px 0}
.step{padding:13px 20px;display:flex;gap:12px;align-items:flex-start;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.06);color:var(--lf-sand);transition:background var(--t-fast)}
.step:hover{background:rgba(255,255,255,0.04)}
.step.done{color:var(--lf-sand)}
.step.done .step-n{color:var(--st-post)}
.step.active{background:rgba(255,255,255,0.07);color:var(--lf-cream);border-left:2px solid var(--lf-ochre)}
.step.active .step-n{color:var(--lf-ochre)}
.step.pending{opacity:.45}
.step-n{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;width:24px;flex-shrink:0;padding-top:3px}
.step-t{font-size:15px;line-height:1.4;font-weight:500}
.step-t small{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;opacity:.72;margin-top:4px;font-weight:400}

/* doc preview (right rail) */
.doc{background:#fff;color:#1A1410;margin:16px;padding:26px 26px;border:1px solid var(--border);font-family:var(--font-sans);font-size:11px;line-height:1.6;box-shadow:0 1px 0 rgba(0,0,0,.04)}
[data-theme="dark"] .doc{background:#F4EFE6}
.doc h1{font-family:var(--font-serif);font-size:19px;font-weight:400;color:#1A1410;margin-bottom:4px;line-height:1.15}
.doc h2{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:#A43A2A;margin:16px 0 6px;border-bottom:1px solid #C9BEA7;padding-bottom:4px}
.doc p{margin-bottom:6px;color:#2A1E17}
.doc .docmeta{font-family:var(--font-mono);font-size:8.5px;color:#7A6A58;letter-spacing:.05em;border-bottom:1px solid #C9BEA7;padding-bottom:8px;margin-bottom:10px}
.doc table{width:100%;border-collapse:collapse;margin:6px 0;font-size:10px}
.doc th{background:#ECE5D7;text-align:left;padding:5px 7px;font-family:var(--font-mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:#5C4433;border:1px solid #C9BEA7}
.doc td{padding:5px 7px;border:1px solid #C9BEA7;color:#2A1E17;vertical-align:top}
.doc ul{list-style:disc;padding-left:18px;margin-bottom:6px}
.doc li{margin-bottom:3px;color:#2A1E17}
.doc .src{font-family:var(--font-mono);font-size:8px;color:#7A6A58}

/* chat */
.chat-wrap{padding:20px 26px;display:flex;flex-direction:column;gap:14px}
.msg{max-width:84%;padding:13px 15px;font-size:13px;line-height:1.6}
.msg.ai{background:var(--bg-panel);border:1px solid var(--border);color:var(--fg-default)}
.msg.ai .who{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.msg.user{background:var(--lf-espresso);color:var(--lf-cream);margin-left:auto}
[data-theme="dark"] .msg.user{background:var(--lf-espresso-soft)}
.composer{border-top:1px solid var(--border);padding:14px;display:flex;gap:10px;align-items:flex-end;background:var(--bg-app)}
.composer textarea{flex:1;background:var(--bg-input);border:1px solid var(--border);padding:10px 12px;font-size:13px;min-height:42px;max-height:120px;resize:none;line-height:1.5}
.composer textarea:focus{border-color:var(--accent)}

/* responsive */
@media(max-width:980px){
  .app{grid-template-columns:1fr;grid-template-areas:"main" "status"}
  .sidebar{display:none}
  .flow{grid-template-columns:1fr}
}

/* ═══════ PRINT / PDF ═══════ */
@media print{
  .sidebar,.statusbar,.topbar,.flow-left,.flow-prog,.composer,
  .rt-actions,.btn,.tb-spacer,.tb-divider,.tb-pill,
  .cmdbar,.filters,.summ,.kicker{display:none!important}
  body{overflow:visible;background:#fff;color:#000}
  .app,.flow,.main{display:block;height:auto;overflow:visible}
  .scroll{overflow:visible;padding:0}
  .wrap,.wrap-narrow{max-width:100%;margin:0}
  .flow-mid,.flow-right{overflow:visible;width:100%;max-width:100%}
  .doc{border:none;box-shadow:none;margin:0;padding:0;background:#fff}
  .msg.ai{border:none;background:transparent}
  .msg.user{display:none}
  h1{font-size:20pt;margin-bottom:6pt}
  h2{font-size:12pt;border-bottom:1pt solid #C9BEA7;margin-top:14pt}
  table{page-break-inside:avoid}
  @page{margin:2.54cm;size:A4}
  .print-footer::after{
    content:"上海电气集团 · 市场部 · 市场智能体工作台 · 内部资料";
    display:block;font-size:8pt;color:#7A6A58;text-align:right;
    border-top:1pt solid #C9BEA7;padding-top:6pt;margin-top:20pt
  }
}

/* ═══════ 客户选择器（任意客户名称） ═══════ */
.mc-client-picker-host{min-width:0;flex:1;max-width:520px}
.mc-client-picker{width:100%}
.mc-cp-bar{
  display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;width:100%;
  padding:8px 10px 8px 12px;background:var(--bg-panel);
  border:1.5px solid var(--border-strong);border-radius:6px;
  box-shadow:0 1px 0 rgba(42,30,23,.06),inset 0 1px 0 rgba(255,252,246,.8)
}
[data-theme="dark"] .mc-cp-bar{background:var(--bg-panel-2);box-shadow:0 1px 0 rgba(0,0,0,.2)}
.mc-cp-field{display:flex;flex-direction:column;gap:3px;min-width:0}
.mc-cp-field-main{flex:1;min-width:160px}
.mc-cp-field-narrow{width:88px;flex-shrink:0}
.mc-cp-label{
  font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--fg-muted);font-weight:600;line-height:1
}
.mc-client-picker .input{
  background:var(--bg-input);border:1.5px solid var(--border-strong);
  padding:8px 10px;font-size:13px;font-weight:500;color:var(--fg-strong);
  border-radius:4px;min-height:36px
}
.mc-client-picker .input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.mc-client-picker .input::placeholder{color:var(--fg-faint);font-weight:400}
.mc-client-picker .mc-cp-go{
  flex-shrink:0;min-height:36px;padding:0 18px;font-size:13px;font-weight:700;
  letter-spacing:.08em;background:var(--lf-espresso);color:#fff;border-radius:4px;
  border:1.5px solid var(--lf-espresso);transition:background var(--t-fast),border-color var(--t-fast)
}
.mc-client-picker .mc-cp-go:hover{background:var(--lf-brick);border-color:var(--lf-brick)}
[data-theme="dark"] .mc-client-picker .mc-cp-go{background:var(--lf-ochre);color:var(--lf-espresso);border-color:var(--lf-ochre)}
[data-theme="dark"] .mc-client-picker .mc-cp-go:hover{background:var(--lf-brick-soft);color:#fff;border-color:var(--lf-brick-soft)}
.flow-top .mc-client-picker-host{max-width:100%}
