/* =========================================================================
   孚策系统 V3.1 · 需求发布 - 任务派接协作模块 样式
   依赖 design-system.css 的设计令牌
   ========================================================================= */

/* ---------- V3.1 Hero ---------- */
.v31-hero{
  background:
    radial-gradient(1100px 420px at 78% -8%, rgba(165,124,42,.16), transparent 62%),
    linear-gradient(170deg,#0F3A3A 0%, #14332F 52%, #17130D 100%);
  color:#F2EFE8; padding:88px 0 76px; position:relative; overflow:hidden;
}
.v31-hero::after{
  content:""; position:absolute; right:-140px; top:-120px; width:520px; height:520px;
  border-radius:50%; background:radial-gradient(circle,rgba(232,212,147,.13),transparent 66%);
}
.v31-hero .eyebrow{ color:var(--gold-200) }
.v31-hero h1{ font-family:var(--ff-serif); font-size:clamp(30px,4.4vw,50px); line-height:1.22; font-weight:700; margin:14px 0 18px }
.v31-hero h1 .gold-text{ background:var(--gold-glow); -webkit-background-clip:text; background-clip:text; color:transparent }
.v31-hero .lead{ color:#C8C2B5; max-width:760px; font-size:16px }
.v31-hero-actions{ display:flex; gap:14px; flex-wrap:wrap; margin-top:32px }
.v31-hero .btn-ghost{ border-color:rgba(232,212,147,.5); color:var(--gold-200) }
.v31-hero .btn-ghost:hover{ background:rgba(232,212,147,.1); border-color:var(--gold-300) }
.v31-kpis{ display:grid; grid-template-columns:repeat(5,1fr); gap:16px; margin-top:52px; position:relative; z-index:2 }
.v31-kpi{ background:rgba(255,255,255,.05); border:1px solid rgba(232,212,147,.2); border-radius:var(--r-lg); padding:20px 18px }
.v31-kpi b{ display:block; font-family:var(--ff-serif); font-size:30px; color:var(--gold-200); line-height:1.1 }
.v31-kpi span{ display:block; font-size:12.5px; color:#A9A296; margin-top:6px }

/* ---------- 业务闭环链路 ---------- */
.loop-flow{
  display:flex; align-items:stretch; gap:0; overflow-x:auto; padding:12px 4px 24px;
  scrollbar-width:thin;
}
.loop-node{
  flex:0 0 168px; background:var(--ink-50); border:1px solid var(--ink-200);
  border-radius:var(--r-md); padding:16px 14px; position:relative; text-align:center;
  transition:all .22s var(--ease);
}
.loop-node:hover{ transform:translateY(-4px); border-color:var(--gold-300); box-shadow:var(--shadow-2) }
.loop-node .ln-idx{
  width:26px; height:26px; border-radius:50%; background:var(--gold-glow); color:#fff;
  font-size:12px; font-weight:700; line-height:26px; margin:0 auto 10px;
}
.loop-node .ln-t{ font-size:13.5px; font-weight:700; color:var(--ink-800); line-height:1.5 }
.loop-node .ln-d{ font-size:11.5px; color:var(--ink-500); margin-top:6px; line-height:1.6 }
.loop-node.hl{ background:var(--gold-50); border-color:var(--gold-300) }
.loop-arrow{
  flex:0 0 30px; display:flex; align-items:center; justify-content:center;
  color:var(--gold-400); font-size:18px; font-weight:700;
}

/* ---------- 痛点对比 ---------- */
.gap-cmp{ display:grid; grid-template-columns:1fr 1fr; gap:22px }
.gap-col{ border-radius:var(--r-lg); padding:26px 24px; border:1px solid var(--ink-200) }
.gap-col.bad{ background:#FBF5F4; border-color:#EBD3CF }
.gap-col.good{ background:#F1F8F2; border-color:#CFE3D5 }
.gap-col h4{ font-family:var(--ff-serif); font-size:18px; margin-bottom:16px; display:flex; align-items:center; gap:8px }
.gap-col.bad h4{ color:var(--danger) }
.gap-col.good h4{ color:var(--ok) }
.gap-col ul{ list-style:none }
.gap-col li{ padding:9px 0 9px 26px; position:relative; font-size:14px; line-height:1.7; border-bottom:1px dashed rgba(0,0,0,.07) }
.gap-col li:last-child{ border-bottom:none }
.gap-col.bad li::before{ content:"✕"; position:absolute; left:0; color:var(--danger); font-weight:700 }
.gap-col.good li::before{ content:"✓"; position:absolute; left:0; color:var(--ok); font-weight:700 }

/* ---------- 两种接单模式 ---------- */
.mode-cmp{ display:grid; grid-template-columns:1fr 1fr; gap:24px }
.mode-col{
  background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg);
  overflow:hidden; transition:all .25s var(--ease);
}
.mode-col:hover{ box-shadow:var(--shadow-2); transform:translateY(-3px) }
.mode-col .mc-head{ padding:22px 24px; border-bottom:1px solid var(--ink-200) }
.mode-col.a .mc-head{ background:linear-gradient(135deg,rgba(166,83,43,.10),rgba(166,83,43,.02)) }
.mode-col.b .mc-head{ background:linear-gradient(135deg,rgba(15,58,58,.10),rgba(15,58,58,.02)) }
.mc-badge{ font-size:11.5px; font-weight:700; letter-spacing:.06em; color:var(--ink-500) }
.mc-head h3{ font-family:var(--ff-serif); font-size:21px; margin:6px 0 4px }
.mc-head p{ font-size:13px; color:var(--ink-500) }
.mc-body{ padding:22px 24px }
.mc-flow{ list-style:none; counter-reset:mf }
.mc-flow li{
  counter-increment:mf; position:relative; padding:8px 0 8px 32px; font-size:13.5px;
  line-height:1.7; color:var(--ink-700);
}
.mc-flow li::before{
  content:counter(mf); position:absolute; left:0; top:9px; width:20px; height:20px;
  border-radius:50%; background:var(--ink-100); color:var(--ink-600);
  font-size:11px; font-weight:700; text-align:center; line-height:20px;
}
.mc-flow li::after{
  content:""; position:absolute; left:9px; top:32px; bottom:-4px; width:1px; background:var(--ink-200);
}
.mc-flow li:last-child::after{ display:none }
.mc-pros-cons{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:18px }
.mc-pc{ font-size:12.5px }
.mc-pc strong{ display:block; font-size:12px; margin-bottom:6px; letter-spacing:.04em }
.mc-pc ul{ list-style:none }
.mc-pc li{ padding:3px 0 3px 14px; position:relative; line-height:1.6 }
.mc-pc li::before{ content:"·"; position:absolute; left:2px; font-weight:700 }
.mc-pc.pro strong{ color:var(--ok) } .mc-pc.pro li::before{ color:var(--ok) }
.mc-pc.con strong{ color:var(--warn) } .mc-pc.con li::before{ color:var(--warn) }
.mc-suit{
  margin-top:18px; padding:12px 14px; background:var(--gold-50); border-left:3px solid var(--gold-400);
  border-radius:0 var(--r-sm) var(--r-sm) 0; font-size:13px; color:var(--ink-700);
}
.mc-suit b{ color:var(--gold-600) }
.hybrid-note{
  margin-top:22px; padding:18px 22px; background:var(--ink-900); color:#E8D493;
  border-radius:var(--r-lg); font-size:14px; display:flex; gap:12px; align-items:flex-start;
}
.hybrid-note b{ color:#F4E9C5 }

/* ---------- 角色卡 ---------- */
.role-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px }
.role-card{
  background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg); padding:24px;
  transition:all .22s var(--ease);
}
.role-card:hover{ border-color:var(--gold-300); box-shadow:var(--shadow-2) }
.role-card .rc-id{
  font-family:var(--ff-mono); font-size:11.5px; color:var(--ink-500);
  background:var(--ink-100); padding:3px 8px; border-radius:4px; display:inline-block;
}
.role-card h3{ font-family:var(--ff-serif); font-size:20px; margin:12px 0 4px }
.role-card .rc-tag{ display:inline-block; margin-bottom:14px }
.role-card p{ font-size:13.5px; color:var(--ink-600); line-height:1.75; min-height:70px }
.rc-perms{ list-style:none; margin-top:16px; border-top:1px dashed var(--ink-200); padding-top:14px }
.rc-perms li{ font-size:13px; padding:5px 0 5px 20px; position:relative; color:var(--ink-700) }
.rc-perms li::before{ content:"▸"; position:absolute; left:2px; color:var(--gold-500) }

/* ---------- 智能匹配算法 ---------- */
.algo-wrap{ display:grid; grid-template-columns:360px 1fr; gap:28px; align-items:start }
.algo-left{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg); padding:24px }
.algo-left h4{ font-family:var(--ff-serif); font-size:17px; margin-bottom:6px }
.algo-left .algo-sub{ font-size:12.5px; color:var(--ink-500); margin-bottom:18px }
.wf-row{ margin-bottom:16px }
.wf-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px }
.wf-name{ font-size:13.5px; font-weight:600; color:var(--ink-800) }
.wf-pct{ font-family:var(--ff-mono); font-size:13px; color:var(--gold-600); font-weight:700 }
.wf-bar{ height:8px; background:var(--ink-100); border-radius:99px; overflow:hidden }
.wf-bar i{ display:block; height:100%; background:var(--gold-glow); border-radius:99px; transition:width .5s var(--ease) }
.wf-desc{ font-size:11.5px; color:var(--ink-500); margin-top:5px; line-height:1.6 }
.algo-formula{
  margin-top:18px; padding:14px 16px; background:var(--ink-900); color:#E8D493;
  border-radius:var(--r-md); font-family:var(--ff-mono); font-size:12px; line-height:1.9;
}
.algo-formula .af-h{ color:#8B8478; font-family:var(--ff-sans); font-size:11px; letter-spacing:.08em; margin-bottom:6px }

/* 匹配结果列表 */
.rank-list{ display:flex; flex-direction:column; gap:12px }
.rank-row{
  background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-md);
  padding:16px 18px; display:grid; grid-template-columns:64px 1fr 220px; gap:18px; align-items:center;
  transition:all .2s var(--ease);
}
.rank-row:hover{ border-color:var(--gold-300); box-shadow:var(--shadow-1) }
.rank-row.top1{ border-color:var(--gold-400); background:linear-gradient(90deg,rgba(251,246,232,.7),#fff 45%) }
.rr-ring{ position:relative; width:64px; height:64px }
.rr-ring svg{ transform:rotate(-90deg) }
.rr-ring .rr-num{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--ff-serif); font-size:16px; font-weight:700; color:var(--gold-600);
}
.rr-name{ font-size:15px; font-weight:700; color:var(--ink-800); margin-bottom:5px }
.rr-meta{ font-size:12px; color:var(--ink-500); display:flex; gap:10px; flex-wrap:wrap; margin-bottom:8px }
.rr-dims{ display:grid; grid-template-columns:repeat(5,1fr); gap:6px }
.rr-dim{ text-align:center }
.rr-dim .rd-bar{ height:5px; background:var(--ink-100); border-radius:99px; overflow:hidden; margin-bottom:3px }
.rr-dim .rd-bar i{ display:block; height:100%; background:var(--qian-qing-2); border-radius:99px }
.rr-dim .rd-l{ font-size:10px; color:var(--ink-500) }
.rr-act{ text-align:right }
.rr-act .btn{ width:100%; margin-bottom:6px }

/* ---------- 状态机 ---------- */
.sm-track{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:20px; background:var(--ink-50); border:1px dashed var(--ink-300); border-radius:var(--r-lg) }
.sm-node{
  padding:7px 14px; border-radius:99px; font-size:12.5px; font-weight:600;
  background:#fff; border:1px solid var(--ink-300); color:var(--ink-600); white-space:nowrap;
}
.sm-arrow{ color:var(--ink-400); font-size:13px }
.sm-node.st-draft{ background:#F2EFE8; border-color:var(--ink-300) }
.sm-node.st-wait{ background:#FDF3E3; border-color:#E8C489; color:#8A6420 }
.sm-node.st-open{ background:#EAF3F3; border-color:#A9CFCF; color:#0F3A3A }
.sm-node.st-bid{ background:#FBEEE7; border-color:#DDB79B; color:#8A4A22 }
.sm-node.st-task{ background:#E9EDF8; border-color:#AEB9DE; color:#2C3A68 }
.sm-node.st-review{ background:#F6EFE0; border-color:#D9C089; color:#7A5C12 }
.sm-node.st-done{ background:#E7F4EA; border-color:#A9D6B6; color:#256B3C }
.sm-node.st-cancel{ background:#F1F0EE; border-color:var(--ink-300); color:var(--ink-500) }
.sm-node.st-dispute{ background:#FBEAE8; border-color:#E3B1AC; color:#A32C22 }
.sm-legend{ display:flex; gap:16px; flex-wrap:wrap; margin-top:14px; font-size:12px; color:var(--ink-500) }

/* ---------- 多机构联合承接 ---------- */
.joint-case{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg); overflow:hidden }
.jc-head{ padding:22px 26px; border-bottom:1px solid var(--ink-200); background:linear-gradient(135deg,rgba(15,58,58,.06),transparent) }
.jc-head h4{ font-family:var(--ff-serif); font-size:19px; margin-bottom:6px }
.jc-head p{ font-size:13px; color:var(--ink-500) }
.jc-body{ display:grid; grid-template-columns:1fr 1fr; gap:0 }
.jc-col{ padding:22px 26px }
.jc-col:first-child{ border-right:1px solid var(--ink-200) }
.jc-col h5{ font-size:13px; letter-spacing:.06em; color:var(--ink-500); margin-bottom:14px }
.jc-party{ display:flex; align-items:center; gap:12px; padding:11px 0; border-bottom:1px dashed var(--ink-200) }
.jc-party:last-child{ border-bottom:none }
.jc-role{ flex:0 0 84px; font-size:11.5px; font-weight:700; color:#fff; background:var(--qian-qing); text-align:center; padding:4px 0; border-radius:4px }
.jc-role.r2{ background:var(--sheng-zhe) } .jc-role.r3{ background:var(--ding-chi) }
.jc-pname{ flex:1; font-size:13.5px; color:var(--ink-700) }
.jc-share{ font-family:var(--ff-mono); font-size:14px; font-weight:700; color:var(--gold-600) }
.jc-sub{ list-style:none; counter-reset:js }
.jc-sub li{ counter-increment:js; position:relative; padding:11px 0 11px 30px; font-size:13.5px; line-height:1.7; border-bottom:1px dashed var(--ink-200) }
.jc-sub li:last-child{ border-bottom:none }
.jc-sub li::before{
  content:counter(js); position:absolute; left:0; top:12px; width:20px; height:20px;
  border-radius:50%; background:var(--gold-100); color:var(--gold-700);
  font-size:11px; font-weight:700; text-align:center; line-height:20px;
}
.jc-sub .js-owner{ display:block; font-size:11.5px; color:var(--ink-500); margin-top:3px }

/* ---------- 打通关系 ---------- */
.integ-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px }
.integ-card{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-md); padding:20px; transition:all .22s var(--ease) }
.integ-card:hover{ border-color:var(--gold-300); box-shadow:var(--shadow-2); transform:translateY(-3px) }
.integ-card .ic-i{ font-size:24px; margin-bottom:10px }
.integ-card h5{ font-size:14.5px; margin-bottom:8px; color:var(--ink-800) }
.integ-card p{ font-size:12.5px; color:var(--ink-600); line-height:1.7 }

/* ---------- 数据表折叠 ---------- */
.tbl-acc{ display:flex; flex-direction:column; gap:12px }
.tbl-item{ border:1px solid var(--ink-200); border-radius:var(--r-md); overflow:hidden; background:#fff }
.tbl-item > summary{
  padding:16px 20px; cursor:pointer; font-size:14.5px; font-weight:600; color:var(--ink-800);
  display:flex; align-items:center; gap:10px; list-style:none; user-select:none;
  transition:background .18s var(--ease);
}
.tbl-item > summary::-webkit-details-marker{ display:none }
.tbl-item > summary:hover{ background:var(--ink-50) }
.tbl-item > summary::before{ content:"▸"; color:var(--gold-500); transition:transform .2s var(--ease); display:inline-block }
.tbl-item[open] > summary::before{ transform:rotate(90deg) }
.tbl-item > summary .ti-name{ font-family:var(--ff-mono); font-size:12.5px; color:var(--gold-600); margin-left:auto }
.tbl-item > summary .ti-cnt{ font-size:12px; color:var(--ink-500) }
.tbl-scroll{ overflow-x:auto }
.tbl-item table{ width:100%; border-collapse:collapse; font-size:13px }
.tbl-item th{ background:var(--ink-50); text-align:left; padding:10px 20px; font-weight:600; color:var(--ink-600); border-top:1px solid var(--ink-200); font-size:12px; letter-spacing:.04em }
.tbl-item td{ padding:9px 20px; border-top:1px solid var(--ink-100); color:var(--ink-700) }
.tbl-item td:nth-child(2){ font-family:var(--ff-mono); font-size:12px; color:var(--sheng-zhe) }
.tbl-item tr:hover td{ background:var(--ink-50) }

/* ---------- 接口表 ---------- */
.api-v31{ display:flex; flex-direction:column; gap:0; border:1px solid var(--ink-200); border-radius:var(--r-md); overflow:hidden }
.av-row{ display:grid; grid-template-columns:64px 1fr 300px 150px; gap:0; border-bottom:1px solid var(--ink-100); font-size:13px }
.av-row:last-child{ border-bottom:none }
.av-row.head{ background:var(--ink-50); font-size:11.5px; letter-spacing:.06em; color:var(--ink-500); font-weight:700 }
.av-row > div{ padding:11px 16px }
.av-m{ font-family:var(--ff-mono); font-weight:700; font-size:11.5px }
.av-m.POST{ color:var(--ok) } .av-m.GET{ color:var(--qian-qing-2) }
.av-m.PUT{ color:var(--warn) } .av-m.DELETE{ color:var(--danger) }
.av-p{ font-family:var(--ff-mono); font-size:12.5px; color:var(--ink-800) }
.av-row:not(.head):hover{ background:var(--ink-50) }
.av-auth{ font-size:11.5px; color:var(--ink-500) }

/* ---------- 验收表 ---------- */
.ck-table{ width:100%; border-collapse:collapse; font-size:13px; background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-md); overflow:hidden }
.ck-table th{ background:var(--ink-50); padding:12px 16px; text-align:left; font-size:12px; letter-spacing:.05em; color:var(--ink-600); border-bottom:1px solid var(--ink-200) }
.ck-table td{ padding:11px 16px; border-bottom:1px solid var(--ink-100); color:var(--ink-700); vertical-align:top }
.ck-table tr:last-child td{ border-bottom:none }
.ck-table tr:hover td{ background:var(--ink-50) }
.ck-no{ font-family:var(--ff-mono); color:var(--gold-600); font-weight:700; text-align:center }

/* ---------- 招商话术 ---------- */
.tt-list{ display:flex; flex-direction:column; gap:14px }
.tt-item{ background:#fff; border:1px solid var(--ink-200); border-left:4px solid var(--gold-400); border-radius:0 var(--r-md) var(--r-md) 0; padding:20px 24px }
.tt-item h4{ font-family:var(--ff-serif); font-size:17px; margin-bottom:8px; color:var(--ink-800) }
.tt-item p{ font-size:13.5px; color:var(--ink-600); line-height:1.8 }

/* ---------- 功能开关 ---------- */
.flag-list{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.flag-row{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-md); padding:16px 18px; display:flex; gap:14px; align-items:flex-start }
.flag-sw{ flex:0 0 40px; height:22px; border-radius:99px; background:var(--ink-300); position:relative; transition:background .22s var(--ease); cursor:pointer; margin-top:2px }
.flag-sw::after{ content:""; position:absolute; left:2px; top:2px; width:18px; height:18px; border-radius:50%; background:#fff; transition:transform .22s var(--ease) }
.flag-sw.on{ background:var(--gold-500) }
.flag-sw.on::after{ transform:translateX(18px) }
.flag-row.off .flag-sw.on{ background:var(--ink-300) }
.flag-row.off .flag-sw.on::after{ transform:none }
.fr-name{ font-size:14px; font-weight:600; color:var(--ink-800); margin-bottom:4px }
.fr-desc{ font-size:12.5px; color:var(--ink-500); line-height:1.65 }

/* =========================================================================
   协作工作台 workspace.html
   ========================================================================= */
.ws-shell{ background:var(--ink-100); min-height:100vh; padding:28px 0 60px }
.ws-roles{
  display:flex; gap:10px; background:#fff; border:1px solid var(--ink-200);
  border-radius:var(--r-lg); padding:8px; margin-bottom:20px; overflow-x:auto;
}
.ws-role-btn{
  flex:1; min-width:150px; border:1px solid transparent; background:transparent;
  border-radius:var(--r-md); padding:12px 16px; cursor:pointer; text-align:left;
  font-family:inherit; transition:all .2s var(--ease);
}
.ws-role-btn:hover{ background:var(--ink-50) }
.ws-role-btn.active{ background:var(--qian-qing); border-color:var(--qian-qing) }
.ws-role-btn.active .wrb-n, .ws-role-btn.active .wrb-d{ color:#F2EFE8 }
.wrb-n{ font-size:14.5px; font-weight:700; color:var(--ink-800); display:block }
.wrb-d{ font-size:11.5px; color:var(--ink-500); display:block; margin-top:2px }

.ws-body{ display:grid; grid-template-columns:210px 1fr; gap:20px; align-items:start }
.ws-side{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg); padding:12px; position:sticky; top:88px }
.ws-tab{
  display:block; width:100%; text-align:left; border:none; background:transparent;
  padding:11px 14px; border-radius:var(--r-sm); cursor:pointer; font-family:inherit;
  font-size:13.5px; color:var(--ink-600); margin-bottom:4px; transition:all .18s var(--ease);
  position:relative;
}
.ws-tab:hover{ background:var(--ink-50); color:var(--ink-800) }
.ws-tab.active{ background:var(--gold-50); color:var(--gold-700); font-weight:600 }
.ws-tab .wt-badge{
  position:absolute; right:12px; top:50%; transform:translateY(-50%);
  background:var(--ding-chi); color:#fff; font-size:10.5px; font-weight:700;
  min-width:18px; height:18px; line-height:18px; text-align:center; border-radius:99px; padding:0 5px;
}
.ws-main{ background:#fff; border:1px solid var(--ink-200); border-radius:var(--r-lg); min-height:460px; overflow:hidden }
.ws-main-head{ padding:20px 26px; border-bottom:1px solid var(--ink-200); background:var(--ink-50) }
.ws-main-head h3{ font-family:var(--ff-serif); font-size:19px; margin-bottom:4px }
.ws-main-head p{ font-size:12.5px; color:var(--ink-500) }
.ws-main-body{ padding:24px 26px }

/* 需求卡片 */
.dm-card{ border:1px solid var(--ink-200); border-radius:var(--r-md); padding:18px 20px; margin-bottom:14px; transition:all .2s var(--ease); background:#fff }
.dm-card:hover{ border-color:var(--gold-300); box-shadow:var(--shadow-1) }
.dm-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:10px }
.dm-title{ font-size:15.5px; font-weight:700; color:var(--ink-800); line-height:1.5 }
.dm-meta{ font-size:12.5px; color:var(--ink-500); display:flex; gap:14px; flex-wrap:wrap; margin-bottom:10px }
.dm-meta b{ color:var(--ink-700); font-weight:600 }
.dm-desc{ font-size:13px; color:var(--ink-600); line-height:1.75; margin-bottom:12px }
.dm-tags{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:14px }
.dm-foot{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; padding-top:12px; border-top:1px dashed var(--ink-200) }

/* 表单 */
.ws-form{ display:grid; grid-template-columns:1fr 1fr; gap:16px }
.ws-field{ display:flex; flex-direction:column; gap:6px }
.ws-field.full{ grid-column:1 / -1 }
.ws-field label{ font-size:12.5px; font-weight:600; color:var(--ink-700) }
.ws-field label .req{ color:var(--ding-chi) }
.ws-field input, .ws-field select, .ws-field textarea{
  border:1px solid var(--ink-300); border-radius:var(--r-sm); padding:9px 12px;
  font-family:inherit; font-size:13.5px; color:var(--ink-800); background:#fff;
  transition:border-color .18s var(--ease);
}
.ws-field input:focus, .ws-field select:focus, .ws-field textarea:focus{
  outline:none; border-color:var(--gold-400); box-shadow:0 0 0 3px rgba(165,124,42,.12);
}
.ws-field textarea{ resize:vertical; min-height:96px; line-height:1.7 }
.ws-checks{ display:flex; flex-wrap:wrap; gap:8px }
.ws-check{
  display:inline-flex; align-items:center; gap:6px; border:1px solid var(--ink-300);
  border-radius:99px; padding:5px 13px; font-size:12.5px; cursor:pointer;
  transition:all .18s var(--ease); user-select:none; background:#fff;
}
.ws-check:hover{ border-color:var(--gold-300) }
.ws-check.on{ background:var(--gold-50); border-color:var(--gold-400); color:var(--gold-700); font-weight:600 }
.ws-check input{ display:none }
.ws-radios{ display:flex; gap:16px; flex-wrap:wrap }
.ws-radio{ display:inline-flex; align-items:center; gap:7px; font-size:13px; cursor:pointer }
.ws-radio input{ accent-color:var(--gold-500) }

/* 自动打标签预览 */
.tag-preview{ grid-column:1 / -1; background:var(--ink-900); border-radius:var(--r-md); padding:16px 18px; margin-top:4px }
.tag-preview .tp-h{ font-size:11px; letter-spacing:.08em; color:#8B8478; margin-bottom:10px }
.tag-preview .tp-row{ display:flex; gap:8px; flex-wrap:wrap }
.tp-tag{ background:rgba(232,212,147,.14); border:1px solid rgba(232,212,147,.32); color:var(--gold-200); font-size:11.5px; padding:3px 10px; border-radius:99px; font-family:var(--ff-mono) }

/* 报价行 */
.bid-row{ display:flex; gap:14px; align-items:center; padding:12px 0; border-bottom:1px dashed var(--ink-200) }
.bid-row:last-child{ border-bottom:none }
.bid-logo{ flex:0 0 36px; height:36px; border-radius:var(--r-sm); background:var(--gold-glow); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--ff-serif); font-weight:700; font-size:15px }
.bid-main{ flex:1 }
.bid-n{ font-size:13.5px; font-weight:600; color:var(--ink-800) }
.bid-note{ font-size:12px; color:var(--ink-500); line-height:1.6; margin-top:3px }
.bid-price{ font-family:var(--ff-mono); font-size:16px; font-weight:700; color:var(--ding-chi) }

/* 子任务 */
.st-item{ display:flex; gap:12px; align-items:flex-start; padding:12px 0; border-bottom:1px dashed var(--ink-200) }
.st-item:last-child{ border-bottom:none }
.st-chk{ flex:0 0 20px; width:20px; height:20px; border:1.5px solid var(--ink-300); border-radius:5px; cursor:pointer; display:flex; align-items:center; justify-content:center; margin-top:2px; transition:all .18s var(--ease); background:#fff }
.st-chk:hover{ border-color:var(--gold-400) }
.st-chk.on{ background:var(--ok); border-color:var(--ok); color:#fff; font-size:12px; font-weight:700 }
.st-main{ flex:1 }
.st-t{ font-size:13.5px; color:var(--ink-800); line-height:1.6 }
.st-item.done .st-t{ text-decoration:line-through; color:var(--ink-400) }
.st-m{ font-size:11.5px; color:var(--ink-500); margin-top:3px; display:flex; gap:10px; flex-wrap:wrap }

/* 交付物 */
.dv-item{ display:flex; gap:12px; align-items:center; padding:11px 13px; border:1px solid var(--ink-200); border-radius:var(--r-sm); margin-bottom:9px; background:var(--ink-50) }
.dv-i{ font-size:20px }
.dv-main{ flex:1 }
.dv-n{ font-size:13px; font-weight:600; color:var(--ink-800) }
.dv-m{ font-size:11.5px; color:var(--ink-500); margin-top:2px }
.dv-badge{ font-size:11px; padding:2px 8px; border-radius:99px; background:var(--qian-qing); color:#fff }
.dv-badge.online{ background:var(--qian-qing-2) }
.dv-badge.offline{ background:var(--sheng-zhe) }

/* 留言 */
.msg-item{ padding:11px 0; border-bottom:1px dashed var(--ink-200); font-size:13px; line-height:1.7 }
.msg-item:last-child{ border-bottom:none }
.msg-item .msg-h{ font-size:11.5px; color:var(--ink-500); margin-bottom:3px }
.msg-item .msg-h b{ color:var(--gold-600) }

/* 进度条 */
.ws-prog{ height:8px; background:var(--ink-100); border-radius:99px; overflow:hidden; margin:6px 0 4px }
.ws-prog i{ display:block; height:100%; background:var(--gold-glow); border-radius:99px; transition:width .45s var(--ease) }

/* 分账明细 */
.ledger-table{ width:100%; border-collapse:collapse; font-size:13.5px }
.ledger-table th{ background:var(--ink-50); padding:11px 14px; text-align:left; font-size:12px; color:var(--ink-600); border-bottom:1px solid var(--ink-200) }
.ledger-table td{ padding:11px 14px; border-bottom:1px solid var(--ink-100) }
.ledger-table tr:last-child td{ border-bottom:none }
.ledger-table .lg-amt{ font-family:var(--ff-mono); font-weight:700; color:var(--gold-600); text-align:right }
.ledger-table tfoot td{ background:var(--gold-50); font-weight:700; border-top:2px solid var(--gold-300) }

/* 时间线日志 */
.log-list{ max-height:300px; overflow-y:auto }
.log-item{ display:flex; gap:12px; padding:9px 0; font-size:12.5px; border-bottom:1px dashed var(--ink-100) }
.log-time{ flex:0 0 62px; font-family:var(--ff-mono); font-size:11px; color:var(--ink-400); padding-top:2px }
.log-txt{ flex:1; color:var(--ink-700); line-height:1.7 }
.log-txt b{ color:var(--gold-600) }

/* 空态 */
.ws-empty{ text-align:center; padding:52px 20px; color:var(--ink-400) }
.ws-empty .we-i{ font-size:40px; margin-bottom:12px; opacity:.5 }
.ws-empty p{ font-size:13.5px }

/* 提示条 */
.ws-tip{ background:var(--gold-50); border-left:3px solid var(--gold-400); padding:11px 15px; border-radius:0 var(--r-sm) var(--r-sm) 0; font-size:12.5px; color:var(--ink-700); line-height:1.7; margin-bottom:16px }

/* 通用表格行（审核队列等） */
.q-row{ display:grid; grid-template-columns:1fr auto; gap:14px; align-items:center; padding:14px 0; border-bottom:1px dashed var(--ink-200) }
.q-row:last-child{ border-bottom:none }
.q-title{ font-size:14px; font-weight:600; color:var(--ink-800) }
.q-meta{ font-size:12px; color:var(--ink-500); margin-top:4px }

/* 弹窗（复用 components.css 结构，补充 V3.1 尺寸） */
.modal-v31 .module-detail{ max-width:720px }

/* ---------- 响应式 ---------- */
@media (max-width:1100px){
  .v31-kpis{ grid-template-columns:repeat(3,1fr) }
  .algo-wrap{ grid-template-columns:1fr }
  .integ-grid{ grid-template-columns:repeat(2,1fr) }
  .role-grid{ grid-template-columns:1fr }
  .flag-list{ grid-template-columns:repeat(2,1fr) }
  .av-row{ grid-template-columns:58px 1fr }
  .av-row .av-d, .av-row .av-auth{ display:none }
}
@media (max-width:860px){
  .v31-hero{ padding:64px 0 56px }
  .v31-kpis{ grid-template-columns:repeat(2,1fr) }
  .gap-cmp, .mode-cmp, .jc-body{ grid-template-columns:1fr }
  .jc-col:first-child{ border-right:none; border-bottom:1px solid var(--ink-200) }
  .ws-body{ grid-template-columns:1fr }
  .ws-side{ position:static; display:flex; gap:6px; overflow-x:auto }
  .ws-tab{ white-space:nowrap; margin-bottom:0 }
  .ws-tab .wt-badge{ position:static; transform:none; margin-left:6px; display:inline-block }
  .ws-form{ grid-template-columns:1fr }
  .rank-row{ grid-template-columns:56px 1fr; }
  .rr-act{ grid-column:1 / -1; text-align:left; display:flex; gap:8px }
  .rr-act .btn{ width:auto; flex:1 }
  .rr-dims{ grid-template-columns:repeat(5,1fr); gap:4px }
  .mc-pros-cons{ grid-template-columns:1fr }
  .flag-list{ grid-template-columns:1fr }
}
@media (max-width:520px){
  .v31-kpis{ grid-template-columns:1fr 1fr }
  .v31-kpi b{ font-size:24px }
  .ws-main-body, .ws-main-head{ padding-left:16px; padding-right:16px }
  .rr-dims{ grid-template-columns:repeat(3,1fr) }
}
