/* ═══════════════════════════════════════════════════════════════
   food_studio V2 结构层样式（设计宪法V2·心元皮）
   三屏：vHome 首页(工单总览+决策入口) / vWizard 开单向导(两段式) / vWork 工坊工作台
   依赖 food_studio.html 内 :root 令牌（--bg/--card/--ink/--orange 金系…）
   ═══════════════════════════════════════════════════════════════ */

/* ============ 视图路由器 ============ */
#vHome, #vWizard { display:none; }
body.view-home #vHome { display:block; }
body.view-wizard #vWizard { display:block; }
body.view-work #vWork { display:block !important; }
body.view-login #viewLogin { display:flex; }
body.view-login #viewApp { display:none; }
body:not(.view-login) #viewLogin { display:none !important; }
#viewApp { display:block !important; }

/* ============ 顶栏/步骤条观感收敛 ============ */
.hd-badge.store { display:none !important; }          /* 存储包权益低频信息，不占顶栏 */
#tabBar { flex-wrap:wrap; }
.tab.note { margin-left:0 !important; width:100%; color:var(--orange-d,#8a6a1f); background:var(--amber-bg,#f7e8c8);
  padding:7px 12px; border-radius:9px; font-weight:600; }
/* 状态徽章只保留一枚：更宽松的呼吸 */
.tb-right .hd-badge { margin-left:2px; }
.btn-dec { margin-right:8px; }

/* 确认卡「提交回答」= 老板动作，主 CTA（按钮绿，金色已收口为点缀） */
.q-foot .submit-choice { background:#1d7a4f !important; color:#fff !important;
  border:none !important; font-weight:700; padding:9px 22px; border-radius:9px; box-shadow:0 2px 8px rgba(29,122,79,.35); }
.q-item { margin-bottom:10px; }
.opt { text-align:left; }
.opt .lab { line-height:1.5; }

/* 右栏长会话防折叠：消息项禁止 flex 压缩，超高内容走滚动（根因修复） */
.tl-list { flex-direction:column; }
.tl-list .msg, .tl-list .tl-empty { flex-shrink:0; }

/* ============ 方案表布局收口（全断点统一 4 列，杜绝列错位重叠） ============ */
.plan-row .prow { grid-template-columns:34px minmax(0,1fr) 146px 80px !important; }
.plan-row .p-main { grid-column:2 !important; }
.plan-row .p-side { grid-column:3 !important; }
.plan-row .p-st  { grid-column:4 !important; text-align:right !important; display:block !important; }
.plan-row .p-st .n { margin-top:7px !important; }
.p-edit textarea { min-height:96px !important; }          /* 提示词展开更完整，少截半 */
.plan-row .p-save { display:inline-flex !important; }     /* 保存常显，不再弹出跳动（点击幂等安全） */
.plan-row .p-save:disabled { opacity:.55; cursor:not-allowed; }

/* ============ 环节进度条 · 标识牌版（大而亮，导航感） ============ */
#stepBar { padding:14px 18px 0; }
.sb-bar { position:relative; display:flex; flex-direction:column; gap:9px; padding:15px 18px 13px;
  border-radius:16px; margin:0 0 10px; overflow:hidden;
  background:linear-gradient(135deg,#22315c 0%,#1c2949 55%,#16203c 100%);
  border:1px solid rgba(240,195,109,.45); box-shadow:0 6px 22px rgba(22,32,60,.28), inset 0 1px 0 rgba(255,255,255,.08); }
.sb-bar::before { content:""; position:absolute; left:0; top:0; bottom:0; width:5px;
  background:linear-gradient(180deg,#f4d48a,#c9993f); }
.sb-cap { display:flex; align-items:center; gap:11px; font-size:13px; color:#e8ecf5; flex-wrap:wrap; }
.sb-dot { width:11px; height:11px; border-radius:50%; background:#f0c36d; box-shadow:0 0 0 4px rgba(240,195,109,.18), 0 0 12px rgba(240,195,109,.75); flex:none; }
.sb-bar .sb-cap b { color:#fff; font-size:16.5px; font-weight:800; letter-spacing:.3px; }
.sb-bar .sb-cap .sb-pct { margin-left:auto; font-size:21px; font-weight:800; color:#f4d48a; font-variant-numeric:lining-nums tabular-nums; }
.sb-bar .sb-cap span { font-size:13px; color:rgba(255,255,255,.74); }
.sb-track { height:12px; border-radius:8px; background:rgba(255,255,255,.16); overflow:hidden; }
.sb-track i { display:block; height:100%; width:0; border-radius:8px;
  background:linear-gradient(90deg,#e9bd63,#f6dc9a 60%,#e9bd63); box-shadow:0 0 10px rgba(240,195,109,.55); transition:width .7s ease; }
.sb-next { font-size:13px; color:rgba(255,255,255,.55); letter-spacing:.4px; }
.sb-next b { color:#f0c36d; font-weight:700; }
.sb-bar.run .sb-track i { width:46%; background:linear-gradient(90deg,#6fa8f0,#a8d4ff,#6fa8f0); background-size:200% 100%;
  animation:sbflow 1.5s linear infinite; box-shadow:0 0 10px rgba(150,200,255,.5); }
.sb-bar.run .sb-dot { background:#9ecbff; box-shadow:0 0 0 4px rgba(120,180,255,.18), 0 0 14px rgba(140,200,255,.8); animation:sbbreathe 1.4s ease infinite; }
@keyframes sbflow { 0%{background-position:0% 0;} 100%{background-position:-200% 0;} }
@keyframes sbbreathe { 0%,100%{opacity:1;} 50%{opacity:.55;} }
/* 等你拍板 / 老板验收：亮金牌（老板动作位，最抢眼） */
.sb-bar.wait { background:linear-gradient(135deg,#fffdf6 0%,#fff6e0 100%);
  border:1.5px solid #f0b94e; box-shadow:0 6px 20px rgba(240,165,40,.22); }
.sb-bar.wait::before { background:linear-gradient(180deg,#ffcf6e,#e09a24); }
.sb-bar.wait .sb-cap b { color:#8a5a00; }
.sb-bar.wait .sb-cap span { color:#a3761f; }
.sb-bar.wait .sb-pct { color:#e09a24; }
.sb-bar.wait .sb-dot { background:#ffb428; box-shadow:0 0 0 4px rgba(255,180,40,.25), 0 0 14px rgba(255,180,40,.9); animation:sbbreathe 1.1s ease infinite; }
.sb-bar.wait .sb-track { background:#f3e3bf; }
.sb-bar.wait .sb-track i { background:linear-gradient(90deg,#f0b94e,#ffd98a,#f0b94e); box-shadow:none; }
.sb-bar.wait .sb-next { color:#b08a3e; }
.sb-bar.wait .sb-next b { color:#c98800; }
.sb-bar.ok .sb-track i { position:relative; overflow:hidden; }
.sb-bar.ok .sb-track i::after { content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent); animation:sbglint 1.8s ease infinite; }
@keyframes sbglint { 0%{transform:translateX(-100%);} 55%{transform:translateX(100%);} 100%{transform:translateX(100%);} }
.sb-bar.idle { display:none; }
.msg.hl { box-shadow:0 0 0 2px #faad14; }

/* ============ 团队组织架构仪式卡（右栏顶） ============ */
.tl-head .tl-title { font-size:15.5px !important; font-weight:800 !important; letter-spacing:.5px;
  padding:13px 16px 9px !important; border-bottom:1px solid var(--line); }
.tl-head .tl-title .on { font-size:13px; font-weight:600; color:#52a548; margin-left:8px; }
.tl-roles { padding:10px 12px 12px; background:
  repeating-linear-gradient(0deg, transparent, transparent 27px, rgba(176,141,62,.05) 27px, rgba(176,141,62,.05) 28px); }
.org-ceo { display:flex; align-items:center; gap:9px; padding:8px 12px; margin-bottom:9px;
  border-radius:10px; background:linear-gradient(135deg,#fffefb,#faf3e3);
  border:1px solid #e4cf9a; box-shadow:0 2px 8px rgba(176,141,62,.12);
  position:relative; overflow:hidden; }
.org-ceo::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px;
  background:linear-gradient(180deg,#f0c36d,#b08d3e); }
.org-ceo i { width:10px; height:10px; border-radius:50%; box-shadow:0 0 0 3px rgba(176,141,62,.18); flex:none; }
.org-ceo b { font-size:16px; font-weight:800; color:#1F2E59; letter-spacing:1px; }
.org-ceo em { font-style:normal; font-size:13px; color:#8a6d2f; margin-left:auto; font-weight:600; }
.org-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.org-dept { border:1px solid var(--line); border-top:2px solid #b08d3e; border-radius:9px;
  background:#fff; padding:7px 8px 8px; box-shadow:0 1px 3px rgba(31,46,89,.05); min-width:0; }
.org-dept-h { display:flex; flex-direction:column; gap:0; padding-bottom:6px; margin-bottom:6px;
  border-bottom:1px solid #eee3c8; }
.org-dept-h b { font-size:13px; color:#1F2E59; font-weight:800; letter-spacing:.5px; }
.org-dept-h i { font-style:normal; font-size:13px; color:#b99957; }
.org-dept .om { display:flex; align-items:flex-start; gap:5px; padding:3.5px 0; }
.org-dept .om + .om { border-top:1px dotted #f1ead8; }
.om-dot { width:6.5px; height:6.5px; border-radius:50%; flex:none; margin-top:3px; }
.om-tx { display:flex; flex-direction:column; gap:1px; min-width:0; }
.om-tx b { font-size:13px; color:#1F2E59; font-weight:700; line-height:1.25; white-space:nowrap; }
.om-tx em { font-style:normal; font-size:13px; color:#97a0b5; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tl-head { border-bottom:1px solid var(--line); }

/* ============ 输入规范：大气丝滑（全站 .inp / textarea / input） ============ */
.inp, textarea.inp, input.inp, .inp[type="text"], .inp[type="tel"], .inp[type="password"] {
  background:#fffdf8 !important;
  border:1.5px solid #ddd2bc !important;
  border-radius:12px !important;
  padding:11px 15px !important;
  font-size:14.5px !important; line-height:1.6 !important; color:#232b3d !important;
  box-shadow:inset 0 1px 3px rgba(31,46,89,.05) !important;
  transition:border-color .22s ease, box-shadow .28s ease, background .22s ease !important;
  outline:none !important; }
.inp::placeholder, textarea.inp::placeholder { color:#b3ab97; font-size:13.5px; }
.inp:hover { border-color:#cbb98c !important; }
.inp:focus { border-color:#b08d3e !important; background:#fff !important;
  box-shadow:0 0 0 4px rgba(176,141,62,.16), 0 4px 14px rgba(31,46,89,.06) !important; }
/* 验收留言框：告别 40px 矮缝，两行舒适高 + 纵向可拖 */
#rvNote { display:block; width:100% !important; min-height:82px !important; margin:16px 0 4px !important;
  font-size:14.5px !important; resize:vertical; }
/* 验收操作条：大气间距 + 金主按钮放大 */
.rv-acts { display:flex !important; gap:14px !important; margin-top:14px !important; }
.rv-acts .btn { padding:12px 34px !important; font-size:15.5px !important; border-radius:11px !important;
  font-weight:700 !important; box-shadow:0 4px 14px rgba(176,141,62,.25) !important; }
.rv-acts .btn.ghost { box-shadow:none !important; }
/* 右栏留言展开：输入行顺滑大气 */
.ti-input .ti-box { padding:10px 12px !important; background:transparent !important; }
#inpMsg { flex:1 !important; min-width:0 !important; border-radius:12px !important;
  background:#fffdf8 !important; border:1.5px solid #ddd2bc !important; padding:8px 13px !important;
  font-size:13.5px !important; outline:none !important;
  transition:border-color .22s ease, box-shadow .28s ease !important; }
#inpMsg:focus { border-color:#b08d3e !important;
  box-shadow:0 0 0 4px rgba(176,141,62,.16) !important; }
.btn-msg { border-radius:12px !important; }

/* ============ 向导框体精修：大气舒适（S1 目标 + S2 参数 + 复查） ============ */
#vWizard .wz-page { max-width:760px; margin:0 auto; padding:30px 16px 60px; }
#vWizard .wz-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:22px; }
#vWizard .wt-t { font-size:22px; font-weight:800; color:#1F2E59; letter-spacing:1.5px;
  font-family:var(--serif); }
#vWizard .wt-back { border:1.5px solid #c9c2ad !important; background:#fffdf8 !important;
  color:#1F2E59 !important; border-radius:11px !important; padding:9px 18px !important;
  font-size:13.5px !important; font-weight:600; box-shadow:none !important;
  transition:border-color .2s, box-shadow .25s, transform .15s; }
#vWizard .wt-back:hover { border-color:#b08d3e !important; box-shadow:0 3px 10px rgba(176,141,62,.15) !important; }
#vWizard .wz-card { background:#fff; border:1px solid #eee3c8; border-radius:20px;
  padding:28px 30px 30px; box-shadow:0 10px 34px rgba(31,46,89,.07), 0 1px 3px rgba(31,46,89,.04);
  margin-bottom:22px; }
#vWizard .wz-step-t { font-size:18px; font-weight:800; color:#1F2E59; display:flex; align-items:center; gap:10px; }
#vWizard .wz-step-t .no { width:26px; height:26px; border-radius:50%; background:linear-gradient(135deg,#e8c15a,#b08d3e);
  color:#fff; font-size:14px; font-weight:800; display:inline-flex; align-items:center; justify-content:center;
  box-shadow:0 3px 8px rgba(176,141,62,.35); }
#vWizard .wz-step-s { font-size:13px; color:#8b8268; margin:8px 0 22px 36px; line-height:1.7; }
#vWizard .wz-q .q-t { font-size:14px; font-weight:800; color:#1F2E59; margin:20px 0 12px; }
#vWizard .wz-chips { display:flex; gap:12px; }
#vWizard .wz-chips .chip { flex:1; border:1.5px solid #e3dcc8; border-radius:16px; padding:17px 18px;
  font-size:15.5px; font-weight:800; color:#1F2E59; background:#fffdf8; text-align:left; line-height:1.5;
  cursor:pointer; transition:border-color .2s, box-shadow .25s, transform .15s; }
#vWizard .wz-chips .chip:hover { border-color:#b08d3e; box-shadow:0 6px 18px rgba(176,141,62,.16); transform:translateY(-1px); }
#vWizard .wz-chips .chip small { display:block; font-size:13px; color:#9a8f74; font-weight:400; margin-top:5px; line-height:1.55; }
#vWizard .wz-chips .chip.on { background:linear-gradient(135deg,#f0c36d,#b08d3e); border-color:#b08d3e; color:#fff;
  box-shadow:0 8px 22px rgba(176,141,62,.35); }
#vWizard .wz-chips .chip.on small { color:rgba(255,255,255,.88); }
/* S2 每问一行卡 */
#vWizard .wz-step { background:#fff; border:1px solid #eee3c8; border-radius:18px; padding:18px 20px;
  margin-bottom:16px; box-shadow:0 4px 16px rgba(31,46,89,.05); display:flex; gap:13px; }
#vWizard .wz-no { width:24px; height:24px; border-radius:50%; background:linear-gradient(135deg,#e8c15a,#b08d3e);
  color:#fff; font-size:13px; display:flex; align-items:center; justify-content:center; flex:none;
  margin-top:1px; font-weight:800; box-shadow:0 2px 6px rgba(176,141,62,.3); }
#vWizard .wz-c .t { font-size:14.5px; font-weight:800; color:#1F2E59; margin-bottom:3px; }
#vWizard .wz-c .s { font-size:13px; color:#8b8268; margin-bottom:11px; line-height:1.6; }
#vWizard .opt { border:1.5px solid #e3dcc8 !important; border-radius:13px !important; padding:11px 15px !important;
  margin-bottom:9px !important; background:#fffdf8 !important; transition:border-color .18s, box-shadow .22s, background .18s !important; }
#vWizard .opt:hover { border-color:#cbb98c !important; }
#vWizard .opt.on { border-color:#b08d3e !important; background:#fdf6e5 !important;
  box-shadow:0 0 0 3px rgba(176,141,62,.13) !important; }
#vWizard .opt .ck { width:17px; height:17px; border:1.8px solid #d6cdb4 !important; }
#vWizard .opt.on .ck { border-color:#b08d3e !important; }
#vWizard .opt.on .ck::after { background:#b08d3e !important; }
#vWizard .opt .lab { font-size:13.5px; color:#1F2E59; }
#vWizard .wz-sub { margin:20px 0 6px; }
#vWizard .wz-sub .btn { padding:14px !important; font-size:16px !important; border-radius:13px !important;
  box-shadow:0 6px 18px rgba(176,141,62,.28) !important; }
#vWizard .wz-sub .tip { font-size:13px !important; color:#a09880 !important; margin-top:10px !important; }

/* ============ 向导参考图上传：大卡显眼 + 拖拽即传 ============ */
#vWizard .up-line { display:flex !important; align-items:center; justify-content:space-between; gap:10px;
  background:#fffdf8; border:1.8px solid #d9c896 !important; border-radius:16px !important;
  padding:14px 18px !important; margin-top:6px; flex-wrap:wrap;
  transition:border-color .2s, background .2s, box-shadow .22s; }
#vWizard .up-line.over { border-color:#b08d3e !important; background:#fdf3dc !important;
  box-shadow:0 0 0 4px rgba(176,141,62,.14) !important; }
#vWizard .up-line .btn.ghost { background:linear-gradient(135deg,#fff8e6,#f7ecd2) !important;
  border:1.5px solid #cbb277 !important; color:#7a5f1e !important; font-size:13.5px !important;
  font-weight:700 !important; border-radius:11px !important; padding:10px 20px !important;
  box-shadow:0 2px 8px rgba(176,141,62,.12) !important; transition:transform .15s, box-shadow .2s !important; }
#vWizard .up-line .btn.ghost:hover { transform:translateY(-1px); box-shadow:0 5px 14px rgba(176,141,62,.22) !important; }
#vWizard .up-line .mini { font-size:13px !important; color:#a49a7e !important; line-height:1.6; }

/* ============ 步骤条 → 路牌式进度导航 ============ */
#tabBar { display:flex !important; align-items:center; flex-wrap:wrap; padding:12px 20px 10px !important;
  background:linear-gradient(180deg,#fffdf8,#fbf7ec) !important;
  border-bottom:1px solid #efe6d0 !important; }
#tabBar .tab { display:inline-flex; align-items:center; gap:8px; background:none; border:none;
  cursor:pointer; padding:3px 4px; margin:0 !important; line-height:1; }
#tabBar .tab .no { width:28px; height:28px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:13px; font-weight:800; color:#fff;
  background:#e7e3d5; color:#9a9178; flex:none; transition:all .3s ease; }
#tabBar .tab .tx { font-size:14px; font-weight:600; color:#97907e; white-space:nowrap; transition:all .3s ease; }
/* 未到（锁定） */
#tabBar .tab.locked { cursor:default; }
#tabBar .tab.locked .no { background:#eeeadd; color:#c2bba6; }
#tabBar .tab.locked .tx { color:#b6ae99; }
/* 已完成（金徽 ✓ + 金棕字） */
#tabBar .tab.ready .no { background:linear-gradient(135deg,#f2d488,#b08d3e); color:#fff;
  box-shadow:0 2px 7px rgba(176,141,62,.4); font-size:15px; }
#tabBar .tab.ready .tx { color:#8a6d2f; font-weight:700; }
/* 当前（墨蓝徽 + 呼吸光环 + 加粗大字 + 金底细标） */
#tabBar .tab.on .no { background:linear-gradient(135deg,#2b3d6e,#1F2E59); color:#fff;
  box-shadow:0 3px 10px rgba(31,46,89,.3); animation:noPulse 2s ease-in-out infinite; }
#tabBar .tab.on .tx { color:#1F2E59; font-size:15.5px; font-weight:800; letter-spacing:.3px;
  position:relative; padding-bottom:3px; }
#tabBar .tab.on .tx::after { content:""; position:absolute; left:0; right:0; bottom:0; height:2.5px;
  border-radius:2px; background:linear-gradient(90deg,#f0c36d,#b08d3e); }
/* 当前步恰已完成（回看）：徽显金、字墨蓝加粗 */
#tabBar .tab.on-done .no { background:linear-gradient(135deg,#f2d488,#b08d3e); color:#fff; }
#tabBar .tab.on-done .tx::after { display:none; }
/* 老板验收待盖章：金徽呼吸快 */
#tabBar .tab.review-on .no { background:linear-gradient(135deg,#f2d488,#b08d3e) !important;
  animation:noPulseGold 1.3s ease-in-out infinite !important; }
/* 等您拍板（需人决策）：红金呼吸 + 红标 */
#tabBar .tab.need .no { background:linear-gradient(135deg,#d9534f,#b03a2e) !important; color:#fff !important;
  animation:noPulseRed 1.1s ease-in-out infinite !important; box-shadow:0 3px 10px rgba(185,58,46,.35) !important; }
#tabBar .tab.need .tx { color:#a63a2e !important; font-weight:800 !important; }
#tabBar .tab.need .tx .flag.need-f { display:inline-block; margin-left:6px; background:linear-gradient(135deg,#d9534f,#b03a2e);
  color:#fff; font-style:normal; font-size:13px; font-weight:700; padding:2px 7px; border-radius:9px;
  vertical-align:2px; box-shadow:0 1px 4px rgba(185,58,46,.3); animation:flagBlink 1.1s infinite; }
@keyframes noPulseRed { 0%,100% { box-shadow:0 0 0 3px rgba(185,58,46,.16); } 50% { box-shadow:0 0 0 8px rgba(185,58,46,.05); } }
@keyframes flagBlink { 0%,100% { opacity:1; } 50% { opacity:.62; } }
/* 下一步（金引导）：金边呼吸 + 金字标 */
#tabBar .tab.next .no { background:#fff !important; border:2px solid #b08d3e !important; color:#b08d3e !important;
  animation:noPulseGold 1.5s ease-in-out infinite !important; }
#tabBar .tab.next .tx { color:#1F2E59 !important; font-weight:800 !important; font-size:15px !important; }
#tabBar .tab.next .tx .flag.next-f { display:inline-block; margin-left:6px; background:linear-gradient(135deg,#f0c36d,#b08d3e);
  color:#fff; font-style:normal; font-size:13px; font-weight:800; padding:2px 7px; border-radius:9px;
  vertical-align:2px; box-shadow:0 1px 4px rgba(176,141,62,.4); }
#tabBar .tab .flag { font-style:normal; white-space:nowrap; }
@keyframes noPulse { 0%,100% { box-shadow:0 3px 10px rgba(31,46,89,.3), 0 0 0 4px rgba(31,46,89,.10); }
  50% { box-shadow:0 3px 10px rgba(31,46,89,.3), 0 0 0 9px rgba(31,46,89,.03); } }
@keyframes noPulseGold { 0%,100% { box-shadow:0 2px 7px rgba(176,141,62,.4), 0 0 0 4px rgba(176,141,62,.14); }
  50% { box-shadow:0 2px 7px rgba(176,141,62,.4), 0 0 0 10px rgba(176,141,62,.04); } }
/* 段间连线：走过的路金线 / 未走浅槽 */
#tabBar .link { flex:1; min-width:12px; height:5px; border-radius:3px; margin:0 6px; top:0;
  background:#e9e3d0; transition:background .5s; }
#tabBar .link.on { background:linear-gradient(90deg,#f2d488,#b08d3e); }
#tabBar .tab.note { width:100% !important; margin-top:8px !important; }

/* ============ 方案页「开始生成」主 CTA：粘性常驻 + 金主样式 ============ */
.blink-cta { animation:ctaBlink .9s ease-in-out 3 !important; }
@keyframes ctaBlink { 0%,100% { box-shadow:0 0 0 0 rgba(176,141,62,.55), 0 6px 18px rgba(176,141,62,.28); }
  50% { box-shadow:0 0 0 12px rgba(176,141,62,0), 0 6px 18px rgba(176,141,62,.28); } }
.start-zone { position:sticky !important; bottom:0 !important; z-index:8;
  background:linear-gradient(180deg, rgba(249,247,240,0) 0%, #f9f7f0 30%) !important;
  padding:20px 0 14px !important; margin:6px 0 0 !important; }
.btn-start { background:var(--orange,#b08d3e) !important; box-shadow:0 4px 16px rgba(176,141,62,.4) !important;
  font-size:17px !important; padding:13px 54px !important; border-radius:10px !important; }
.btn-start:hover { filter:brightness(1.07); }
.start-note { color:var(--txt3) !important; font-size:13px !important; line-height:1.6; flex-basis:100%; text-align:center; }

/* ============ 首页（工单总览·经营线最小版） ============ */
.vhome{ max-width:1160px; margin:0 auto; padding:34px 26px 90px; }

/* ============ 首页老板快报仪表（驾驶舱 V1） ============ */
#hmCockpit { margin:16px 0 2px; padding:14px 18px 16px; background:linear-gradient(150deg,#fffdf8,#f9f3e2);
  border:1px solid #e8dcc0; border-radius:16px; box-shadow:0 4px 14px rgba(31,46,89,.05); }
#hmCockpit .cp-title { font-size:15px; font-weight:800; color:#1F2E59; letter-spacing:.4px; margin-bottom:10px; }
#hmCockpit .cp-sub { font-size:13px; font-weight:500; color:#a49a7e; margin-left:8px; letter-spacing:0; }
#hmCockpit .cp-grid { display:flex; gap:10px; flex-wrap:wrap; }
#hmCockpit .cp-cell { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
  background:#fff; border:1.5px solid #e6dcc4; border-radius:13px; padding:12px 5px 10px;
  cursor:pointer; transition:all .25s ease; font-family:inherit; }
/* 【2026-09-16 抗挤压收口】≤430（手机）：4 格并排每格只有 67~70px，「AI 生成中」必折两行、
   且 4 格挤不下会掉成「3+1」难看的排布 → 手机上一律 2×2（每格约 110px，标签单行）。 */
@media (max-width:430px){ #hmCockpit .cp-grid .cp-cell { flex:1 1 calc(50% - 5px); } }
#hmCockpit .cp-cell:hover { border-color:#b08d3e; box-shadow:0 4px 12px rgba(176,141,62,.18); transform:translateY(-1px); }
#hmCockpit .cp-cell b { font-size:25px; font-weight:800; color:#1F2E59; line-height:1.1; }
#hmCockpit .cp-cell i { font-style:normal; font-size:13px; color:#9a9178; white-space:nowrap; }
#hmCockpit .cp-cell.cp-done b { color:#5d7f46; }
#hmCockpit .cp-cell.hot { border-color:#b08d3e; background:linear-gradient(150deg,#fffdf6,#fbf3dd); }
#hmCockpit .cp-cell.hot b { color:#b08d3e; }
#hmCockpit .cp-cell.cp-need.hot b { color:#c0392b; }
#hmCockpit .cp-cell.cp-need.hot { border-color:#d9534f; background:#fdf3f2; animation:cpGlow 1.6s infinite; }
@keyframes cpGlow { 0%,100% { box-shadow:0 0 0 0 rgba(217,83,79,.25); } 50% { box-shadow:0 0 0 7px rgba(217,83,79,.06); } }
#hmCockpit .cp-cell.cp-rev.hot { border-color:#b08d3e; }
#hmCockpit .cp-cell.cp-rev.hot b { color:#b08d3e; }
.hm-welcome{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.hm-title{ font-family:var(--serif); font-size:26px; font-weight:800; letter-spacing:2px; color:var(--ink); }
.hm-title small{ font-family:var(--sans); font-size:13px; font-weight:400; letter-spacing:.5px; color:var(--txt2); margin-left:10px; }
.hm-quote{ margin-top:6px; font-size:14px; color:var(--txt2); }
.hm-quote b{ color:var(--accent-deep); }

/* 待确认横幅（决策台入口） */
.dec-banner{ margin-top:20px; background:linear-gradient(135deg,#fff8ea,#fdf3dd); border:1px solid var(--orange-bd); border-radius:14px; padding:14px 18px; display:flex; align-items:center; gap:14px; cursor:pointer; box-shadow:0 2px 8px rgba(176,141,62,.08); transition:box-shadow .15s; }
.dec-banner:hover{ box-shadow:0 4px 14px rgba(176,141,62,.18); }
.dec-banner .db-ico{ width:40px;height:40px;border-radius:11px;background:var(--orange);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;flex:none; }
.dec-banner .db-txt{ flex:1; font-size:15px; color:var(--txt); }
.dec-banner .db-txt b{ color:#8a4a1a; }
.dec-banner .db-sub{ font-size:13px; color:var(--txt2); margin-top:2px; }
.dec-banner .db-go{ color:var(--accent-deep); font-size:13px; white-space:nowrap; }
.dec-banner.empty{ background:var(--card); border:1px solid var(--line3); box-shadow:none; cursor:default; }
.dec-banner.empty:hover{ box-shadow:none; }
.dec-banner.empty .db-ico{ background:#e5dfd0; color:#9a937f; }
.dec-banner.empty .db-txt b{ color:var(--txt2); }

/* 最近工单卡列 */
.hm-sec{ margin-top:28px; display:flex; align-items:center; gap:10px; }
.hm-sec .hs-t{ font-size:16px; font-weight:700; color:var(--ink); }
.hm-sec .hs-n{ font-size:13px; color:var(--txt3); }
.hm-cards{ margin-top:12px; display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; }
.hm-card{ background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 16px 12px; cursor:pointer; transition:box-shadow .15s,border-color .15s; position:relative; }
.hm-card:hover{ border-color:var(--orange-bd); box-shadow:0 4px 16px rgba(176,141,62,.14); }
.hm-card .hc-top{ display:flex; align-items:center; gap:8px; }
.hm-card .hc-name{ font-size:15px; font-weight:700; color:var(--ink); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hm-card .hc-meta{ font-size:13px; color:var(--txt3); margin-top:6px; }
.hm-card .hc-foot{ margin-top:10px; display:flex; align-items:center; justify-content:space-between; }
.hm-card .hc-st{ font-size:13px; }
.hm-card .hc-act{ font-size:13px; color:var(--accent-deep); }
.hm-empty{ margin-top:40px; text-align:center; color:var(--txt3); }
.hm-empty .he-big{ font-size:44px; opacity:.5; }
.hm-empty .he-t{ margin-top:10px; font-size:15px; color:var(--txt2); }

/* ============ 开单向导（整页·两段式+复查） ============ */
.wz-page{ max-width:860px; margin:0 auto; padding:30px 24px 90px; }
.wz-top{ display:flex; align-items:center; justify-content:space-between; }
.wz-top .wt-t{ font-family:var(--serif); font-size:22px; font-weight:800; letter-spacing:1.5px; color:var(--ink); }
.wz-top .wt-back{ font-size:13px; color:var(--txt2); cursor:pointer; background:none; border:none; }
.wz-card{ margin-top:18px; background:var(--card); border:1px solid var(--line); border-radius:16px; padding:26px 28px; }
.wz-step-t{ font-size:17px; font-weight:800; color:var(--ink); display:flex; align-items:center; gap:10px; }
.wz-step-t .no{ width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font-size:13px;display:inline-flex;align-items:center;justify-content:center;font-weight:700; }
.wz-step-t .no.pass{ background:var(--green); }
.wz-step-s{ font-size:13px; color:var(--txt2); margin:8px 0 4px; }
.wz-q{ margin-top:22px; }
.wz-q .q-t{ font-size:14.5px; font-weight:700; color:var(--txt); margin-bottom:8px; }
.wz-q .q-s{ font-size:13px; color:var(--txt3); margin-bottom:8px; }
.wz-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.wz-chips .chip{ border:1px solid var(--line3); background:var(--card); padding:8px 14px; border-radius:9px; font-size:13.5px; color:var(--txt); cursor:pointer; transition:all .12s; }
.wz-chips .chip small{ display:block; font-size:13px; color:var(--txt3); margin-top:1px; }
.wz-chips .chip.on{ border-color:var(--orange); background:var(--orange-bg); color:#7a4a00; font-weight:700; box-shadow:0 0 0 1px var(--orange); }
.wz-chips .chip.on small{ color:#a06a10; }
.wz-foot{ margin-top:28px; display:flex; justify-content:space-between; align-items:center; gap:12px; }
.wz-foot .tip{ font-size:13px; color:var(--txt3); }
.wz-q .inp, .wz-q textarea.inp{ width:100%; box-sizing:border-box; }

/* 复查页 */
.rp-sum{ margin-top:14px; }
.rp-row{ display:flex; gap:12px; padding:11px 0; border-bottom:1px solid var(--line); font-size:14px; }
.rp-row:last-child{ border-bottom:none; }
.rp-row .k{ width:110px; flex:none; color:var(--txt3); font-size:13px; }
.rp-row .v{ color:var(--txt); flex:1; }
.rp-ok{ margin-top:18px; background:#f2f7ee; border:1px solid #d5e5cb; border-radius:11px; padding:12px 16px; font-size:13.5px; color:#2e5d2e; }

/* ============ 步骤条（工序，含第⑤步老板验收） ============ */
.stepbar{ display:flex; align-items:center; gap:2px; padding:0 2px; }
.stepbar .tab{ position:relative; border:none; background:none; padding:9px 13px 11px; font-size:13.5px; color:var(--txt2); cursor:pointer; display:flex; align-items:center; gap:7px; border-bottom:2px solid transparent; transition:color .12s; }
.stepbar .tab .no{ width:19px;height:19px;border-radius:50%;border:1px solid var(--line3); font-size:13px; color:var(--txt3); display:inline-flex;align-items:center;justify-content:center; flex:none; transition:all .12s; }
.stepbar .tab.on{ color:var(--ink); font-weight:700; border-bottom-color:var(--orange); }
.stepbar .tab.on .no{ background:var(--orange); border-color:var(--orange); color:#fff; }
.stepbar .tab.ready .no{ border-color:var(--green); color:var(--green); }
.stepbar .tab.ready .no::after{ content:"✓"; }
.stepbar .tab.ready .no{ font-size:0; }
.stepbar .tab.ready .no::after{ font-size:13px; }
.stepbar .tab.review-on .no{ background:var(--ink); border-color:var(--ink); color:#fff; font-size:13px; }
.stepbar .tab.locked{ color:var(--txt3); cursor:not-allowed; }
.stepbar .arrow{ color:var(--line3); font-size:13px; }

/* ============ 决策台（聚合待确认队列） ============ */
.dec-list{ display:flex; flex-direction:column; gap:10px; max-height:58vh; overflow:auto; }
.dec-item{ display:flex; align-items:center; gap:12px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:13px 15px; }
.dec-item.warn{ border-left:3px solid var(--orange); }
.dec-item.danger{ border-left:3px solid var(--red); }
.dec-item .di-ico{ width:34px;height:34px;border-radius:9px; flex:none; display:flex;align-items:center;justify-content:center; font-size:16px; }
.dec-item .di-ico.confirm{ background:var(--orange-bg); color:#9a6a00; }
.dec-item .di-ico.review{ background:var(--ink); color:#fff; }
.dec-item .di-body{ flex:1; min-width:0; }
.dec-item .di-name{ font-size:14.5px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dec-item .di-what{ font-size:13px; color:var(--txt2); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dec-item .di-amt{ font-size:13px; color:#9a6a00; margin-top:1px; }
.dec-item .di-act{ flex:none; }
.dec-empty{ padding:26px; text-align:center; color:var(--txt3); font-size:13.5px; }

/* 顶栏决策红点 */
.btn-dec{ position:relative; display:inline-flex; align-items:center; gap:6px; background:var(--card); border:1px solid var(--line); border-radius:9px; padding:6px 11px; font-size:13px; color:var(--txt2); cursor:pointer; }
.btn-dec:hover{ border-color:var(--orange-bd); }
.btn-dec .dot{ position:absolute; top:-4px; right:-4px; min-width:16px; height:16px; border-radius:9px; background:var(--red); color:#fff; font-size:13px; display:none; align-items:center; justify-content:center; padding:0 4px; }
.btn-dec.has .dot{ display:inline-flex; }
.btn-home{ display:inline-flex; align-items:center; gap:6px; background:none; border:none; font-size:13.5px; color:var(--txt2); cursor:pointer; padding:6px 8px; border-radius:8px; }
.btn-home:hover{ background:#efe9d8; color:var(--ink); }

/* ============ 老板验收面板（工序⑤） ============ */
.rv-hero{ background:var(--card); border:1px solid var(--line); border-radius:14px; padding:20px 22px; }
.rv-ok-line{ font-size:15px; color:var(--green-d); font-weight:700; }
.rv-stats{ margin-top:12px; display:flex; gap:26px; }
.rv-stats .rs{ font-size:13px; color:var(--txt2); }
.rv-stats .rs b{ font-size:18px; color:var(--ink); display:block; }
.rv-note{ width:100%; box-sizing:border-box; margin-top:14px; }
.rv-acts{ margin-top:16px; display:flex; gap:10px; flex-wrap:wrap; }
.rv-rejected{ margin-top:12px; background:#f9ecec; border:1px solid var(--red-bd); color:#8c2f2f; border-radius:10px; padding:10px 14px; font-size:13.5px; }
.rv-passed{ margin-top:12px; background:#f0f6ec; border:1px solid #cfe0c2; color:#2e5d2e; border-radius:10px; padding:10px 14px; font-size:13.5px; }

/* ============ 右栏留话（折叠） ============ */
.tl-note-line{ margin-top:10px; }
.btn-msg{ width:100%; border:1px solid var(--line3); background:var(--card); color:var(--txt2); font-size:13px; padding:8px; border-radius:9px; cursor:pointer; }
.btn-msg:hover{ border-color:var(--orange-bd); color:var(--accent-deep); }

/* ── 【2026-09-16 出界收口】工坊卡片网格在 320px 视口整列顶出画布 ──────────────
   病根：.hm-cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))} ——
        minmax 的 320px 是「最小列宽」，不是「最大列宽」：视口比 320+内边距 窄时，
        轨道仍然按 320px 铺开（实测 320px 视口下卡片 x=26/w=320 → 右沿 346，顶出 26px，
        卡内 168 个元素连带出界）。
   治法：min(320px,100%) —— 放得下就 320px（宽视口观感不变），放不下就退到容器宽，
        卡片自然变成单列，不再顶出画布。 */
.hm-cards{ grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr)); }
