:root{
  --bg:#f5f6f8; --card:#fff; --line:#e6e8eb; --text:#1f2329; --sub:#5f6672;
  --primary:#007A33; --primary-l:#E6F5EC;
  --s0:#5f6672; --s1:#007A33; --s2:#16A34A; --s3:#C81010;
  --red:#C81010; --red-l:#FCE8E8;
  --orange:#e37400; --orange-l:#fef3e6; --muted:#5f6672;
  --cw:1180px;   /* 页面内容宽度：header / .wrap / 弹层 三处统一，避免弹层满屏 */
  /* 设计令牌（2026-10-25 起逐步统一，减少散落硬编码）：
     圆角 r-sm/md/lg/xl/pill；字号 fs-11~fs-24；间距 sp-1~sp-6(4/8/12/16/20/24)；
     阴影 shadow-card/float/pop；焦点环 focus-ring */
  --r-sm:8px; --r-md:10px; --r-lg:12px; --r-xl:14px; --r-pill:999px; --r-20:20px;
  --fs-11:11px; --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-15:15px; --fs-16:16px; --fs-20:20px; --fs-24:24px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px;
  --shadow-card:0 2px 10px rgba(16,40,28,.07); --shadow-float:0 12px 48px rgba(0,0,0,.22); --shadow-pop:0 3px 12px rgba(0,0,0,.08);
  --focus-ring:0 0 0 3px rgba(0,122,51,.18);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--text);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit;font-size:var(--fs-15)}
/* a11y：键盘可达的点击元素（div/span + onclick 由 JS 补 role=button）显示焦点环 */
[role="button"]:focus-visible,[onclick]:not(button):not(a):focus-visible{outline:2px solid var(--primary);outline-offset:2px}
/* —— 客户资料页（居中弹窗 modal，2026-10-10 改）：表单按内容定宽 ——
   原来 input/select/textarea 默认 width:100%，短字段（岗位、日期、电话）也拉满整行，看着又空又难扫。
   这里给出两档宽度令牌：.f1~.f8 用在带标签的字段容器 .fld 上，.w110~.w330 直接用在同行排列的 input 上。
   梯度按 4px 基准放大到表单可用档位：110 / 150 / 170 / 210 / 260 / 330 / 460 / 660，全部带 max-width:100% 兜窄屏。 */
#cpageBg{display:none;position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(17,24,39,.35);z-index:70}
/* 2026-10-10：客户资料改为居中弹窗（modal），不再整页覆盖 */
#cpage{display:none;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:71;width:min(1080px,96vw);max-height:92vh;background:var(--bg);border-radius:var(--r-lg);box-shadow:var(--shadow-float);flex-direction:column;overflow:hidden}
#cpageInner{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}
#cpageBar{background:#fff;border-bottom:1px solid var(--line);flex:0 0 auto;cursor:move;user-select:none;touch-action:none}
.cfgrid{display:flex;flex-wrap:wrap;gap:10px 14px}
.fld{min-width:0}
.fld>.lbl{margin:0 0 4px;font-size:12.5px}
.fld input,.fld select,.fld textarea{width:100%;box-sizing:border-box}
.w110{width:110px;max-width:100%}.w150{width:150px;max-width:100%}.w170{width:170px;max-width:100%}
.w210{width:210px;max-width:100%}.w260{width:260px;max-width:100%}.w330{width:330px;max-width:100%}
.f1{width:110px}.f2{width:150px}.f3{width:170px}.f4{width:210px}
.f5{width:260px}.f6{width:330px}.f7{width:100%;max-width:460px}.f8{width:100%;max-width:660px}
input,select,textarea{font-family:inherit;font-size:var(--fs-15);width:100%;padding:9px 11px;
  border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;color:var(--text);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,122,51,.18)}
/* 单选框 / 复选框不能被上面的 width:100% 撑开：否则会把同一行的文字挤成「一列一个字」
   （踩过：「加急派送」的技术员列表，单选框占 342px、名字只剩 24px 宽） */
input[type=radio],input[type=checkbox]{width:auto;padding:0;flex:0 0 auto;vertical-align:middle}
.card{background:var(--card);border-radius:var(--r-lg);padding:12px;margin-bottom:10px;
  box-shadow:0 1px 3px rgba(0,0,0,.05)}
