/* ============================================================
   Rsnow 销售工作台 · 样式（UI 100% 采用 rsnow-workbench 设计体系）
   设计精髓：深蓝渐变表头 + 白色功能导航 + 14px 圆角卡片 +
   原生 dialog 表单 + evidence 二级小字 + tag 三态徽章
   ============================================================ */
:root{--navy:#00286e;--red:#e60028;--ink:#172131;--muted:#65728a;--line:#dbe1ea;--bg:#f5f7fa;--card:#fff;--warn:#9b6100;--ok:#0e7a52;--radius:14px;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0}
header{min-height:106px;background:linear-gradient(112deg,#001c50,#003c91);color:#fff;padding:22px max(22px,calc((100vw - 1440px)/2));display:flex;justify-content:space-between;gap:20px;align-items:center}
.brand{font-size:12px;letter-spacing:.18em;font-weight:800;color:#ffced6}
h1{font-size:25px;margin:3px 0}
header p{margin:4px 0 0;color:#c7d8ff;font-size:13px}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.actions button{flex-shrink:0;white-space:nowrap}
button{border:0;border-radius:9px;background:var(--navy);color:#fff;padding:10px 14px;font:inherit;font-weight:700;cursor:pointer}
button:hover{filter:brightness(1.09)}
button.quiet{background:#fff;color:var(--navy)}
button.icon{background:transparent;color:var(--muted);font-size:28px;padding:0 4px}
nav{display:flex;gap:4px;overflow:auto;padding:12px max(16px,calc((100vw - 1440px)/2));background:#fff;border-bottom:1px solid var(--line)}
nav button{background:transparent;color:var(--muted);white-space:nowrap;padding:9px 12px}
nav button.active{color:var(--navy);background:#eaf1ff}
main{max-width:1440px;margin:auto;padding:22px}
.grid{display:grid;gap:16px}
.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.two{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr)}
.two-even{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 3px 15px rgba(11,36,82,.035)}
.metric b{font-size:29px;display:block;margin-top:7px}
.metric small,.muted{color:var(--muted)}
h2{font-size:18px;margin:0 0 12px}
h3{font-size:15px;margin:0 0 8px}
/* 窄屏安全规则（WorkBuddy 右栏约 500-700px 宽时必须不截字）：
   1) 说明文字+按钮同一行 → 容器必须 flex-wrap:wrap，挤不下就换行而不是压按钮；
   2) 按钮 flex-shrink:0，永远保持文字完整宽度，宁可换行不被压缩；
   3) 说明文字 min-width:0 先收缩/换行，把宽度让给按钮。 */
.section-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:4px 0 12px;flex-wrap:wrap}
.section-head .muted{flex:1 1 220px;min-width:0}
.section-head button{font-size:13px;padding:8px 10px;flex-shrink:0;white-space:nowrap}
.section-head>div:has(button){display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0}
.section-head>div:has(button) button{flex-shrink:0}
table{width:100%;border-collapse:collapse;font-size:14px}
.table-wrap{overflow-x:auto}
.table-wrap table{min-width:560px}
th{text-align:left;color:var(--muted);font-size:12px;font-weight:700;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:11px 8px;border-bottom:1px solid #edf0f4;vertical-align:top}
.truncate{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag{display:inline-block;padding:3px 7px;border-radius:20px;background:#eef2f7;color:#4e5c70;font-size:12px;font-weight:700}
.tag.ok{background:#e7f6ed;color:var(--ok)}
.tag.warn{background:#fff1d7;color:var(--warn)}
.tag.red{background:#ffe8ec;color:#aa1830}
.empty{padding:28px;color:var(--muted);text-align:center}
.list{list-style:none;margin:0;padding:0}
.list li{padding:11px 0;border-bottom:1px solid #edf0f4}
.list strong{display:block;margin-bottom:3px}
.evidence{font-size:12px;color:var(--muted);margin-top:6px}
.notice{border-left:4px solid var(--red);background:#fff6f7;padding:12px 14px;border-radius:0 10px 10px 0;color:#7b2635;font-size:14px}
.notice.ok{border-left-color:var(--ok);background:#f1fbf6;color:#17613d}
.notice.warn{border-left-color:#c98600;background:#fff9e9;color:#745000}
.flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.flow span{background:#eef4ff;color:var(--navy);padding:8px;border-radius:8px;font-size:13px}
.flow i{color:var(--muted);font-style:normal}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.toolbar input,.toolbar select{padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit}
/* 二级板块 tab（下划线式；层级低于顶部主导航，高于行内筛选条） */
.subtabs{display:flex;gap:20px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.subtabs button{background:transparent;color:var(--muted);padding:9px 2px;font-size:14px;font-weight:400;border-radius:0;border-bottom:2px solid transparent}
.subtabs button.on{color:var(--navy);font-weight:700;border-bottom-color:var(--navy)}
/* 行内筛选条（视觉层级最轻：描边小胶囊，active 浅蓝底；主按钮仅「新增线索」） */
.filterbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.filterbar .fpill{background:#fff;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 14px;font-size:13px;font-weight:400}
.filterbar .fpill.on{background:#eaf1ff;color:var(--navy);border-color:#b9ccf0;font-weight:700}
.filterbar input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;font-size:13px}
.filterbar .sp{flex:1}
.row-actions{display:flex;gap:5px;flex-wrap:wrap}
.row-actions button{padding:6px 8px;font-size:12px;flex-shrink:0;white-space:nowrap}
.danger{background:var(--red)!important;color:#fff!important}
dialog{border:0;border-radius:16px;width:min(720px,calc(100vw - 24px));padding:0;box-shadow:0 20px 80px #00143966}
dialog::backdrop{background:#00143977}
.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}
.dialog-head h2{margin:0}
.fields{padding:18px 20px;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.fields label{display:grid;gap:6px;font-size:13px;font-weight:700}
.fields label.full{grid-column:1/-1}
.fields input,.fields textarea,.fields select{width:100%;border:1px solid #bfc9d8;border-radius:8px;padding:9px;font:inherit;color:var(--ink)}
.fields textarea{min-height:82px;resize:vertical}
.check{display:flex!important;align-items:center;gap:8px}
.check input{width:auto!important}
.help{font-weight:400;color:var(--muted);font-size:12px}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:15px 20px;border-top:1px solid var(--line)}
#toast{position:fixed;right:20px;bottom:20px;background:#1a2739;color:#fff;border-radius:10px;padding:12px 15px;max-width:360px;opacity:0;transform:translateY(14px);transition:.2s;pointer-events:none;z-index:99}
#toast.show{opacity:1;transform:none}
.money{font-variant-numeric:tabular-nums}
.full{grid-column:1/-1}
.quote-editor{padding:14px;background:#f2f6fc;border-radius:10px}
.quote-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px 0;border-bottom:1px solid var(--line)}
.quote-row label:first-child{grid-column:1/-1}
.detail{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;max-height:60vh;overflow:auto}
.card+.card{margin-top:16px}
.grid>.card+.card{margin-top:0}   /* grid 容器内的卡片不吃兄弟间距，否则第二张卡会矮一截 */
button:disabled{opacity:.5;cursor:not-allowed;filter:none}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid #7cb0ff;outline-offset:2px}
a{color:var(--navy)}
body{font-size:16px}
.evidence,.help,th,.tag,.row-actions button{font-size:14px}
dialog{max-height:90vh;overflow:auto}
.fields{max-height:65vh;overflow:auto}
#submit{min-width:88px}
.dialog-title-block{min-width:0}
.dialog-kicker{display:block;margin-bottom:6px;color:#7c8aa0;font-size:12px;font-weight:800;letter-spacing:.08em}
.dialog-subtitle{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.55}
.dialog-flow{display:flex;gap:8px;padding:0 20px 16px;background:#fff;overflow-x:auto;scrollbar-width:none}
.dialog-flow::-webkit-scrollbar{display:none}
.dialog-flow span{display:flex;align-items:center;gap:7px;min-width:max-content;padding:7px 10px;border:1px solid #dfe7f3;border-radius:999px;background:#f8faff;color:#55647b;font-size:12px}
.dialog-flow b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#dfe9f8;color:var(--navy);font-size:10px}
.dialog-flow em{font-style:normal;font-weight:700}
.dialog-buttons{display:flex;gap:8px;flex-shrink:0}
.dialog-action-note{margin:0 auto 0 0;color:var(--muted);font-size:12px;line-height:1.45}

/* 线索核实工作页：把“字段堆”整理成有节奏的核实流程 */
dialog.dialog-lead-editor{width:min(920px,calc(100vw - 28px));max-height:94vh;overflow:hidden;border-radius:22px;background:#f5f7fb;box-shadow:0 28px 90px rgba(0,20,57,.30)}
dialog.dialog-lead-editor::backdrop{background:rgba(0,20,57,.58);backdrop-filter:blur(2px)}
.dialog-lead-editor #form{display:flex;flex-direction:column;max-height:94vh;overflow:hidden}
.dialog-lead-editor .dialog-head{align-items:flex-start;padding:24px 26px 15px;border:0;background:linear-gradient(145deg,#fff 0%,#f4f8ff 100%)}
.dialog-lead-editor .dialog-head h2{margin:0;color:#10213b;font-size:23px;line-height:1.28;overflow-wrap:anywhere}
.dialog-lead-editor .dialog-head .icon{margin-top:1px;border-radius:50%;width:36px;height:36px;background:#fff;border:1px solid #dfe6f0;font-size:24px;line-height:1;box-shadow:0 4px 12px rgba(11,36,82,.07)}
.dialog-lead-editor .dialog-kicker{color:#315b9b}
.dialog-lead-editor .dialog-flow{padding:0 26px 18px;background:linear-gradient(145deg,#fff 0%,#f4f8ff 100%);border-bottom:1px solid #e3e9f2}
.dialog-lead-editor .dialog-flow span:last-child{border-color:#cad9ef;background:#edf4ff;color:var(--navy)}
.dialog-lead-editor .lead-editor-fields{display:block;flex:1;max-height:none;padding:18px 20px 22px;overflow-y:auto;background:#f5f7fb;scroll-behavior:smooth}
.field-section{margin-bottom:14px;padding:18px;border:1px solid #e0e6ef;border-radius:16px;background:#fff;box-shadow:0 5px 18px rgba(11,36,82,.035)}
.field-section:last-child{margin-bottom:0}
.field-section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:15px;padding-bottom:12px;border-bottom:1px solid #edf0f5}
.field-section-head h3{margin:0 0 4px;color:#172943;font-size:16px}
.field-section-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.field-section-index{display:grid;place-items:center;min-width:32px;height:25px;border-radius:8px;background:#edf3fc;color:#315b9b;font-size:11px;font-weight:800;letter-spacing:.05em}
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.lead-editor-fields label{gap:7px;color:#334155;font-size:13px;font-weight:700}
.lead-editor-fields input,.lead-editor-fields textarea,.lead-editor-fields select{border:1px solid #ccd6e4;border-radius:10px;padding:11px 12px;background:#fbfcfe;transition:border-color .16s,box-shadow .16s,background .16s}
.lead-editor-fields input:hover,.lead-editor-fields textarea:hover,.lead-editor-fields select:hover{border-color:#9eb2cf;background:#fff}
.lead-editor-fields input:focus,.lead-editor-fields textarea:focus,.lead-editor-fields select:focus{outline:0;border-color:#4779bf;background:#fff;box-shadow:0 0 0 3px rgba(71,121,191,.12)}
.lead-editor-fields textarea{min-height:96px;line-height:1.55}
.dialog-lead-editor .dialog-actions{align-items:center;padding:14px 20px;background:#fff;border-top:1px solid #dde4ee;box-shadow:0 -8px 24px rgba(11,36,82,.045)}
.dialog-lead-editor #submit{min-width:112px;background:linear-gradient(135deg,#003c91,#00286e);box-shadow:0 7px 16px rgba(0,40,110,.18)}
@keyframes leadEditorIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
dialog[open].dialog-lead-editor{animation:leadEditorIn .22s cubic-bezier(.2,.75,.25,1)}
@media(prefers-reduced-motion:reduce){dialog[open].dialog-lead-editor{animation:none}.lead-editor-fields input,.lead-editor-fields textarea,.lead-editor-fields select{transition:none}}

/* 线索审核确认：在真正剪切源表前给出清晰、可撤销的最后一步 */
dialog.dialog-lead-review{width:min(560px,calc(100vw - 24px));overflow:hidden;border-radius:22px;background:#fff}
.dialog-lead-review .dialog-head{align-items:flex-start;padding:22px 24px 16px;border-bottom:0;background:linear-gradient(145deg,#fff 0%,#f4f8ff 100%)}
.dialog-lead-review .dialog-head h2{margin:0;color:#10213b;font-size:23px}
.dialog-lead-review .dialog-kicker{color:#315b9b}
.lead-review-panel{padding:8px 24px 24px;text-align:center}
.lead-review-badge{display:grid;place-items:center;width:58px;height:58px;margin:4px auto 16px;border-radius:50%;background:linear-gradient(145deg,#e9f6ef,#d8f0e4);color:var(--ok);font-size:28px;font-weight:900;box-shadow:0 8px 22px rgba(14,122,82,.12)}
.lead-review-panel h3{margin:0 0 9px;color:#15253d;font-size:19px}
.lead-review-panel>p{max-width:440px;margin:0 auto;color:var(--muted);font-size:14px;line-height:1.7}
.lead-review-route{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-top:18px}
.lead-review-route span{padding:7px 10px;border:1px solid #dce5f1;border-radius:999px;background:#f7f9fc;color:#486079;font-size:12px}
.dialog-lead-review .dialog-actions{align-items:center;padding:14px 20px;background:#fff;border-top:1px solid #e2e8f0}
.dialog-lead-review #submit{background:linear-gradient(135deg,#0e7a52,#09613f);box-shadow:0 7px 16px rgba(14,122,82,.18)}
dialog[open].dialog-lead-review{animation:leadEditorIn .2s cubic-bezier(.2,.75,.25,1)}
@media(max-width:1100px){.two-even{grid-template-columns:1fr}}   /* 窗口不够宽时双卡上下堆叠，每卡全宽不挤压 */

/* ══════════ 今日行动 · 全交互体系（2026-09-12，v=020） ══════════
   规则：本页所有展示数据必须可点击——数字跳模块、清单行带专属操作、漏斗直达。 */
/* 快捷操作条：日期+待办总数 左，操作按钮 右（窄屏三铁律） */
.quickbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.quickbar .muted{flex:1 1 220px;min-width:0}
.quickbar>div{display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0}
.quickbar button{flex-shrink:0;white-space:nowrap}
/* 可点击指标卡：hover 浮起+描边，右上角箭头染色；r/w 警示色 */
.metric.link{cursor:pointer;position:relative;transition:transform .15s,box-shadow .15s,border-color .15s}
.metric.link:hover{transform:translateY(-2px);border-color:var(--navy);box-shadow:0 8px 22px rgba(11,36,82,.10)}
.metric.link .go{position:absolute;top:14px;right:16px;color:var(--line);font-style:normal;transition:color .15s}
.metric.link:hover .go{color:var(--navy)}
.metric.r b{color:#aa1830}
.metric.w b{color:var(--warn)}
/* 行动清单分组：组名+计数胶囊；行=描述+专属操作（窄屏三铁律） */
.todo-group{display:flex;align-items:center;gap:8px;margin:14px 0 2px;font-weight:800}
.todo-group:first-of-type{margin-top:0}
.tg-cnt{background:#eef2f7;color:#4e5c70;border-radius:20px;padding:2px 9px;font-size:12px;font-weight:700}
.todo-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.todo-row .td-desc{flex:1 1 200px;min-width:0}
.todo-row .row-actions{flex-shrink:0}
button.more{margin-top:6px;font-size:13px;padding:7px 10px}
/* 成交链路漏斗：每环一整行按钮，名称左/实时数据右/箭头 */
.funnel{display:flex;flex-direction:column;gap:2px}
.frow{display:flex;align-items:center;gap:10px;width:100%;background:#fff;color:var(--ink);border:1px solid var(--line);padding:11px 12px;font-weight:700;text-align:left}
.frow:hover{border-color:var(--navy);background:#f4f8ff}
.frow .fname{flex-shrink:0}
.frow .fval{flex:1 1 auto;min-width:0;color:var(--muted);font-weight:400;font-size:13px;text-align:right}
.frow i{color:var(--line);font-style:normal;flex-shrink:0}
.frow:hover i{color:var(--navy)}
.farrow{text-align:center;color:var(--line);font-size:12px;line-height:1;padding:1px 0}
/* 报价与特价：整行可点击统计行 */
.statline li{display:flex;justify-content:space-between;align-items:center;gap:10px;cursor:pointer;transition:background .15s}
.statline li:hover{background:#f4f8ff}
.statline .sval{color:var(--navy);font-weight:700;white-space:nowrap;flex-shrink:0}
/* 窄屏：指标卡 4 列降 2 列 */
@media(max-width:1100px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ══════════ 登录鉴权（2026-09-13 凭证体系改造；同日晚美化定版） ══════════ */
.auth-mask{position:fixed;inset:0;background:linear-gradient(135deg,#001c50 0%,#00286e 55%,#003c91 100%);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.auth-card{width:min(380px,92vw);background:#fff;border-radius:18px;padding:34px 32px 26px;box-shadow:0 24px 70px rgba(0,20,60,.35)}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.auth-brand-mark{width:42px;height:42px;border-radius:11px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700}
.auth-brand-name{font-size:15px;font-weight:700;letter-spacing:.16em;color:var(--navy)}
.auth-brand-sub{font-size:11px;color:var(--muted);margin-top:2px}
.auth-card h2{margin:0 0 6px;font-size:22px}
.auth-card .muted{font-size:12.5px;margin-bottom:20px}
.auth-card label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.auth-card input{width:100%;margin-bottom:14px;padding:10px 12px;border:1.5px solid var(--line);border-radius:9px;font-size:14px;transition:border-color .15s,box-shadow .15s}
.auth-card input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(0,40,110,.12)}
.auth-err{min-height:18px;font-size:12px;color:#aa1830;margin-bottom:10px}
.auth-card button{width:100%;padding:11px;font-size:14px;letter-spacing:.2em;background:linear-gradient(112deg,#001c50,#003c91);border:none;color:#fff;border-radius:9px;cursor:pointer;transition:transform .15s,box-shadow .15s}
.auth-card button:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,40,110,.28)}
.auth-card button:disabled{opacity:.6;cursor:default;transform:none;box-shadow:none}
.auth-foot{margin:16px 0 0;text-align:center;font-size:11px;color:var(--muted)}
#user-chip{display:inline-flex;align-items:center;gap:8px;margin-right:4px}

/* ══════════ 地图屏保（2026-09-13 用户拍板：5 分钟无活动 → 全屏纯地图） ══════════ */
body.screensaver{overflow:hidden;background:#f5f7fa}
body.screensaver header,body.screensaver nav#tabs{display:none}
body.screensaver #app{max-width:none;padding:0}
body.screensaver .bm-heading,body.screensaver .bm-filterbar,body.screensaver .bm-stats,
body.screensaver .bm-city-panel,body.screensaver .bm-workspace,body.screensaver .bm-regions,
body.screensaver .bm-footer,body.screensaver .bm-map-tools,body.screensaver .bm-map-panel>.evidence{display:none}
body.screensaver .bm-main{display:block;margin:0}
body.screensaver .bm-map-panel{margin:0;border:none;border-radius:0;box-shadow:none}
body.screensaver .bm-map-canvas{margin:0;border-radius:0}
body.screensaver .bm-svg{height:100vh;max-width:none}
body.screensaver .bm-map-legend{justify-content:center}

/* ══════════ 客户明细 · 一句话总结与客户画像（2026-09-12，v=023） ══════════ */
/* 备注列总结：单行省略，悬浮弹全文浮层，挪走即消失 */
.sum-cell{position:relative;max-width:220px}
.sum-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:13px}
.sum-pop{display:none;position:absolute;z-index:70;top:calc(100% - 2px);left:0;width:320px;max-width:76vw;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.6;box-shadow:0 8px 24px rgba(11,36,82,.12);white-space:pre-wrap;color:var(--ink)}
.sum-cell:hover .sum-pop{display:block}
/* 客户详情 · 客户画像（一句话总结）强调卡 */
.profile-sum{border-left:4px solid var(--navy);background:#f4f8ff}
.profile-sum p{margin:0;font-size:15px;line-height:1.7}
.profile-sum .evidence{margin-top:6px}
/* ── 数据底座大类目菜单（表头「数据底座 ▾」） ── */
.menu-wrap{position:relative;display:inline-block}
.menu{position:absolute;right:0;top:calc(100% + 6px);min-width:240px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(11,36,82,.18);padding:6px;z-index:60}
.menu button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border:none;background:none;border-radius:8px;text-align:left;cursor:pointer;color:var(--ink);font-size:15px}
.menu button:hover:not(:disabled){background:#eef3fb}
.menu button .desc{font-size:12px;color:var(--muted);font-weight:400}
.menu button:disabled{cursor:not-allowed;color:var(--muted)}
.menu button:disabled .desc{color:#b08800}
@media(max-width:800px){header{align-items:flex-start;flex-direction:column}.metrics,.two{grid-template-columns:1fr}.fields{grid-template-columns:1fr}main{padding:14px}.actions{width:100%;flex-wrap:wrap}table{min-width:760px}.table-wrap{overflow:auto}.card{padding:14px}}

/* ── 报价器专用（GPT 报价编辑器风格的右侧汇总栏） ── */
.q-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.42fr);gap:16px;align-items:start}
.q-sum{position:sticky;top:22px}
.q-sum .row{display:flex;justify-content:space-between;font-size:14px;padding:8px 0;border-bottom:1px dashed var(--line)}
.q-sum .row.big{font-size:18px;font-weight:800;color:var(--navy);border-bottom:none;padding-top:12px}
.profit-pos{color:var(--ok)} .profit-neg{color:#aa1830}
.verdict{margin-top:12px;padding:12px;border-radius:10px;font-size:14px;font-weight:700;text-align:center}
.verdict.ok{background:#e7f6ed;color:var(--ok)}
.verdict.no{background:#ffe8ec;color:#aa1830}
.q-items input{width:90px;padding:7px;border:1px solid #bfc9d8;border-radius:8px;font:inherit}
@media(max-width:800px){.q-layout{grid-template-columns:1fr}}

/* ── 线索详情页（kv 键值行） ── */
.kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:14px}
.kv:last-child{border-bottom:none}
.kv span{color:var(--muted);white-space:nowrap}
.kv b{font-weight:400;text-align:right;overflow-wrap:anywhere}

/* ══════════ 订单履约与回款（R05） ══════════ */
.ful-hero{background:linear-gradient(135deg,#fff 0%,#f4f8ff 58%,#e9f1ff 100%);border-color:#cbd9f1;position:relative;overflow:hidden}
.ful-hero:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-70px;top:-95px;background:rgba(0,40,110,.07);pointer-events:none}
.ful-hero .section-head{position:relative;z-index:1;margin:0}
.eyebrow{display:block;color:var(--navy);font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;margin-bottom:5px}
.ful-hero h2{font-size:22px;margin:0 0 6px}
.ful-kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin:16px 0}
.ful-kpis .metric{min-height:116px}
.ful-kpis .metric:nth-child(3) b,.danger-text{color:#aa1830}
.ful-kpis .metric:nth-child(5) b{color:var(--warn)}
.ful-controls{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:2px 0 16px}
.ful-inner-tabs{margin:0;flex:1 1 480px;min-width:0}
.ful-filter{display:flex;gap:8px;flex:1 1 360px;justify-content:flex-end;flex-wrap:wrap}
.ful-filter input,.ful-filter select{border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:9px 11px;font:inherit;font-size:13px}
.ful-filter input{min-width:220px;flex:1 1 220px}
.ful-progress{height:6px;background:#e8edf4;border-radius:99px;margin-top:7px;overflow:hidden;min-width:92px}
.ful-progress i{display:block;height:100%;background:linear-gradient(90deg,#00286e,#3f77c9);border-radius:inherit}
.ful-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.ful-detail-head h3{font-size:21px;margin:0 0 5px}
.ful-detail-metrics{margin:10px 0 14px}
.ful-detail-metrics .card{box-shadow:none;background:#f8faff;padding:13px}
.ful-detail-metrics .metric b{font-size:22px}
.ful-detail-actions{justify-content:flex-end;margin-top:16px}
.ful-timeline{list-style:none;padding:0 0 0 8px;margin:0}
.ful-timeline-row{position:relative;display:grid;grid-template-columns:16px minmax(0,1fr);gap:9px;padding:0 0 18px}
.ful-timeline-row:before{content:"";position:absolute;left:5px;top:9px;bottom:-3px;width:2px;background:#dce5f3}
.ful-timeline-row:last-child:before{display:none}
.ful-dot{width:12px;height:12px;border:3px solid #8fa9cf;border-radius:50%;background:#fff;margin-top:4px;position:relative;z-index:1}
.ful-timeline-row:first-child .ful-dot{border-color:var(--navy)}
@media(max-width:1200px){.ful-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){
  .ful-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ful-kpis .metric:last-child{grid-column:1/-1}
  .ful-inner-tabs{gap:12px;overflow:auto}
  .ful-filter{justify-content:stretch}
  .ful-filter input,.ful-filter select{width:100%}
  .ful-hero h2{font-size:19px}
  .ful-detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ══════════ 今日 AI 销售指挥台（R06） ══════════ */
.command-hero{background:linear-gradient(145deg,#fdfefe 0%,#f2f6fd 54%,#e8f0ff 100%);border:1px solid #c8d6ee;border-radius:18px;padding:22px;box-shadow:0 10px 32px rgba(11,36,82,.07);margin-bottom:18px;overflow:hidden;position:relative}
.command-hero:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-110px;top:-150px;background:radial-gradient(circle,rgba(0,61,145,.13),rgba(0,61,145,0));pointer-events:none}
.command-top{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;position:relative;z-index:1}
.command-top>div:first-child{flex:1 1 520px;min-width:0}
.command-top h2{font-size:28px;line-height:1.2;margin:0 0 8px;color:#071b3d;letter-spacing:-.02em}
.command-top p{margin:0;color:var(--muted);line-height:1.65}
.command-status{display:flex;flex-direction:column;gap:5px;align-items:flex-end;background:rgba(255,255,255,.8);border:1px solid #d7e1f1;border-radius:12px;padding:11px 13px;flex-shrink:0}
.command-status b{font-size:13px;color:var(--navy)}
.command-status small{font-size:12px;color:var(--muted)}
.command-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 12px;padding-top:16px;border-top:1px solid rgba(120,145,180,.24);position:relative;z-index:1}
.command-counts{display:flex;gap:7px;flex-wrap:wrap}
.command-counts button{background:rgba(255,255,255,.86);color:var(--muted);border:1px solid #cfdaea;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;white-space:nowrap}
.command-counts button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.command-capacity{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;white-space:nowrap}
.command-capacity select{border:1px solid #cbd7e9;background:#fff;color:var(--ink);border-radius:9px;padding:7px 9px;font:inherit}
.command-notice{position:relative;z-index:1;background:#fff8e8;border-left:4px solid #d48b18;color:#73551e;border-radius:0 9px 9px 0;padding:9px 12px;font-size:13px;line-height:1.55;margin-bottom:14px}
.command-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;position:relative;z-index:1}
.command-card{background:rgba(255,255,255,.96);border:1px solid #d7e0ec;border-top:4px solid #8ba1bf;border-radius:14px;padding:16px;min-width:0;box-shadow:0 4px 16px rgba(20,45,85,.045)}
.command-card.grade-A{border-top-color:#b6263d}.command-card.grade-B{border-top-color:#cf8219}.command-card.grade-C{border-top-color:#3e78c5}
.command-card-head,.command-person,.command-method,.command-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.command-rank{font-size:12px;color:#96a3b5;font-variant-numeric:tabular-nums;margin-right:8px}
.command-grade{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;background:#eaf0f8;color:var(--navy);font-size:13px;font-weight:900}
.grade-A .command-grade{background:#ffe9ed;color:#a41831}.grade-B .command-grade{background:#fff0d8;color:#9a5d0a}.grade-C .command-grade{background:#e8f1ff;color:#1857aa}
.command-source{font-size:11px;color:var(--muted)}
.command-person{align-items:flex-start;margin:12px 0}
.command-person h3{font-size:19px;margin:0 0 4px;color:#13233c}
.command-person p{font-size:12px;color:var(--muted);margin:0}
.command-why{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;background:#f5f7fb;border-radius:9px;padding:9px 10px;font-size:13px;line-height:1.5}
.command-why b{color:var(--navy);white-space:nowrap}.command-why span{color:#46566b;min-width:0}
.command-objective{margin:12px 0;display:grid;gap:4px}
.command-objective small,.command-resources small,.command-script small,.command-detail-grid small{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.04em}
.command-objective strong{font-size:15px;line-height:1.5;color:#17263d}
.command-method{font-size:12px;padding-bottom:10px;border-bottom:1px dashed #dbe2ec}.command-method span{color:var(--muted)}.command-method b{font-weight:700;color:#384a62;text-align:right}
.command-card blockquote{margin:12px 0;background:#f4f8ff;color:#203c63;border-left:3px solid #3c73bd;padding:10px 11px;border-radius:0 8px 8px 0;font-size:13px;line-height:1.65}
.command-resources{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 13px}
.command-resources>div{display:flex;align-items:center;align-content:flex-start;gap:5px;flex-wrap:wrap;min-width:0}
.command-resources small{width:100%}
.command-chip{display:inline-block;background:#edf3fb;color:#395577;border-radius:999px;padding:3px 7px;font-size:11px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.command-chip.missing{background:#fff0e1;color:#965a18}
.command-actions{justify-content:flex-start}.command-actions button{font-size:12px;padding:7px 9px;white-space:nowrap;flex-shrink:0}
.command-detail{padding:18px 20px;max-height:65vh;overflow:auto}
.command-detail-title{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:14px}
.command-detail-title>div{display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center}.command-detail-title h3{font-size:22px;margin:0}.command-detail-title p{grid-column:2;margin:2px 0 0;color:var(--muted)}
.command-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.command-detail-grid>div,.command-script{background:#f6f8fb;border-radius:10px;padding:11px}.command-detail-grid p,.command-script p{margin:5px 0 0;line-height:1.6}
@media(max-width:1050px){.command-grid{grid-template-columns:1fr}.command-top h2{font-size:24px}}
@media(max-width:600px){
  .command-hero{padding:15px;border-radius:14px;margin-left:-4px;margin-right:-4px}
  .command-top h2{font-size:22px}.command-status{align-items:flex-start;width:100%}
  .command-bar{align-items:stretch}.command-counts{display:grid;grid-template-columns:1fr 1fr;width:100%}.command-counts button{width:100%;padding:8px 7px}
  .command-capacity{justify-content:space-between;width:100%}.command-capacity select{min-width:110px}
  .command-card{padding:13px}.command-person h3{font-size:18px}.command-why{grid-template-columns:1fr;gap:3px}
  .command-resources,.command-detail-grid{grid-template-columns:1fr}.command-actions button{flex:1 1 auto}
  .quickbar>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .quickbar>div button{width:100%;min-width:0}
}

@media(max-width:640px){
  dialog.dialog-lead-editor{width:100vw;max-width:none;height:min(94dvh,860px);max-height:94dvh;margin:auto 0 0;border-radius:22px 22px 0 0}
  .dialog-lead-editor #form{height:100%;max-height:none}
  .dialog-lead-editor .dialog-head{padding:19px 17px 13px}
  .dialog-lead-editor .dialog-head h2{font-size:20px}
  .dialog-lead-editor .dialog-subtitle{font-size:12px}
  .dialog-lead-editor .dialog-flow{padding:0 17px 14px}
  .dialog-lead-editor .lead-editor-fields{padding:13px 12px 18px}
  .field-section{padding:15px 14px;border-radius:14px}
  .field-section-head{margin-bottom:13px}
  .field-grid{grid-template-columns:1fr;gap:12px}
  .dialog-lead-editor .dialog-actions{padding:12px;gap:10px}
  .dialog-lead-editor .dialog-action-note{display:none}
  .dialog-lead-editor .dialog-buttons{width:100%}
  .dialog-lead-editor .dialog-buttons button{flex:1;min-height:44px}
  dialog.dialog-lead-review{width:calc(100vw - 20px);border-radius:18px}
  .dialog-lead-review .dialog-head{padding:19px 18px 13px}
  .lead-review-panel{padding:6px 18px 21px}
  .dialog-lead-review .dialog-actions{padding:12px}
  .dialog-lead-review .dialog-action-note{display:none}
  .dialog-lead-review .dialog-buttons{width:100%}
  .dialog-lead-review .dialog-buttons button{flex:1;min-height:44px}
}
