/* components.css — 业务组件：列表行、运单卡片、流程时间轴、操作日志、箱表、附件占位 */
.list-row{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-bottom:1px solid var(--line-2);font-size:var(--fs-md);cursor:pointer}
.list-row:last-child{border-bottom:0}
.list-row:hover .txt b{color:var(--blue)}
.list-row .mark{width:6px;height:6px;border-radius:50%;background:var(--warn);margin-top:6px;flex:none}
.list-row .mark.ok{background:var(--blue)}
.list-row .txt{flex:1;min-width:0}
.list-row .txt b{font-weight:500;display:block}
.list-row .txt small{display:block;color:var(--t3);font-size:var(--fs-sm);line-height:1.6}
.list-row .mono{font-variant-numeric:tabular-nums;color:var(--t2);font-size:var(--fs-sm);white-space:nowrap;flex:none}

/* ---------- 调度泳道卡片 ---------- */
.ord{background:#fff;border:1px solid var(--line);border-radius:4px;padding:9px 10px;margin-bottom:7px;border-left:3px solid var(--blue);cursor:pointer;transition:.15s}
.ord:hover{border-color:var(--blue-b);border-left-color:var(--blue);box-shadow:0 2px 8px rgba(63,118,244,.08)}
.ord.w{border-left-color:var(--warn)}
.ord.sel{outline:2px solid var(--blue);outline-offset:-2px}
.ord .a{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--t3);font-variant-numeric:tabular-nums}
.ord .a .id{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ord .b{font-size:var(--fs-md);font-weight:600;margin:4px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ord .c{font-size:var(--fs-sm);color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ord .d{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:7px;font-size:var(--fs-sm);color:var(--t2)}
.ord .d>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ord .acts{display:flex;gap:6px;margin-top:7px;padding-top:6px;border-top:1px dashed var(--line)}
/* 勾选态：左侧竖条转蓝 + 浅蓝底，和仅 hover 明显区分 */
.ord.picked{border-left-color:var(--blue);background:var(--blue-xl);border-color:var(--blue-b)}
.ord .a .l{display:flex;align-items:center;gap:6px;min-width:0}
.ord .a .l input[type=checkbox]{width:13px;height:13px;margin:0;flex:none;cursor:pointer}
.ord .a .l .cb-ph{width:13px;height:13px;flex:none}
/* 卡片内操作按钮加大点击区，降低"点歪了跳详情"的概率 */
.ord .acts .link{padding:2px 7px;margin:-2px 0;border-radius:3px}
.ord .acts .link:hover{background:var(--blue-l);text-decoration:none}
/* 派单工具条的已选计数 */
.batch-pick{font-size:var(--fs-sm);color:var(--t3);white-space:nowrap}
.batch-pick b{color:var(--blue-d);font-variant-numeric:tabular-nums}
/* ---------- 运单锁定：单证冻结态的标记 ---------- */
/* 详情顶栏冻结标记（不是按钮，点击无效，只说明状态） */
.lock-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-sm);line-height:1.6;color:var(--warn);background:var(--warnbg);border-radius:3px;padding:1px 8px;white-space:nowrap}
.lock-badge .i,.badge .i{width:11px;height:11px}
/* 调度卡片：锁定单降饱和、左侧竖条转灰，勾选框位置留空 */
.ord.lk{background:#FAFBFC;border-left-color:#C7D0DC}
.ord.lk:hover{border-left-color:#C7D0DC}
.ord.lk .b{color:var(--t2)}
/* 抽屉页签禁用（锁定单不能进整单编辑） */
.dw-tabs .tb.off{opacity:.45;cursor:not-allowed}
.dw-tabs .tb.off:hover{background:transparent;color:var(--t2)}
/* 批量派单弹窗：整行可点，选中行浅蓝底 */
.tbl tbody tr.on{background:var(--blue-xl)}
.tbl tbody tr.on>td{background:var(--blue-xl)}
.mini{display:flex;gap:2px;flex:none}
.mini i{width:9px;height:4px;border-radius:1px;background:#E6ECF2}
.mini i.f{background:var(--blue)}
.mini i.a{background:var(--warn)}

/* ---------- 竖向流程时间轴 ---------- */
.flow-h{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:4px;padding:8px 11px;margin-bottom:9px}
.flow-h .sq{width:10px;height:10px;background:var(--blue);border-radius:2px;flex:none}
.flow-h h4{font-size:var(--fs-md);color:var(--blue);font-weight:600}
.flow-h .sp{flex:1}
.flow{position:relative;padding-left:23px}
.flow::before{content:"";position:absolute;left:8px;top:12px;bottom:16px;width:2px;background:var(--blue-line)}
.node{position:relative;margin-bottom:8px}
.node .dot{position:absolute;left:-23px;top:9px;width:18px;height:18px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;z-index:1;box-shadow:0 0 0 3px var(--bg)}
.node .dot .i{width:11px;height:11px}
.node.todo .dot{background:#fff;border:2px solid #CBD8E9;box-shadow:0 0 0 3px var(--bg)}
.node .card{background:var(--soft);border:1px solid #EDF1F6;border-radius:4px;padding:8px 10px}
.node .nh{display:flex;align-items:center;gap:6px;margin-bottom:7px;flex-wrap:wrap}
.node .nh b{font-size:var(--fs-md);font-weight:600}
.node .nh .sp{flex:1;min-width:4px}
.node .nh .link{font-size:var(--fs-sm)}
.node .nf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 10px}
.node .nf.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.node .nf label{display:block;font-size:var(--fs-xs);color:var(--t3);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.node .nf span{display:block;font-size:var(--fs-sm);color:var(--t1);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.node .nf span.e{color:var(--t3)}
.node .nf .fld{height:30px;min-height:30px;font-size:var(--fs-sm)}
.node .card.editing{background:var(--blue-xl);border-color:#C9DBFF}
.node .card.editing .nh{background:var(--blue-l);margin:-8px -10px 8px;padding:6px 10px;border-radius:3px 3px 0 0}
.node .card.editing .act{display:flex;justify-content:flex-end;gap:7px;margin-top:9px;padding-top:8px;border-top:1px solid #D5E3FF}
.node .fold-body.collapsed{display:none}

/* ---------- 操作日志 ---------- */
.log{position:relative;background:#fff;border:1px solid var(--line);border-radius:4px;padding:11px 9px 8px 21px}
.log::before{content:"";position:absolute;left:11px;top:18px;bottom:16px;width:1px;background:var(--blue-line)}
.log h5{font-size:var(--fs-md);color:var(--t2);margin:0 0 11px -8px;font-weight:600;display:flex;align-items:center;gap:5px}
.log .li{position:relative;margin:0 0 11px;font-size:var(--fs-xs)}
.log .li::before{content:"";position:absolute;left:-14px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 2px #fff}
.log .li.warn::before{background:var(--warn)}
.log .li .tm{display:block;color:var(--t3);font-variant-numeric:tabular-nums;font-size:var(--fs-xs)}
.log .li .ev{display:block;color:var(--t1);font-size:var(--fs-sm);line-height:1.5;margin-top:1px}
.log .li .meta{display:block;color:var(--t3);font-size:var(--fs-xs);line-height:1.5}
.log .li .delta{display:block;color:var(--blue-d);font-size:var(--fs-xs);line-height:1.55;word-break:break-all}
.log-more{font-size:var(--fs-sm);color:var(--blue-d);cursor:pointer;text-align:center;padding:3px 0}

/* ---------- 箱封明细表 ---------- */
.boxtbl{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.boxtbl th{background:var(--soft);color:var(--t2);font-weight:400;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.boxtbl td{padding:5px 8px;border-bottom:1px solid var(--line-2);color:var(--t1)}
.boxtbl td .fld{height:30px;min-height:30px;font-size:var(--fs-sm)}
.boxtbl .add{color:var(--blue-d);font-size:var(--fs-sm);padding:8px;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.boxtbl .add:hover{text-decoration:underline}
.boxtbl .sum{background:var(--blue-xl);font-weight:500;color:var(--blue)}
.tbl td.bxcell{padding-top:5px;padding-bottom:5px;line-height:1.45;white-space:nowrap}
.tbl td.bxcell .mono{font-size:var(--fs-xs);color:var(--t2)}

/* ---------- 货物信息多条记录 ---------- */
/* 表单侧：每条记录两行（件毛体/货名 + 装箱要求/拖柜备注） */
.goodstbl .g-sub td{background:var(--soft);padding:6px 8px 8px}
.goodstbl .g-lab{display:inline-block;width:64px;font-size:var(--fs-xs);color:var(--t3);vertical-align:middle}
.goodstbl .g-sub .fld{display:inline-block;width:calc(100% - 72px);height:28px;min-height:28px;font-size:var(--fs-sm)}
/* 详情侧：只读展示，版式与截图一致（4 列 + 2 列通栏） */
.gi-views{padding:0 13px 13px}
.gi-view{border:1px solid var(--line);border-radius:4px;padding:10px 12px 12px;margin-top:10px}
.gi-view .gi-t{font-size:var(--fs-xs);color:var(--t3);margin-bottom:8px}
.gv-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px}
.gv-grid.gv2{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}

/* ---------- 附件占位 ---------- */
.photos{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px}
.photo{width:60px;height:48px;border:1px dashed var(--blue-b);border-radius:3px;background:var(--blue-xl);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--blue);font-size:var(--fs-xs);cursor:pointer}
.photo .i{width:14px;height:14px}
.photo:hover{background:var(--blue-l)}
.attach{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;border-radius:3px;padding:3px 8px;font-size:var(--fs-sm);color:var(--t2);cursor:pointer}
.attach:hover{border-color:var(--blue-b);color:var(--blue)}
.attach .i{color:var(--blue);width:11px;height:11px}

/* ---------- 箱行字段内联上传按钮（新建运单 · 箱封明细列） ---------- */
.inwrap{display:flex;align-items:center;gap:4px;min-width:0}
.inwrap .fld{flex:1;min-width:0}
.upbtn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--t3);cursor:pointer;transition:.12s}
.upbtn .i{width:13px;height:13px}
.upbtn:hover{border-color:var(--blue-b);color:var(--blue);background:var(--blue-xl)}
.upbtn.ok{border-color:var(--st-done-bd);color:var(--st-done-f);background:var(--st-done-bg)}

/* ---------- 档案证照 ---------- */
.cert{display:flex;flex-direction:column;gap:5px}
.cert .ci{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:var(--fs-sm);color:var(--t2);border-bottom:1px dashed var(--line-2);padding-bottom:4px}
.cert .ci:last-child{border-bottom:0}
.cert .ci .d{font-variant-numeric:tabular-nums;white-space:nowrap}
.cert .ci .d.soon{color:var(--amber);font-weight:500}
.cert .ci .d.expired{color:var(--warn);font-weight:500}
.sumbar{display:flex;gap:9px;margin-bottom:11px;flex-wrap:wrap}
.sumbar .sb{background:#fff;border:1px solid var(--line);border-radius:4px;padding:7px 12px;font-size:var(--fs-sm);color:var(--t2);display:flex;align-items:center;gap:6px}
.sumbar .sb b{font-size:18px;color:var(--t1);font-variant-numeric:tabular-nums}
.sumbar .sb.alert b{color:var(--warn)}
.sumbar .sb.soon b{color:var(--amber)}

/* ---------- 状态点 / 进度条 ---------- */
.stage-track{display:flex;align-items:center;gap:2px}
.stage-track i{width:11px;height:5px;border-radius:1px;background:#E6ECF2;flex:none}
.stage-track i.f{background:var(--blue)}
.stage-track i.a{background:var(--warn)}
.dot-state{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:1px;background:var(--blue)}
.dot-state.gray{background:#B9C5D3}
.dot-state.warn{background:var(--warn)}

/* ---------- 详情摘要条 ---------- */
.sum-strip{display:flex;gap:0;background:#fff;border:1px solid var(--line);border-radius:4px;margin-bottom:10px;overflow:hidden}
.sum-strip .cell{padding:9px 14px;border-right:1px solid var(--line);min-width:0;flex:1}
.sum-strip .cell:last-child{border-right:0}
.sum-strip .cell label{display:block;font-size:var(--fs-xs);color:var(--t3);margin-bottom:2px}
.sum-strip .cell span{display:block;font-size:var(--fs-md);color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}

/* ---------- 行内提示 / 校对标记 ---------- */
.check-flag{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-xs);color:var(--warn);background:var(--warnbg);border-radius:2px;padding:0 5px;line-height:1.7}
.check-flag.ok{color:var(--blue);background:var(--blue-l)}
.kv{display:flex;gap:8px;font-size:var(--fs-sm);color:var(--t2);padding:4px 0}
.kv b{color:var(--t1);font-weight:500;min-width:74px;flex:none}
.diff{background:var(--blue-xl);border:1px solid var(--blue-line);border-radius:3px;padding:8px 10px;font-size:var(--fs-sm);line-height:1.8;color:var(--t2)}
.diff .old{color:var(--t3);text-decoration:line-through}
.diff .new{color:var(--blue);font-weight:500}

/* ---------- 档案新增 / 编辑：可搜索下拉 ---------- */
.picker{position:relative}
.picker-inp{width:100%;min-height:34px;height:34px;border:1px solid var(--line);border-radius:3px;padding:0 24px 0 8px;font-size:var(--fs-md);color:var(--t1);background:#fff;display:flex;align-items:center;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.15s}
.picker-inp:hover{border-color:var(--blue-b)}
.picker-inp.open{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-l)}
.picker-inp.ph{color:var(--t4)}
.picker-inp .arw{position:absolute;right:8px;top:50%;width:7px;height:7px;margin-top:-4px;border-right:1.4px solid var(--t3);border-bottom:1.4px solid var(--t3);transform:rotate(45deg);pointer-events:none}
.picker-inp.open .arw{border-color:var(--blue);transform:rotate(-135deg);margin-top:-1px}
/* 浮层在弹窗滚动区内以文档流展开，避免被 modal-b 的 overflow 裁剪 */
.picker-pop{margin-top:4px;background:#fff;border:1px solid var(--blue-b);border-radius:4px;box-shadow:0 4px 18px rgba(14,63,140,.10);overflow:hidden}
.picker-sr{padding:6px 8px;border-bottom:1px solid var(--line-2)}
.picker-sr .fld{height:30px;min-height:30px;font-size:var(--fs-sm)}
.picker-list{max-height:186px;overflow:auto;padding:2px 0}
.picker-item{display:flex;align-items:center;gap:7px;padding:7px 9px;font-size:var(--fs-sm);cursor:pointer;color:var(--t1)}
.picker-item:hover{background:var(--blue-xl)}
.picker-item.on{background:var(--blue-l)}
.picker-item .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picker-item .mt{color:var(--t3);font-size:var(--fs-xs);white-space:nowrap;flex:none}
.picker-item .ck{color:var(--blue);font-size:var(--fs-xs);width:11px;flex:none}
.picker-item.dis{opacity:.5;cursor:not-allowed}
.picker-add{display:flex;align-items:center;gap:6px;padding:8px 9px;border-top:1px solid var(--line);background:var(--blue-xl);font-size:var(--fs-sm);color:var(--blue-d);cursor:pointer}
.picker-add:hover{background:var(--blue-l)}
.picker-add .hint{margin-left:auto;color:var(--t3);font-size:var(--fs-xs)}
.picker-none{padding:15px 9px;text-align:center;color:var(--t3);font-size:var(--fs-sm)}

/* ---------- 档案新增 / 编辑：内联新建面板 ---------- */
.inline-box{border:1px solid var(--blue-b);border-radius:4px;background:var(--blue-xl);overflow:hidden;margin-top:8px}
.inline-h{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--blue-l);border-bottom:1px solid var(--blue-line);font-size:var(--fs-md);font-weight:600;color:var(--t1)}
.inline-h .sub{font-size:var(--fs-xs);color:var(--t3);font-weight:400}
.inline-h .rt{margin-left:auto;font-size:var(--fs-xs);color:var(--blue-d);cursor:pointer;font-weight:400}
.inline-h .rt:hover{text-decoration:underline}
.inline-b{padding:10px}
.inline-f{display:flex;align-items:center;gap:7px;padding-top:9px;margin-top:10px;border-top:1px solid var(--blue-line)}
.inline-f .hint{font-size:var(--fs-xs);color:var(--t2)}

/* ---------- 分段选择（性质 自有/外派） ---------- */
.seg{display:flex;border:1px solid var(--line);border-radius:3px;height:34px;overflow:hidden;background:#fff}
.seg>span{flex:1;display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);color:var(--t2);cursor:pointer;border-right:1px solid var(--line);transition:.12s}
.seg>span:last-child{border-right:0}
.seg>span:hover{background:var(--blue-xl);color:var(--blue)}
.seg>span.on{background:var(--blue);color:#fff}

/* ---------- 档案履历 ---------- */
.hist{display:flex;flex-direction:column;gap:7px;max-height:210px;overflow:auto}
.hist .hi{border-left:2px solid var(--blue-line);padding:1px 0 1px 9px;font-size:var(--fs-xs);color:var(--t2);line-height:1.6}
.hist .hi b{color:var(--t1);font-weight:500}
.hist .hi .dt{color:var(--t3);font-variant-numeric:tabular-nums;margin-left:5px}
.hist .hi .df{display:block;color:var(--blue-d);margin-top:1px;word-break:break-all}
.hist .hi .old{color:var(--t3);text-decoration:line-through}

/* ---------- 列表新增行高亮 ---------- */
@keyframes rowin{0%{background:var(--blue-l)}100%{background:transparent}}
.tbl tbody tr.tr-new td{animation:rowin 2.6s ease-out}
.tbl tbody tr.tr-off td{color:var(--t3)}
.tbl tbody tr.tr-off td b{color:var(--t3);font-weight:400}

/* ---------- 档案：状态三段筛选 ---------- */
.stseg{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:3px;padding:2px;background:var(--soft);height:32px;flex:none}
.stseg .st{display:inline-flex;align-items:baseline;gap:5px;height:26px;padding:3.5px 9px 0;border-radius:2px;font-size:var(--fs-sm);color:var(--t2);cursor:pointer;white-space:nowrap;transition:.12s}
/* 未选中：数字用该状态色，文字中性；选中：整段填充该状态色 */
.stseg .st:hover{color:var(--tone-f,var(--blue))}
.stseg .st.on{background:var(--tone-bg,#fff);color:var(--tone-f,var(--blue-d));font-weight:500;box-shadow:0 0 0 1px var(--tone-bd,var(--blue-b)) inset}
.stseg .st .n{font-size:var(--fs-xs);color:var(--tone-f,var(--t4));font-variant-numeric:tabular-nums;font-weight:500}
.stseg .st.on .n{color:inherit}
.stseg .st.zero{opacity:.45;cursor:not-allowed}
/* 放大版（运单管理首行主筛选）：整体加高、字号升档；状态多到超出时横向滚动，不折行 */
.stseg.lg{height:38px;padding:3px;border-radius:4px;max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.stseg.lg::-webkit-scrollbar{display:none}
.stseg.lg .st{height:30px;padding:3.75px 13px 0;font-size:var(--fs-lg);gap:7px;border-radius:3px}
.stseg.lg .st .n{font-size:var(--fs-md)}

/* ---------- 档案：列表类型徽标（按类型配色，--tc / --tc-bg 由行内样式注入） ---------- */
.kg{display:inline-block;border-radius:2px;padding:0 5px;font-size:var(--fs-xs);background:var(--tc-bg,var(--blue-l));color:var(--tc,var(--blue-d));line-height:1.8;white-space:nowrap;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tc,var(--blue)) 14%,transparent)}
.kg.off{background:var(--soft);color:var(--t3);box-shadow:none}

/* ---------- 档案：新增弹窗顶部类型卡片 ---------- */
.kcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:11px}
.kcard{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:4px;padding:8px 10px;background:#fff;cursor:pointer;transition:.12s}
.kcard:hover{border-color:var(--blue-b);background:var(--blue-xl)}
.kcard .ki{width:26px;height:26px;border-radius:4px;background:var(--soft);color:var(--t2);display:flex;align-items:center;justify-content:center;flex:none}
.kcard .ki svg{width:13px;height:13px}
.kcard .kt{font-size:var(--fs-md);color:var(--t1);font-weight:500;line-height:1.3}
.kcard .kc{font-size:var(--fs-xs);color:var(--t4);font-variant-numeric:tabular-nums}
.kcard.on{border-color:var(--blue);background:var(--blue-l);box-shadow:0 0 0 1px var(--blue) inset}
.kcard.on .ki{background:var(--blue);color:#fff}
.kcard.on .kt{color:var(--blue-d)}
.kcard.on .kc{color:var(--blue-d)}
.kcard.lock{cursor:default}
.kcard.lock:hover{border-color:var(--line);background:#fff}
.kcard.lock.on:hover{border-color:var(--blue);background:var(--blue-l)}

/* ---------- 档案表单：类型切换条（车务资料新增时） ---------- */
.modal.arch-modal{width:min(1140px,94vw)}
.arch-modal .modal-b{max-height:70vh;padding:16px 18px}
.kbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
.kbar .kb-label{font-size:var(--fs-sm);color:var(--t3)}
.kb-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;
  padding:5px 14px;font-size:var(--fs-sm);color:var(--t2);background:#fff;cursor:pointer;transition:.12s;user-select:none}
.kb-pill .i{width:13px;height:13px}
.kb-pill:hover{border-color:var(--tc,var(--blue-b));color:var(--tc,var(--blue))}
.kb-pill.on{background:var(--tc,var(--blue));border-color:var(--tc,var(--blue));color:#fff}

/* ---------- 档案表单：所属地区 / 地点 快速新增 ---------- */
.geo-line{display:flex;align-items:center;gap:6px}
.geo-line .combo{flex:1;min-width:0;display:flex}
/* 关联车辆行：选择器撑满，右侧 + 新建按钮 */
.vp-line .vp{flex:1;min-width:0}
.vp-line .vp .vp-ctl{width:100%}
.geo-line .combo .combo-in{flex:1;width:100%;min-width:0;height:34px;min-height:34px;
  padding:0 24px 0 8px;font-size:var(--fs-md);color:var(--t1)}
.geo-add{flex:none;width:34px;height:34px;border:1px solid var(--line);border-radius:3px;background:#fff;
  color:var(--t2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.12s}
.geo-add .i{width:13px;height:13px}
.geo-add:hover{border-color:var(--blue-b);color:var(--blue);background:var(--blue-xl)}
/* 悬浮弹层：不占表单高度，fixed 跟随选择框 */
[data-geo-panel],[data-co-panel]{position:fixed;z-index:70;width:400px;max-width:calc(100vw - 24px);margin-top:0;
  box-shadow:0 10px 28px rgba(15,43,76,.18)}

/* ---------- 客户表单：左右栏（左=客户信息，右=关联公司信息） ---------- */
.cust-cols{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:20px;align-items:start}
.cust-r{border:1px solid var(--line);border-radius:4px;background:var(--soft);padding:16px}
.cust-co-h{display:flex;align-items:baseline;gap:7px;font-size:var(--fs-md);font-weight:600;margin-bottom:12px}
.cust-co-h .sub{font-size:var(--fs-xs);color:var(--t3);font-weight:400}
.cust-co-line{margin-bottom:12px}
.cust-r .field-grid{gap:12px 14px}
@media(max-width:1150px){.cust-cols{grid-template-columns:1fr}}
.geo-persist{display:flex;align-items:center;gap:6px;margin-top:9px;font-size:var(--fs-sm);color:var(--t2);cursor:pointer}
.geo-persist input{accent-color:var(--blue)}
[data-geo-warn]:not(.hide){color:var(--warn);font-size:var(--fs-sm);margin-top:8px}

/* ---------- 车队表单：左栏关联车辆列表（只读） ---------- */
.fv-list{border:1px solid var(--line);border-radius:4px;background:#fff;overflow:hidden;margin-top:2px}
.fv-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}
.fv-row:last-child{border-bottom:none}
.fv-row:hover{background:var(--soft)}
.fv-plate{font-weight:600;color:var(--t1);min-width:92px}
.fv-meta{color:var(--t3);font-size:var(--fs-xs)}
.fv-empty{padding:10px 12px;border:1px dashed var(--line);border-radius:4px;color:var(--t3);font-size:var(--fs-sm);line-height:1.6}

/* ---------- 档案：切类型内联提示条 ---------- */
.switch-tip{display:flex;align-items:center;gap:7px;margin:-3px 0 11px;padding:7px 10px;border:1px solid #F3D2A8;background:var(--amberbg);border-radius:4px;font-size:var(--fs-sm);color:var(--amber)}
.switch-tip svg{flex:none;color:var(--amber)}
.switch-tip .link{color:var(--t2);cursor:pointer}
.switch-tip .link:hover{color:var(--blue)}

/* ---------- 档案：类型卡片支持自定义类型 ---------- */
.kcards{grid-template-columns:repeat(auto-fit,minmax(142px,1fr))}
.kcard.kadd{border:1px dashed var(--blue-b);background:var(--blue-xl);color:var(--blue-d);justify-content:center}
.kcard.kadd:hover{background:var(--blue-l);border-color:var(--blue)}
.kcard.kadd .ki{background:#fff;color:var(--blue)}
.kcard.kadd .kt{color:var(--blue-d);font-weight:500}
.kcard.kadd .kc{color:var(--blue)}
/* 类型卡片图标跟随类型色 */
.kcard .ki{background:var(--tc-bg,var(--soft));color:var(--tc,var(--t2))}
.kcard.on .ki{background:var(--tc,var(--blue));color:#fff}
.kcard.on{border-color:var(--tc,var(--blue));background:var(--tc-bg,var(--blue-l));box-shadow:0 0 0 1px var(--tc,var(--blue)) inset}
.kcard.on .kt,.kcard.on .kc{color:var(--tc,var(--blue-d))}

/* ---------- 档案：自定义类型内联面板 ---------- */
.type-hint{display:flex;align-items:center;gap:6px;margin-top:10px;padding:7px 9px;background:#fff;border:1px dashed var(--blue-b);border-radius:3px;font-size:var(--fs-sm);color:var(--t2)}
.type-hint svg{color:var(--blue);flex:none}

/* ---------- 档案：表格选择列 ---------- */
.tbl th.selc,.tbl td.selc{width:32px;padding-right:0;text-align:center}
.tbl td.selc input,.tbl th.selc input{width:13px;height:13px;accent-color:var(--blue);cursor:pointer;vertical-align:-2px}
.tbl tbody tr:has(input[data-sel]:checked){background:var(--blue-xl)}

/* ---------- 档案：批量操作条 ---------- */
.batchbar{display:flex;align-items:center;gap:8px;margin-bottom:9px;padding:6px 10px;background:var(--blue-l);border:1px solid var(--blue-b);border-radius:3px;font-size:var(--fs-md);color:var(--blue-d);flex-wrap:wrap}
.batchbar .n{display:inline-flex;align-items:center;gap:5px;padding-right:8px;border-right:1px solid var(--blue-b)}
.batchbar .n b{font-variant-numeric:tabular-nums}
.batchbar .btn{background:#fff}
.batchbar .link{color:var(--blue-d)}

/* ---------- 档案：操作日志抽屉 ---------- */
.logtools{display:flex;align-items:center;gap:7px;margin-bottom:12px;flex-wrap:wrap}
.logtools .f{display:inline-flex;align-items:center;border:1px solid var(--line);background:#fff;border-radius:3px;padding:0 22px 0 8px;font-size:var(--fs-sm);color:var(--t2);height:32px;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' fill='none' stroke='%2398A5B5' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 7px center;cursor:pointer}
.logtools .fld{height:32px;min-height:32px;width:200px;font-size:var(--fs-sm)}
.timeline{position:relative;padding-left:16px;margin-left:5px;border-left:1.5px solid var(--blue-line);display:flex;flex-direction:column;gap:14px;padding-top:4px;padding-bottom:6px}
.timeline .li{position:relative}
.timeline .li .dot{position:absolute;left:-21.5px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--t4);box-shadow:0 0 0 2px #fff}
.timeline .dot.info{background:var(--blue)}
.timeline .dot.ok{background:#1D9E75}
.timeline .dot.warn{background:#EF9F27}
.timeline .li .lh{font-size:var(--fs-md);color:var(--t1);line-height:1.7;word-break:break-word}
.timeline .li .lh b{font-weight:500}
.timeline .li .lm{font-size:var(--fs-xs);color:var(--t3);margin-top:2px;word-break:break-word;line-height:1.6}

/* ---------- 档案：状态开关 ---------- */
.sw{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;vertical-align:middle}
.sw input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.sw .track{position:relative;width:30px;height:16px;border-radius:9px;background:#CBD5E1;transition:background .18s;flex:none}
.sw .track::after{content:'';position:absolute;left:2px;top:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(15,23,42,.22);transition:transform .18s}
.sw input:checked + .track{background:var(--blue)}
.sw input:checked + .track::after{transform:translateX(14px)}
.sw input:focus-visible + .track{box-shadow:0 0 0 2px var(--blue-l)}
.sw .sw-txt{font-size:var(--fs-xs);color:var(--t3);white-space:nowrap;line-height:1}
.sw input:checked ~ .sw-txt{color:var(--blue-d)}
.sw:hover .track{filter:brightness(.97)}
.tbl td.swc{white-space:nowrap}
.sw.sm .track{width:26px;height:14px}
.sw.sm .track::after{width:10px;height:10px}
.sw.sm input:checked + .track::after{transform:translateX(12px)}
.sw.sm .sw-txt{font-size:var(--fs-sm);color:var(--t2);min-width:2em}
.batchbar .bulk-lb{font-size:var(--fs-sm);color:var(--t2);padding-left:2px}
.batchbar .sep{width:1px;height:15px;background:var(--blue-b);flex:none}

/* ---------- 档案：表单分组模块标题 ---------- */
.fsec{display:flex;align-items:center;gap:7px;margin:15px 0 10px;font-size:var(--fs-md);font-weight:600;color:var(--t1)}
.fsec.first{margin-top:2px}
.fsec .sq{width:3px;height:12px;border-radius:2px;background:var(--tc,var(--blue))}
.fsec .sub{font-weight:400}

/* ---------- 档案：司机关联车辆（可搜索多选） ---------- */
.vp{border:1px solid var(--line);border-radius:4px;background:#fff;padding:9px}
.vp-q{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:3px;padding:0 8px;background:var(--soft)}
.vp-q svg{color:var(--t3);flex:none;width:12px;height:12px}
.vp-q .fld{border:0;background:transparent;height:30px;min-height:30px;padding:0;font-size:var(--fs-sm)}
.vp-q .fld:focus{outline:none;box-shadow:none}
.vp-sel{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px;min-height:22px;align-items:center}
.vp-chip{display:inline-flex;align-items:center;gap:4px;background:var(--tc-bg,var(--blue-l));color:var(--tc,var(--blue-d));border-radius:3px;padding:2px 6px;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.vp-chip i{font-style:normal;cursor:pointer;opacity:.7;font-size:var(--fs-md);line-height:1}
.vp-chip:hover i{opacity:1}
.vp-list{max-height:190px;overflow:auto;border-top:1px dashed var(--line);margin-top:4px;padding-top:5px}
.vp-row{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:3px;cursor:pointer;font-size:var(--fs-sm);color:var(--t1)}
.vp-row:hover{background:var(--blue-xl)}
.vp-row.on{background:var(--tc-bg,var(--blue-l))}
.vp-row .ck{width:12px;flex:none;color:var(--tc,var(--blue));font-size:var(--fs-xs)}
.vp-row .nm{font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.vp-row .mt{color:var(--t3);font-size:var(--fs-xs);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vp-none{padding:14px 6px;text-align:center;color:var(--t3);font-size:var(--fs-sm)}
.vp-add{display:flex;align-items:center;gap:6px;padding:7px;margin-top:4px;border-top:1px dashed var(--line);color:var(--blue-d);font-size:var(--fs-sm);cursor:pointer}
.vp-add:hover{background:var(--blue-xl)}
.vp-add .hint{margin-left:auto;color:var(--t3);font-size:var(--fs-xs)}
/* 紧凑版：折叠选择器 + 悬浮面板（不再常驻大列表） */
.vp{position:relative}
.vp-ctl{display:flex;align-items:center;gap:6px;min-height:34px;padding:3px 26px 3px 8px;border:1px solid var(--line);border-radius:3px;
  background:#fff;cursor:pointer;flex-wrap:wrap;transition:border-color .12s}
.vp-ctl:hover{border-color:var(--blue-b)}
.vp-ctl .combo-arrow{position:absolute;right:8px;top:50%;margin-top:-5px;pointer-events:none}
.vp-ctl .vp-chips{display:contents}
.vp-ph{color:var(--t4);font-size:var(--fs-md)}
.vp-pop{position:fixed;z-index:70;background:#fff;border:1px solid var(--line);border-radius:4px;
  box-shadow:0 10px 28px rgba(15,43,76,.18);padding:9px;max-height:min(62vh,560px);overflow:auto}
.vp-pop .vp-q{margin-bottom:6px}
.vp-pop .vp-list{max-height:220px;border-top:0;margin-top:0;padding-top:0}
.vp-pop [data-vp-new]{margin-top:8px}
/* 纯新建模式（点 + 进入）：隐藏搜索与车辆列表，只显示新建表单 */
.vp-pop.only-new .vp-q, .vp-pop.only-new .vp-list{display:none}

/* ---------- 五证信息：到期日 + 证号 + 影像上传 ---------- */
.cert-p{margin-top:12px}
.cert-p .panel-b{padding-top:10px}
.cert-item{padding:8px 0;border-bottom:1px dashed var(--line)}
.cert-item:last-of-type{border-bottom:0}
.cert-l1{display:flex;align-items:center;gap:8px}
.cert-l1 .cn{flex:none;width:60px;font-size:var(--fs-sm);font-weight:500;color:var(--t1)}
.cert-l1 .fld{height:30px;min-height:30px;font-size:var(--fs-sm)}
.cert-l1 input[type=date]{width:126px;flex:none}
.cert-l1 [data-certno]{flex:1;min-width:0}
.cert-l2{display:flex;align-items:center;gap:8px;margin-top:6px;padding-left:68px}
.cert-up{display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--line);border-radius:3px;
  padding:4px 9px;color:var(--t2);font-size:var(--fs-sm);cursor:pointer;background:var(--soft);transition:.12s}
.cert-up:hover{border-color:var(--blue-b);color:var(--blue)}
.cert-up svg{width:13px;height:13px}
.cert-thumb{position:relative;flex:none;width:44px;height:56px;border:1px solid var(--line);border-radius:3px;
  overflow:hidden;background:var(--soft);cursor:pointer}
.cert-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.cert-thumb .rt{position:absolute;top:0;right:0;width:14px;height:14px;line-height:13px;text-align:center;
  background:rgba(15,43,76,.72);color:#fff;border-radius:0 0 0 3px;font-style:normal;font-size:10px;cursor:pointer}
.cert-thumb .rt:hover{background:var(--warn)}
.cert-st{font-size:var(--fs-xs)}

/* ---------- 档案：详情里关联车辆芯片 ---------- */
.vchips{display:flex;flex-wrap:wrap;gap:6px}
.vchip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:3px;padding:2px 7px;font-size:var(--fs-sm);background:#fff;font-variant-numeric:tabular-nums}
.vchip i{font-style:normal;color:var(--t3);font-size:var(--fs-xs)}

/* ---------- 档案页签分组分隔线 / 经纬度选点 ---------- */
/* 8 类页签分「业务主体」与「作业资源」两组，中间一条竖线；自定义类型排在资源组尾部 */
.tabs .tsep{width:1px;flex:none;align-self:stretch;margin:9px 7px;background:var(--line)}
.coord-f{display:flex;gap:6px;align-items:center;min-width:0}
.coord-f .fld{min-width:0;flex:1}
.coord-f .btn{flex:none;white-space:nowrap}

/* ---------- 公司信息页 ---------- */
/* LOGO 上传区：预览 / 占位 / 操作按钮 */
.logo-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px dashed var(--line);border-radius:4px;padding:10px 12px;background:var(--soft)}
.logo-prev{max-width:180px;max-height:64px;border-radius:3px;background:#fff;box-shadow:0 0 0 1px var(--line-2)}
.logo-empty{display:flex;align-items:center;gap:8px;color:var(--t3);font-size:var(--fs-sm);line-height:1.5}
.logo-empty svg{width:26px;height:26px;color:var(--t4)}
.logo-acts{display:flex;gap:6px;flex-wrap:wrap}
/* 账户查看弹窗的两列字段网格 */
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 22px}
@media(max-width:760px){.kv-grid{grid-template-columns:1fr}}

/* ---------- 新建运单：拖柜信息「提箱 / 还箱」左右对照 ---------- */
.haul-panel{margin:11px 0}
.haul-cols{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.haul-col,.haul-gate{border:1px solid var(--line);border-radius:4px;background:#fff;overflow:hidden}
.haul-col.pick{border-top:2px solid var(--blue)}
.haul-col.ret{border-top:2px solid var(--st-pickup-f)}
.haul-t{display:flex;align-items:center;gap:8px;padding:7px 11px;background:var(--soft);border-bottom:1px solid var(--line-2);font-size:var(--fs-sm);color:var(--t3)}
.haul-tag{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:20px;padding:0 6px;border-radius:3px;background:var(--t3);color:#fff;font-size:var(--fs-xs);font-weight:600}
.haul-tag.pick{background:var(--blue)}
.haul-tag.ret{background:var(--st-pickup-f)}
.haul-tag.gate{background:var(--st-factory-f)}
.haul-d{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.haul-fields{display:grid;gap:9px;padding:10px 12px}
.haul-gate{margin-top:11px}
@media(max-width:760px){.haul-cols{grid-template-columns:1fr}}

/* ===== 运单表单紧凑骨架（方案 A：横排标签 + 三分区） ===== */
.form-compact .fi{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:8px}
.form-compact .fi>label{margin:0;text-align:right;font-size:var(--fs-xs);color:var(--t2);line-height:1.35}
.form-compact .fi>.fld,.form-compact .fi>select.fld,.form-compact .fi .inwrap .fld{height:30px;min-height:30px;font-size:var(--fs-sm)}
.form-compact .fi .combo .combo-in{height:30px;min-height:30px;font-size:var(--fs-sm);color:var(--t1)}
.form-compact .fi .check{min-height:30px;font-size:var(--fs-sm)}
.form-compact .field-grid{gap:7px 10px}
.form-compact .field-grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.form-compact .field-grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.form-compact .panel,.form-compact .eirbar,.form-compact .steps{margin-bottom:8px}
.form-compact .panel-h{padding:6px 10px;font-size:var(--fs-md)}
.form-compact .panel-b{padding:8px 10px}
.form-compact textarea.fld{height:auto;min-height:44px;padding:5px 8px;line-height:1.55}
.form-compact .steps{padding:6px 10px}
.form-compact .steps .s{cursor:pointer}
.form-compact .steps .s:hover{color:var(--blue)}
/* .fsec 基础样式是旧「单行标题」的 flex；紧凑表单里 .fsec 是「标题+内容」容器，需显式改回块级，
   否则标题与内容被挤成同一行、标题窄列竖排换行 */
.form-compact .fsec{display:block;margin:0 0 8px}
.form-compact .fsec>.fi:last-child{margin-bottom:0}
.form-compact .fsec+.fsec{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.form-compact .fsec-h{display:flex;align-items:center;gap:7px;margin-bottom:5px;font-size:var(--fs-sm);font-weight:500;color:var(--t2)}
.form-compact .fsec-h .sub{font-size:var(--fs-xs);color:var(--t3);font-weight:400}

/* 拖柜区：提箱 / 还箱两栏（旧三栏规则保留给宽屏断点复用） */
.haul-cols.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.haul-col.gate{border-top:2px solid var(--st-factory-f)}
.haul-cols .haul-gate{margin-top:0}
.haul-cols.three .haul-fields{gap:7px;padding:8px 10px}
/* 门点全宽表格区（方案 A）：提箱 / 还箱两栏在上，门点一行一门点 */
.haul-panel .haul-gate{margin-top:11px}
/* 双拖复选框：位于箱封表格表脚，与箱量汇总同行；提示随箱量联动 */
.dbl-hint{font-size:var(--fs-xs);color:var(--t3);margin-left:10px}
.dbl-hint.warn{color:var(--warn)}
.dbl-hint.ok{color:var(--st-done-f)}
.gatetbl .combo .combo-in{height:30px;min-height:30px;font-size:var(--fs-sm)}
.gatetbl .combo .combo-in .fld{height:30px;min-height:30px}
.gatetbl input[readonly]{background:var(--soft);color:var(--t3)}
.gatetbl .upbtn.addbtn{height:30px;width:30px}
.gatetbl tr.gate-e>td{vertical-align:middle}
.gatetbl tfoot .badge{margin-left:10px}

/* EIR 放箱凭证条 */
.eirbar{border:1px solid var(--line);border-radius:4px;background:#fff;overflow:hidden}
.eirbar-h{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--blue-xl);border-bottom:1px solid var(--line);font-size:var(--fs-md)}
.eir-tag{display:inline-flex;align-items:center;justify-content:center;height:18px;padding:0 6px;border-radius:3px;background:var(--blue);color:#fff;font-size:var(--fs-xs);font-weight:600;letter-spacing:.5px;flex:none}
.eirbar-h .sub{font-size:var(--fs-xs);color:var(--t3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eir-state{margin-left:auto;flex:none;font-size:var(--fs-xs);color:var(--t3);white-space:nowrap}
.eir-state.ok{color:var(--st-done-f)}
.eirbar-in{display:grid;grid-template-columns:330px minmax(0,1fr);gap:6px 12px;padding:8px 10px;align-items:start}
.eirbar .fi{grid-template-columns:72px minmax(0,1fr)}
.eir-go{height:30px;min-height:30px;padding:0 10px;font-size:var(--fs-sm);flex:none}
.eir-res{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px 12px}
.eir-kv{min-width:0}
.eir-k{display:block;font-size:var(--fs-xs);color:var(--t3);line-height:1.45}
.eir-v{display:block;font-size:var(--fs-sm);color:var(--t1);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eir-empty{grid-column:1/-1;font-size:var(--fs-xs);color:var(--t3);line-height:1.65;padding:1px 0}
.eir-foot{grid-column:1/-1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;padding-top:5px;border-top:1px dashed var(--line);font-size:var(--fs-xs);color:var(--t3)}
.eir-foot .sp{flex:1}
.eir-src{display:inline-flex;align-items:center;gap:4px;color:var(--st-done-f)}
.eir-src .i{width:12px;height:12px}

@media(max-width:1260px){
  .eirbar-in{grid-template-columns:1fr}
  .haul-cols.three{grid-template-columns:1fr 1fr}
  .haul-cols.three .haul-col.gate{grid-column:1/-1}
}
@media(max-width:1160px){
  .form-compact .field-grid.c3,.form-compact .field-grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form-compact .fi{grid-template-columns:80px minmax(0,1fr)}
}
@media(max-width:760px){
  .form-compact .fi{display:block}
  .form-compact .fi>label{text-align:left;margin-bottom:3px}
  .form-compact .field-grid.c3,.form-compact .field-grid.c4,.haul-cols.three{grid-template-columns:1fr}
  .form-compact .eir-res{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---------- 地点输入：左侧 + 新增，文本框输入筛选已建档地点 ---------- */
.place-f{display:flex;gap:6px;align-items:center;min-width:0}
.place-f .place-add{flex:none;width:34px;height:34px;min-height:34px;padding:0;color:var(--blue);border-color:var(--blue-b);background:var(--blue-xl)}
.place-f .place-add:hover{background:var(--blue-l)}
.place-f .place-add .i{width:15px;height:15px}
.place-box{position:relative;flex:1;min-width:0}
.place-list{position:fixed;z-index:120;max-height:220px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:3px}
.place-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 9px;border-radius:2px;font-size:var(--fs-sm);color:var(--t2);cursor:pointer}
.place-opt:hover{background:var(--blue-l);color:var(--blue-d)}
.place-opt b{font-weight:600;color:var(--t1)}
.place-opt .sub{color:var(--t4);font-size:var(--fs-xs);white-space:nowrap}
.place-none{padding:8px 9px;font-size:var(--fs-sm);color:var(--t4)}

/* ---------- 地图选点：内联 SVG，无地图 SDK ---------- */
.pmap-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:var(--fs-sm);color:var(--t2)}
.pmap-h .sq{width:3px;height:12px;border-radius:1px;background:var(--blue)}
.pmap-svg{display:block;width:100%;aspect-ratio:900/520;border:1px solid var(--line);border-radius:3px;cursor:crosshair;background:#F5F9FD}
.pmap-f{display:flex;align-items:center;gap:8px;margin-top:8px}
.pmap-f label{font-size:var(--fs-sm);color:var(--t2);white-space:nowrap}
.pmap-f .fld{max-width:220px}
.pm-join{display:flex;align-items:center;gap:6px;margin:12px 0 10px;font-size:var(--fs-sm);color:var(--t2)}
.pm-arch{margin-top:2px}