.tcard{cursor:pointer;transition:box-shadow .15s}
.tcard:hover{box-shadow:0 3px 10px rgba(0,0,0,.1)}
.pwc{cursor:pointer;transition:box-shadow .15s,border-color .15s,background .15s}
.pwc:hover{background:#f3f7ff}
.row{display:flex;align-items:center;gap:10px}
.between{display:flex;align-items:center;justify-content:space-between;gap:10px}
.muted{color:var(--sub);font-size:var(--fs-13)}
.tag{display:inline-block;padding:2px 8px;border-radius:var(--r-20);font-size:var(--fs-12);line-height:18px}
.t0{background:#f0f1f3;color:#5f6672}.t1{background:#E6F5EC;color:#005A26}
.t2{background:#E6F5EC;color:#005A26}.t3{background:#FCE8E8;color:#C81010}
.btn{background:var(--primary);color:#fff;border-radius:var(--r-md);padding:10px 14px;text-align:center;
  font-weight:600;display:block;width:100%;transition:filter .12s,box-shadow .12s}
.btn:hover{filter:brightness(1.05)}
.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn:active{opacity:.85}
.btn:disabled,.btn[disabled]{opacity:.6;pointer-events:none}
.btn.gray{background:#f0f1f3;color:#3c4043}
.btn.gray:hover{background:#e6e8eb}
.btn.gray:disabled,.btn.gray[disabled]{opacity:.6;pointer-events:none}
.btn.line{background:#fff;border:1px solid var(--line);color:var(--text)}
.btn.line:hover{background:#f7f8fa;border-color:#d6d9dd}
.btn.line:disabled,.btn.line[disabled]{opacity:.6;pointer-events:none}
/* 页头主按钮（如「新建派工单」）也补悬停/聚焦，按键更明确 */
.pagehead .add{transition:filter .12s,box-shadow .12s}
.pagehead .add:hover{filter:brightness(1.05)}
.pagehead .add:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.pill:focus-visible,.chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.big{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.big button{border:1.5px solid var(--line);border-radius:var(--r-md);padding:12px 6px;font-weight:600;background:#fff}
.big button.on{border-color:var(--primary);background:var(--primary-l);color:var(--primary)}
.kpi{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.kpi div{background:var(--card);border-radius:var(--r-lg);padding:12px 6px;text-align:center;cursor:pointer;
  box-shadow:0 1px 3px rgba(0,0,0,.05)}
.kpi b{display:block;font-size:var(--fs-24);line-height:1.2}
.kpi span{font-size:var(--fs-12);color:var(--sub)}
.bar{height:8px;background:#eef0f2;border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--primary);border-radius:4px}
table{width:100%;border-collapse:collapse;font-size:var(--fs-14)}
th,td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left}
th{color:var(--sub);font-weight:500;font-size:var(--fs-13)}
tr.clk{cursor:pointer}tr.clk:hover{background:#fafbfc}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}
.photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-sm);cursor:pointer;background:#eee}
#login{max-width:360px;margin:12vh auto;padding:24px}
#app{display:none}
header{position:sticky;top:0;z-index:9;background:var(--card);border-bottom:1px solid var(--line);
  padding:12px 16px}
.wrap{max-width:var(--cw);margin:0 auto;padding:12px}
.phone{max-width:430px!important;margin:0 auto}   /* !important：header 内层 div 带内联 max-width，手机视图必须压过它 */
nav{display:flex;gap:4px;margin-top:10px}
nav button{flex:1;padding:8px;border-radius:var(--r-sm);color:var(--sub);font-size:var(--fs-14)}
nav button.on{background:var(--primary-l);color:var(--primary);font-weight:600}
#mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:74;
  align-items:center;justify-content:center;padding:20px}
#mask img{max-width:100%;max-height:80vh;border-radius:var(--r-sm)}
#sheet{display:none;position:fixed;left:0;right:0;bottom:0;z-index:73;background:#fff;
  border-radius:16px 16px 0 0;padding:16px 14px;max-height:88vh;overflow:auto;
  box-shadow:0 -4px 20px rgba(0,0,0,.15);
  max-width:var(--cw);margin:0 auto}   /* 与页面内容同宽，两侧留白居中 */
/* 任务单详情瘦身（第十一批）：表单内容左右刚刚好，不拉满整页宽 */
#sheet.sheet-narrow{max-width:860px}
#sheetBg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:72}
/* 弹层标题栏：可拖动手柄（按住标题栏或左侧把手即可挪动弹层） */
#sheet .sheet-bar{display:flex;align-items:center;gap:8px;margin:-16px -14px 10px;padding:10px 14px;
  position:sticky;top:-16px;z-index:2;background:#fff;border-bottom:1px solid var(--line);
  border-radius:16px 16px 0 0;cursor:move;user-select:none;touch-action:none}
#sheet .sheet-bar b{flex:1;min-width:0;font-size:var(--fs-15);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#sheet .sheet-bar .sgrip{flex:0 0 auto;width:26px;height:4px;border-radius:2px;background:#c9d2dd}
#sheet .sheet-bar .muted{flex:0 0 auto;cursor:pointer;padding:2px 8px}
#sheet.dragging{user-select:none;box-shadow:0 12px 40px rgba(17,24,39,.3)}
#sheet.dragging .sheet-bar{background:#f7f9fc}
/* 弹层打开时：把待审核页地图 + 人员去向两块折叠起来，避免半透明遮罩把地图透出来看着像"灰色"
   （地图层只跟 sheet 同级覆盖在 body 上，sheetBg 再遮一层就糊了） */
body.sheet-open #mapCard, body.sheet-open #personCard{display:none}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lbl{font-size:var(--fs-13);color:var(--sub);margin:8px 0 3px}
/* 派工步骤：统一用同一个主色 + 圆形序号，一眼看出先做哪步 */
.step{display:flex;align-items:center;gap:7px;font-size:var(--fs-13);color:var(--sub);
  margin:12px 0 5px;font-weight:600}
.step i{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;
  font-size:var(--fs-11);font-style:normal;font-weight:700;line-height:1}
.step .req{color:var(--red);font-weight:600}
/* 派工底部常驻操作条：始终贴在页面底部，基本信息填完即可直接派工（派给谁/费用可空） */
#sheet .dock{position:sticky;bottom:0;z-index:6;margin:18px -14px -16px;
  padding:12px 14px;background:#fff;border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:7px;box-shadow:0 -6px 16px rgba(0,0,0,.07)}
#sheet .dock-tip{font-size:11.5px;color:var(--sub);line-height:1.4}
#sheet .dock-btn{flex:0 0 auto;width:100%;font-size:var(--fs-15);padding:12px;font-weight:700}
/* ---------- 统一注释图标 i ----------
   全站的「说明性长句」都收进这个小图标，点一下看明细，界面才干净。
   规则：① 只收「解释怎么用/有什么规矩」的话；② 不改变量展示（共 3 单、进行中 2 这种留着）；
        ③ 每页只保留必要的操作提示，其余一律进图标。 */
.nf{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:15px;height:15px;border-radius:50%;border:1px solid #b9bfc7;background:#fff;
  color:#8a9099;font:700 10px/1 Georgia,"Times New Roman",serif;font-style:normal;
  cursor:pointer;vertical-align:-1px;margin-left:5px;user-select:none;
  -webkit-tap-highlight-color:transparent}
.nf:hover{border-color:var(--primary);color:var(--primary)}
.nf:active{background:var(--primary);border-color:var(--primary);color:#fff}
.nf.sm{width:13px;height:13px;font-size:9px;margin-left:4px}
.nfbody{font-size:var(--fs-14);line-height:1.75}
.nfbody b{color:var(--primary)}
.nfbody ul{margin:6px 0 0;padding-left:18px}
.nfbody li{margin:4px 0}
.nfbody .kv2{color:var(--sub);font-size:var(--fs-13)}
.nfbody table{font-size:var(--fs-13);margin-top:6px}
.nfbody code{background:#f2f4f6;border-radius:4px;padding:1px 5px;font-size:12.5px}
/* 注释浮层：居中卡片，z-index 必须高于 #sheet(60)，否则在弹层里点 ⓘ 会被盖住 */
#noteBg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:80}
#note{display:none;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:81;
  background:#fff;border-radius:var(--r-xl);padding:16px;width:calc(100% - 36px);max-width:520px;
  max-height:78vh;overflow:auto;box-shadow:0 10px 34px rgba(0,0,0,.28)}
/* 层级面包屑：客户主体 › 服务地点 › 本单任务 */
.crumb{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:var(--fs-12);
  background:var(--primary-l);border:1px solid #cfe6d6;border-radius:var(--r-sm);padding:7px 9px;margin:4px 0 2px}
.crumb b{color:var(--primary)}
.crumb s{color:var(--muted);text-decoration:none}
/* 3D 小按钮：宽度只包住文字，按下去有下沉手感 */
.btn3d{display:inline-flex;align-items:center;gap:4px;width:auto;padding:6px 12px;border-radius:9px;
  border:1px solid #c9dfd2;background:linear-gradient(#ffffff,#edf6f0);color:var(--primary);
  font-weight:600;font-size:12.5px;line-height:1.2;cursor:pointer;user-select:none;
  box-shadow:0 3px 0 #c2dccb,0 4px 8px rgba(0,60,25,.07);transition:transform .06s,box-shadow .06s}
.btn3d:active{transform:translateY(2px);box-shadow:0 1px 0 #c2dccb}
.btn3d.gray{border-color:#dde1e6;background:linear-gradient(#ffffff,#f2f3f5);color:#5f6368;
  box-shadow:0 3px 0 #d8dade,0 4px 8px rgba(0,0,0,.05)}
.btn3d.gray:active{box-shadow:0 1px 0 #d8dade}
/* 本单任务资料：背景框把「本单任务 → 业务类型 → 服务地点 → 现场联系人 → 故障内容」包在一起 */
.taskbox{background:#f6faf7;border:1px solid #d9e7de;border-radius:var(--r-lg);padding:10px 11px 11px;
  box-shadow:inset 0 1px 0 #fff}
.taskbox .lbl{margin:9px 0 4px}
.taskbox .lbl:first-child{margin-top:0}
.tbrow{display:flex;gap:8px;align-items:flex-start}
.tbrow>div{flex:1 1 0;min-width:0}
.tbrow.tbwrap{flex-wrap:wrap}
/* 归档中心树 */
.arow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;
  font-size:13.5px;cursor:default;line-height:1.4}
.arow .art{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
summary.arow{list-style:none;cursor:pointer}
summary.arow::-webkit-details-marker{display:none}
summary.arow::before{content:"▸";display:inline-block;width:14px;color:var(--sub);transform:rotate(0)}
details[open]>summary.arow::before{content:"▾"}
.arow.leaf{cursor:pointer;color:var(--primary)}
.arow.leaf:hover,.arow:hover{background:#f3f7f4}
.cnt{flex:0 0 auto;background:#eef3f0;color:#5b6b63;border-radius:var(--r-md);padding:1px 8px;font-size:var(--fs-12);font-weight:600}
.atbl{overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.atbl table{width:100%;border-collapse:collapse;font-size:13.5px}
.atbl th,.atbl td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.atbl th{background:#f6f8f7;color:var(--sub);font-weight:600;position:sticky;top:0}

/* ================= 任务单详情 · 分区域版（2026-10-03 王老板口径）=================
   7 个区域：①任务抬头 ②订单状态/执行人 ③客户资料(折叠) ④任务详细资料
            ⑤价格管理 ⑥管理人员功能 ⑦订单实施过程资料
   令牌沿用现有 --primary/--line/--card，主色 #007A33（白字 5.48:1 达标）。
   折叠区折叠时保留摘要条（.tz-sum），收起也能看清是哪一单。 */
.tzwrap{padding:0 0 8px}
/* —— 区域① 任务抬头：编号大字 + 故障名称 + 期限，一眼认单 —— */
.tzhead{background:linear-gradient(180deg,#FFFFFF,#F4FAF6);
  border:1px solid #CFE3D6;border-left:5px solid var(--primary);
  border-radius:var(--r-lg);padding:11px 12px;margin:0 0 8px;
  box-shadow:0 1px 3px rgba(0,0,0,.05)}
.tzhead-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.tzno{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:var(--fs-20);font-weight:700;color:var(--primary);line-height:1.2;letter-spacing:.5px}
.tzhead-due{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tzhead-lbl{font-size:var(--fs-12);color:var(--s2);line-height:1.2}
.tzhead-dueval{font-size:var(--fs-15);font-weight:700;font-family:ui-monospace,Menlo,Consolas,monospace;
  color:var(--text);line-height:1.2}
.tzhead-dueval.due-err{color:var(--red)}
.tzhead-dueval.due-t3{color:var(--orange)}
.tzhead-name{font-size:var(--fs-16);font-weight:600;line-height:1.5;margin-top:8px;word-break:break-word}
.tzhead-name .k{font-size:var(--fs-12);font-weight:400;color:var(--s2);margin-right:6px}
/* —— 区域② 订单状态 / 执行人 —— */
.tzstat{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:9px 11px;margin:0 0 8px}
.tzstat .who{font-size:var(--fs-14);font-weight:600}
.tzstat .who .k{font-size:var(--fs-12);font-weight:400;color:var(--s2);margin-right:4px}
.tzsteps{display:flex;gap:8px;margin:0 0 10px}
.tzstep{flex:1 1 0;min-width:0;cursor:pointer;text-align:center;padding:8px 4px;
  border-radius:var(--r-sm);border:1px solid #CFE3D6;background:#F4FAF6}
.tzstep.miss{border-color:#F5B5B0;background:var(--red-l)}
.tzstep-t{font-size:var(--fs-12);color:var(--s2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tzstep-v{font-size:var(--fs-13);font-weight:700;margin-top:3px;color:var(--primary)}
.tzstep.miss .tzstep-v{color:var(--red)}
.tzstep-s{font-size:var(--fs-11);color:var(--s2);margin-top:2px}
/* —— 通用分区折叠容器（③④⑤⑥⑦ 共用）—— */
.tzsec{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  margin:0 0 8px;box-shadow:0 1px 3px rgba(0,0,0,.05);overflow:hidden}
.tzsec>summary,.tzhead-sum{list-style:none;cursor:pointer;user-select:none;
  display:flex;align-items:center;gap:8px;min-height:44px;
  padding:9px 12px;background:linear-gradient(180deg,#FFFFFF,#F7F9F8);
  font-size:var(--fs-15);font-weight:700;line-height:1.4}
.tzsec>summary::-webkit-details-marker{display:none}
.tzsec>summary:hover{background:linear-gradient(180deg,#FFFFFF,#EFF3F1)}
.tzsec>summary:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.tzsec-hd{list-style:none;cursor:pointer;user-select:none;
  display:flex;align-items:center;gap:8px;min-height:44px;
  padding:9px 12px;background:linear-gradient(180deg,#FFFFFF,#F7F9F8);
  font-size:var(--fs-15);font-weight:700;line-height:1.4}
.tzsec-hd:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
/* 折叠箭头：展开转 90°（靠形状表意，不只靠颜色） */
.tzchev{width:0;height:0;flex:0 0 auto;border-left:7px solid var(--s2);
  border-top:5px solid transparent;border-bottom:5px solid transparent;
  transform:rotate(0);transition:transform .15s ease}
details.tzsec[open]>summary .tzchev,details.tzsec[open]>.tzsec-hd .tzchev{transform:rotate(90deg)}
/* 折叠时的关键摘要：收起也知道是哪单 */
.tz-sum{flex:1 1 auto;min-width:0;font-size:var(--fs-12);font-weight:400;color:var(--s2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.tz-body{padding:11px;border-top:1px solid var(--line)}
.tz-badge{flex:0 0 auto;font-size:var(--fs-11);font-weight:600;padding:1px 8px;border-radius:var(--r-md);
  background:var(--primary-l);color:#005A26}
/* —— 区域④ 信息行（服务地点/现场联系人）—— */
.tzkv{display:flex;gap:8px;padding:5px 0;font-size:var(--fs-14);align-items:flex-start;
  border-bottom:1px dashed #E7EBE9}
.tzkv:last-child{border-bottom:0}
.tzkv .k{flex:0 0 92px;color:var(--s2);font-size:12.5px;line-height:1.5;padding-top:1px}
.tzkv .v{flex:1 1 auto;min-width:0;word-break:break-word;line-height:1.5}
/* 服务地点行内折叠（第十一批）：摘要一行（编号+别名+导航），点开展开完整地址/客户公司；
   未挂地点时默认展开露出红色警示，不让问题被折叠藏住 */
.addrfold{display:block;padding:6px 0;border-bottom:1px dashed #E7EBE9}
.addrfold:last-child{border-bottom:0}
.addrfold>summary{list-style:none;cursor:pointer;user-select:none;display:flex;gap:8px;
  align-items:flex-start;font-size:var(--fs-14)}
.addrfold>summary::-webkit-details-marker{display:none}
.addrfold>summary:hover .afd-no{color:var(--primary)}
.addrfold>summary .k{flex:0 0 92px;color:var(--s2);font-size:12.5px;line-height:1.5;padding-top:1px}
.addrfold>summary .v{flex:1 1 auto;min-width:0;word-break:break-word;line-height:1.5;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.addrfold[open]>summary .tzchev{transform:rotate(90deg)}
.addrfold .afd-more{padding:5px 0 2px 100px;font-size:12.5px;color:var(--s2)}
.addrfold .afd-more .muted{font-size:12.5px}
.tzfoldall{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px;
  font-size:12.5px;color:var(--s2)}
.tzfoldall .btn3d{min-height:32px}
@media (max-width:640px){
  .tzhead-due{margin-left:0;width:100%}
  .tzno{font-size:18px}
  .tzhead-name{font-size:var(--fs-15)}
  .tzkv .k{flex:0 0 80px}
  .addrfold>summary .k{flex:0 0 80px}
  .addrfold .afd-more{padding-left:88px}
  .tz-sum{font-size:11.5px}
}
@media (prefers-reduced-motion:reduce){
  .tzchev{transition:none}
}
/* ================= 重复单提醒（2026-10-03 王老板口径：电话或地址一样就提醒，
   由后台人员手工确认是否合并）=================
   与任务池的 .mgroup 是两套：池里是 phone AND addr 自动分组，这里是 OR 判定 + 人工确认。 */
.dupbox{border:1px solid #f0c98a;background:linear-gradient(180deg,#FFFBF3,#FFF6E6);
  border-radius:var(--r-md);padding:10px 12px;margin:0 0 10px}
.dupbox-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.dupbox-hd b{font-size:13.5px;color:#8a5200}
.dupbox-why{font-size:var(--fs-12);color:#7a5a2e;line-height:1.6;margin-bottom:8px}
.dupbox-why b{color:#8a5200}
.duprow{display:flex;align-items:flex-start;gap:8px;padding:8px 9px;background:#fff;
  border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:6px}
.duprow:last-child{margin-bottom:0}
.duprow.picked{border-color:var(--primary);background:#F6FDF9;box-shadow:0 0 0 1px var(--primary) inset}
.dup-cb{width:18px;height:18px;accent-color:var(--primary);flex:0 0 auto;cursor:pointer;margin-top:2px}
.dup-main{flex:1 1 auto;min-width:0}
.dup-l1{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:var(--fs-13);font-weight:600;line-height:1.5}
.dup-no{font-family:Consolas,Menlo,monospace;font-size:var(--fs-12);color:var(--primary);font-weight:700}
.dup-l2{font-size:11.5px;color:var(--s2);line-height:1.6;margin-top:2px;word-break:break-word}
.dup-why{flex:0 0 auto;font-size:var(--fs-11);font-weight:700;padding:1px 8px;border-radius:var(--r-md);white-space:nowrap}
.dup-why.phone{background:#FFF0D6;color:#8a5200}
.dup-why.addr{background:#E4EEFB;color:#1B4F91}
.dup-why.both{background:#FDE7E7;color:#A32020}
.dup-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:9px;margin-top:8px;
  border-top:1px dashed #e8d3ac}
.dup-bar select{flex:1 1 130px;min-width:120px;margin:0;min-height:36px;padding:6px 9px;font-size:12.5px}
.dup-bar .btn3d{min-height:36px;padding:6px 12px;font-size:12.5px}
.dup-manual{font-size:11.5px;color:#8a5200;background:#FFF3DC;border:1px solid #f0d9a8;
  border-radius:var(--r-sm);padding:7px 10px;margin:0 0 8px;line-height:1.6}
@media (max-width:640px){
  .dup-l1{font-size:12.5px}
  .dup-bar select{min-width:0;flex:1 1 100%}
  .dup-why{font-size:10.5px}
}
/* 归档大图标方块 */
.agrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:4px}
.atile{border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 12px;background:#fff;cursor:pointer;
  text-align:center;min-height:80px;display:flex;flex-direction:column;justify-content:center;gap:5px;
  transition:transform .12s,box-shadow .12s,border-color .12s}
.atile:hover{border-color:var(--primary);box-shadow:var(--shadow-pop);transform:translateY(-2px)}
.atile.sel{border-color:var(--primary);background:#eef6ff;box-shadow:0 0 0 2px rgba(30,126,52,.18) inset}
.at-num{font-size:21px;font-weight:800;color:var(--text);line-height:1.15}
.at-sub{font-size:var(--fs-11);color:var(--muted)}
.at-cnt{font-size:var(--fs-12);color:var(--primary);font-weight:700}
.acrumbbar{font-size:var(--fs-13);color:var(--muted);margin-bottom:8px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.acrumb{color:var(--primary);cursor:pointer;font-weight:600}
.acrumb:hover{text-decoration:underline}
.asep{color:var(--line)}
.atbl tr{cursor:pointer}
.atbl tbody tr:hover{background:#f3f7f4}
.atbl .mono{font-family:monospace;color:var(--primary)}
/* 故障内容：序号 + 简述 */
.fault{display:flex;gap:8px;align-items:flex-start}
.fault .fno{flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:#fff;border:1.5px solid #e0a08c;
  color:#c0392b;font-size:var(--fs-12);font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-top:2px}
.fault textarea{flex:1 1 auto;min-width:0;margin:0}
.fault .desc{padding:9px 10px;border-radius:6px;font-size:14.5px;line-height:1.5}
.fault .desc.err{background:#fdecea;border-left:4px solid var(--red);color:var(--red)}
.fault+.fault{margin-top:10px;padding-top:10px;border-top:1px dashed #e6ded9}
/* 任务详情里的故障行：一行一个故障，紧凑不占空间 */
.faultrow{display:flex;gap:8px;align-items:center;padding:8px 6px;border:1px solid #eef0f2;border-radius:9px;
  background:#fff;margin-top:6px}
.faultrow .fno{flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:#fff;border:1.5px solid #e0a08c;
  color:#c0392b;font-size:var(--fs-12);font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.faultrow .fmain{flex:1 1 auto;min-width:0}
.faultrow .fdesc{font-size:13.5px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.faultrow .fact{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mini{font-size:11.5px;padding:4px 8px;border-radius:7px;border:1px solid #d9e2ee;background:#f5f8fc;
  color:#2b5f9e;cursor:pointer;white-space:nowrap;line-height:1.2}
.mini:active{background:#e8eff7}
.mini.org{color:#e67e00;border-color:#e67e00;background:#fff5ec}
/* —— 待审核页 · 三段式工单卡 + 左列表/右排程布局 —— */
.map-toggle{display:none}   /* 默认隐藏，仅手机端（≤640px）作为地图折叠开关出现 */
.pnd-wrap{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:14px;align-items:start}
@media (max-width:920px){.pnd-wrap{grid-template-columns:1fr}}
.pnd-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
@media (max-width:520px){.pnd-stats{grid-template-columns:repeat(3,1fr);gap:8px}}
.pnd-stat{background:#fff;border-radius:16px;box-shadow:0 2px 10px rgba(31,41,55,.06);padding:12px 6px;text-align:center}
.pnd-stat .n{font-size:26px;font-weight:700;color:#1f2937;line-height:1.2}
.pnd-stat .l{font-size:12.5px;color:#6b7280;margin-top:2px}
.pnd-stat.hl .n{color:var(--primary)}
.pnd-pills{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.pill{padding:6px 16px;border-radius:var(--r-pill);border:1px solid var(--line);background:#fff;
  color:#374151;font-size:var(--fs-13);cursor:pointer;white-space:nowrap}
.pill.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.pcard{background:#fff;border-radius:16px;box-shadow:0 2px 10px rgba(31,41,55,.06);
  padding:0;overflow:hidden;margin-bottom:12px;border:none}
.pcard .trow{display:flex;align-items:center;gap:10px;padding:13px 16px 0 18px}
.pcard .trow .bar{position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:4px 0 0 4px}
.pcard{position:relative}
.pcard .irow{display:flex;flex-wrap:wrap;gap:4px 16px;padding:6px 16px 0 18px;font-size:12.5px;color:#6b7280}
.pcard .arow{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px 14px}
.pcard .btn{min-width:96px}
/* —— 待审核页改版（2026-10-03）：状态概览条 + 三区域分块 —— */
.pnd-ov{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.sochip{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:var(--r-lg);
  border:1px solid var(--line);background:#fff;cursor:pointer;font-size:var(--fs-13);color:#374151;white-space:nowrap;
  transition:box-shadow var(--duration-fast,150ms) ease}
.sochip .dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.sochip b{font-weight:700;margin-left:2px;color:#1f2937}
.sochip:hover{background:#f7f9fc}
.sochip.on{box-shadow:0 0 0 2px var(--primary) inset;border-color:var(--primary)}
.sochip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.pnd-sec{margin-bottom:14px}
.pnd-sec-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:12px 12px 0 0;
  font-weight:600;font-size:var(--fs-15);border:1px solid var(--line);border-bottom:none}
.pnd-sec-bd{background:#fff;border:1px solid var(--line);border-radius:0 0 12px 12px;padding:12px}
/* 待审核·新订单便签墙（手写板样式）：1 单 1 卡，PC 多列 / 手机单列 */
.handwall{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:12px;margin-top:12px}
.handnote{position:relative;background-color:#fffdf8;background-image:repeating-linear-gradient(transparent,transparent 27px,#f1ead9 27px,#f1ead9 28px);background-position:0 12px;border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 12px 10px;box-shadow:inset 3px 0 0 #f6d2d2,0 1px 2px rgba(17,24,39,.06);transition:transform .12s ease,box-shadow .12s ease;cursor:pointer}
.handnote:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.handnote:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(17,24,39,.12)}
.handnote:focus-within{box-shadow:0 0 0 2px var(--primary)}
.hn-tape{position:absolute;top:-7px;left:16px;width:52px;height:14px;background:var(--c,#8a95a1);opacity:.9;border-radius:2px;transform:rotate(-2.5deg)}
.hn-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:22px}
.hn-src{font-size:var(--fs-12);font-weight:700;color:var(--c,#8a95a1);white-space:nowrap}
.hn-warn{font-size:var(--fs-11);font-weight:600;background:#FCE8E8;color:#C81010;padding:1px 7px;border-radius:9px;white-space:nowrap}
.hn-state{margin-left:auto;font-size:var(--fs-11);font-weight:600;color:var(--primary);background:var(--primary-l);padding:1px 8px;border-radius:9px;white-space:nowrap}
.hn-no{font-family:Consolas,Menlo,monospace;font-size:var(--fs-11);font-weight:700;color:#6b7280;background:#f1f3f5;padding:1px 7px;border-radius:6px;white-space:nowrap}
.hn-title{font-size:var(--fs-15);line-height:1.4;font-weight:700;color:#222;margin:8px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hn-meta{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:#555}
.hn-meta b{color:#333;font-weight:600}
.hn-goal{margin-top:6px;font-size:var(--fs-12);color:#7a5b00;background:#fff8e6;border-left:3px solid #f0b400;padding:5px 8px;border-radius:0 6px 6px 0;line-height:1.5}
.hn-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;font-size:11.5px;color:#8a95a1}
.hn-foot .tag{background:var(--primary-l);color:var(--primary);padding:1px 8px;border-radius:9px;font-weight:600}
.hn-empty{grid-column:1/-1;text-align:center;color:#8a95a1;padding:30px}
.hn-view{margin-top:9px;text-align:right;font-size:var(--fs-12);font-weight:700;color:var(--primary)}
.handnote:hover .hn-view{text-decoration:underline}
/* 待审核·手写板放大明细（可拖拽浮窗内显示，更详细）—— 底面不画横条，只用纯色卡片 */
.hn-float{position:relative;background:#fff;border:1px solid var(--line);border-left:4px solid var(--c,#f6d2d2);border-radius:var(--r-md);padding:14px 14px 14px 16px}
.hnf-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:22px}
.hnf-src{font-size:12.5px;font-weight:700;color:var(--c,#8a95a1)}
.hnf-title{font-size:18px;line-height:1.45;font-weight:800;color:#1f2937;margin:8px 0 10px}
/* 客户信息：统一一个底框色（老板在「设置」页填，存 app_settings.pend_cust_bg） */
.hnf-cust{background:var(--cust-bg,#eef4fb);border:1px solid rgba(0,0,0,.06);border-radius:var(--r-sm);padding:9px 12px;margin-top:8px}
.hnf-meta{font-size:13.5px;color:#333;line-height:1.9}
.hnf-goal{margin-top:8px;font-size:var(--fs-13);color:#7a5b00;background:#fff8e6;border-left:3px solid #f0b400;padding:6px 10px;border-radius:0 6px 6px 0;line-height:1.6}
.hnf-note{margin-top:8px;font-size:var(--fs-13);color:#475569;background:#f8fafc;border-left:3px solid #cbd5e1;padding:6px 10px;border-radius:0 6px 6px 0;line-height:1.7}
.hnf-sub{margin-top:8px;font-size:12.5px;color:#8a95a1}
.hnf-form{margin-top:12px;padding-top:12px;border-top:1px dashed #e2d9c4}
.hnf-co{margin-bottom:10px;padding:10px 12px;background:#fff5f5;border:1px solid #f3c2c2;border-radius:var(--r-sm);font-size:var(--fs-13);line-height:1.8}
.hnf-co a{color:var(--primary);font-weight:700}
/* ===== 文件夹卡（2026-10-03 王老板口径）：执行栏 + 任务池 一行多个，仿手写板 =====
   造型：顶部凸起一个「文件夹标签页」+ 卡体；整体带 3D 厚度，按下会下沉 */
.fwall{display:grid;grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:14px;margin-top:12px}
.folder{position:relative;display:flex;flex-direction:column;
  padding:16px 12px 11px;margin-top:9px;                     /* 上留 9px 给标签页 */
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:0 3px 0 var(--fd-edge,#d8dee6),0 4px 10px rgba(17,24,39,.07);
  cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.folder::before{content:"";position:absolute;top:-9px;left:-1px;height:11px;
  padding:0 12px;border:1px solid var(--line);border-bottom:0;border-radius:7px 7px 0 0;
  background:var(--fd-tab,var(--primary-l));
  font-size:11.5px;font-weight:700;color:var(--fd-name,var(--primary));
  display:flex;align-items:center;letter-spacing:.2px}
.folder:hover{transform:translateY(-2px);box-shadow:0 5px 0 var(--fd-edge,#d8dee6),0 8px 18px rgba(17,24,39,.12)}
.folder:active{transform:translateY(3px);box-shadow:0 0 0 var(--fd-edge,#d8dee6)}
.folder:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.fd-no{font-family:Consolas,Menlo,monospace;font-size:11.5px;font-weight:700;color:#6b7280;
  background:#f1f3f5;padding:1px 7px;border-radius:6px;align-self:flex-start}
.fd-title{font-size:14.5px;line-height:1.45;font-weight:700;color:#222;margin:7px 0 6px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fd-meta{font-size:12.5px;color:var(--s2,#5c6470);line-height:1.75;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.fd-meta b{color:#333;font-weight:600}
.fd-foot{margin-top:auto;padding-top:9px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fd-tag{font-size:var(--fs-11);font-weight:700;padding:1px 8px;border-radius:9px;white-space:nowrap}
.fd-go{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--primary)}
.folder:hover .fd-go{text-decoration:underline}
.fd-empty{grid-column:1/-1;text-align:center;color:#8a95a1;padding:26px}
/* ===== 同客户同地点·合并派工单（2026-10-03 王老板口径）=====
   客户电话 + 地址一致的单，本来就是一趟活，池里聚成一块，勾一下一次全派出去 */
.mgroup{grid-column:1/-1;margin-top:6px;padding:11px 13px 13px;border-radius:var(--r-lg);
  background:linear-gradient(180deg,#F2FBF5,#E8F6EE);border:1px solid #bfe3cd}
.mgroup-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.mgroup-hd b{font-size:13.5px;color:#1f6f43}
.mgroup-why{font-size:var(--fs-12);color:#4a7a5f;line-height:1.6;margin-bottom:9px}
.mgroup-why b{color:#1f6f43}
.mg-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:9px;margin-top:2px;
  border-top:1px dashed #b6dcc6}
.mg-bar select{flex:1;min-width:130px;margin:0;min-height:36px;padding:6px 9px;font-size:12.5px}
.mg-all{font-size:var(--fs-12);color:#2f6b47;background:#fff;border:1px solid #bfe3cd;border-radius:var(--r-sm);
  padding:6px 11px;cursor:pointer;font-weight:600}
.mg-all:hover{background:#f0f9f3}
.mg-pick{width:17px;height:17px;accent-color:var(--primary);flex:0 0 auto;cursor:pointer}
.folder.picked{outline:2px solid var(--primary);outline-offset:-1px;background:#F6FDF9}
/* 手机端：文件夹卡单列（PC 靠 minmax(236px) 自动多列） */
@media (max-width:640px){
  .fwall{grid-template-columns:1fr;gap:11px;margin-top:10px}
  .fd-title{font-size:var(--fs-14)}
  .mg-bar select{min-width:0}
}
/* 完工待核实：紧凑行（工单号 + 任务名称 + 价格 + 闭环按钮），不占版面 */
.ccrow{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f6fdf8;border:1px solid #cdeccd;border-left:4px solid #16A34A;border-radius:var(--r-sm);margin-bottom:8px}
.ccrow .bcb{flex:0 0 auto;width:17px;height:17px;accent-color:#16A34A}
.cc-no{font-family:Consolas,Menlo,monospace;font-size:var(--fs-12);font-weight:700;color:var(--primary);flex:0 0 auto;white-space:nowrap}
.cc-cust{flex:0 0 auto;font-size:var(--fs-11);font-weight:700;color:#1f6f43;background:#e7f6ec;padding:1px 8px;border-radius:9px;white-space:nowrap;max-width:88px;overflow:hidden;text-overflow:ellipsis}
.cc-title{flex:1;min-width:0;font-size:var(--fs-14);font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-price{flex:0 0 auto;font-size:var(--fs-13);font-weight:700;color:#b45309;white-space:nowrap}
.cc-price i{font-style:normal;font-size:10px;font-weight:600;color:#8a95a1;margin-right:3px}
.cc-btn{flex:0 0 auto;width:auto;min-width:88px;min-height:44px;padding:8px 14px;font-size:var(--fs-13);background:#16A34A;color:#fff;border:none;border-radius:var(--r-sm);font-weight:700;cursor:pointer}
.cc-btn:hover{background:#15803d}
.cc-no{cursor:pointer}
.cc-no:hover{text-decoration:underline}
/* ===== 可拖拽浮窗（通用：提醒明细 / 工单明细） ===== */
.floatwin{position:fixed;z-index:9500;min-width:300px;max-width:min(560px,94vw);
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:0 12px 40px rgba(17,24,39,.28);display:flex;flex-direction:column;overflow:hidden}
.floatwin-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:move;
  background:linear-gradient(180deg,#33425a,#28364a);color:#fff;user-select:none;touch-action:none}
.floatwin-bar .fw-t{font-size:var(--fs-14);font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.floatwin-bar .fw-x{flex:0 0 auto;width:26px;height:26px;border:none;border-radius:6px;background:rgba(255,255,255,.16);
  color:#fff;font-size:var(--fs-16);line-height:1;cursor:pointer}
.floatwin-bar .fw-x:hover{background:rgba(255,255,255,.3)}
.floatwin-body{padding:12px 14px;overflow:auto;max-height:74vh;-webkit-overflow-scrolling:touch}
.fw-empty{color:#8a95a1;text-align:center;padding:26px}
.fw-grp{margin-top:10px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.fw-grp-h{padding:8px 10px;font-weight:700;font-size:var(--fs-13)}
.fw-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--line);cursor:pointer}
.fw-item:hover{background:#f6f8fb}
.fw-item .fi-t{flex:1;min-width:0;font-size:var(--fs-13)}
.fw-item .fi-t.over{color:var(--red);font-weight:700}
.fw-item .fi-s{font-size:var(--fs-12);color:#8a95a1}
.fw-dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:var(--fs-13);margin:0}
.fw-dl dt{color:#8a95a1;font-weight:600;white-space:nowrap}
.fw-dl dd{margin:0;color:#222;word-break:break-word}
.fw-dtag{display:inline-block;font-size:var(--fs-11);font-weight:700;padding:1px 8px;border-radius:9px;background:var(--primary-l);color:var(--primary);margin-left:6px}
.fw-actions{margin-top:12px;display:flex;gap:8px}
@media(max-width:640px){
  .floatwin{max-width:94vw;min-width:0}
  .floatwin-body{max-height:72vh}
}

/* 手机端：便签卡单列（PC 靠上面 minmax(212px) 自动多列） */
@media (max-width:640px){
  .handwall{grid-template-columns:1fr;gap:11px;margin-top:10px}
  .handnote{padding:14px 12px 10px}
  .hn-title{font-size:14.5px}
}
.pnd-sec .pcard{box-shadow:none;margin-bottom:10px;border:1px solid var(--line)}
.pnd-sec .pcard:last-child{margin-bottom:0}
.pnd-sec .staffsub{background:#f7f9fc;border:1px solid var(--line);border-radius:var(--r-md);padding:10px;margin:8px 0}
/* 手机端（≤640px）重排版：统计紧凑、地图可折叠、工单信息分行清晰、按钮整行、表单单列 */
@media (max-width:640px){
  /* —— 顶部统计 + 筛选 —— */
  .pnd-stats{gap:8px;margin-bottom:10px}
  .pnd-stat{padding:10px 4px;border-radius:var(--r-lg)}
  .pnd-stat .n{font-size:21px}
  .pnd-stat .l{font-size:var(--fs-11)}
  .pnd-pills{gap:6px;margin:0 0 8px!important}
  .pill{flex:1 1 30%;text-align:center;padding:8px 4px;font-size:12.5px}
  .pill b{font-weight:700}
  .pnd-top>.btn{flex:1 1 100%;width:100%;padding:11px 16px;font-size:var(--fs-15)}

  /* —— 待审核改版：概览条 + 区域在窄屏的排布 —— */
  .pnd-ov{gap:6px;margin-bottom:10px}
  .sochip{flex:1 1 auto;justify-content:center;padding:7px 8px;font-size:12.5px;min-width:0}
  .sochip b{font-weight:700}
  .pnd-sec{margin-bottom:10px}
  .pnd-sec-h{font-size:var(--fs-14);padding:9px 12px}
  .pnd-sec-bd{padding:10px}

  /* —— 地图：默认折叠，点切换条才展开，不抢首屏 —— */
  #mapCard{display:none}
  #mapToggle{display:flex;align-items:center;justify-content:center;gap:6px;
    background:#eef4fb;border:1px dashed #9db8d8;color:#2b5f9e;border-radius:var(--r-lg);
    padding:11px;font-size:var(--fs-14);cursor:pointer;margin:0 0 10px}
  #mapCard.show{display:block;margin:0 0 12px!important}
  #mapCard.show #mapBox{height:220px!important}

  /* —— 工单卡：标题换行、信息两列对齐、操作整行 —— */
  .pcard{border-radius:var(--r-xl);margin-bottom:10px}
  .pcard .trow{padding:12px 12px 0 14px;gap:8px;flex-wrap:wrap}
  .pcard .trow b{font-size:14.5px;white-space:normal;overflow:visible;text-overflow:clip}
  .pcard .irow{padding:6px 12px 0 14px;font-size:var(--fs-12);gap:5px 12px;
    display:grid;grid-template-columns:1fr 1fr}
  .pcard .irow span{white-space:normal;overflow:visible;text-overflow:clip;min-width:0}
  .pcard .arow{flex-wrap:wrap;gap:8px;padding:10px 12px 12px}
  .pcard .arow .btn{flex:1 1 0;min-width:0;padding:11px 8px!important;font-size:14px!important}
  .pcard .arow .btn.line{flex:1 1 0}

  /* —— 左右分栏单列、人员卡片网格、表单单列 —— */
  .pnd-wrap{grid-template-columns:1fr;gap:12px}
  .pwcgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important}
  .grid2{grid-template-columns:1fr}
  .grid2 .btn{width:100%}
}
/* ===== 手机视图模式（宽屏手动切「手机视图」）：同一套移动排版，不依赖视口宽度 =====
   背景：.wrap.phone 把内容压成 430px 窄栏，但视口仍是宽屏，@media(max-width:…) 不触发，
   桌面样式挤进窄栏会全部错乱（2026-09-24 修复） */
body.phone-mode{font-size:var(--fs-16)}
body.phone-mode .card{border-radius:var(--r-xl);padding:14px;margin-bottom:12px}
body.phone-mode .btn{border-radius:var(--r-lg);padding:12px 16px;font-size:var(--fs-16)}
body.phone-mode .kpi{grid-template-columns:repeat(2,1fr);gap:12px}
body.phone-mode .kpi b{font-size:22px}
body.phone-mode .kpi div{padding:14px 6px;border-radius:var(--r-xl)}
body.phone-mode nav button{padding:10px 4px;font-size:var(--fs-15)}
body.phone-mode .photos{grid-template-columns:repeat(2,1fr)}
body.phone-mode .brand{flex-wrap:wrap}
body.phone-mode .btel{margin-left:0;font-size:var(--fs-12);padding:3px 9px}
body.phone-mode .pagehead .add{font-size:var(--fs-14);padding:10px 14px}
body.phone-mode .grid2{grid-template-columns:1fr}
body.phone-mode .grid2 .btn{width:100%}
/* 待审核页在手机视图窄栏里：与 ≤640px 同款紧凑排版 */
.wrap.phone .pnd-stats{gap:8px;margin-bottom:10px}
.wrap.phone .pnd-stat{padding:10px 4px;border-radius:var(--r-lg)}
.wrap.phone .pnd-stat .n{font-size:21px}
.wrap.phone .pnd-stat .l{font-size:var(--fs-11)}
.wrap.phone .pnd-pills{gap:6px;margin:0 0 8px!important}
.wrap.phone .pill{flex:1 1 30%;text-align:center;padding:8px 4px;font-size:12.5px}
.wrap.phone .pill b{font-weight:700}
.wrap.phone .pnd-top>.btn{flex:1 1 100%;width:100%;padding:11px 16px;font-size:var(--fs-15)}
.wrap.phone #mapCard{display:none}
.wrap.phone #mapToggle{display:flex;align-items:center;justify-content:center;gap:6px;
  background:#eef4fb;border:1px dashed #9db8d8;color:#2b5f9e;border-radius:var(--r-lg);
  padding:11px;font-size:var(--fs-14);cursor:pointer;margin:0 0 10px}
.wrap.phone #mapCard.show{display:block;margin:0 0 12px!important}
.wrap.phone #mapCard.show #mapBox{height:220px!important}
.wrap.phone .pcard{border-radius:var(--r-xl);margin-bottom:10px}
.wrap.phone .pcard .trow{padding:12px 12px 0 14px;gap:8px;flex-wrap:wrap}
.wrap.phone .pcard .trow b{font-size:14.5px;white-space:normal;overflow:visible;text-overflow:clip}
.wrap.phone .pcard .irow{padding:6px 12px 0 14px;font-size:var(--fs-12);gap:5px 12px;
  display:grid;grid-template-columns:1fr 1fr}
.wrap.phone .pcard .irow span{white-space:normal;overflow:visible;text-overflow:clip;min-width:0}
.wrap.phone .pcard .arow{flex-wrap:wrap;gap:8px;padding:10px 12px 12px}
.wrap.phone .pcard .arow .btn{flex:1 1 0;min-width:0;padding:11px 8px!important;font-size:14px!important}
.wrap.phone .pnd-wrap{grid-template-columns:1fr;gap:12px}
.wrap.phone .pwcgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important}
.fixlbl{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-12);color:#1e7e34;cursor:pointer;white-space:nowrap}
.fixlbl input{margin:0}
.fixedok{margin:4px 0 0 28px;font-size:11.5px;color:#1e7e34}
/* 统计数字：选完客户只看数量，不列任务名 */
.statrow{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.statpill{flex:1 1 auto;min-width:70px;text-align:center;background:#fff;border:1px solid var(--line);
  border-radius:9px;padding:6px 4px}
.statpill b{display:block;font-size:17px;color:var(--primary);line-height:1.25}
.statpill span{font-size:var(--fs-11);color:var(--muted)}
/* 编号小标签（客户编号 / 地点编号） */
.code{display:inline-block;font-family:Consolas,Menlo,monospace;font-size:var(--fs-11);
  background:#eef3ee;color:#2c6b45;border:1px solid #d3e3d8;border-radius:5px;
  padding:1px 5px;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.chip{padding:6px 12px;border:1.5px solid var(--line);border-radius:var(--r-20);font-size:var(--fs-13);background:#fff;color:#3c4043}
.chip.on{border-color:var(--primary);background:var(--primary-l);color:var(--primary);font-weight:600}
.badge{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 5px;border-radius:9px;
  background:var(--red);color:#fff;font-size:var(--fs-11);text-align:center;margin-left:4px}
.ckline{display:flex;align-items:center;gap:8px;font-size:var(--fs-14);padding:8px 0}
.err{background:var(--red-l);color:var(--red);padding:10px;border-radius:var(--r-sm);font-size:var(--fs-14);margin-bottom:10px}
.hide{display:none!important}
.sumbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 10px;margin-bottom:8px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);font-size:var(--fs-13)}
.sumbar b{font-weight:700}
.sumbar .sum{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border:1px solid var(--line);
  border-radius:var(--r-20);color:var(--muted);font-size:var(--fs-12);background:#fafbfc}
.sumbar .sum.on{font-weight:600;background:#fff}
.sumbar .sum b{font-size:var(--fs-13)}
@media(max-width:600px){.kpi{grid-template-columns:repeat(3,1fr)}.grid2{grid-template-columns:1fr}}

/* ---- 电脑端显示比例：内容居中、留白与字号均衡 ---- */
@media(min-width:900px){
  :root{--cw:1040px}
  .wrap{margin:0 auto}
  body{font-size:var(--fs-15)}
  .card{padding:14px}
  .grid2{gap:14px}
  table{font-size:var(--fs-14)}
  #mapBox{height:520px}
  /* 电脑端：弹层不再贴着屏幕两侧，收成与内容同宽、上下留白的小浮层 */
  #sheet{bottom:24px;border-radius:16px}
}
@media(min-width:1500px){ :root{--cw:1180px} }

/* ===== 顶栏品牌栏（Logo + 公司全称） ===== */
.brand{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.logo{width:38px;height:38px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 1px 3px rgba(0,0,0,.06);padding:3px;overflow:hidden}
.logo img{width:100%;height:100%;object-fit:contain;display:block}
.bt{display:flex;flex-direction:column;line-height:1.18}
.bt .bn{font-size:var(--fs-15);font-weight:800;color:var(--text);white-space:nowrap}
.bt .bs{font-size:var(--fs-11);color:var(--sub);white-space:nowrap}
.btel{margin-left:auto;display:inline-flex;align-items:center;gap:3px;font-size:12.5px;font-weight:700;
  color:var(--primary);text-decoration:none;background:var(--primary-l);padding:4px 10px;border-radius:var(--r-20);white-space:nowrap}
.btel:hover{filter:brightness(.98)}

/* ===== 手机端比例协调（自动识别手机后生效；屏宽<768 同样套用） =====
   字号放大、圆角加大、间距放宽、KPI 改 2 列，画面更协调不拥挤 */
@media(max-width:768px){
  body{font-size:var(--fs-16)}
  .card{border-radius:var(--r-xl);padding:14px;margin-bottom:12px}
  .btn{border-radius:var(--r-lg);padding:12px 16px;font-size:var(--fs-16)}
  .kpi{grid-template-columns:repeat(2,1fr);gap:12px}
  .kpi b{font-size:22px}
  .kpi div{padding:14px 6px;border-radius:var(--r-xl)}
  nav button{padding:10px 4px;font-size:var(--fs-15)}
  .grid2{grid-template-columns:1fr}
  .photos{grid-template-columns:repeat(2,1fr)}
  .brand{flex-wrap:wrap}
  .btel{margin-left:0;font-size:var(--fs-12);padding:3px 9px}
}

/* ===== 总览欢迎横幅 + 页头 ===== */
.banner{background:linear-gradient(135deg,var(--primary),#009a40);color:#fff;border-radius:var(--r-xl);padding:16px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.06)}

/* ===== 人员管理卡片版（B 版，响应式，电脑/手机通用） ===== */
.staff-stat{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.staff-stat .pill{flex:1 1 auto;min-width:72px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:8px 6px}
.staff-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.staff-chips{display:flex;gap:6px;flex-wrap:wrap}
.staff-chips .chip{padding:5px 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;font-size:12.5px;color:#374151;cursor:pointer;line-height:1.4}
.staff-chips .chip.on{background:#16A34A;border-color:#16A34A;color:#fff}
.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-top:10px}
.staff-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:12px;display:flex;flex-direction:column;gap:10px}
.staff-card.staff-locked{opacity:.72;background:#fafbfc}
.staff-ava{width:38px;height:38px;border-radius:50%;color:#fff;font-weight:500;font-size:var(--fs-15);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.staff-meta{display:flex;flex-direction:column;gap:5px;font-size:var(--fs-13);line-height:1.5}
.staff-ops{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;border-top:1px solid var(--line);padding-top:10px}
.staff-ops .btn.line{width:auto;flex:1 1 auto;min-width:0}
.staff-board{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
@media(max-width:640px){ .staff-grid{grid-template-columns:1fr} .staff-stat .pill{min-width:0} }
.banner .hi{font-size:19px;font-weight:800}
.banner .dt{font-size:12.5px;opacity:.92;margin-top:5px}
.banner .tip{margin-top:11px;font-size:12.5px;background:rgba(255,255,255,.18);display:inline-block;padding:5px 11px;border-radius:var(--r-20)}
.pagehead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 12px}
.pagehead h2{font-size:18px;font-weight:800}
.pagehead .add{background:var(--primary);color:#fff;border:0;border-radius:var(--r-md);padding:9px 14px;font-weight:700;font-size:var(--fs-13);cursor:pointer;white-space:nowrap}
@media(max-width:768px){ .pagehead .add{font-size:var(--fs-14);padding:10px 14px} }

/* ===== 通用工具类 u-* ：P2 从内联样式抽离（20261010）。改这里 = 全站生效 ===== */
.u-mt0{margin-top:0}
.u-mt4{margin-top:4px}
.u-mt6{margin-top:6px}
.u-mt8{margin-top:8px}
.u-mt10{margin-top:10px}
.u-mt12{margin-top:12px}
.u-mb6{margin-bottom:6px}
.u-mb8{margin-bottom:8px}
.u-m0{margin:0}
.u-p6{padding:6px}
.u-fs11{font-size:var(--fs-11)}
.u-fs12{font-size:var(--fs-12)}
.u-fs13{font-size:var(--fs-13)}
.u-fs14{font-size:var(--fs-14)}
.u-fs16{font-size:var(--fs-16)}
.u-wauto{width:auto}
.u-flex1{flex:1}
.u-tl{text-align:left}
.u-tc{text-align:center}
.u-red{color:var(--red)}
.u-primary{color:var(--primary)}
.u-bg-redl{background:var(--red-l)}

/* ===== 全局重要消息提示（20261010c）：页面内非阻塞 toast，替代原生 alert =====
   带图标+配色+文字（不只靠颜色区分）；成功/错误/警告/信息四态；点击或超时自动消失 */
#lyToast{position:fixed;left:50%;top:12px;transform:translateX(-50%);z-index:9999;
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;
  width:max-content;max-width:92vw}
.lyt{pointer-events:auto;cursor:pointer;display:flex;align-items:center;gap:8px;
  min-width:200px;max-width:92vw;padding:10px 14px;border-radius:var(--r-md);
  font-size:var(--fs-14);font-weight:600;line-height:1.4;box-shadow:0 6px 20px rgba(0,0,0,.16);
  background:#fff;color:var(--text);border:1px solid var(--line);
  animation:lytIn .18s ease}
.lyt-ic{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:var(--fs-13);font-weight:800;color:#fff}
.lyt-tx{flex:1 1 auto;min-width:0;word-break:break-word}
.lyt-ok{background:var(--primary-l);border-color:#bfe3cc;color:#005A26}
.lyt-ok .lyt-ic{background:var(--primary)}
.lyt-err{background:var(--red-l);border-color:#f3c2c0;color:var(--red)}
.lyt-err .lyt-ic{background:var(--red)}
.lyt-warn{background:var(--orange-l);border-color:#f6d6b0;color:#9a5200}
.lyt-warn .lyt-ic{background:var(--orange)}
.lyt-info{background:#eaf2ff;border-color:#bcd6ff;color:#11489e}
.lyt-info .lyt-ic{background:#2f6bd8}
@keyframes lytIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:768px){ #lyToast{top:8px} .lyt{min-width:0;width:92vw} }
/* 派工服务地点：可搜索 + 聚合子客户 + 选好收起 */
.addrSearch{position:relative}
.addrSearch input{padding-left:34px}
.addrSearch .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--sub)}
.addrList{max-height:230px;overflow:auto;margin-top:8px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff}
.addrItem{position:relative;padding:10px 11px;border-bottom:1px solid var(--line);cursor:pointer}
.addrItem:last-child{border-bottom:none}
.addrItem:hover{background:#f7faf8}
.addrItem.on{background:var(--primary-l);box-shadow:inset 3px 0 0 var(--primary)}
.addrItem .aMain{padding-right:138px}
.addrOps{position:absolute;top:10px;right:11px;display:flex;gap:6px}
.maintBtn{background:#fff;border:1px solid var(--line);border-radius:7px;color:var(--primary);font-size:var(--fs-12);padding:4px 9px;cursor:pointer;flex:0 0 auto;white-space:nowrap}
.maintBtn:hover{background:var(--primary-l)}
.maintBtn.def{color:#8a4b00;border-color:#f0c674;background:#fff8ec}
.maintBtn.def:hover{background:#fff1d6}
.addrDefTag{display:inline-block;font-size:var(--fs-11);font-weight:700;color:#0a6b33;background:#eafbf0;border:1px solid #8fd9b0;border-radius:5px;padding:1px 6px;margin-left:6px;vertical-align:1px}
.addrBadge{display:inline-block;font-size:var(--fs-11);font-weight:700;color:#fff;background:var(--primary);border-radius:5px;padding:1px 6px;margin-right:6px}
.addrBadge.sub{background:#7a5cff}
.addrItem .a1{font-size:var(--fs-14);font-weight:600}
.addrItem .a2{color:var(--sub);font-size:12.5px;margin-top:2px}
.defChk{display:flex;align-items:center;gap:6px;font-size:var(--fs-13);color:#0a6b33;background:#f3fbf6;border:1px solid #bfe6cf;border-radius:var(--r-sm);padding:7px 9px;cursor:pointer}
.defChk input{width:16px;height:16px;accent-color:var(--primary)}
.addrEmpty{color:var(--sub);font-size:var(--fs-13);padding:14px;text-align:center}
.addrSelCard{display:none;align-items:center;justify-content:space-between;gap:8px;border:1px solid #bfe6c8;background:var(--primary-l);border-radius:var(--r-sm);padding:9px 11px;cursor:pointer;margin-top:6px}
.addrSelCard .lx{font-weight:700;color:var(--primary);font-size:13.5px}
.addrSelCard .ch{background:#fff;border:1px solid var(--line);border-radius:7px;color:var(--primary);font-size:var(--fs-12);padding:3px 10px;flex:0 0 auto}
.subs{margin-top:10px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;overflow:hidden}
.subItem{padding:10px 11px;border-top:1px solid var(--line)}
.subItem:first-child{border-top:none}
.subItem .info{color:var(--sub);font-size:12.5px;margin-top:3px}
.subItem .editBtn{background:none;border:1px solid var(--line);border-radius:7px;color:var(--primary);font-size:var(--fs-12);padding:4px 9px;cursor:pointer;flex:0 0 auto}
.subEdit{margin-top:9px;padding:10px;border:1px dashed #bfd9c8;border-radius:9px;background:#fffef9;display:none}
.subEdit .grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.subEdit .twoBtn{display:flex;gap:8px;margin-top:10px}
/* 派单「客户主体」搜索结果：清晰可点选 */
.custOpt{padding:10px 12px;border:1px solid var(--line);border-radius:9px;margin-bottom:7px;cursor:pointer;background:#fff;transition:.12s}
.custOpt:hover{border-color:var(--primary);background:var(--primary-l);box-shadow:0 2px 10px rgba(0,122,51,.10)}
.custOpt .coName{font-size:var(--fs-15);font-weight:700;color:var(--text)}
.custOpt .coMeta{font-size:var(--fs-12);color:var(--sub);margin-top:3px;line-height:1.5}

/* ===== 新建派工单 优化排版（2026-10-22） ===== */
.ntsec{background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl);padding:14px;margin-bottom:12px;box-shadow:var(--shadow-card)}
.ntsec.opt{background:#f5f7f6;border:1px solid transparent;border-radius:var(--r-xl);box-shadow:none;padding:14px 4px}
.ntsec-h{display:flex;align-items:center;gap:9px;margin:0 0 12px}
.ntnum{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;
  font-size:var(--fs-12);font-weight:800;display:flex;align-items:center;justify-content:center}
.ntsec.opt .ntnum{background:var(--sub)}
.ntsec-h .t{font-size:var(--fs-15);font-weight:800;color:var(--text)}
.ntbadge{margin-left:auto;font-size:var(--fs-11);font-weight:700;padding:2px 9px;border-radius:var(--r-pill)}
.ntbadge.req{background:#fdecea;color:var(--red)}
.ntbadge.opt{background:#eef1f3;color:var(--sub)}
.ntqf{margin:0 0 12px}
.ntqf .ql{font-size:var(--fs-12);color:var(--muted);margin-bottom:6px}
.ntqf .chip{cursor:pointer;transition:.12s}
.ntqf .chip:active{transform:scale(.96)}
.nterr{display:none;background:#fdecea;border:1px solid #f3b4b4;color:var(--red);
  border-radius:9px;padding:9px 11px;font-size:var(--fs-13);line-height:1.55;margin-bottom:12px}
.nterr.show{display:block}
.custOpt .coSub{font-size:var(--fs-11);color:var(--muted);margin-top:3px}
/* —— 新建派工单 V3：对齐样板（故障条 / 派给谁卡片 / 客户卡 / 照片缩略） —— */
.fault{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}
.fault+.fault{margin-top:0;padding-top:0;border-top:0}
.fault .fno{flex:0 0 auto;width:24px;height:24px;border-radius:50%;background:#eef1f4;color:var(--sub);
  border:0;font-size:var(--fs-12);font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:11px}
.fault .fdesc{flex:1 1 auto;min-width:0;width:100%;height:44px;padding:0 12px;font-size:var(--fs-15);
  background:var(--card);border:1px solid #e3e6ea;border-radius:var(--r-md);line-height:1.4;color:var(--text)}
.fault .fdesc::placeholder{color:#aab0b6}
.fault .fdesc:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,122,51,.18)}
.fault .fdesc.err{border-color:var(--red);box-shadow:0 0 0 3px rgba(200,16,16,.15);background:#fff}
.fphotos{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.phbtn{height:30px;padding:0 12px;border:1px solid #e3e6ea;background:#fff;border-radius:var(--r-pill);
  font-size:var(--fs-12);color:var(--sub);display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.phbtn .cnt{color:var(--primary);font-weight:700}
.thumbs{display:flex;gap:6px;flex-wrap:wrap}
.thumb{width:40px;height:40px;border-radius:var(--r-sm);overflow:hidden;position:relative;border:1px solid var(--line);background:#eef1f4}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .x{position:absolute;right:0;top:0;background:rgba(0,0,0,.55);color:#fff;font-size:var(--fs-11);padding:0 4px;border:0;line-height:16px}
.fdel{flex:0 0 auto;width:32px;height:32px;border:0;background:none;color:var(--muted);font-size:var(--fs-15);cursor:pointer}
.addbtn{width:100%;height:44px;border:1px dashed var(--primary);background:var(--primary-l);color:var(--primary);
  border-radius:var(--r-md);font-size:var(--fs-14);font-weight:700;cursor:pointer}
.addbtn:active{background:#d9efe2}
.choose{display:flex;flex-direction:column;gap:10px}
.opt2{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid #e3e6ea;
  border-radius:var(--r-md);background:var(--card);cursor:pointer}
.opt2.on{border-color:var(--primary);background:var(--primary-l)}
.opt2 .radio{flex:0 0 auto;width:20px;height:20px;border-radius:50%;border:2px solid #e3e6ea;margin-top:2px}
.opt2.on .radio{border-color:var(--primary);background:radial-gradient(circle,#fff 34%,var(--primary) 38%)}
.opt2 .t{font-weight:700;font-size:14.5px;color:var(--text)}
.opt2 .d{font-size:var(--fs-12);color:var(--muted);margin-top:2px}
.pick{background:var(--primary-l);border:1px solid #bfe6cf;border-radius:var(--r-md);padding:10px 12px}
.pick .pn{font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text)}
.pick .pn button{border:0;background:none;color:var(--primary);font-size:var(--fs-13);font-weight:700}
.pick .pm{font-size:var(--fs-12);color:var(--sub);margin-top:3px}
#sheet .dock{gap:8px}
#sheet .dock-btn{height:50px;font-size:var(--fs-16);border-radius:var(--r-md);font-weight:800;box-shadow:0 6px 20px rgba(0,70,30,.12)}
#sheet .dock-btn:active{filter:brightness(.94)}
