/* ============================================================================
   隧道通 · 交互原型 — 视觉系统「测量读数 / Survey Readout」
   业务逻辑与主题蓝色保留，其余全部重构。
   设计语言：工程测量单 + 桩号读数 + DIN 数字 + 工序流水线
   ========================================================================== */

/* ---- 数字/单位/标签字体：Barlow Semi Condensed（工程标牌感） ---- */
@font-face{font-family:"Barlow SC";font-style:normal;font-weight:500;font-display:swap;src:url("./assets/fonts/barlow-sc-500.woff2") format("woff2");}
@font-face{font-family:"Barlow SC";font-style:normal;font-weight:600;font-display:swap;src:url("./assets/fonts/barlow-sc-600.woff2") format("woff2");}
@font-face{font-family:"Barlow SC";font-style:normal;font-weight:700;font-display:swap;src:url("./assets/fonts/barlow-sc-700.woff2") format("woff2");}

:root{
  --font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-num:var(--font-sans);              /* 读数改用系统字体 + tabular-nums（去 DIN 工程感，转 iOS 原生） */
  --font-mono:ui-monospace,"SF Mono","JetBrains Mono","Roboto Mono",Menlo,Consolas,monospace;

  /* 画布与纸面 */
  --canvas:#eef1f6;
  --surface:#ffffff;
  --sunken:#f4f6f9;
  --sunken-2:#eaeef3;

  /* 墨色层级 */
  --ink:#171b22;
  --ink-2:#565e6c;
  --ink-3:#98a0ac;
  --ink-inv:#eaf3fb;
  --ink-inv-2:#bcd7ec;

  /* 主题蓝（保留 #155d92） */
  --primary:#155d92;
  --primary-deep:#0f4a76;
  --primary-bright:#2f83c4;
  --primary-wash:#e8f1f8;
  --primary-line:#cfe0ee;

  /* 品牌头图渐变（旧「工程深蓝带」→ 品牌蓝渐变） */
  --blue-1:#155d92;
  --blue-2:#2379ab;

  /* 发丝线（更淡更柔） */
  --rule:#eceef2;
  --rule-2:#dfe3e9;

  /* 语义色：脱节/预警(琥珀) · 超时(红) · 进行中/达成(绿) */
  --warn:#c0841e;
  --warn-wash:#fbf0da;
  --danger:#df4a4e;
  --danger-wash:#fcecec;
  --live:#1f9d63;
  --live-wash:#e6f6ee;

  --r-xs:6px; --r-sm:9px; --r:12px; --r-lg:16px;
  --tap:44px;
  --shadow-pop:0 20px 44px -22px rgba(20,40,66,.34);
  --shadow-sheet:0 -16px 44px -24px rgba(20,40,66,.32);
}

*,*::before,*::after{box-sizing:border-box;}
[hidden]{display:none!important;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--font-sans);
  color:var(--ink);
  background:#c3ced8;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  line-height:1.5;
}
button{font-family:inherit;color:inherit;cursor:pointer;border:0;background:none;}
input{font-family:inherit;}
h1,h2,h3,p,dl,dd,dt,figure{margin:0;}
i[data-lucide]{width:1em;height:1em;stroke-width:2;display:inline-block;vertical-align:-.14em;}

/* 读数：系统字体 + 等宽数字 */
.num,.metric-value,.kpi-value,.comparison-primary,
strong{font-variant-numeric:tabular-nums;}

/* ============================================================================
   舞台 + 手机框
   ========================================================================== */
.prototype-stage{
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:34px 18px;
  background:
    radial-gradient(130% 100% at 50% -8%, #eef1f6 0%, #dfe4ea 60%, #d3d9e1 100%);
}
.device-frame{
  position:relative;z-index:1;
  width:430px;max-width:100%;
  height:min(908px,calc(100vh - 60px));
  background:var(--surface);
  border-radius:44px;
  box-shadow:0 50px 100px -40px rgba(20,40,66,.5),0 0 0 1px rgba(20,40,66,.05);
  overflow:hidden;
  display:flex;flex-direction:column;
}
.device-status{
  flex:0 0 auto;
  height:34px;padding:0 24px;
  display:flex;align-items:center;justify-content:space-between;
  font-family:var(--font-num);font-weight:600;font-size:14px;letter-spacing:.02em;
  color:#fff;
  background:var(--blue-1);
}
.device-status div{display:flex;gap:7px;align-items:center;}
.device-status i{width:15px;height:15px;}

/* ============================================================================
   App 外壳
   ========================================================================== */
.app{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:var(--canvas);}

/* ---- 主页面顶栏：蓝图带 ---- */
.app-header{flex:0 0 auto;position:relative;overflow:hidden;color:#fff;
  background:linear-gradient(158deg,var(--blue-1) 0%,var(--blue-2) 100%);
  padding:15px 18px 16px;}
.app-header__context{position:relative;display:flex;flex-direction:column;gap:3px;}
.app-header__eyebrow{
  font-family:var(--font-num);font-weight:600;font-size:11px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--ink-inv-2);
}
.app-header__project{display:flex;align-items:center;gap:8px;}
.app-header__project span{font-size:19px;font-weight:700;letter-spacing:.01em;color:#fff;}
.app-header__meta{font-size:12.5px;color:var(--ink-inv-2);}
.app-header__actions{position:absolute;top:14px;right:16px;display:flex;gap:9px;}
.icon-button{
  width:36px;height:36px;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--primary);background:var(--primary-wash);
}
.icon-button i{width:19px;height:19px;}
.icon-button--inverse{color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);}

/* ---- 详情页顶栏 ---- */
.app-header.is-detail{
  background:var(--surface);color:var(--ink);padding:12px 14px;
  border-bottom:1px solid var(--rule);
}
.detail-header{display:flex;align-items:center;gap:11px;}
.back-button{
  width:38px;height:38px;border-radius:var(--r-sm);flex:0 0 auto;
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--primary);background:var(--primary-wash);
}
.back-button i{width:20px;height:20px;}
.detail-header>div{display:flex;flex-direction:column;gap:1px;min-width:0;}
.detail-header strong{font-size:16.5px;font-weight:700;letter-spacing:.01em;}
.detail-header span{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ============================================================================
   Tab 栏
   ========================================================================== */
.tabbar{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);
  background:var(--surface);border-top:1px solid var(--rule);
  padding:7px 6px calc(7px + env(safe-area-inset-bottom));}
.tabbar__item{
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:5px 0 3px;border-radius:var(--r-sm);
  color:var(--ink-3);font-size:11px;font-weight:500;position:relative;
  transition:color .16s;
}
.tabbar__item i{width:21px;height:21px;stroke-width:1.9;}
.tabbar__item.is-active{color:var(--primary);}
.tabbar__item.is-active::before{
  content:"";position:absolute;top:-8px;width:22px;height:3px;border-radius:0 0 3px 3px;
  background:var(--primary);
}
.tabbar__item.is-active span{font-weight:600;}

/* ============================================================================
   屏幕滚动区 + 页面结构（连续测量单）
   ========================================================================== */
.screen{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--canvas);}
.screen-content{background:var(--surface);min-height:100%;padding-bottom:26px;}
.screen-content--detail{padding-bottom:26px;}

/* 页眉小行（详情/内容标题） */
.page-title-row{display:none;} /* 主页面标题由蓝图带承载，去除页内重复大标题 */

.freshness{
  font-family:var(--font-mono);font-size:11px;color:var(--ink-3);letter-spacing:-.02em;
  display:inline-flex;align-items:center;gap:5px;
}
.freshness::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--live);
  box-shadow:0 0 0 3px var(--live-wash);}

/* ---- 分节：测量单分栏，发丝线分隔，左侧刻度 ---- */
.section{position:relative;padding:16px 18px 18px;}
.screen-content>.section+.section,
.screen-content>*+.section{border-top:1px solid var(--rule);}
.section--alarm{background:linear-gradient(180deg,var(--sunken) 0%,var(--surface) 100%);}

.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px;}
.section-heading h2{
  position:relative;padding-left:12px;
  font-size:15px;font-weight:700;letter-spacing:.02em;color:var(--ink);
}
.section-heading h2::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:4px;height:15px;border-radius:1px;
  background:linear-gradient(180deg,var(--primary-bright),var(--primary));
}
.section-heading>span,.section-heading>button{
  font-size:12.5px;color:var(--ink-3);display:inline-flex;align-items:center;gap:3px;
}
.section-heading>button{color:var(--primary-bright);font-weight:600;}
.section-heading>button i{width:15px;height:15px;}
.section-heading .alert-count{font-family:var(--font-num);font-weight:600;letter-spacing:.03em;color:var(--ink-2);}

/* ============================================================================
   筛选：小标题 + 流动胶囊（参考图样式，已校准）
   ========================================================================== */
.chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.chip-row--nowrap{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;
  -webkit-overflow-scrolling:touch;}
.chip-row--nowrap::-webkit-scrollbar{display:none;}
.chip{
  flex:0 0 auto;max-width:100%;
  min-height:32px;padding:6px 14px;
  display:inline-flex;align-items:center;
  border-radius:999px;
  background:var(--sunken);color:var(--ink-2);
  font-size:12.5px;font-weight:500;line-height:1.15;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
  transition:background .15s,color .15s;
}
.chip.is-active{background:var(--primary);color:#fff;font-weight:600;
  box-shadow:0 4px 12px -5px rgba(21,93,146,.7);}

/* 顶部作业面筛选条 */
.face-filter-strip{padding:12px 18px 0;}
.face-filter-strip .chip-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;}
.face-filter-strip .chip-row::-webkit-scrollbar{display:none;}

/* 竖排筛选块：加粗小标题 + 换行胶囊 */
.filter-stack{display:flex;flex-direction:column;gap:15px;}
.filter-line{display:block;min-width:0;}
.filter-line+.filter-line{margin-top:15px;}
.filter-line__label{
  display:block;margin-bottom:9px;
  font-family:var(--font-num);font-weight:700;font-size:12.5px;letter-spacing:.04em;
  color:var(--ink);text-transform:uppercase;
}
.filter-line .chip-row{flex-wrap:wrap;overflow:visible;}
.filter-line--selector{margin-top:0;}

/* 下拉/日期筛选按钮 */
.filter-toolbar{display:grid;grid-template-columns:1fr auto;gap:9px;}
.filter-button,.filter-select{
  min-height:38px;padding:0 13px;
  display:inline-flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--sunken);border:1px solid var(--rule);border-radius:var(--r-sm);
  color:var(--ink);font-size:13px;font-weight:500;
}
.filter-button span,.filter-select span{font-family:var(--font-mono);font-size:12.5px;letter-spacing:-.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.filter-button i,.filter-select i{width:17px;height:17px;color:var(--ink-3);flex:0 0 auto;}
.filter-select{width:100%;}
.filter-line--selector .filter-select span{font-family:var(--font-sans);font-weight:600;}
.history-range{margin-top:11px;width:100%;}

/* 分段控件（今日/历史、周/月、生产总览/作业面…） */
.segmented{display:flex;gap:3px;padding:3px;background:var(--sunken-2);border-radius:var(--r-sm);}
.segmented button{
  flex:1;min-height:34px;border-radius:var(--r-xs);
  font-size:13px;font-weight:600;color:var(--ink-2);
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  transition:background .15s,color .15s,box-shadow .15s;
}
.segmented button.is-active{background:var(--surface);color:var(--primary);
  box-shadow:0 2px 8px -3px rgba(9,32,52,.28);}
.section-heading--resource{align-items:center;}
.section-heading--resource .segmented{margin:0;flex:0 0 auto;width:150px;}
.resource-switch button{min-height:30px;font-size:12px;}

/* ============================================================================
   指标读数簇（仪表盘感：发丝线分隔的等宽栏）
   ========================================================================== */
.metric-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;
}
.metric-grid--four{grid-template-columns:repeat(2,1fr);}
.today-progress-grid{grid-template-columns:repeat(3,1fr);}
.metric-button,.metric-cell{
  background:var(--surface);padding:13px 12px 14px;
  display:flex;flex-direction:column;gap:7px;align-items:flex-start;text-align:left;
}
.metric-button{transition:background .14s;}
.metric-button:active{background:var(--sunken);}
.metric-label{font-size:11.5px;color:var(--ink-3);display:inline-flex;align-items:center;gap:5px;font-weight:500;}
.metric-label i{width:14px;height:14px;color:var(--ink-3);}
.metric-value{font-family:var(--font-num);font-weight:700;font-size:27px;line-height:1;letter-spacing:.01em;color:var(--ink);}
.metric-value--compact{font-size:17px;letter-spacing:.02em;}
.metric-value--teal{color:var(--live);}
.metric-value--warning{color:var(--warn);}
.metric-value--danger{color:var(--danger);}
/* 告警簇：非 0 数字前置状态点 */
.section--alarm .metric-button{background:var(--surface);}

/* ============================================================================
   资源投入
   ========================================================================== */
.resource-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.resource-button{
  display:flex;align-items:center;gap:12px;padding:13px 14px;text-align:left;
  background:var(--sunken);border:1px solid var(--rule);border-radius:var(--r);
  transition:border-color .15s,background .15s;
}
.resource-button:active{background:var(--sunken-2);border-color:var(--primary-line);}
.resource-button__icon{
  width:40px;height:40px;flex:0 0 auto;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--primary);background:var(--primary-wash);
}
.resource-button__icon i{width:21px;height:21px;}
.resource-button>span{display:flex;flex-direction:column;gap:2px;min-width:0;}
.resource-button>span>span{font-size:11.5px;color:var(--ink-3);}
.resource-button strong{font-family:var(--font-num);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--ink);}

/* ============================================================================
   记录卡 / 作业面卡（发丝线描边，无浮动阴影）
   ========================================================================== */
.card-list{display:flex;flex-direction:column;gap:11px;}
.record-card{
  display:block;width:100%;text-align:left;
  background:var(--surface);
  border:1px solid var(--rule);border-radius:var(--r-lg);
  overflow:hidden;
}
.record-card__head{
  width:100%;text-align:left;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:13px 14px;
}
.record-card__title{display:flex;flex-direction:column;gap:3px;min-width:0;}
.record-card__title strong{font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:.01em;}
.record-card__title span{font-size:12px;color:var(--ink-3);}
.status-row{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end;flex:0 0 auto;}

.status-pill{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 9px;border-radius:999px;
  font-size:11px;font-weight:600;letter-spacing:.02em;
  color:var(--ink-2);background:var(--sunken-2);
  border:1px solid transparent;
}
.status-pill--success{color:var(--live);background:var(--live-wash);}
.status-pill--warning{color:var(--warn);background:var(--warn-wash);}
.status-pill--danger{color:var(--danger);background:var(--danger-wash);}

/* 作业面卡内的指标三分栏 */
.workface-card{border-color:var(--rule);}
.workface-metrics{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--rule);
  border-top:1px solid var(--rule);
}
.workface-metrics>button,.workface-metrics>div{
  background:var(--surface);padding:10px 12px;text-align:left;
  display:flex;flex-direction:column;gap:4px;
}
.workface-metrics span{font-size:11px;color:var(--ink-3);}
.workface-metrics strong{font-family:var(--font-num);font-weight:700;font-size:18px;letter-spacing:.02em;color:var(--ink);}
.workface-metrics strong.is-alert{color:var(--danger);}
.workface-metrics--alerts strong{color:var(--ink-3);}
.workface-metrics--alerts strong.is-alert{color:var(--danger);}
.record-card__foot{
  width:100%;display:flex;align-items:center;justify-content:space-between;
  padding:11px 14px;border-top:1px solid var(--rule);
  font-size:12.5px;font-weight:600;color:var(--primary-bright);background:var(--sunken);
}
.record-card__foot i{width:16px;height:16px;}

/* ============================================================================
   工序流水线轨（SIGNATURE）
   ========================================================================== */
.cycle-progress{padding:6px 14px 15px;}
.cycle-progress__track{
  display:grid;grid-template-columns:repeat(3,1fr);position:relative;
  padding-top:20px;
}
.cycle-progress__track::before{
  /* 连接轨：左半（已完成）亮蓝，右半（待进行）灰 —— 编码工序流向 */
  content:"";position:absolute;top:26px;left:16.66%;right:16.66%;height:2px;
  background:linear-gradient(90deg,var(--primary-bright) 0 50%,var(--rule-2) 50% 100%);
}
.cycle-progress__step{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;}
.cycle-progress__step::before{
  content:"";position:absolute;top:-20px;width:13px;height:13px;border-radius:50%;
  background:var(--surface);border:2px solid var(--rule-2);z-index:1;
}
.cycle-progress__step span{font-size:10.5px;color:var(--ink-3);font-weight:500;letter-spacing:.02em;}
.cycle-progress__step strong{font-size:13px;font-weight:700;color:var(--ink-2);letter-spacing:.02em;}
.cycle-progress__step.is-current::before{
  width:17px;height:17px;top:-22px;
  background:var(--primary);border-color:var(--primary);
  box-shadow:0 0 0 4px var(--primary-wash);
  animation:pulse-live 2s ease-in-out infinite;
}
.cycle-progress__step.is-current span{color:var(--primary-bright);font-weight:700;}
.cycle-progress__step.is-current strong{color:var(--primary);}
@keyframes pulse-live{0%,100%{box-shadow:0 0 0 4px var(--primary-wash);}50%{box-shadow:0 0 0 7px rgba(47,131,196,.16);}}

/* ============================================================================
   循环卡元数据网格 / 记录动作
   ========================================================================== */
.cycle-card__meta{
  display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);
  border-top:1px solid var(--rule);
}
.cycle-card__meta>div{background:var(--surface);padding:9px 14px;display:flex;flex-direction:column;gap:2px;}
.cycle-card__meta span{font-size:11px;color:var(--ink-3);}
.cycle-card__meta strong{font-size:13px;font-weight:600;color:var(--ink);}
.cycle-card__meta strong,.record-stat strong{font-variant-numeric:tabular-nums;}
/* 桩号/时间用等宽 */
.cycle-card__meta>div:nth-child(n+3) strong{font-family:var(--font-mono);font-size:12px;letter-spacing:-.02em;}

.record-actions{display:flex;gap:8px;padding:11px 14px;border-top:1px solid var(--rule);flex-wrap:wrap;}
.record-actions button{
  flex:1 1 auto;min-height:36px;padding:0 12px;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:12.5px;font-weight:600;color:var(--primary);
  background:var(--primary-wash);border:1px solid var(--primary-line);
}
.record-actions button i{width:15px;height:15px;}

.rule-note{
  padding:14px;border:1px dashed var(--rule-2);border-radius:var(--r);
  font-size:12.5px;color:var(--ink-2);background:var(--sunken);line-height:1.6;
}
/* 弹层内「说明本操作」的辅助文字——弱化为一行小提示（去边框/去底色），不与内容抢视觉 */
.rule-note--hint{display:flex;align-items:flex-start;gap:6px;padding:4px 2px 0;border:0;background:transparent;
  font-size:12px;color:var(--ink-3);line-height:1.55;}
.rule-note--hint i[data-lucide]{width:13px;height:13px;flex:0 0 auto;margin-top:2px;opacity:.85;}

/* ============================================================================
   记录统计三分栏（record-stats）
   ========================================================================== */
.record-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.record-stat{background:var(--surface);padding:11px 12px;display:flex;flex-direction:column;gap:4px;}
.record-stat span{font-size:11px;color:var(--ink-3);}
.record-stat strong{font-family:var(--font-num);font-weight:700;font-size:16px;letter-spacing:.01em;color:var(--ink);}
.record-card .record-stats{border-radius:0;border-left:0;border-right:0;border-bottom:0;}

/* ============================================================================
   分析：对比表
   ========================================================================== */
.comparison-table{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.comparison-row{
  display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;
  padding:12px 14px;text-align:left;background:var(--surface);
  border-top:1px solid var(--rule);
}
.comparison-row:first-child{border-top:0;}
.comparison-row--head{background:var(--sunken);}
.comparison-row--head span{font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.03em;text-align:right;}
.comparison-row--head span:first-child{text-align:left;}
.comparison-row strong{font-size:13px;font-weight:600;color:var(--ink);}
.comparison-row>span{font-family:var(--font-num);font-size:13px;font-weight:600;color:var(--ink-2);text-align:right;letter-spacing:.02em;}
.comparison-primary{color:var(--primary)!important;font-weight:700!important;}
button.comparison-row:active{background:var(--sunken);}

/* 分析顶部控制条 */
.analysis-view-switch{padding-bottom:0;}
.analysis-controlbar{border-top:0!important;padding-top:14px;}

/* ============================================================================
   报告
   ========================================================================== */
.report-banner{
  display:flex;align-items:center;gap:9px;
  padding:11px 13px;margin-bottom:13px;border-radius:var(--r);
  background:var(--primary-wash);border:1px solid var(--primary-line);
  font-size:12.5px;font-weight:500;color:var(--primary-deep);
}
.report-banner i{width:18px;height:18px;color:var(--primary-bright);flex:0 0 auto;}
.report-card__facts{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;padding:0 14px 12px;}
.report-card__facts>div{display:flex;flex-direction:column;gap:2px;}
.report-card__facts span{font-size:11px;color:var(--ink-3);}
.report-card__facts strong{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink);letter-spacing:-.02em;}
.report-card .record-card__head{padding:13px 14px 10px;}

/* ============================================================================
   告警卡
   ========================================================================== */
.alert-card__facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);border-top:1px solid var(--rule);}
.alert-card__facts>div{background:var(--surface);padding:9px 14px;display:flex;flex-direction:column;gap:2px;}
.alert-card__facts span{font-size:11px;color:var(--ink-3);}
.alert-card__facts strong{font-size:12.5px;font-weight:600;color:var(--ink);font-family:var(--font-mono);letter-spacing:-.02em;}
.alert-card__facts strong.is-danger{color:var(--danger);}
.alert-card__facts strong.is-warning{color:var(--warn);}

/* ============================================================================
   详情页标题块 + 定义列表
   ========================================================================== */
.detail-title{padding:16px 18px 4px;}
.detail-title--compact{padding-bottom:2px;}
.detail-title__row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.detail-title__row h1{font-size:20px;font-weight:700;letter-spacing:.01em;}
.detail-title__row p{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);margin-top:3px;letter-spacing:-.02em;}

.detail-list{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.detail-list__row{display:grid;grid-template-columns:98px 1fr;gap:12px;padding:11px 14px;border-top:1px solid var(--rule);}
.detail-list__row:first-child{border-top:0;}
.detail-list__row:nth-child(even){background:var(--sunken);}
.detail-list dt{font-size:12.5px;color:var(--ink-3);}
.detail-list dd{font-size:13px;font-weight:600;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;}

/* 现场影像 */
.processing-evidence{margin-top:13px;}
.processing-evidence>span{font-size:12px;color:var(--ink-2);font-weight:600;}
.evidence-strip{display:flex;gap:9px;margin-top:9px;}
.evidence-thumb{
  width:62px;height:62px;border-radius:var(--r-sm);flex:0 0 auto;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--sunken);border:1px solid var(--rule);color:var(--ink-3);
}
.evidence-thumb i{width:22px;height:22px;}

/* ============================================================================
   循环详情：信息网格 + 工序时间线
   ========================================================================== */
.cycle-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.cycle-info-grid>div,.cycle-info-alert{background:var(--surface);padding:10px 14px;display:flex;flex-direction:column;gap:3px;text-align:left;}
.cycle-info-grid span,.cycle-info-alert span{font-size:11px;color:var(--ink-3);}
.cycle-info-grid strong{font-size:13px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;}
.cycle-info-grid>div:nth-child(-n+2) strong{font-family:var(--font-mono);font-size:12.5px;letter-spacing:-.02em;}
.cycle-info-alert{background:var(--danger-wash);}
.cycle-info-alert strong{font-size:13px;font-weight:700;color:var(--danger);display:inline-flex;align-items:center;gap:2px;}
.cycle-info-alert i{width:14px;height:14px;}

.cycle-prelude{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:13px;}
.cycle-prelude>div{padding:10px 12px;background:var(--sunken);border:1px solid var(--rule);border-radius:var(--r-sm);
  display:flex;flex-direction:column;gap:3px;}
.cycle-prelude span{font-size:11px;color:var(--ink-3);}
.cycle-prelude strong{font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:-.02em;}

/* 工序时间线 */
.timeline{position:relative;padding-left:20px;}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--rule);}
.timeline-item{position:relative;padding:0 0 4px;margin-bottom:13px;
  background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.timeline-item::before{
  content:"";position:absolute;left:-19px;top:16px;width:12px;height:12px;border-radius:50%;
  background:var(--surface);border:2px solid var(--rule-2);z-index:1;
}
.timeline-item.is-complete::before{background:var(--primary);border-color:var(--primary);}
.timeline-item.is-running::before{background:var(--live);border-color:var(--live);
  box-shadow:0 0 0 4px var(--live-wash);animation:pulse-run 2s ease-in-out infinite;}
@keyframes pulse-run{0%,100%{box-shadow:0 0 0 4px var(--live-wash);}50%{box-shadow:0 0 0 7px rgba(18,133,95,.14);}}
.timeline-item.is-running{border-color:var(--live-wash);}
.timeline-item__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px 9px;}
.timeline-item__head strong{font-size:14px;font-weight:700;color:var(--ink);}
.process-state{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;}
.timeline-item__facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);border-top:1px solid var(--rule);}
.timeline-item__facts>div{background:var(--surface);padding:8px 13px;font-size:11px;color:var(--ink-3);display:flex;flex-direction:column;gap:2px;}
.timeline-item__facts strong{font-size:12.5px;font-weight:600;color:var(--ink);font-family:var(--font-mono);letter-spacing:-.02em;}
.timeline-resource{padding:9px 13px;font-size:11.5px;color:var(--ink-2);line-height:1.7;border-top:1px solid var(--rule);background:var(--sunken);}
.process-flags{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding:9px 13px;border-top:1px solid var(--rule);}
.process-flags__label{font-size:11px;color:var(--ink-3);font-weight:600;}
.process-flags button{
  display:inline-flex;align-items:center;gap:3px;padding:4px 9px;border-radius:999px;
  font-size:11.5px;font-weight:600;color:var(--warn);background:var(--warn-wash);
}
.process-flags button.is-danger{color:var(--danger);background:var(--danger-wash);}
.process-flags button i{width:13px;height:13px;}
.process-flags__empty{font-size:11.5px;color:var(--ink-3);}

.process-gap{display:block;width:100%;text-align:left;margin:-4px 0 13px;}
.process-gap__tag{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:999px;
  font-size:11.5px;font-weight:600;color:var(--warn);background:var(--warn-wash);border:1px solid #eecf95;}
.process-gap__tag i{width:14px;height:14px;}

/* ============================================================================
   KPI 面板（作业面详情）
   ========================================================================== */
.kpi-panel{border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border-bottom:1px solid var(--rule);}
.kpi-row--pair{grid-template-columns:1fr 1fr;}
.kpi-row:last-child{border-bottom:0;}
.kpi-cell{background:var(--surface);padding:12px 13px;display:flex;flex-direction:column;gap:6px;}
.kpi-label{font-size:11px;color:var(--ink-3);}
.kpi-value{font-family:var(--font-num);font-weight:700;font-size:23px;line-height:1;letter-spacing:.01em;color:var(--ink);}
.kpi-value small{font-size:12px;font-weight:600;color:var(--ink-3);margin-left:1px;}
.kpi-value--accent{color:var(--primary);}
.kpi-value--sm{font-size:15px;letter-spacing:.02em;}
.kpi-trend{display:inline-flex;align-items:center;gap:3px;color:var(--live);}
.kpi-trend i{width:15px;height:15px;}
.kpi-bar{display:block;height:4px;border-radius:2px;background:var(--sunken-2);overflow:hidden;margin-top:2px;}
.kpi-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-bright));border-radius:2px;}
.kpi-bar--full i{background:linear-gradient(90deg,var(--live),#3bb389);}

/* 趋势图 */
.trend-legend{display:flex;gap:16px;margin-bottom:10px;}
.trend-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-2);}
.trend-legend i{width:14px;height:3px;border-radius:2px;display:inline-block;}
.trend-legend .is-actual{background:var(--primary);}
.trend-legend .is-standard{background:var(--rule-2);}
.dual-trend{border:1px solid var(--rule);border-radius:var(--r);padding:12px 8px 8px;background:var(--surface);}
.dual-trend svg{width:100%;height:auto;display:block;}
.dual-trend .grid{stroke:var(--rule);stroke-width:1;stroke-dasharray:2 4;}
.dual-trend .axis{stroke:var(--rule-2);stroke-width:1.5;}
.dual-trend .tick{fill:var(--ink-3);font-size:12px;font-family:var(--font-num);}
.dual-trend .standard{fill:none;stroke:var(--rule-2);stroke-width:2.5;stroke-dasharray:5 5;}
.dual-trend .actual{fill:none;stroke:var(--primary);stroke-width:3;stroke-linejoin:round;stroke-linecap:round;}
.trend-labels{display:flex;justify-content:space-between;margin-top:8px;padding:0 4px;}
.trend-labels span{font-family:var(--font-mono);font-size:10px;color:var(--ink-3);letter-spacing:-.03em;}

/* 叙述式入口 */
.narrative-link{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  padding:13px 14px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);margin-bottom:10px;}
.narrative-link:last-child{margin-bottom:0;}
.narrative-link>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.narrative-link strong{font-size:13.5px;font-weight:700;color:var(--ink);}
.narrative-link span{font-size:12px;color:var(--ink-2);line-height:1.6;}
.narrative-link>i{width:18px;height:18px;color:var(--ink-3);flex:0 0 auto;}

/* ============================================================================
   工序分析
   ========================================================================== */
.process-controls{display:flex;flex-direction:column;gap:11px;}
.process-context{display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
.process-context strong{font-size:15px;font-weight:700;color:var(--ink);}
.process-context span{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);letter-spacing:-.02em;}
.process-detail-section{background:var(--canvas);}
.process-detail-section .record-card{border-radius:var(--r-sm);}
.process-card__metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border-top:1px solid var(--rule);}
.process-card__metrics--four{grid-template-columns:repeat(2,1fr);}
.process-card__metrics>div{background:var(--surface);padding:9px 13px;display:flex;flex-direction:column;gap:3px;}
.process-card__metrics span{font-size:11px;color:var(--ink-3);}
.process-card__metrics strong{font-family:var(--font-num);font-weight:700;font-size:16px;color:var(--ink);letter-spacing:.01em;}
.cause-list{padding:11px 14px 13px;border-top:1px solid var(--rule);background:var(--surface);}
.cause-list>span{font-size:11px;color:var(--ink-3);font-weight:600;display:block;margin-bottom:8px;}
.cause-item+.cause-item{margin-top:9px;}
.cause-item>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.cause-item strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;color:var(--ink-2);}
.cause-item span{flex:0 0 auto;font-family:var(--font-num);font-weight:700;font-size:12px;color:var(--primary);}
.cause-item__track{height:4px;margin-top:5px;overflow:hidden;border-radius:2px;background:var(--sunken-2);}
.cause-item__track i{display:block;height:100%;border-radius:2px;background:var(--primary-bright);}
.cause-alert{margin:0 14px 13px;padding:10px 11px;border:1px solid #eecf95;border-radius:var(--r-sm);background:var(--warn-wash);}
.cause-alert__head,.cause-alert__stats{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.cause-alert__head strong{font-size:11px;color:var(--ink-2);}
.cause-alert__head span{font-size:11px;font-weight:700;color:var(--warn);text-align:right;line-height:1.4;}
.cause-alert__track{height:4px;margin-top:8px;overflow:hidden;border-radius:2px;background:rgba(255,255,255,.82);}
.cause-alert__track i{display:block;height:100%;border-radius:2px;background:var(--warn);}
.cause-alert__stats{margin-top:7px;font-family:var(--font-num);font-size:10.5px;color:var(--ink-3);}
.cause-alert__stats strong{font-size:10.5px;color:var(--danger);}
.cause-alert--unhandled{border-color:#f3cfcb;background:var(--danger-wash);}
.cause-alert--unhandled .cause-alert__head span{color:var(--danger);}
.cause-alert--unhandled .cause-alert__track i{background:var(--danger);}
.cause-alert--handled{border-color:#b9dfcf;background:var(--live-wash);}
.cause-alert--handled .cause-alert__head span{color:var(--live);}
.cause-alert--handled .cause-alert__track i{background:var(--live);}

/* ============================================================================
   写实表预览
   ========================================================================== */
.sheet-preview{padding:0 18px;}
.sheet-preview__paper{border:1px solid var(--rule);border-radius:var(--r);padding:16px 14px;background:var(--surface);
  box-shadow:0 10px 26px -18px rgba(9,32,52,.35);}
.sheet-preview__title{text-align:center;margin-bottom:13px;padding-bottom:11px;border-bottom:2px solid var(--ink);}
.sheet-preview__title strong{display:block;font-size:15px;font-weight:700;letter-spacing:.06em;}
.sheet-preview__title span{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);letter-spacing:-.02em;}
.sheet-table{width:100%;border-collapse:collapse;font-size:10.5px;}
.sheet-table th,.sheet-table td{border:1px solid var(--rule-2);padding:6px 5px;text-align:left;}
.sheet-table th{background:var(--sunken-2);font-weight:700;color:var(--ink-2);font-size:10px;white-space:nowrap;}
.sheet-table td{color:var(--ink-2);font-variant-numeric:tabular-nums;}

/* ============================================================================
   设置 / 组织
   ========================================================================== */
.settings-list{padding:6px 18px;display:flex;flex-direction:column;}
.settings-row{display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:14px 0;border-bottom:1px solid var(--rule);}
.settings-row:last-child{border-bottom:0;}
.settings-row__icon{width:40px;height:40px;flex:0 0 auto;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;color:var(--primary);background:var(--primary-wash);}
.settings-row__icon i{width:20px;height:20px;}
.settings-row__copy{flex:1;display:flex;flex-direction:column;gap:2px;}
.settings-row__copy strong{font-size:14px;font-weight:600;color:var(--ink);}
.settings-row__copy span{font-size:12px;color:var(--ink-3);}
.settings-row>i{width:18px;height:18px;color:var(--ink-3);}

.org-search{display:flex;align-items:center;gap:9px;margin:16px 18px 4px;padding:0 13px;height:44px;
  background:var(--sunken);border:1px solid var(--rule);border-radius:var(--r-sm);}
.org-search i{width:18px;height:18px;color:var(--ink-3);}
.org-search input{flex:1;border:0;background:transparent;font-size:13.5px;color:var(--ink);outline:none;}
.org-group{margin:14px 18px 0;}
.org-group__head{display:flex;align-items:center;gap:6px;margin-bottom:9px;padding-left:2px;
  font-size:12px;color:var(--ink-3);font-weight:500;}
.org-group__head i{width:15px;height:15px;color:var(--primary-bright);}
.org-group__head>span:nth-child(2){color:var(--ink-2);font-weight:600;}
.org-group__head .sep{color:var(--rule-2);}
.org-project{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  padding:13px 14px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);margin-bottom:9px;position:relative;overflow:hidden;}
.org-project__icon{width:40px;height:40px;flex:0 0 auto;border-radius:var(--r-sm);
  display:inline-flex;align-items:center;justify-content:center;color:var(--primary);background:var(--primary-wash);}
.org-project__icon i{width:21px;height:21px;}
.org-project__copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.org-project__copy strong{font-size:14px;font-weight:600;color:var(--ink);}
.org-project__copy span{font-size:11.5px;color:var(--ink-3);}
.org-project>i{width:18px;height:18px;color:var(--ink-3);flex:0 0 auto;}
.org-project__badge{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:999px;
  font-size:11px;font-weight:600;color:#fff;background:var(--primary);flex:0 0 auto;}
.org-project__badge i{width:13px;height:13px;}
.org-project.is-current{border-color:var(--primary-line);background:linear-gradient(180deg,var(--primary-wash),var(--surface));}
.org-project.is-current::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);}

/* ============================================================================
   通用命令按钮 / 页脚动作
   ========================================================================== */
.page-actions{display:flex;gap:10px;padding:18px;}
.command-button{flex:1;min-height:46px;padding:0 16px;border-radius:var(--r);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-size:14px;font-weight:600;color:#fff;background:var(--primary);
  box-shadow:0 8px 20px -10px rgba(21,93,146,.7);}
.command-button i{width:18px;height:18px;}
.command-button--secondary{color:var(--primary);background:var(--primary-wash);border:1px solid var(--primary-line);box-shadow:none;}

.workface-caption{margin-top:11px;font-size:12px;color:var(--ink-3);}
.workface-selector .chip-row{margin-top:0;}

/* ============================================================================
   底部弹窗 / toast / 遮罩（浮层保留阴影）
   ========================================================================== */
.sheet-backdrop{position:absolute;inset:0;background:rgba(9,25,40,.42);z-index:40;backdrop-filter:blur(1px);}
.bottom-sheet{position:absolute;left:0;right:0;bottom:0;z-index:50;
  background:var(--surface);border-radius:18px 18px 0 0;
  padding:8px 0 calc(14px + env(safe-area-inset-bottom));
  box-shadow:var(--shadow-sheet);max-height:78%;display:flex;flex-direction:column;
  animation:sheet-up .26s cubic-bezier(.22,1,.36,1);}
@keyframes sheet-up{from{transform:translateY(100%);}to{transform:translateY(0);}}
.sheet-grip{width:38px;height:4px;border-radius:2px;background:var(--rule-2);margin:6px auto 4px;}
.sheet-header{display:flex;align-items:center;justify-content:space-between;padding:8px 18px 12px;}
.sheet-header h2{font-size:16px;font-weight:700;}
.sheet-close{width:32px;height:32px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;
  color:var(--ink-2);background:var(--sunken);}
.sheet-close i{width:18px;height:18px;}
.sheet-content{padding:0 18px 4px;overflow-y:auto;}
.sheet-list{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.sheet-list__row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;
  padding:13px 14px;border-top:1px solid var(--rule);background:var(--surface);}
.sheet-list__row:first-child{border-top:0;}
.sheet-list__row strong{font-size:13.5px;font-weight:600;color:var(--ink);display:block;}
.sheet-list__row span{font-size:11.5px;color:var(--ink-3);}
.sheet-list__row i{width:17px;height:17px;color:var(--primary-bright);flex:0 0 auto;}
.face-option.is-selected{background:var(--primary-wash);}
.face-option__check{min-width:17px;}
.resource-detail-row span{line-height:1.7;margin-top:3px;display:block;}

.toast{position:absolute;left:50%;bottom:96px;transform:translateX(-50%);z-index:60;
  max-width:82%;padding:11px 18px;border-radius:var(--r);
  background:rgba(13,38,58,.94);color:#fff;font-size:13px;font-weight:500;text-align:center;line-height:1.55;
  box-shadow:var(--shadow-pop);animation:toast-in .2s ease;}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,6px);}to{opacity:1;transform:translate(-50%,0);}}

/* ============================================================================
   数据状态（空/错误）
   ========================================================================== */
.data-state{min-height:60vh;display:flex;align-items:center;justify-content:center;padding:40px 26px;background:var(--surface);}
.data-state__inner{text-align:center;max-width:280px;}
.data-state__icon{width:60px;height:60px;margin:0 auto 16px;border-radius:16px;
  display:inline-flex;align-items:center;justify-content:center;color:var(--primary);background:var(--primary-wash);}
.data-state__icon i{width:28px;height:28px;}
.data-state h2{font-size:16px;font-weight:700;margin-bottom:8px;}
.data-state p{font-size:13px;color:var(--ink-3);line-height:1.7;margin-bottom:18px;}
.data-state .command-button{max-width:200px;margin:0 auto;}

/* ============================================================================
   可达性
   ========================================================================== */
:focus-visible{outline:2px solid var(--primary-bright);outline-offset:2px;border-radius:4px;}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;}
}

/* ============================================================================
   工序写实替代 · 填报工作流（新增模块）
   ========================================================================== */
:root{--violet:#5b53a6;--violet-wash:#ecebf6;}
.status-pill--primary{color:var(--primary);background:var(--primary-wash);}
.status-pill--violet{color:var(--violet);background:var(--violet-wash);}

/* 写实/循环视图切换 + 角色切换 */
.realism-view-switch .segmented{width:100%;}
.role-switch button{display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;min-width:0;}
.role-switch button i{width:15px;height:15px;flex:0 0 auto;}
.ledger-actions{display:flex;gap:10px;margin-top:14px;}
.ledger-actions .command-button{padding:0 12px;font-size:13.5px;}
.ledger-actions .command-button span{white-space:nowrap;}
.reject-note{margin-top:10px;padding:9px 12px;border-radius:var(--r-sm);font-size:12px;line-height:1.6;
  color:var(--danger);background:var(--danger-wash);display:flex;gap:6px;align-items:flex-start;}
.reject-note i{width:15px;height:15px;flex:0 0 auto;margin-top:1px;}
.record-actions button.is-strong{color:#fff;background:var(--primary);border-color:var(--primary);box-shadow:0 6px 14px -8px rgba(21,93,146,.8);}
.record-actions button.is-strong i{color:#fff;}

/* 提示条 callout */
.callout{display:flex;gap:11px;align-items:flex-start;padding:13px 15px 14px;border-radius:var(--r-lg);
  font-size:12.5px;line-height:1.65;color:var(--ink-2);background:var(--sunken);border:1px solid var(--rule);}
.callout>i{width:16px;height:16px;flex:0 0 auto;margin-top:1.5px;}
.callout>div{flex:1;min-width:0;}
.callout strong{display:block;color:var(--ink);font-weight:600;margin-bottom:3px;letter-spacing:.01em;}
.callout p{margin:0;line-height:1.6;color:inherit;}
.callout b{color:var(--primary);font-weight:600;}
.callout--info{color:var(--blue-2);background:var(--primary-wash);border-color:var(--primary-line);}
.callout--info i{color:var(--primary-bright);}
/* 提示一律收起：sheet 顶栏 ⓘ 图标（全局，sheet 在 .rlm 之外），点按用 toast 浮层展示，绝不占正文行 */
.sheet-head-act{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;}
.sheet-hint{width:32px;height:32px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--primary-line);background:var(--primary-wash);color:var(--primary-bright);cursor:pointer;padding:0;}
.sheet-hint:active{background:#dbe7f2;}
.sheet-hint i,.sheet-hint svg{width:17px;height:17px;}
.callout--warn{color:var(--warn);background:var(--warn-wash);border-color:#e6d6a8;}
.callout--warn i{color:var(--warn);}
.callout--warn strong{color:var(--warn);}
.callout--live{color:var(--live);background:var(--live-wash);border-color:#bfe3d4;}
.callout--live i{color:var(--live);}
.callout--live strong{color:var(--live);}
.src-legend{display:flex;flex-wrap:wrap;align-items:center;gap:7px 14px;margin-top:10px;font-size:11.5px;color:var(--ink-3);}
.src-legend>span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}

/* 向导步骤条 */
.wiz-bar{display:flex;align-items:center;gap:11px;padding:1px 0 2px;}
.wiz-bar__label{font-family:var(--font-num);font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--ink-3);flex:0 0 auto;}
.wiz-bar__label b{color:var(--primary);font-weight:700;}
.wiz-bar__track{flex:1;display:flex;gap:4px;}
.wiz-bar__seg{flex:1;height:5px;border-radius:3px;background:var(--sunken-2);}
.wiz-bar__seg.is-done{background:var(--primary-bright);}
.wiz-bar__seg.is-cur{background:var(--primary);}
.wiz-bar+.callout,.wiz-bar+.segmented{margin-top:14px;}

/* 底部操作坞（详情/向导页，锚定手机壳底部） */
.screen-content--docked{padding-bottom:104px;}
.dock{position:absolute;left:0;right:0;bottom:0;z-index:40;display:flex;gap:10px;
  padding:12px 16px calc(14px + env(safe-area-inset-bottom));
  background:var(--surface);border-top:1px solid var(--rule);box-shadow:0 -6px 18px rgba(18,37,54,.06);}
.cmd{flex:1;min-height:46px;padding:0 14px;border-radius:var(--r);border:1px solid transparent;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;
  font-size:14px;font-weight:600;cursor:pointer;transition:transform .05s,box-shadow .15s;}
.cmd:active{transform:translateY(1px);}
.cmd i{width:17px;height:17px;flex:0 0 auto;}
.cmd--primary{color:#fff;background:var(--primary);box-shadow:0 8px 18px -8px rgba(21,93,146,.55);}
.cmd--ghost{color:var(--primary);background:var(--primary-wash);border-color:var(--primary-line);flex:0 0 auto;min-width:100px;}
.cmd--block{flex:1 1 auto;min-width:0;width:100%;}
.cmd--danger{color:var(--danger);background:var(--danger-wash);border-color:#e6c4bf;flex:0 0 auto;min-width:100px;}

/* 场景选择卡 */
.scene-card{display:flex;align-items:flex-start;gap:13px;width:100%;text-align:left;padding:15px 14px;
  border:1px solid var(--rule);border-radius:var(--r-lg);background:var(--surface);margin-bottom:12px;
  transition:border-color .15s,box-shadow .15s;}
.scene-card:last-child{margin-bottom:0;}
.scene-card:active{border-color:var(--primary-line);box-shadow:0 8px 18px -12px rgba(9,32,52,.4);}
.scene-ico{width:40px;height:40px;border-radius:11px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;margin-top:1px;}
.scene-ico i{width:21px;height:21px;}
.scene-ico--1{color:var(--primary);background:var(--primary-wash);}
.scene-ico--2{color:var(--live);background:var(--live-wash);}
.scene-body{flex:1;min-width:0;}
.scene-body__t{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin-bottom:5px;}
.scene-body__t strong{font-size:14px;font-weight:700;color:var(--ink);}
.scene-body p{font-size:12px;line-height:1.6;color:var(--ink-3);}
.scene-body b{color:var(--primary);font-weight:600;}
.scene-arrow{flex:0 0 auto;color:var(--ink-3);align-self:center;}
.scene-arrow i{width:18px;height:18px;}

/* 表单字段 */
.form,.edit-form{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;}
.field{display:flex;align-items:center;gap:12px;width:100%;text-align:left;min-height:48px;
  padding:10px 14px;border-top:1px solid var(--rule);background:var(--surface);transition:background .14s;}
.field:first-child{border-top:0;}
button.field:active{background:var(--sunken);}
.field:focus-within{background:var(--primary-wash);}
.field__label{font-size:12.5px;color:var(--ink-2);flex:0 0 auto;min-width:70px;letter-spacing:.01em;}
.field__val{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;color:var(--ink);text-align:right;white-space:nowrap;min-width:0;}
.field__val i{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto;}
.field__val--muted{color:var(--ink-3);font-weight:500;}
.field__input{flex:1;min-width:0;width:100%;border:0;background:transparent;text-align:right;font-size:13px;font-weight:600;
  color:var(--ink);font-family:var(--font-num);}
.field__input::placeholder{color:var(--ink-3);font-weight:500;}
.field__num{margin-left:auto;display:inline-flex;align-items:baseline;gap:5px;}
.field__input--num{flex:0 0 auto;width:66px;text-align:right;}
.field__input:focus{outline:none;}
.field__suffix{font-size:12px;color:var(--ink-3);flex:0 0 auto;min-width:14px;text-align:right;font-family:var(--font-num);}
.field-row{display:flex;border-top:1px solid var(--rule);}
.field-row:first-child{border-top:0;}
.field-row .field{flex:1 1 0;min-width:0;border-top:0;}
.field-row .field:last-child{border-left:1px solid var(--rule);}
.field--col{flex-direction:column;align-items:stretch;gap:7px;}
.field--col .field__label{flex:none;}
.field-textarea{width:100%;min-height:60px;border:1px solid var(--rule);border-radius:var(--r-sm);
  padding:9px 11px;font-size:12.5px;line-height:1.6;color:var(--ink);background:var(--sunken);resize:vertical;font-family:inherit;box-sizing:border-box;}
.field-textarea:focus{outline:none;border-color:var(--primary-line);}
.edit-group{border-top:1px solid var(--rule);background:var(--sunken);}
.edit-group__t{display:flex;align-items:center;gap:6px;padding:9px 14px 3px;font-size:11.5px;font-weight:600;color:var(--ink-3);}
.edit-group__t i{width:14px;height:14px;}
.edit-group .field{background:var(--sunken);}

/* —— v11 表单字段（sheet 内 · 标签在上、独立圆角输入盒；仅作用于含 .fld 的表单）—— */
.edit-form:has(.fld){display:block;border:0;border-radius:0;overflow:visible;background:transparent;}
.fld{margin-bottom:14px;}
.fld:last-child{margin-bottom:2px;}
.fld__lab{display:flex;align-items:center;font-size:12.5px;font-weight:600;color:var(--ink-3);margin-bottom:7px;}
.fld__hint{font-style:normal;font-weight:500;color:var(--ink-3);margin-left:6px;font-size:11.5px;}
.fld__ro{display:flex;align-items:center;min-height:46px;padding:10px 14px;background:var(--sunken);border-radius:13px;font-size:15px;font-weight:600;color:var(--ink-2);}
.fld__rotag{margin-left:auto;font-style:normal;font-size:11.5px;font-weight:600;color:var(--ink-3);padding-left:10px;flex:0 0 auto;}
/* 子工序 历时/标准/偏差：次要信息脚注（无框、弱化，与可编辑字段以细线分隔） */
.sub-note{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;padding-top:12px;border-top:1px solid var(--rule);}
.sub-note__lab{font-size:11.5px;font-weight:600;color:var(--ink-3);}
.sub-note__val{font-size:12.5px;font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums;}
.sub-note__tag{margin-left:auto;font-style:normal;font-size:11px;font-weight:500;color:var(--ink-3);}
.fld__inp{width:100%;height:46px;padding:0 14px;background:var(--sunken);border:0;border-radius:13px;font-family:inherit;font-size:15px;font-weight:560;color:var(--ink);box-sizing:border-box;}
.fld__inp::placeholder{color:var(--ink-3);font-weight:500;}
.fld__inp:focus{outline:none;box-shadow:0 0 0 2px var(--primary-line) inset;}
.fld__two{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.move-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.move-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;background:var(--sunken);border:0;border-radius:12px;font-family:inherit;font-size:14px;font-weight:600;color:var(--primary);cursor:pointer;}
.move-btn i,.move-btn svg{width:16px;height:16px;}
.move-btn:active{background:var(--primary-line);}
.move-btn:disabled{color:var(--ink-3);opacity:.5;cursor:not-allowed;}
.fld__selwrap{position:relative;}
.fld__selwrap::after{content:"";position:absolute;right:15px;top:50%;width:9px;height:9px;transform:translateY(-65%) rotate(45deg);border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);pointer-events:none;}
.fld__sel{width:100%;height:46px;padding:0 36px 0 14px;background:var(--sunken);border:0;border-radius:13px;font-family:inherit;font-size:15px;font-weight:560;color:var(--ink);appearance:none;-webkit-appearance:none;box-sizing:border-box;}
.fld__sel:focus{outline:none;box-shadow:0 0 0 2px var(--primary-line) inset;}
.fld__ta{width:100%;min-height:66px;padding:11px 14px;background:var(--sunken);border:0;border-radius:13px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.55;color:var(--ink);resize:none;box-sizing:border-box;}
.fld__ta::placeholder{color:var(--ink-3);}
.fld__ta:focus{outline:none;box-shadow:0 0 0 2px var(--primary-line) inset;}
.fld__toggle{display:inline-flex;align-items:center;gap:10px;margin-top:11px;cursor:pointer;}
.fld__toggle input{position:absolute;opacity:0;width:0;height:0;}
.fld__sw{width:44px;height:26px;border-radius:13px;background:var(--rule-2);position:relative;flex:0 0 44px;transition:background .16s;}
.fld__sw::after{content:"";position:absolute;top:2.5px;left:2.5px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .16s;}
.fld__toggle input:checked + .fld__sw{background:var(--live);}
.fld__toggle input:checked + .fld__sw::after{transform:translateX(18px);}
/* 会议§7 · 脱节/超时 原因组 */
.rsn-grp{margin-top:12px;padding:12px;border:1px solid var(--rule);border-radius:14px;background:var(--card);}
.rsn-grp.is-warn{border-color:#f0b24a;background:#fff8ec;}
.rsn-grp--disc.is-warn{border-color:#e08a6a;background:#fdf1ec;}
.rsn-grp__hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.rsn-grp__tag{font-size:13.5px;font-weight:700;color:var(--ink);padding:2px 9px;border-radius:8px;background:var(--sunken);}
.rsn-grp--over .rsn-grp__tag{color:#a35a12;background:#fdeccf;}
.rsn-grp--disc .rsn-grp__tag{color:#9c4a2c;background:#f8ddd1;}
.rsn-grp__sys{font-size:12px;font-weight:600;color:var(--ink-3);}
.rsn-grp__warn{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:#c8641e;}
.rsn-grp__warn i,.rsn-grp__warn svg{width:14px;height:14px;}
.rsn-grp .fld{margin-top:10px;}
.rsn-grp .fld:first-of-type{margin-top:0;}
.rsn-none{display:flex;align-items:center;gap:8px;margin-top:12px;padding:11px 13px;border-radius:13px;background:var(--sunken);font-size:13px;font-weight:600;color:var(--ink-2);}
.rsn-none i,.rsn-none svg{width:17px;height:17px;color:var(--live);flex:0 0 auto;}
.fld__toggle b{font-size:13.5px;font-weight:560;color:var(--ink);}
.fld .res-chips{margin-top:1px;}
/* 资源 chip「＋添加」 */
.res-chip--add{border:1.5px dashed var(--rule-2);background:transparent;color:var(--ink-3);font-weight:600;padding:5px 12px;cursor:pointer;font-family:inherit;font-size:13px;}
.res-chip--add svg,.res-chip--add i{width:14px;height:14px;}
.res-chip--add:active{background:var(--sunken);}
/* 资源选择器（下拉 + 步进） */
.respick__tabs{display:flex;gap:4px;padding:3px;background:var(--sunken-2);border-radius:10px;margin-bottom:15px;}
.stepper{display:flex;align-items:center;justify-content:space-between;height:46px;padding:0 8px;background:var(--sunken);border-radius:13px;}
.stepper__b{width:34px;height:34px;border:0;border-radius:9px;background:var(--surface);color:var(--primary);font-size:20px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 2px rgba(18,37,54,.14);}
.stepper__b:active{background:var(--primary-wash);}
.stepper__v{width:64px;text-align:center;border:0;background:transparent;font-family:var(--font-num);font-size:17px;font-weight:700;color:var(--ink);}
.stepper__v:focus{outline:none;}

/* 匹配候选卡 */
.match-card{display:block;width:100%;text-align:left;padding:14px;border:1px solid var(--rule);
  border-radius:var(--r-lg);background:var(--surface);}
.match-card.is-picked{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset;background:var(--primary-wash);}
.match-card__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px;}
.match-card__head strong{font-size:14px;font-weight:700;color:var(--ink);}
.match-card__range{font-size:12px;color:var(--ink-3);font-family:var(--font-num);}
.overlap{display:flex;align-items:center;gap:9px;margin:9px 0 6px;}
.overlap__bar{flex:1;height:7px;border-radius:4px;background:var(--sunken-2);overflow:hidden;}
.overlap__bar span{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--primary-bright),var(--primary));}
.overlap b{font-size:13px;font-weight:700;color:var(--primary);font-family:var(--font-num);flex:0 0 auto;}
.match-card__foot{font-size:11.5px;color:var(--ink-3);}
.match-none{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:13px 14px;
  border:1px dashed var(--rule-2);border-radius:var(--r-lg);background:var(--sunken);}
.match-none>i:first-child{width:20px;height:20px;color:var(--ink-3);flex:0 0 auto;}
.match-none div{flex:1;}
.match-none strong{display:block;font-size:13px;font-weight:600;color:var(--ink);}
.match-none span{font-size:11.5px;color:var(--ink-3);}
.match-none>i:last-child{width:17px;height:17px;color:var(--ink-3);flex:0 0 auto;}

/* 工序层级树（写实 · 精修卡片，全部限定在 .rlm 作用域内） */
.rlm .tree{display:flex;flex-direction:column;gap:12px;}

/* 源标签 自动/手工/逻辑 */
.rlm .src-tag{display:inline-flex;align-items:center;height:18px;padding:0 7px;font-size:10.5px;font-weight:700;border-radius:5px;line-height:1;white-space:nowrap;flex:0 0 auto;}
.rlm .src-tag--auto{color:var(--primary);background:var(--primary-wash);}
.rlm .src-tag--manual{color:var(--ink-2);background:var(--sunken-2);}
.rlm .src-tag--logic{color:var(--violet);background:var(--violet-wash);}

/* 分组卡 */
.rlm .grp{border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;background:var(--surface);
  box-shadow:0 1px 2px rgba(18,50,80,.04),0 6px 20px rgba(18,50,80,.05);}
.rlm .grp.is-open{border-color:var(--primary-line);}
.rlm .grp__head{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:13px 15px;
  background:linear-gradient(180deg,#fbfcfd,var(--sunken));transition:background .14s;}
.rlm .grp.is-open .grp__head{border-bottom:1px solid var(--rule);}
.rlm .grp__head:active{background:var(--sunken-2);}
.rlm .grp__head>i{width:16px;height:16px;color:var(--ink-3);flex:0 0 auto;}
.rlm .grp__head strong{font-size:14px;font-weight:700;color:var(--ink);}
.rlm .grp__tag{font-size:10.5px;font-weight:600;color:var(--ink-3);background:var(--sunken-2);border-radius:5px;padding:2px 7px;flex:0 0 auto;}
.rlm .grp__sum{margin-left:auto;font-size:11.5px;font-weight:600;color:var(--ink-3);font-family:var(--font-num);flex:0 0 auto;}
.rlm .grp__body{padding:13px;display:flex;flex-direction:column;gap:12px;}

/* 工序卡 */
.rlm .pcard{border:1px solid var(--rule-2);border-radius:var(--r);overflow:hidden;background:var(--surface);}
.rlm .pcard__head{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:13px 14px 12px;position:relative;}
.rlm .pcard__head::before{content:"";position:absolute;left:0;top:11px;bottom:11px;width:3px;border-radius:0 3px 3px 0;background:var(--primary);}
.rlm .pcard--manual .pcard__head::before{background:var(--rule-2);}
.rlm .pcard--logic .pcard__head::before{background:var(--violet);}
.rlm .pcard__caret{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto;}
.rlm .pcard__title{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
.rlm .pcard__title strong{font-size:15px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .pcard__time{font-size:12.5px;font-weight:600;color:var(--ink-2);font-family:var(--font-num);white-space:nowrap;flex:0 0 auto;}

/* 变量条：历时 / 标准 / delta */
.rlm .variance{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:0 14px 13px;padding:9px 13px;background:var(--sunken);border-radius:9px;}
.rlm .variance__i{display:flex;align-items:baseline;gap:6px;flex:0 0 auto;}
.rlm .variance__i label{font-size:11px;color:var(--ink-3);white-space:nowrap;}
.rlm .variance__i b{font-size:14px;font-weight:700;font-family:var(--font-num);color:var(--ink);white-space:nowrap;}
.rlm .variance__i.std b{color:var(--ink-2);font-weight:600;}
.rlm .variance__sep{width:1px;height:15px;background:var(--rule-2);flex:0 0 auto;}
.rlm .variance .delta{margin-left:auto;}

/* delta 药丸 */
.delta{display:inline-flex;align-items:center;height:18px;padding:0 8px;font-family:var(--font-num);font-weight:700;font-size:11.5px;border-radius:5px;line-height:1;}
.delta--over{color:var(--danger);background:var(--danger-wash);}
.delta--under{color:var(--live);background:var(--live-wash);}

/* 明细行 关联/班组/设备 */
.rlm .kv{padding:0 14px;}
.rlm .kv__row{display:flex;align-items:center;gap:11px;padding:8px 0;border-top:1px solid var(--rule);}
.rlm .kv__row:first-child{border-top:0;}
.rlm .kv__row dt{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-3);width:84px;flex:0 0 auto;}
.rlm .kv__row dt i{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto;}
.rlm .kv__row dd{font-size:13px;font-weight:600;color:var(--ink);text-align:right;margin-left:auto;min-width:0;font-family:var(--font-num);}

/* 读数瓦片 */
.rlm .tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 14px 2px;}
.rlm .tile{background:var(--sunken);border:1px solid var(--rule);border-radius:9px;padding:9px 12px;min-width:0;}
.rlm .tile label{display:block;font-size:10.5px;color:var(--ink-3);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .tile b{font-size:17px;font-weight:700;font-family:var(--font-num);color:var(--ink);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .tile b span{font-size:11px;color:var(--ink-3);font-family:var(--font);font-weight:500;margin-left:3px;}
.rlm .tile b .tile__txt{font-size:13px;font-family:var(--font);font-weight:600;color:var(--ink);}

/* 子工序时间轴 */
.rlm .subs{margin:14px 14px 0;padding-top:13px;border-top:1px solid var(--rule);}
.rlm .subs__head{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ink-3);margin-bottom:12px;}
.rlm .subs__head i{width:14px;height:14px;flex:0 0 auto;}
.rlm .subtl{list-style:none;position:relative;padding-left:18px;}
.rlm .subtl::before{content:"";position:absolute;left:4px;top:5px;bottom:9px;width:2px;background:var(--rule-2);}
.rlm .subtl li{position:relative;padding-bottom:14px;}
.rlm .subtl li:last-child{padding-bottom:0;}
.rlm .subtl__dot{position:absolute;left:-18px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2.5px solid var(--primary-line);}
.rlm .subtl li:last-child .subtl__dot{border-color:var(--primary);}
.rlm .subtl__top{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.rlm .subtl__top>span{font-size:12.5px;font-weight:600;color:var(--ink);line-height:1.4;}
.rlm .subtl time{display:block;margin-top:3px;font-size:11.5px;color:var(--ink-3);font-family:var(--font-num);font-weight:600;}
.rlm .subtl__item{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;width:100%;text-align:left;background:transparent;border-radius:8px;padding:4px 0;}
.rlm .subtl__item:active{background:var(--sunken);}
.rlm .subtl__main{flex:1;min-width:0;}
.rlm .subtl__edit{width:15px;height:15px;flex:0 0 auto;color:var(--ink-3);margin-top:2px;}
.rlm .subs__empty{font-size:12px;color:var(--ink-3);padding:2px 0 4px;}
.rlm .subs__add{margin-top:13px;width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:12px;font-weight:600;color:var(--primary);background:var(--primary-wash);border:1px dashed var(--primary-line);
  border-radius:8px;padding:8px;}
.rlm .subs__add i{width:15px;height:15px;flex:0 0 auto;}
/* 底部编辑弹层内的危险操作（弹层在 .rlm 作用域之外，故不加前缀） */
.sheet-danger{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:4px;padding:10px;
  font-size:12.5px;font-weight:600;color:var(--danger);background:var(--danger-wash);border:0;border-radius:var(--r);}
.sheet-danger i{width:15px;height:15px;flex:0 0 auto;}

/* 情况说明提示 */
.rlm .note{display:flex;gap:10px;align-items:flex-start;margin:13px 14px 0;padding:11px 13px;border-radius:9px;font-size:12px;line-height:1.6;background:var(--warn-wash);color:#7d5713;}
.rlm .note i{width:15px;height:15px;flex:0 0 auto;margin-top:1px;color:var(--warn);}
.rlm .note b{font-family:var(--font-num);font-weight:700;}

/* 编辑工序按钮 */
.rlm .pcard__foot{display:flex;align-items:center;gap:8px;padding:12px 14px 14px;}
.rlm .pcard__edit{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:13px;font-weight:600;
  color:var(--primary);background:var(--primary-wash);border:0;border-radius:10px;padding:11px 0;}
.rlm .pcard__edit i{width:16px;height:16px;flex:0 0 auto;}

/* 新增工序/分组 */
.rlm .tree-add{width:100%;margin-top:2px;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;border:1.5px dashed var(--rule-2);border-radius:var(--r-lg);color:var(--ink-2);background:rgba(255,255,255,.5);
  font-size:13px;font-weight:600;}
.rlm .tree-add i{width:16px;height:16px;color:var(--primary);flex:0 0 auto;}

/* —— 写实台账卡片（效果图 .rec，作用域 .rlm） —— */
.rlm .led-list{display:flex;flex-direction:column;gap:12px;}
/* 台账 v11 · 概览统计卡（圆角、软阴影，替代扁平 metric-grid）+ 新鲜度小圆点 */
.rlm .sec__meta .fresh-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--live);margin-right:5px;vertical-align:middle;}
.rlm .lstat{display:flex;background:var(--surface);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:0 1px 2px rgba(20,40,66,.05),0 12px 30px -20px rgba(20,40,66,.28);}
.rlm .lstat__c{flex:1;display:flex;flex-direction:column;gap:6px;padding:14px 14px 15px;position:relative;}
.rlm .lstat__c + .lstat__c::before{content:"";position:absolute;left:0;top:24%;bottom:24%;width:1px;background:var(--rule);}
.rlm .lstat__c label{font-size:12px;color:var(--ink-3);font-weight:550;}
.rlm .lstat__c b{font-size:23px;font-weight:760;color:var(--ink);letter-spacing:-.02em;line-height:1;}
.rlm .lstat__c b span{font-size:12.5px;font-weight:600;color:var(--ink-3);margin-left:2px;letter-spacing:0;}
.rlm .lstat__c b.warn{color:var(--warn);}
.rlm .led{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:0 1px 2px rgba(18,50,80,.05),0 6px 20px rgba(18,50,80,.05);}
.rlm .led__hd{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;padding:14px 15px 12px;background:var(--surface);}
.rlm .led__hd:active{background:var(--sunken);}
.rlm .led__ttl{flex:1;min-width:0;}
.rlm .led__ttl strong{display:block;font-size:15px;font-weight:700;color:var(--ink);letter-spacing:.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .led__sub{margin-top:5px;font-size:12px;color:var(--ink-3);display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;}
.rlm .led__sub .face{max-width:100%;min-width:0;white-space:normal;line-height:1.35;}
.rlm .led__sub .num{font-family:var(--font-num);color:var(--ink-2);font-weight:600;white-space:nowrap;}
.rlm .led__pills{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:0 0 auto;}
.rlm .led__meta{display:flex;border-top:1px solid var(--rule);background:var(--sunken);}
.rlm .led__meta>div{flex:1;min-width:0;padding:9px 15px;border-left:1px solid var(--rule);}
.rlm .led__meta>div:first-child{border-left:0;}
.rlm .led__meta label{display:block;font-size:10.5px;color:var(--ink-3);margin-bottom:3px;white-space:nowrap;}
.rlm .led__meta b{font-size:14px;font-weight:700;font-family:var(--font-num);color:var(--ink);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;display:block;}
.rlm .led__meta b span{font-family:var(--font);font-size:11px;font-weight:500;color:var(--ink-3);margin-left:2px;}
.rlm .led__reject{display:flex;gap:8px;align-items:flex-start;padding:10px 15px;font-size:11.5px;line-height:1.55;
  color:#8a2f22;background:var(--danger-wash);border-top:1px solid var(--rule);}
.rlm .led__reject i{width:14px;height:14px;flex:0 0 auto;margin-top:2px;color:var(--danger);}
.rlm .led__acts{display:flex;gap:8px;padding:11px 13px;border-top:1px solid var(--rule);flex-wrap:wrap;}
.rlm .led__acts button{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:12.5px;font-weight:600;color:var(--ink-2);background:var(--sunken);border:1px solid var(--rule-2);
  border-radius:9px;padding:9px 10px;white-space:nowrap;}
.rlm .led__acts button i{width:15px;height:15px;flex:0 0 auto;color:var(--ink-3);}
.rlm .led__acts button.is-strong{color:#fff;background:var(--primary);border-color:var(--primary);box-shadow:0 6px 14px -8px rgba(21,93,146,.8);}
.rlm .led__acts button.is-strong i{color:#fff;}

/* —— 写实表纸张（效果图 .paper / .ptable，作用域 .rlm） —— */
.rlm .paper{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:0 1px 2px rgba(18,50,80,.05),0 6px 20px rgba(18,50,80,.05);}
.rlm .paper__hd{padding:15px 16px 13px;border-bottom:2px solid var(--primary);}
.rlm .paper__hd h3{font-size:15px;font-weight:750;text-align:center;letter-spacing:.04em;color:var(--ink);}
.rlm .paper__seg{margin-top:11px;}
.rlm .paper__meta{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;grid-auto-flow:row dense;}
.rlm .paper__meta div{display:flex;align-items:baseline;gap:6px;font-size:11.5px;min-width:0;}
.rlm .paper__meta label{color:var(--ink-3);white-space:nowrap;flex:0 0 auto;}
.rlm .paper__meta b{font-family:var(--font-num);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* 长字段（作业面 / 桩号）整行铺满，完整展示不截断 */
.rlm .paper__meta-wide{grid-column:1 / -1;}
.rlm .paper__meta-wide b{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word;}
.rlm .ptable{width:100%;border-collapse:collapse;font-size:12px;}
.rlm .ptable th{background:var(--sunken);font-size:10.5px;font-weight:600;color:var(--ink-3);text-align:left;padding:8px 12px;border-bottom:1px solid var(--rule);white-space:nowrap;}
.rlm .ptable th.r,.rlm .ptable td.r{text-align:right;}
.rlm .ptable td{padding:10px 12px;border-bottom:1px solid var(--rule);vertical-align:top;color:var(--ink-2);}
.rlm .ptable tr:last-child td{border-bottom:0;}
.rlm .ptable .pname{font-weight:600;color:var(--ink);}
.rlm .ptable .src-tag{margin-left:6px;}
.rlm .ptable .ptime{font-family:var(--font-num);color:var(--ink-2);font-weight:600;white-space:nowrap;}
.rlm .ptable .pdur{font-family:var(--font-num);font-weight:700;color:var(--ink);white-space:nowrap;}
.rlm .ptable em{font-style:normal;font-family:var(--font-num);font-weight:700;font-size:11px;margin-left:5px;color:var(--live);}
.rlm .ptable em.over{color:var(--danger);}
.rlm .ptable .grp-row td{background:var(--primary-wash);color:var(--primary);font-weight:700;font-size:11px;
  letter-spacing:.03em;padding:6px 12px;}
.rlm .ptable .grp-row .gt{font-family:var(--font);font-weight:600;color:var(--ink-3);margin-left:6px;font-size:10px;}
.rlm .paper__sign{display:flex;justify-content:space-between;padding:13px 16px;border-top:1px dashed var(--rule-2);font-size:11.5px;color:var(--ink-3);}
.rlm .paper__sign b{color:var(--ink-2);font-weight:600;}
/* 会议§10.2 · 预览里工序下的附属信息子行 */
.rlm .ptable .attach-tr td{background:var(--sunken);padding:5px 12px 7px;border-bottom:1px solid var(--rule);}
.rlm .ptable .attach-tr .attach-tr__lb{display:inline-block;font-family:var(--font);font-size:10px;font-weight:700;color:var(--violet);background:var(--violet-wash);border-radius:5px;padding:1px 6px;margin-right:8px;vertical-align:middle;letter-spacing:.02em;}
.rlm .ptable .attach-tr .attach-tr__items{display:inline;}
.rlm .ptable .attach-tr .attach-tr__items em{font-style:normal;font-family:var(--font);font-size:11.5px;font-weight:500;color:var(--ink-3);margin:0 13px 0 0;white-space:nowrap;}
.rlm .ptable .attach-tr .attach-tr__items b{font-family:var(--font-num);font-weight:700;color:var(--ink-2);margin-left:2px;}
/* 会议§10.3 · 拓展 / 补录信息 左右滑卡片 */
.rlm .pv-ext{margin-top:15px;}
.rlm .pv-ext__hd{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:9px;padding:0 2px;}
.rlm .pv-ext__t{font-size:14.5px;font-weight:700;color:var(--ink);}
.rlm .pv-ext__hint{font-size:11.5px;color:var(--ink-3);font-weight:550;}
.rlm .pv-cards{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 4px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;}
.rlm .pv-cards::-webkit-scrollbar{display:none;}
.rlm .pv-card{flex:0 0 auto;min-width:122px;max-width:150px;scroll-snap-align:start;background:var(--surface);border:1px solid var(--rule);border-radius:13px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;box-shadow:0 1px 2px rgba(20,40,66,.04);}
.rlm .pv-card--wide{min-width:214px;max-width:240px;}
.rlm .pv-card__lb{font-size:11.5px;color:var(--ink-3);font-weight:600;}
.rlm .pv-card__v{font-family:var(--font-num);font-size:16px;font-weight:700;color:var(--ink);line-height:1.3;}
.rlm .pv-card--wide .pv-card__v{font-family:var(--font);font-size:12.5px;font-weight:500;color:var(--ink-2);white-space:normal;line-height:1.45;}
.rlm .pv-card__u{font-family:var(--font);font-size:11px;font-weight:600;color:var(--ink-3);}

/* 反向更新 diff */
.diff-list{display:flex;flex-direction:column;gap:8px;}
.diff{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border:1px solid var(--rule);border-radius:var(--r-lg);background:var(--surface);}
.diff i{width:17px;height:17px;flex:0 0 auto;margin-top:1px;}
.diff strong{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:2px;}
.diff span{font-size:11.5px;line-height:1.55;color:var(--ink-3);}
.diff span b{color:var(--ink);font-family:var(--font-num);font-weight:600;}
.diff--edit{border-left:3px solid var(--primary);}
.diff--edit i{color:var(--primary);}
.diff--add{border-left:3px solid var(--live);}
.diff--add i{color:var(--live);}
.diff--split{border-left:3px solid var(--violet);}
.diff--split i{color:var(--violet);}

/* 底部弹层 footer + 配置项 + 开关 + 选项列表 */
.sheet-content{flex:1 1 auto;min-height:0;}
.sheet-footer{flex:0 0 auto;display:flex;gap:10px;padding:12px 18px calc(8px + env(safe-area-inset-bottom));
  border-top:1px solid var(--rule);background:var(--surface);}
.sheet-footer .cmd{min-height:44px;}
.cfg-list{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;margin-bottom:12px;}
.cfg{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;
  min-height:48px;padding:10px 14px;border-top:1px solid var(--rule);background:var(--surface);font-size:13px;color:var(--ink);}
.cfg:first-child{border-top:0;}
.cfg.is-disabled{opacity:.45;}
.cfg--static b{font-family:var(--font-num);font-weight:600;color:var(--ink-2);}
.switch{width:40px;height:23px;border-radius:12px;background:var(--rule-2);position:relative;flex:0 0 auto;transition:background .18s;}
.switch i{position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:left .18s;}
.switch.is-on{background:var(--primary);}
.switch.is-on i{left:19px;}
.opt-list{display:flex;flex-direction:column;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.opt{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;
  min-height:48px;padding:12px 14px;border-top:1px solid var(--rule);background:var(--surface);font-size:13.5px;color:var(--ink);}
.opt:first-child{border-top:0;}
.opt i{width:16px;height:16px;color:var(--ink-3);flex:0 0 auto;}
.opt.is-sel{background:var(--primary-wash);color:var(--primary);font-weight:600;}
.opt.is-sel i{color:var(--primary);}

/* ===== 补充需求功能化 · 新增组件（v18） ===== */
/* 动态表单徽标 + 行内校验 + select 字段 + 字段提示 */
.tpl-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--violet);
  background:var(--violet-wash);padding:3px 9px;border-radius:20px;letter-spacing:.01em;}
.tpl-badge i{width:13px;height:13px;}
.form-error{display:flex;align-items:center;gap:7px;margin-bottom:11px;padding:9px 12px;border-radius:var(--r-sm);
  background:var(--danger-wash);color:var(--danger);font-size:12.5px;font-weight:600;line-height:1.45;border:1px solid #eebfb8;}
.form-error[hidden]{display:none;}
.form-error i{width:16px;height:16px;flex:0 0 auto;}
.field__hint{display:block;font-style:normal;font-size:10.5px;font-weight:500;color:var(--ink-3);margin-top:2px;letter-spacing:0;}
.field__select{flex:1;min-width:0;border:0;background:transparent;text-align:right;font-size:13px;font-weight:600;
  color:var(--ink);font-family:inherit;-webkit-appearance:none;appearance:none;padding-right:2px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238496a6' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right center;padding-right:16px;}
.field__select:focus{outline:none;}

/* 匹配 · 查询新鲜度 + 刷新 */
.match-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font-size:11.5px;color:var(--ink-3);}
.match-meta>span{display:inline-flex;align-items:center;gap:5px;}
.match-meta i{width:13px;height:13px;}
.match-refresh{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--primary);
  background:var(--primary-wash);border:1px solid var(--primary-line);border-radius:20px;padding:5px 12px;}
.match-refresh i{width:13px;height:13px;}

/* 工序卡 · 排序/删除操作 + 取消态 */
.rlm .pcard__ops{display:inline-flex;gap:4px;flex:0 0 auto;padding:3px;background:var(--sunken);border-radius:10px;}
.rlm .pcard__op{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-sm);
  background:var(--sunken);color:var(--ink-2);border:1px solid var(--rule);}
.rlm .pcard__op i{width:15px;height:15px;}
.rlm .pcard__op--del{color:var(--danger);}
.rlm .pcard__op:active{background:var(--sunken-2);}
.rlm .pcard.is-canceled{opacity:.55;}
.rlm .pcard.is-canceled .pcard__title strong{text-decoration:line-through;}

/* 超时自动确认盒 */
.timeout-box{border:1px solid var(--warn-wash);background:linear-gradient(180deg,var(--warn-wash),var(--surface));
  border-radius:var(--r-lg);padding:13px 14px;display:flex;flex-direction:column;gap:11px;}
.timeout-box__head{display:flex;gap:10px;align-items:flex-start;}
.timeout-box__head i{width:18px;height:18px;color:var(--warn);flex:0 0 auto;margin-top:1px;}
.timeout-box__head strong{display:block;font-size:13px;color:var(--ink);margin-bottom:2px;}
.timeout-box__head span{font-size:11.5px;color:var(--ink-3);line-height:1.5;}
.timeout-box__head b{font-family:var(--font-num);color:var(--warn);font-weight:700;}
.timeout-box__bar{height:6px;border-radius:6px;background:var(--sunken-2);overflow:hidden;}
.timeout-box__bar i{display:block;height:100%;background:var(--warn);border-radius:6px;}
.cmd--sm{min-height:38px;font-size:12.5px;padding:0 14px;}

/* 审计轨迹 + BI 同步徽标 */
.sync-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--live);
  background:var(--live-wash);padding:3px 9px;border-radius:20px;}
.sync-badge i{width:13px;height:13px;}
.audit{list-style:none;margin:0;padding:0 0 0 4px;display:flex;flex-direction:column;}
.audit__item{display:flex;gap:11px;position:relative;padding-bottom:14px;}
.audit__item:not(:last-child)::before{content:"";position:absolute;left:11px;top:22px;bottom:0;width:2px;background:var(--rule);}
.audit__dot{width:22px;height:22px;border-radius:50%;background:var(--live-wash);color:var(--live);display:inline-flex;
  align-items:center;justify-content:center;flex:0 0 auto;z-index:1;}
.audit__dot i{width:13px;height:13px;}
.audit__body{display:flex;flex-direction:column;gap:2px;padding-top:1px;}
.audit__body strong{font-size:13px;color:var(--ink);font-weight:600;}
.audit__body span{font-size:11.5px;color:var(--ink-3);line-height:1.5;}
.audit__body span b{color:var(--ink);font-family:var(--font-num);font-weight:600;}
.audit__body em{font-style:normal;font-size:10.5px;color:var(--ink-3);opacity:.85;margin-top:1px;}

/* 台账重置小链接 */
.mini-link{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--primary);}
.mini-link i{width:12px;height:12px;}

/* 配置与说明入口 */
.entry-list{display:flex;flex-direction:column;gap:9px;}
.entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 13px;border:1px solid var(--rule);
  border-radius:var(--r-lg);background:var(--surface);}
.entry:active{background:var(--sunken);}
.entry__ic{width:38px;height:38px;border-radius:var(--r-sm);background:var(--primary-wash);color:var(--primary);
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.entry__ic--violet{background:var(--violet-wash);color:var(--violet);}
.entry__ic i{width:19px;height:19px;}
.entry__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.entry__tx strong{font-size:13.5px;color:var(--ink);font-weight:600;}
.entry__tx em{font-style:normal;font-size:11.5px;color:var(--ink-3);}
.entry>i{width:17px;height:17px;color:var(--ink-3);flex:0 0 auto;}

/* 报表模板配置示意页 */
.tpl-list{display:flex;flex-direction:column;gap:9px;}
.tpl-item{border:1px solid var(--rule);border-radius:var(--r-lg);padding:12px 13px;background:var(--surface);}
.tpl-item__hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px;}
.tpl-item__hd strong{font-size:13px;color:var(--ink);font-weight:600;}
.tpl-item__meta{display:flex;flex-wrap:wrap;gap:12px;font-size:11.5px;color:var(--ink-3);}
.tpl-item__meta span{display:inline-flex;align-items:center;gap:4px;}
.tpl-item__meta i{width:13px;height:13px;}
.map-table{border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;}
.map-row{display:grid;grid-template-columns:1.4fr 1fr .8fr;gap:8px;padding:9px 12px;border-top:1px solid var(--rule);
  font-size:12px;color:var(--ink);align-items:center;}
.map-row:first-child{border-top:0;}
.map-row--head{background:var(--sunken);font-size:11px;font-weight:700;color:var(--ink-2);letter-spacing:.02em;text-transform:uppercase;}
.map-cell{font-family:var(--font-mono);font-size:11px;color:var(--primary);letter-spacing:-.02em;}
.map-type{font-size:10.5px;color:var(--ink-3);}

/* 需求覆盖看板 */
.cov-list{display:flex;flex-direction:column;gap:9px;}
.cov{border:1px solid var(--rule);border-left-width:3px;border-radius:var(--r-lg);padding:11px 13px;background:var(--surface);}
.cov__hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.cov__id{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--ink-3);letter-spacing:-.02em;}
.cov__hd strong{font-size:13px;color:var(--ink);font-weight:600;flex:1;min-width:0;}
.cov__tag{font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;white-space:nowrap;}
.cov__desc{font-size:11.5px;color:var(--ink-3);line-height:1.55;margin:0;}
.cov--ok{border-left-color:var(--live);}
.cov--ok .cov__tag{color:var(--live);background:var(--live-wash);}
.cov--demo{border-left-color:var(--warn);}
.cov--demo .cov__tag{color:var(--warn);background:var(--warn-wash);}
.cov--be{border-left-color:var(--violet);}
.cov--be .cov__tag{color:var(--violet);background:var(--violet-wash);}

/* ============================================================================
   2026-09-07 客户评审修改点 M1–M15 · 新增组件
   ========================================================================== */
/* M1 · 底部 Tab 中央「＋」直达填报 */
.tabbar--plus{grid-template-columns:repeat(5,1fr);}
.tab-plus{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;
  color:var(--primary);font-size:11px;font-weight:700;padding:0 0 3px;cursor:pointer;position:relative;}
.tab-plus__ic{width:48px;height:48px;margin-top:-20px;border-radius:50%;background:var(--primary);
  color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 12px 22px -8px rgba(21,93,146,.7);border:3px solid var(--surface);transition:transform .05s;}
.tab-plus__ic i{width:26px;height:26px;stroke-width:2.6;}
.tab-plus:active .tab-plus__ic{transform:translateY(1px);}

/* M4 · 填报页三按钮 dock（存草稿 / 预览 / 提交审核） */
.dock--triple .cmd{min-width:0;padding:0 8px;font-size:13px;gap:5px;}
.dock--triple .cmd--ghost{flex:1;}
.dock--triple .cmd i{width:15px;height:15px;}

/* M6 · 层级说明收起 / 点开看 */
.hint-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;
  margin-top:12px;padding:10px 13px;border:1px solid var(--rule);border-radius:var(--r);
  background:var(--sunken);color:var(--ink-2);font-size:12.5px;font-weight:600;cursor:pointer;}
.hint-toggle>span{display:inline-flex;align-items:center;gap:7px;}
.hint-toggle i{width:15px;height:15px;color:var(--ink-3);}
.hint-toggle.is-open{border-bottom-left-radius:0;border-bottom-right-radius:0;}
.hint-body{border:1px solid var(--rule);border-top:0;border-radius:0 0 var(--r) var(--r);
  padding:11px 13px 13px;background:var(--surface);}
.hint-body p{margin:0 0 4px;font-size:12px;color:var(--ink-2);line-height:1.6;}

/* M10 · 紧凑入口列表（循环信息可回改 / 设计参数后补） */
.entry-list--compact{gap:7px;}
.entry-list--compact .entry{padding:10px 12px;}
.entry-list--compact .entry__ic{width:32px;height:32px;}
.entry-list--compact .entry__ic i{width:16px;height:16px;}

/* ============================================================================
   2026-09-07 客户评审 · Batch 2（M5 层级 / M7 面包屑 / M8 资源挂靠 / M9 辅助信息 / M11 原因分析）
   ========================================================================== */
/* M5 · 层级徽标 */
.lvl{display:inline-flex;align-items:center;height:18px;padding:0 7px;margin-left:2px;border-radius:5px;
  font-size:10.5px;font-weight:700;letter-spacing:.01em;line-height:1;flex:0 0 auto;}
.lvl--1{color:var(--primary);background:var(--primary-wash);}
.lvl--2{color:var(--violet);background:var(--violet-wash);}
.lvl--3{color:var(--ink-2);background:var(--sunken-2);}
.subs__head .lvl{margin-left:auto;}

/* M7 · 面包屑 */
.crumb{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-bottom:12px;
  font-size:12px;color:var(--ink-3);font-weight:600;}
.crumb i[data-lucide]{width:13px;height:13px;color:var(--ink-3);opacity:.7;}
.crumb span{white-space:nowrap;}
.crumb span.is-cur{color:var(--primary);}
.pcard__crumb{display:flex;align-items:center;gap:5px;margin:2px 14px 12px;padding:6px 10px;
  border-radius:var(--r-xs);background:var(--sunken);color:var(--ink-3);font-size:11.5px;font-weight:600;}
.pcard__crumb i[data-lucide]{width:13px;height:13px;}
.pcard__crumb b{color:var(--ink);}

/* M8 / M9 · 分组级资源 / 辅助信息（挂靠层级） */
.ginfo{margin:2px 0 12px;padding:11px 12px;border:1px dashed var(--primary-line);
  border-radius:var(--r);background:var(--primary-wash);}
.ginfo__hang{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px;}
.ginfo__hang em{font-style:normal;font-size:10.5px;color:var(--ink-3);white-space:nowrap;}
.hang{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;
  background:var(--surface);color:var(--primary);font-size:11px;font-weight:700;border:1px solid var(--primary-line);}
.hang i[data-lucide]{width:13px;height:13px;}
.kv--tight .kv__row{padding:5px 0;}
.ginfo .note{margin-top:9px;}

/* M5 · 一级分组（无下级）叶子提示 */
.grp--leaf .grp__head strong{color:var(--ink);}
.grp__leaf-hint{display:flex;align-items:center;gap:7px;padding:11px 12px;
  color:var(--ink-2);font-size:12.5px;line-height:1.5;}
.grp__leaf-hint i[data-lucide]{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto;}
.grp__leaf-hint b{color:var(--primary);}

/* M11 · 原因分析及改进措施（工序预警） */
.reason{margin-top:11px;padding:11px 12px;border-radius:var(--r);
  border:1px solid var(--warn-wash);background:var(--warn-wash);}
.reason--done{border-color:var(--live-wash);background:var(--live-wash);}
.reason--empty{border-style:dashed;border-color:var(--rule);background:var(--sunken);}
.reason__hd{display:flex;align-items:center;gap:7px;margin-bottom:6px;
  font-size:12.5px;font-weight:700;color:var(--ink);}
.reason__hd i[data-lucide]{width:15px;height:15px;color:var(--warn);}
.reason--done .reason__hd i[data-lucide]{color:var(--live);}
.reason__hd .status-pill{margin-left:auto;}
.reason p{margin:0;font-size:12.5px;line-height:1.6;color:var(--ink-2);}
.reason__ph{color:var(--ink-3);}

/* M11 · 编辑弹层：配置名标记 + 已处置勾选 */
.field__cfg{margin-left:8px;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:600;
  color:var(--violet);background:var(--violet-wash);}
.field-check{display:flex;align-items:center;gap:8px;margin-top:4px;padding:2px 0;
  font-size:13px;color:var(--ink);font-weight:600;cursor:pointer;}
.field-check input{width:17px;height:17px;accent-color:var(--primary);}

/* ==========================================================================
   Batch 3 · M12 ⭐ 语音 / 语义识别录入
   ========================================================================== */
/* 工序层级页入口按钮（.rlm 作用域） */
.rlm .voice-entry{display:flex;align-items:center;gap:11px;width:100%;padding:12px 13px;
  margin-bottom:11px;border:1px solid var(--violet-wash);border-radius:var(--r);
  background:linear-gradient(180deg,var(--violet-wash),var(--surface));cursor:pointer;text-align:left;}
.rlm .voice-entry__ic{flex:0 0 auto;width:38px;height:38px;border-radius:50%;background:var(--violet);
  color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 16px -8px var(--violet);}
.rlm .voice-entry__ic i[data-lucide]{width:20px;height:20px;}
.rlm .voice-entry__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.rlm .voice-entry__tx strong{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);}
.rlm .voice-entry__tag{padding:1px 7px;border-radius:999px;font-size:10px;font-weight:700;
  color:var(--violet);background:var(--surface);border:1px solid var(--violet-wash);}
.rlm .voice-entry__tx em{font-style:normal;font-size:12px;color:var(--ink-2);}
.rlm .voice-entry>i[data-lucide]{width:16px;height:16px;color:var(--ink-3);flex:0 0 auto;}

/* 录入弹层（在 .rlm 作用域外，用全局类） */
.voice{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 2px 2px;}
.voice__mic{width:88px;height:88px;border-radius:50%;border:none;background:var(--violet);color:#fff;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:0 16px 30px -12px var(--violet);transition:transform .05s;}
.voice__mic i[data-lucide]{width:38px;height:38px;stroke-width:2.2;}
.voice__mic:active{transform:scale(.96);}
.voice__mic.is-live{animation:voicePulse 1.1s ease-in-out infinite;}
@keyframes voicePulse{0%,100%{box-shadow:0 0 0 0 var(--violet-wash),0 16px 30px -12px var(--violet);}
  50%{box-shadow:0 0 0 15px transparent,0 16px 30px -12px var(--violet);}}
.voice__wave{display:flex;align-items:flex-end;gap:4px;height:34px;margin-top:14px;}
.voice__wave i{width:4px;height:8px;border-radius:2px;background:var(--violet);
  animation:voiceWave .9s ease-in-out infinite;}
@keyframes voiceWave{0%,100%{height:8px;opacity:.5;}50%{height:30px;opacity:1;}}
.voice__tip{margin:14px 0 4px;font-size:13.5px;color:var(--ink-2);font-weight:600;}
.voice__tpl{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;
  margin-top:8px;font-size:12px;color:var(--ink-3);font-weight:600;}
.voice__tpl i[data-lucide]{width:14px;height:14px;}
.voice__tpl span{padding:2px 9px;border-radius:999px;background:var(--sunken);
  color:var(--ink-2);border:1px solid var(--rule);}
.voice__sdk{display:flex;align-items:flex-start;gap:6px;margin:16px 0 0;padding:9px 11px;
  border-radius:var(--r-sm);background:var(--sunken);font-size:11.5px;line-height:1.55;
  color:var(--ink-3);text-align:left;}
.voice__sdk i[data-lucide]{width:14px;height:14px;flex:0 0 auto;margin-top:1px;color:var(--violet);}
.voice__said{position:relative;align-self:stretch;display:flex;flex-direction:column;gap:6px;
  padding:13px 14px;border-radius:var(--r);background:var(--violet-wash);text-align:left;}
.voice__said i[data-lucide]{width:18px;height:18px;color:var(--violet);}
.voice__said p{margin:0;font-size:15px;line-height:1.65;color:var(--ink);font-weight:600;}
.voice__conf{font-size:11px;color:var(--violet);font-weight:700;}
.vp{align-self:stretch;margin-top:12px;border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;}
.vp__hd{display:flex;align-items:center;gap:7px;padding:10px 12px;background:var(--sunken);
  font-size:12.5px;font-weight:700;color:var(--ink);border-bottom:1px solid var(--rule);}
.vp__hd i[data-lucide]{width:15px;height:15px;color:var(--violet);}
.vp__hd em{margin-left:auto;font-style:normal;font-size:11px;color:var(--ink-3);font-weight:600;}
.vp__row{display:grid;grid-template-columns:96px 1fr;gap:10px;padding:10px 12px;
  border-bottom:1px solid var(--rule);text-align:left;}
.vp__row:last-child{border-bottom:0;}
.vp__row dt{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:12px;
  color:var(--ink-2);font-weight:600;line-height:1.4;}
.vp__row dt i[data-lucide]{width:14px;height:14px;flex:0 0 auto;margin-top:1px;color:var(--ink-3);}
.vp__row dd{margin:0;font-size:13.5px;color:var(--ink);font-weight:600;line-height:1.5;}
.vp__map{display:flex;align-items:flex-start;gap:6px;align-self:stretch;margin:8px 2px 0;
  font-size:11.5px;line-height:1.5;color:var(--ink-3);text-align:left;}
.vp__map i[data-lucide]{width:13px;height:13px;flex:0 0 auto;margin-top:1px;color:var(--violet);}
.vp__map b{color:var(--violet);}

/* ==========================================================================
   Batch 4 · M13 字号放大（领导老花）/ M14 卡片边界更清晰 / M15 信息分级
   —— 仅作用于写实模块 .rlm，不影响今日工序/分析/报告原生页
   ========================================================================== */
/* 写实工序卡 · 统一字号阶梯（单一来源，替代此前 M13/M14/M15 多层叠加覆盖）
   阶梯：标题 15 · 主读数 16 · 次读数/正文 13 · 次要文本 12.5 · 标签 11.5 · 徽标 10.5 */
/* 标题层：分组名 = 工序名（父级不小于子级，消除倒挂） */
.rlm .grp__head strong{font-size:17px;font-weight:720;}
.rlm .pcard__title strong{font-size:15px;}
/* 主读数：实际历时=全卡最大数字（信息重点）；标准/时间为次要读数 */
.rlm .variance__i b{font-size:16px;}
.rlm .variance__i.std b{font-size:13px;color:var(--ink-3);font-weight:600;}
.rlm .pcard__time{font-size:12.5px;color:var(--ink-2);}
.rlm .variance .delta{font-size:11.5px;}
/* 读数 tile：数值统一 15（不再 17 抢过历时），文本值 14，单位 11 */
.rlm .tile b{font-size:15px;}
.rlm .tile b .tile__txt{font-size:14px;}
.rlm .tile b span{font-size:11px;}
.rlm .tile label{font-size:11.5px;}
/* 键值行：标签 12.5 / 值 13 */
.rlm .kv__row dt{font-size:12.5px;}
.rlm .kv__row dd{font-size:13px;}
.rlm .variance__i label{font-size:11.5px;}
/* 子工序时间线 */
.rlm .subtl__top>span{font-size:13px;}
.rlm .subtl time{font-size:12px;}
.rlm .subs__head{font-size:11.5px;}
.rlm .subs__empty{font-size:12.5px;}
/* 正文块：情况说明 / 面包屑 / 原因分析 / 编辑按钮 */
.rlm .callout{font-size:13px;}
.rlm .callout strong{font-size:14.5px;margin-bottom:4px;}
.rlm .crumb{font-size:12.5px;}
.rlm .reason p{font-size:13px;}
.rlm .reason__hd{font-size:13px;}
.rlm .pcard__edit{font-size:13px;}
.rlm .grp__sum{font-size:11.5px;}
.rlm .entry__tx em{font-size:12.5px;}
.rlm .led__sub{font-size:12.5px;}
.rlm .led__ttl strong{font-size:16px;}

/* 卡片边界 + 轻投影分层，展开分组头作为「区段带」拉开层次 */
.rlm .grp,.rlm .led{border-color:var(--rule-2);
  box-shadow:0 1px 2px rgba(18,37,54,.05),0 4px 12px -6px rgba(18,37,54,.12);}
.rlm .pcard{border-color:var(--rule-2);}
.rlm .grp__body{gap:13px;}
.rlm .led-list{gap:14px;}
.rlm .grp.is-open .grp__head{background:transparent;}
.rlm .grp.is-open .grp__head strong{color:var(--ink);}

/* 2026-09-08 追加 · 「新增」语音填写按钮 / 全局消息中心（顶栏角标 + 消息卡） */
/* 弹层底部语音按钮（新增工序 / 新增子工序） */
.cmd--mic{flex:0 0 auto;min-width:46px;width:46px;padding:0;color:var(--violet);background:var(--violet-wash);border-color:var(--violet-wash);}
.cmd--mic i{width:20px;height:20px;}
.cmd--mic:active{transform:translateY(1px);}
/* 顶栏消息角标 */
.icon-button{position:relative;}
.icon-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;
  background:var(--danger);color:#fff;font-family:var(--font-num);font-size:11px;font-weight:700;line-height:17px;
  text-align:center;border:1.5px solid var(--primary);box-shadow:0 2px 5px rgba(0,0,0,.28);}
/* 消息中心页 */
.rlm-page{padding:14px 16px 26px;}
.msg-top{display:flex;align-items:center;gap:12px;padding:14px 15px;margin-bottom:14px;
  border:1px solid var(--rule-2);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--primary-wash),var(--surface));}
.msg-top__ic{flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 16px -8px var(--primary);}
.msg-top__ic i{width:21px;height:21px;}
.msg-top__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.msg-top__tx strong{font-size:16px;color:var(--ink);}
.msg-top__tx em{font-style:normal;font-size:12.5px;color:var(--ink-2);line-height:1.4;}
.msg-top .mini-link{flex:0 0 auto;align-self:flex-start;}
.msg-list{display:flex;flex-direction:column;gap:11px;}
.msg{display:flex;align-items:flex-start;gap:11px;width:100%;padding:13px;text-align:left;cursor:pointer;
  border:1px solid var(--rule-2);border-radius:var(--r);background:var(--surface);box-shadow:0 1px 2px rgba(18,37,54,.05);}
.msg:active{background:var(--sunken);}
.msg.is-unread{border-color:var(--primary-line);box-shadow:0 1px 2px rgba(18,37,54,.05),0 4px 12px -6px rgba(18,37,54,.14);}
.msg__ic{flex:0 0 auto;width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;}
.msg__ic i{width:18px;height:18px;}
.msg__ic--todo{background:var(--primary-wash);color:var(--primary);}
.msg__ic--warn{background:var(--warn-wash);color:var(--warn);}
.msg__ic--info{background:var(--live-wash);color:var(--live);}
.msg__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.msg__top{display:flex;align-items:center;gap:7px;}
.msg__top strong{font-size:14.5px;color:var(--ink);font-weight:600;}
.msg__dot{width:7px;height:7px;border-radius:50%;background:var(--danger);flex:0 0 auto;}
.msg__desc{font-size:13px;color:var(--ink-2);line-height:1.5;}
.msg__time{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ink-3);margin-top:1px;}
.msg__time i{width:13px;height:13px;}
.msg>i{flex:0 0 auto;width:17px;height:17px;color:var(--ink-3);margin-top:9px;}

/* 2026-09-08 追加(2) · 一级工序卡体 / 底部按钮行 / 新增子工序轻量化
   （分组深度徽标已并入统一 .lvl 徽标，不再单独设色） */
/* 一级分组（无下级）——历时读数条，作为一张正经的一级工序卡 */
.rlm .leaf-dur{display:flex;align-items:center;gap:10px;padding:9px 13px;background:var(--sunken);border-radius:9px;}
.rlm .leaf-dur__i{display:flex;align-items:baseline;gap:6px;}
.rlm .leaf-dur__i label{font-size:11.5px;color:var(--ink-3);}
.rlm .leaf-dur__i b{font-size:16px;font-weight:700;font-family:var(--font-num);color:var(--ink);}
.rlm .leaf-dur .lvl{margin-left:auto;}
/* 底部工序操作组：上/下移 + 删除 收成右侧分段式一组 */
.rlm .pcard__ops .pcard__op{background:transparent;}
.rlm .pcard__ops .pcard__op:active{background:var(--surface);}
/* 新增子工序按钮轻量化（次级于「编辑工序」） */
.rlm .subs__add{background:transparent;border-color:var(--rule-2);color:var(--ink-2);}
.rlm .subs__add i{color:var(--primary);}

/* ==========================================================================
   2026-09-09 · 第二次评审需求 R01–R12 新增组件（沿用既有设计 token 与配色）
   ========================================================================== */
/* R05 · 自动匹配 / 重合度收为一条弱化小条（点开看详情），不再占整块版面 */
.rlm .match-mini{display:flex;align-items:center;gap:7px;width:100%;margin-top:2px;padding:7px 11px;
  border:1px solid var(--primary-line);border-radius:999px;background:var(--primary-wash);
  color:var(--primary);font-size:12px;font-weight:600;text-align:left;cursor:pointer;}
.rlm .match-mini span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rlm .match-mini b{font-family:var(--font-num);font-weight:700;}
.rlm .match-mini>i[data-lucide]{width:15px;height:15px;flex:0 0 auto;}
.rlm .match-mini>i[data-lucide]:last-child{opacity:.7;}
.rlm .match-mini:active{background:var(--surface);}
.rlm .match-mini--manual{border-color:var(--rule-2);background:var(--sunken);color:var(--ink-2);}

/* R09 · 施工日期提到顶部做总显示；各工序行仅记时分 */
.rlm .rlm-dateline{display:flex;align-items:center;gap:11px;padding:11px 14px;
  border:1px solid var(--rule-2);border-radius:var(--r);
  background:linear-gradient(180deg,var(--primary-wash),var(--surface));}
.rlm .rlm-dateline>i[data-lucide]{width:20px;height:20px;flex:0 0 auto;color:var(--primary);}
.rlm .rlm-dateline__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.rlm .rlm-dateline__tx label{font-size:11.5px;color:var(--ink-3);}
.rlm .rlm-dateline__tx b{font-size:15px;font-weight:700;color:var(--ink);font-family:var(--font-num);letter-spacing:.01em;}
.rlm .rlm-dateline__hint{flex:0 0 auto;font-size:10.5px;color:var(--ink-3);text-align:right;line-height:1.35;max-width:84px;}

/* R07 · 资源汇总块（卡内回显，可编辑）——分组级与工序级共用 */
.rlm .ginfo{margin:0;padding:0;border:0;background:transparent;display:flex;flex-direction:column;gap:10px;}
.rlm .res-sum{border:1px solid var(--primary-line);border-radius:var(--r);background:var(--surface);padding:10px 12px;}
.rlm .res-sum__hd{display:flex;align-items:center;gap:6px;margin-bottom:7px;font-size:12px;font-weight:700;color:var(--ink);}
.rlm .res-sum__hd>i[data-lucide]{width:15px;height:15px;color:var(--primary);flex:0 0 auto;}
.rlm .res-sum__edit{margin-left:auto;display:inline-flex;align-items:center;gap:4px;
  font-size:11.5px;font-weight:600;color:var(--primary-bright);background:transparent;border:0;cursor:pointer;}
.rlm .res-sum__edit i{width:14px;height:14px;}
.rlm .res-sum .kv{border:0;}
/* R07 · 资源以「令牌」展示：令牌内不折行（数字+单位不拆），令牌间整体折行 */
.rlm .res-cat{display:flex;flex-direction:column;gap:6px;padding:8px 0;border-top:1px solid var(--rule);}
.rlm .res-cat:first-of-type{border-top:0;padding-top:1px;}
.rlm .res-cat__lb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3);}
.rlm .res-cat__lb i{width:14px;height:14px;color:var(--ink-3);flex:0 0 auto;}
.rlm .res-cat__toks{display:flex;flex-wrap:wrap;gap:6px;padding-left:20px;}
.rlm .res-tok{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap;
  padding:4px 10px;border-radius:999px;background:var(--primary-wash);
  color:var(--ink-2);font-size:12.5px;line-height:1.35;}
.rlm .res-tok b{font-weight:700;color:var(--ink);font-family:var(--font-num);}
.rlm .res-sum--empty{display:flex;align-items:center;gap:9px;width:100%;border-style:dashed;border-color:var(--primary-line);
  background:var(--primary-wash);color:var(--ink-2);font-size:12.5px;font-weight:500;text-align:left;cursor:pointer;}
.rlm .res-sum--empty>i[data-lucide]{width:17px;height:17px;flex:0 0 auto;color:var(--primary);}
.rlm .res-sum--empty span{flex:1;min-width:0;}
.rlm .res-sum--empty>i[data-lucide]:last-child{margin-left:auto;color:var(--primary-bright);}

/* R03 · 语音录入固定在工序页底部（高频操作）+ 双层 dock */
.dock--stack{flex-direction:column;gap:10px;align-items:stretch;}
.dock__row{display:flex;gap:10px;}
.dock--triple .cmd{flex:1 1 0;min-width:0;padding:0 8px;font-size:13px;}
.voice-dock{display:flex;align-items:center;gap:11px;width:100%;padding:10px 13px;cursor:pointer;text-align:left;
  border:1px solid var(--violet-wash);border-radius:var(--r);background:linear-gradient(180deg,var(--violet-wash),var(--surface));}
.voice-dock:active{transform:translateY(1px);}
.voice-dock__ic{flex:0 0 auto;width:36px;height:36px;border-radius:50%;background:var(--violet);color:#fff;
  display:flex;align-items:center;justify-content:center;box-shadow:0 8px 16px -8px var(--violet);}
.voice-dock__ic i{width:19px;height:19px;}
.voice-dock__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.voice-dock__tx strong{font-size:13.5px;color:var(--ink);font-weight:700;}
.voice-dock__tx em{font-style:normal;font-size:11.5px;color:var(--ink-2);line-height:1.4;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.voice-dock>i[data-lucide]{flex:0 0 auto;width:16px;height:16px;color:var(--violet);}

/* R04 · 一级下「新增二级」按钮（仅当该分组配置到二级及以上时出现） */
.rlm .grp__add{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px;
  border:1px dashed var(--primary-line);border-radius:var(--r-sm);background:var(--primary-wash);
  color:var(--primary);font-size:12.5px;font-weight:600;cursor:pointer;}
.rlm .grp__add i{width:15px;height:15px;}
.rlm .grp__add:active{background:var(--surface);}

/* R10 · 预览页说明 */
.rlm .preview-tip{display:flex;align-items:flex-start;gap:6px;margin-top:10px;
  font-size:11.5px;line-height:1.55;color:var(--ink-3);}
.rlm .preview-tip i[data-lucide]{width:13px;height:13px;flex:0 0 auto;margin-top:2px;}
.rlm .preview-tip b{color:var(--ink-2);font-weight:600;}

/* R12 · 消息中心 Tab 分类（循环审核 / 预警提醒 / 通知） */
.msg-tabs{display:flex;gap:4px;padding:4px;margin-bottom:14px;background:var(--sunken-2);border-radius:var(--r-sm);}
.msg-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:0 6px;
  border:0;border-radius:7px;background:transparent;color:var(--ink-2);font-size:12.5px;font-weight:600;
  white-space:nowrap;cursor:pointer;}
.msg-tab i[data-lucide]{width:15px;height:15px;flex:0 0 auto;}
.msg-tab.is-active{background:var(--surface);color:var(--primary);box-shadow:0 1px 2px rgba(18,37,54,.1);}
.msg-tab__badge{font-style:normal;min-width:16px;height:16px;padding:0 4px;border-radius:999px;
  background:var(--danger);color:#fff;font-family:var(--font-num);font-size:10.5px;font-weight:700;line-height:16px;text-align:center;}

/* R07 · 资源编辑弹层（班组/工种 + 设备，选择而非输入、多选、chip 汇总） */
.res-editor{display:flex;flex-direction:column;gap:14px;}
.res-editor__cur{display:flex;flex-direction:column;gap:12px;}
.res-editor__grp{display:flex;flex-direction:column;gap:7px;}
.res-editor__grp>label{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ink-2);}
.res-editor__grp>label i{width:14px;height:14px;color:var(--ink-3);}
.res-chips{display:flex;flex-wrap:wrap;gap:7px;}
.res-chips__empty{font-style:normal;font-size:12px;color:var(--ink-3);}
.res-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 5px 5px 9px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--rule-2);}
.res-chip>i{font-style:normal;padding:1px 5px;border-radius:4px;font-size:10px;font-weight:700;}
.res-chip--crew>i{color:var(--primary);background:var(--primary-wash);}
.res-chip--wt>i{color:var(--violet);background:var(--violet-wash);}
.res-chip--eq>i{color:var(--ink-2);background:var(--sunken-2);}
.res-chip button{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;
  border:0;background:transparent;color:var(--ink-3);cursor:pointer;}
.res-chip button i{width:13px;height:13px;}
.res-chip button:active{background:var(--sunken-2);color:var(--danger);}
.res-editor__add{display:flex;flex-direction:column;gap:10px;padding:11px;border:1px solid var(--rule);
  border-radius:var(--r);background:var(--sunken);}
.res-editor__tabs{display:flex;gap:4px;padding:3px;background:var(--sunken-2);border-radius:var(--r-sm);}
.res-tab{flex:1;min-height:32px;border:0;border-radius:7px;background:transparent;
  font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;}
.res-tab.is-active{background:var(--surface);color:var(--primary);box-shadow:0 1px 2px rgba(18,37,54,.1);}
.res-editor__row{display:flex;align-items:stretch;gap:8px;}
.res-editor__row .field{flex:1;min-width:0;flex-direction:column;align-items:stretch;gap:5px;min-height:0;
  padding:7px 10px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--surface);}
.res-editor__row .field--narrow{flex:0 0 84px;}
.res-editor__row .field__label{min-width:0;}
.res-editor__row .field__select,.res-editor__row .field__input{text-align:left;}
.res-add-btn{flex:0 0 auto;align-self:stretch;display:inline-flex;align-items:center;gap:5px;padding:0 14px;
  border:1px solid var(--primary);border-radius:var(--r-sm);background:var(--primary);color:#fff;
  font-size:13px;font-weight:600;cursor:pointer;}
.res-add-btn i{width:15px;height:15px;}
.res-add-btn:active{transform:translateY(1px);}

/* 只读字段（资源在卡片内编辑 / 固定所属分组） */
.field--ro{flex-direction:column;align-items:stretch;gap:6px;}
.field--ro .field__label{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:2px;}
.field__ro{font-size:13px;font-weight:600;color:var(--ink);line-height:1.5;
  padding:8px 11px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--sunken);}

/* R03 · 语音识别结果可编辑（在识别结果上改完再填入） */
.vp__input,.vp__select{width:100%;box-sizing:border-box;border:1px solid var(--rule);border-radius:var(--r-sm);
  background:var(--surface);padding:7px 9px;font-size:13.5px;font-weight:600;color:var(--ink);font-family:inherit;}
.vp__input:focus,.vp__select:focus{outline:none;border-color:var(--primary-line);}
.vp__input::placeholder{color:var(--ink-3);font-weight:500;}
.vp__row--2{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);gap:7px 8px;align-items:center;}
.voice__signal{display:flex;align-items:flex-start;gap:7px;align-self:stretch;margin-top:14px;padding:9px 11px;
  border-radius:var(--r-sm);background:var(--warn-wash);font-size:11.5px;line-height:1.55;color:var(--ink-2);text-align:left;}
.voice__signal i[data-lucide]{width:14px;height:14px;flex:0 0 auto;margin-top:1px;color:var(--warn);}

/* ================================================================
   工序写实 · 高保真重构（对齐 hifi-realism-v1）——作用域 .rlm / .rlm-fill
   仅换视图外壳；.rlm 前缀特指度更高，覆盖旧组件、不影响其它页面
   ================================================================ */
:root{ --c-excav:#2f6fb0; --c-muck:#df8a2c; --c-support:#6e63c6; --c-check:#0f9c94; --c-monitor:#7c8598; }

/* 填报屏：卡片浮在画布灰上，去掉分区分隔线 */
.screen-content.rlm-fill{background:var(--canvas);}
.rlm-fill .section{padding:13px 16px 0;}
.rlm-fill .section + .section{border-top:0;}

/* —— hero 循环卡 —— */
.rlm-fill .hero{padding:15px 16px 13px;border-radius:var(--r-lg);background:var(--surface);margin-bottom:11px;
  box-shadow:0 1px 2px rgba(20,40,66,.05),0 12px 30px -20px rgba(20,40,66,.28);}
.rlm-fill .hero__r1{display:flex;align-items:center;gap:8px;margin-bottom:9px;flex-wrap:wrap;}
.rlm-fill .hero__face{font-size:12.5px;color:var(--ink-3);font-weight:600;}
.rlm-fill .hero__match{margin-left:auto;display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;
  border:0;border-radius:999px;background:var(--primary-wash);color:var(--primary-deep);
  font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;}
.rlm-fill .hero__match i,.rlm-fill .hero__match svg{width:13px;height:13px;}
.rlm-fill .hero__match--manual{background:var(--violet-wash);color:var(--violet);}
.rlm-fill .hero__title{font-size:21px;font-weight:750;letter-spacing:-.02em;line-height:1.12;color:var(--ink);}
/* hero 可折叠：点标题整行展开 / 收起循环摘要，收起时腾出工序区空间 */
.rlm-fill .hero__titrow{display:flex;align-items:center;gap:10px;width:100%;padding:0;border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;}
.rlm-fill .hero__titrow .hero__title{flex:1;min-width:0;}
.rlm-fill .hero__foldchev{flex:0 0 auto;width:22px;height:22px;color:var(--ink-3);}
.rlm-fill .hero__titrow:active .hero__foldchev{color:var(--primary);}
.rlm-fill .hero--collapsed{padding-bottom:13px;}
.rlm-fill .hero__brief{margin-top:8px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px;line-height:1.3;}
.rlm-fill .hero__brief span{font-weight:600;color:var(--ink);}
.rlm-fill .hero__brief i{font-style:normal;color:var(--ink-3);}
.rlm-fill .hero__meta{margin-top:12px;padding-top:12px;border-top:1px solid var(--rule);
  display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;}
.rlm-fill .hero__m{display:flex;flex-direction:column;gap:3px;min-width:0;}
.rlm-fill .hero__m label{font-size:12.5px;color:var(--ink-3);}
.rlm-fill .hero__m b{font-size:15px;font-weight:650;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm-fill .hero__m b.sm{font-size:12.5px;font-family:var(--font-num,inherit);letter-spacing:-.01em;}
/* R09 · 施工日期 / 桩号 各占整行、完整显示不截断（进尺 / 围岩仍 2×2） */
.rlm-fill .hero__m--wide{grid-column:1 / -1;}
.rlm-fill .hero__m--wide b{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3;}
/* 顶部「基本信息 / 拓展补录」切换：坐落在标题与明细之间 */
.rlm-fill .hero__seg{margin-top:12px;}
.rlm-fill .hero__seg+.hero__meta{border-top:none;padding-top:0;margin-top:12px;}
.rlm-fill .hero .status-pill{margin:0;}
/* 审核 / 详情复用填报 hero：无匹配按钮时状态药丸右对齐 + 提交/审核落款行 */
.rlm-fill .hero--read .hero__r1 .status-pill{margin-left:auto;}
.rlm-fill .hero__by{margin-top:11px;padding-top:11px;border-top:1px solid var(--rule);
  display:flex;align-items:center;gap:6px;font-size:12.5px;line-height:1.45;color:var(--ink-3);}
.rlm-fill .hero__by i,.rlm-fill .hero__by svg{width:14px;height:14px;flex:0 0 auto;color:var(--ink-3);}
.rlm-fill .hero__by b{color:var(--ink-2);font-weight:650;}

/* —— 双入口（填报屏 + 台账复用）—— */
.rlm .pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.rlm .pair:has(.pcell:only-child){grid-template-columns:1fr;}
.rlm .pcell--full{width:100%;}
/* 台账筛选：日期 + 作业面 并成一行，压缩顶部占高 */
.rlm .led-filters{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:9px;margin-bottom:11px;}
.rlm .led-filters>.filter-button,.rlm .led-filters>.filter-select{width:100%;}
.rlm .pcell{display:flex;align-items:center;gap:10px;height:54px;padding:0 13px;border:0;
  border-radius:var(--r);background:var(--surface);cursor:pointer;text-align:left;font-family:inherit;
  box-shadow:0 1px 2px rgba(20,40,66,.05),0 12px 30px -20px rgba(20,40,66,.28);}
.rlm .pcell:active{transform:translateY(1px);}
.rlm .pcell__ic{width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;}
.rlm .pcell__ic i,.rlm .pcell__ic svg{width:17px;height:17px;}
.rlm .pcell__ic--brand{background:var(--primary-wash);color:var(--primary);}
.rlm .pcell__ic--violet{background:var(--violet-wash);color:var(--violet);}
.rlm .pcell__lb{font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* —— 分区标题 —— */
.rlm .sec{display:flex;align-items:baseline;gap:9px;padding:2px 2px 11px;}
.rlm .sec h3{font-size:15.5px;font-weight:720;color:var(--ink);}
.rlm .sec__meta{font-size:13px;color:var(--ink-3);font-weight:550;}
/* 分区标题右侧「?」——点开弹提示（提示一律收起） */
.rlm .sec__q{align-self:center;margin-left:auto;width:26px;height:26px;flex:0 0 26px;border-radius:50%;padding:0;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  border:1px solid var(--primary-line);background:var(--primary-wash);color:var(--primary-bright);}
.rlm .sec__q i,.rlm .sec__q svg{width:15px;height:15px;}
.rlm .sec__q:active{transform:translateY(1px);}

/* —— 分组卡 —— */
.rlm .tree{display:block;}
.rlm .grp{background:var(--surface);border:0;border-radius:var(--r-lg);margin-bottom:12px;overflow:hidden;
  box-shadow:0 1px 2px rgba(20,40,66,.05),0 12px 30px -20px rgba(20,40,66,.28);}
.rlm .grp__head{width:100%;display:flex;align-items:center;gap:11px;padding:15px 16px;border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;}
.rlm .grp__dot{width:11px;height:11px;flex:0 0 11px;border-radius:50%;}
.rlm .grp__nm{font-size:17px;font-weight:720;letter-spacing:-.01em;color:var(--ink);}
.rlm .grp__sum{margin-left:auto;font-size:16px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
.rlm .grp__chev{width:22px;height:22px;flex:0 0 22px;color:var(--ink-3);}
.rlm .grp__head .lvl{margin:0 0 0 9px;height:21px;padding:0 8px;border-radius:999px;background:var(--sunken-2);color:var(--ink-2);
  font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;}
.rlm .grp__head .src-tag{margin:0;}
.rlm .grp__body{display:block;padding:2px 16px 14px;border-top:1px solid var(--rule);}
/* 分组信息：收成一条可点入口，点开弹层看/改资源与备注 */
.rlm .ginfo{width:100%;display:flex;flex-direction:row;align-items:center;gap:9px;margin:12px 0 0;padding:10px 12px;border:0;border-radius:12px;background:var(--sunken);cursor:pointer;text-align:left;font-family:inherit;}
.rlm .ginfo__ic{width:28px;height:28px;flex:0 0 28px;border-radius:8px;background:var(--sunken-2);display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);}
.rlm .ginfo__ic i,.rlm .ginfo__ic svg{width:16px;height:16px;}
.rlm .ginfo__lb{flex:0 0 auto;white-space:nowrap;font-size:14px;font-weight:600;color:var(--ink);}
.rlm .ginfo__sum{flex:1 1 auto;min-width:0;margin-left:auto;text-align:right;font-size:12.5px;color:var(--ink-3);font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .ginfo__go{width:16px;height:16px;flex:0 0 16px;color:var(--ink-3);margin-left:4px;}

/* —— 竖向时间线 —— */
.rlm .tl{position:relative;padding-top:12px;}
.rlm .tl::before{content:"";position:absolute;left:5px;top:18px;bottom:16px;width:2px;background:var(--rule-2);border-radius:2px;}
.rlm .node{position:relative;padding:0 0 15px 26px;}
.rlm .node:last-child{padding-bottom:2px;}
.rlm .node__dot{position:absolute;left:0;top:4px;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 3px var(--surface);}
.rlm .node__top{width:100%;display:flex;align-items:center;gap:8px;border:0;background:transparent;padding:0;cursor:pointer;text-align:left;font-family:inherit;}
.rlm .node__nm{font-size:16.5px;font-weight:640;letter-spacing:-.01em;color:var(--ink);}
.rlm .node__time{margin-left:auto;font-size:15px;color:var(--ink-2);font-weight:560;font-variant-numeric:tabular-nums;white-space:nowrap;}
.rlm .node__go{width:16px;height:16px;flex:0 0 16px;color:var(--ink-3);margin-left:2px;}
.rlm .npill{height:21px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;white-space:nowrap;}
.rlm .npill--warn{background:var(--warn-wash);color:var(--warn);}
.rlm .npill--cancel{background:var(--sunken-2);color:var(--ink-3);}
.rlm .node.is-canceled .node__nm{text-decoration:line-through;color:var(--ink-3);}
.rlm .node__sub2{display:flex;align-items:center;gap:9px;margin-top:5px;}
.rlm .node__dur{font-size:13.5px;color:var(--ink-3);}
.rlm .node__dur b{color:var(--ink-2);font-weight:650;}
.rlm .node .var{height:20px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:700;
  display:inline-flex;align-items:center;font-variant-numeric:tabular-nums;}
.rlm .node .var.delta--over{background:var(--danger-wash);color:var(--danger);}
.rlm .node .var.delta--under{background:var(--live-wash);color:var(--live);}

/* —— 三级子工序 —— */
.rlm .node .subs{margin-top:10px;padding:2px 12px;background:var(--sunken);border-radius:13px;}
.rlm .node .sub{width:100%;display:flex;align-items:center;gap:9px;padding:9px 0;border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;}
.rlm .node .sub + .sub{border-top:1px solid var(--rule);}
.rlm .sub__dot{width:6px;height:6px;flex:0 0 6px;border-radius:50%;border:1.5px solid var(--ink-3);}
.rlm .sub__nm{flex:1 1 auto;min-width:0;font-size:14px;color:var(--ink-2);font-weight:500;}
.rlm .sub__time{font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;}
.rlm .sub__go{width:14px;height:14px;flex:0 0 14px;color:var(--ink-3);}
.rlm .subs__add{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 0;margin-top:2px;
  border:0;border-top:1px solid var(--rule);background:transparent;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;}
.rlm .subs__add i,.rlm .subs__add svg{width:15px;height:15px;}

/* —— 原因分析及改进措施：收成一条（图标 + 标题 + 状态 + 「?」），点开在编辑工序看全文 —— */
.rlm .node .reason{margin-top:10px;width:100%;display:flex;align-items:center;gap:9px;padding:9px 12px;border:0;border-radius:12px;cursor:pointer;text-align:left;font-family:inherit;}
.rlm .node .reason--done{background:var(--live-wash);}
.rlm .node .reason--warn{background:var(--warn-wash);}
.rlm .node .reason__ic{width:17px;height:17px;flex:0 0 17px;}
.rlm .node .reason--done .reason__ic{color:var(--live);}
.rlm .node .reason--warn .reason__ic{color:var(--warn);}
.rlm .node .reason__tx{font-size:13.5px;font-weight:600;}
.rlm .node .reason--done .reason__tx{color:var(--live);}
.rlm .node .reason--warn .reason__tx{color:var(--warn);}
.rlm .node .reason__rp{margin-left:auto;font-size:12.5px;font-weight:700;white-space:nowrap;}
.rlm .node .reason--done .reason__rp{color:var(--live);}
.rlm .node .reason--warn .reason__rp{color:var(--warn);}
.rlm .node .reason__q{width:20px;height:20px;flex:0 0 20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;}
.rlm .node .reason--done .reason__q{background:rgba(31,157,99,.18);color:var(--live);}
.rlm .node .reason--warn .reason__q{background:rgba(192,132,30,.18);color:var(--warn);}

/* —— 工序嵌套展开：点二级工序行展开/收起三级子工序 —— */
.rlm .node__chev{width:20px;height:20px;flex:0 0 20px;color:var(--ink-3);margin-left:2px;}
.rlm .node--exp .node__top{cursor:pointer;}
.rlm .node--exp.is-open > .node__top .node__chev{color:var(--primary);}
.rlm .node__body{padding-top:5px;}
/* 「工序信息」入口（展开区末行，进编辑 sheet）——沿用分组 .ginfo 观感 */
.rlm .pinfo{width:100%;display:flex;flex-direction:row;align-items:center;gap:9px;margin:12px 0 0;padding:10px 12px;border:0;border-radius:12px;background:var(--sunken);cursor:pointer;text-align:left;font-family:inherit;}
.rlm .pinfo__ic{width:28px;height:28px;flex:0 0 28px;border-radius:8px;background:var(--sunken-2);display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);}
.rlm .pinfo__ic i,.rlm .pinfo__ic svg{width:16px;height:16px;}
.rlm .pinfo__lb{flex:0 0 auto;white-space:nowrap;font-size:14px;font-weight:600;color:var(--ink);}
.rlm .pinfo__sum{flex:1 1 auto;min-width:0;margin-left:auto;text-align:right;font-size:12.5px;color:var(--ink-3);font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .pinfo__go{width:16px;height:16px;flex:0 0 16px;color:var(--ink-3);margin-left:4px;}

/* —— 附属信息入口 chip（会议§8 · 任意层级弹窗）—— */
.rlm .attach-entry{width:100%;display:flex;flex-direction:row;align-items:center;gap:8px;margin:8px 0 0;padding:9px 12px;border:1px dashed var(--rule);border-radius:12px;background:transparent;cursor:pointer;text-align:left;font-family:inherit;}
.rlm .attach-entry__ic{width:22px;height:22px;flex:0 0 22px;color:var(--ink-3);display:inline-flex;align-items:center;justify-content:center;}
.rlm .attach-entry__ic i,.rlm .attach-entry__ic svg{width:15px;height:15px;}
.rlm .attach-entry__lb{flex:0 0 auto;font-size:13px;font-weight:600;color:var(--ink-2);}
.rlm .attach-entry__n{flex:1 1 auto;text-align:right;font-size:12.5px;color:var(--ink-3);font-weight:550;}
.rlm .attach-entry__go{width:15px;height:15px;flex:0 0 15px;color:var(--ink-3);}
.rlm .attach-entry--ro{border-style:solid;background:var(--sunken);cursor:default;}
/* 附属信息弹窗内的字段行 */
.attach-list{display:flex;flex-direction:column;gap:9px;}
.attach-row{display:grid;grid-template-columns:1fr 1.2fr auto;gap:8px;align-items:center;}
.attach-row__del{width:34px;height:38px;flex:0 0 34px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;background:var(--sunken);color:var(--danger);cursor:pointer;}
.attach-row__del i,.attach-row__del svg{width:16px;height:16px;}
.attach-sugg{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px;}
.attach-add{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:11px;padding:11px;border:1px dashed var(--primary-line);border-radius:12px;background:var(--primary-wash);color:var(--primary);font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;}
.attach-add i,.attach-add svg{width:16px;height:16px;}
.attach-add:active{transform:translateY(1px);}
.attach-sugg__b{display:inline-flex;align-items:center;gap:3px;padding:6px 11px;border:1px solid var(--primary-line);border-radius:999px;background:var(--primary-wash);color:var(--primary);font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;}
.attach-sugg__b i,.attach-sugg__b svg{width:13px;height:13px;}

/* —— 重置演示数据（演示工具 · 中性弱化）—— */
.rlm .demo-reset{margin-left:auto;align-self:center;display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border:1px solid var(--rule);border-radius:999px;background:var(--sunken);color:var(--ink-3);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;}
.rlm .demo-reset i,.rlm .demo-reset svg{width:13px;height:13px;color:var(--ink-3);}
.rlm .demo-reset:active{transform:translateY(1px);}

/* —— 只读态（待审核 / 已确认 / 已取消）：行不可点、无箭头、不呈交互样式 —— */
.rlm .node__top--ro,.rlm .node .sub--ro,.rlm .ginfo--ro,.rlm .node .reason--ro{cursor:default;}

/* —— 新增工序（虚线） —— */
.rlm .grp__add{width:100%;display:flex;align-items:center;justify-content:center;gap:7px;margin-top:13px;padding:11px;
  border:1.5px dashed var(--rule-2);border-radius:13px;background:transparent;color:var(--primary);font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;}
.rlm .grp__add i,.rlm .grp__add svg{width:16px;height:16px;}
/* 树级「新增一级工序 / 分组」：比组内新增更实心，作为整棵树的追加入口 */
.rlm .tree-add{width:100%;display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;padding:12px;
  border:1.5px dashed var(--primary-line);border-radius:14px;background:var(--primary-wash);color:var(--primary);font-size:14px;font-weight:650;cursor:pointer;font-family:inherit;}
.rlm .tree-add:active{background:#dbe7f2;}
.rlm .tree-add i,.rlm .tree-add svg{width:17px;height:17px;}

/* —— 底部单行 dock —— */
.rlm-fill .dbar{flex:1;display:flex;align-items:center;gap:7px;}
.rlm-fill .rbtn{height:48px;border:0;border-radius:14px;font-family:inherit;font-size:15px;font-weight:650;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;white-space:nowrap;transition:transform .05s;}
.rlm-fill .rbtn:active{transform:translateY(1px);}
.rlm-fill .rbtn i,.rlm-fill .rbtn svg{width:18px;height:18px;flex:0 0 auto;}
.rlm-fill .rbtn--mic{width:48px;flex:0 0 48px;background:var(--violet-wash);color:var(--violet);}
.rlm-fill .rbtn--mic i,.rlm-fill .rbtn--mic svg{width:22px;height:22px;}
.rlm-fill .rbtn--ghost{flex:0 1 auto;min-width:0;padding:0 11px;background:var(--sunken-2);color:var(--ink-2);font-size:13.5px;white-space:nowrap;}
.rlm-fill .rbtn--primary{flex:1;background:var(--primary);color:#fff;box-shadow:0 12px 24px -12px rgba(21,93,146,.7);}
.rlm-fill .rbtn--voice{flex:1 0 auto;min-width:104px;background:var(--violet);color:#fff;box-shadow:0 12px 24px -12px rgba(91,83,166,.7);}
.rlm-fill .rbtn--voice i,.rlm-fill .rbtn--voice svg{width:20px;height:20px;}

/* ======= 弹层：语音填报（v11 orb）+ 可点字段行 + 页脚 spacer（全局，弹层不在 .rlm 作用域内） ======= */
.srcpill{margin-left:8px;padding:3px 9px;border-radius:999px;background:var(--violet-wash);color:var(--violet);font-size:11.5px;font-weight:700;vertical-align:middle;}
.sheet-foot-grow{flex:1;}
.field--tap{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--sunken);border:0;border-radius:13px;padding:12px 14px;cursor:pointer;text-align:left;font-family:inherit;}
.field--tap .field__label{margin:0;}
.field__tapval{display:inline-flex;align-items:center;gap:4px;font-size:14px;color:var(--ink-2);font-weight:550;text-align:right;}
.field__tapval i,.field__tapval svg{width:16px;height:16px;color:var(--ink-3);flex:0 0 auto;}
.proc-move{display:flex;gap:8px;}
.proc-move__b{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:38px;border:1px solid var(--rule);border-radius:11px;background:var(--surface);color:var(--ink-2);font-family:inherit;font-size:13.5px;font-weight:600;cursor:pointer;}
.proc-move__b i,.proc-move__b svg{width:15px;height:15px;flex:0 0 auto;}
.proc-move__b:active{background:var(--sunken);}

.vwarn{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:11px;background:var(--warn-wash);color:var(--warn);font-size:12.5px;font-weight:550;line-height:1.4;}
.vwarn i,.vwarn svg{width:16px;height:16px;flex:0 0 auto;}
.vrec{display:flex;align-items:center;gap:13px;margin-top:12px;padding:14px;border-radius:16px;background:var(--violet-wash);}
.vmeta{display:flex;flex-direction:column;gap:2px;min-width:0;}
.vmeta b{font-size:15px;font-weight:700;color:var(--violet);}
.vmeta span{font-size:12px;color:var(--ink-3);font-weight:500;}
.vre{margin-left:auto;display:inline-flex;align-items:center;gap:5px;padding:0 12px;height:34px;border:0;border-radius:10px;background:#fff;color:var(--violet);font-family:inherit;font-size:13px;font-weight:650;cursor:pointer;flex:0 0 auto;box-shadow:0 2px 6px -2px rgba(91,83,166,.4);}
.vre i,.vre svg{width:15px;height:15px;}
.vsp-hd{display:flex;align-items:center;gap:6px;margin:16px 0 10px;font-size:13px;font-weight:650;color:var(--ink-2);}
.vsp-hd i,.vsp-hd svg{width:16px;height:16px;color:var(--ink-3);}
.vfld{margin-bottom:11px;}
.vfld .vlab{display:block;margin-bottom:5px;font-size:12.5px;font-weight:600;color:var(--ink-3);}
.vtwo{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.vinp{position:relative;display:flex;align-items:center;}
.vinp input,.vinp textarea{width:100%;box-sizing:border-box;padding:0 38px 0 14px;height:46px;border:1px solid var(--rule);border-radius:13px;background:var(--sunken);font-family:inherit;font-size:15.5px;font-weight:580;color:var(--ink);}
.vinp--ta{align-items:stretch;}
.vinp--ta textarea{min-height:64px;padding:11px 38px 11px 14px;height:auto;line-height:1.5;font-size:14.5px;resize:vertical;}
.vinp input:focus,.vinp textarea:focus{outline:0;border-color:var(--violet);background:#fff;}
.vpen{position:absolute;right:12px;top:14px;width:16px;height:16px;color:var(--ink-3);pointer-events:none;}
.vinp--ta .vpen{top:12px;}

/* orb —— 多层动画光球 */
.orb{position:relative;width:60px;height:60px;flex:0 0 60px;}
.orb__ring{position:absolute;inset:-7px;border-radius:50%;background:radial-gradient(circle,rgba(91,83,166,.30),transparent 68%);animation:orbPulse 2.4s ease-in-out infinite;}
.orb__sphere{position:absolute;inset:0;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 34% 28%,#8a82ea,#5b53a6 52%,#12507f);box-shadow:0 8px 18px -6px rgba(21,93,146,.6),inset 0 -5px 11px rgba(0,0,0,.28);animation:orbBreath 3s ease-in-out infinite;}
.orb__b{position:absolute;border-radius:50%;mix-blend-mode:screen;filter:blur(3px);}
.orb__b1{width:38px;height:38px;left:5px;top:1px;background:radial-gradient(circle,rgba(138,130,234,.95),transparent 70%);animation:orbSpin 7s linear infinite;}
.orb__b2{width:30px;height:30px;right:1px;top:9px;background:radial-gradient(circle,rgba(31,157,163,.85),transparent 70%);animation:orbSpin 9s linear infinite reverse;}
.orb__b3{width:26px;height:26px;left:11px;bottom:1px;background:radial-gradient(circle,rgba(90,120,220,.85),transparent 70%);animation:orbSpin 11s linear infinite;}
.orb__hi{position:absolute;left:13px;top:9px;width:18px;height:11px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.9),transparent 70%);filter:blur(1px);}
@keyframes orbBreath{0%,100%{transform:scale(1);}50%{transform:scale(1.06);}}
@keyframes orbPulse{0%,100%{opacity:.55;transform:scale(1);}50%{opacity:1;transform:scale(1.12);}}
@keyframes orbSpin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.orb__ring,.orb__sphere,.orb__b{animation:none;}}

/* 语音三段式：未开始 / 录音中 / 识别完成 —— 视觉高度区分 */
.vstage{display:flex;flex-direction:column;align-items:center;text-align:center;gap:11px;margin-top:12px;padding:22px 14px;border-radius:18px;background:var(--violet-wash);}
.vstage--live{background:linear-gradient(180deg,#efe8fb,#e7f4ef);}
.vstage--done{background:var(--live-wash);}
.vmeta--c{align-items:center;text-align:center;}
.vmic{width:66px;height:66px;border-radius:50%;background:#fff;color:var(--violet);display:grid;place-items:center;box-shadow:0 6px 16px -6px rgba(91,83,166,.5);}
.vmic i,.vmic svg{width:28px;height:28px;}
.vlive{display:inline-flex;align-items:center;gap:7px;padding:5px 14px;border-radius:999px;background:#fdeceb;color:#d0463b;font-size:12.5px;font-weight:750;}
.vlive__dot{width:8px;height:8px;border-radius:50%;background:#e5463a;animation:livePulse 1s ease-in-out infinite;}
.vwave{display:flex;align-items:center;gap:3px;height:26px;}
.vwave span{display:block;width:3px;height:100%;border-radius:2px;background:var(--violet);transform:scaleY(.3);animation:vwave .95s ease-in-out infinite;}
.vdone-ic{width:58px;height:58px;border-radius:50%;background:var(--live);color:#fff;display:grid;place-items:center;box-shadow:0 6px 16px -6px rgba(31,150,110,.55);}
.vdone-ic i,.vdone-ic svg{width:30px;height:30px;stroke-width:2.6;}
.vstage--done .vre{margin-left:0;margin-top:2px;}
.vbig{width:100%;height:52px;margin-top:15px;border:0;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:inherit;font-size:16px;font-weight:700;color:#fff;cursor:pointer;}
.vbig i,.vbig svg{width:20px;height:20px;}
.vbig--start{background:linear-gradient(135deg,#6f66c8,#5b53a6);box-shadow:0 8px 18px -6px rgba(91,83,166,.6);}
.vbig--start:active{filter:brightness(.95);}
.vbig--stop{background:#e5463a;box-shadow:0 8px 18px -6px rgba(229,70,58,.55);}
.vbig--stop:active{filter:brightness(.95);}
.vexample{display:flex;align-items:flex-start;gap:7px;margin-top:14px;padding:11px 13px;border-radius:12px;background:var(--primary-wash);color:var(--blue-2);font-size:12px;line-height:1.55;font-weight:500;}
.vexample i,.vexample svg{width:15px;height:15px;flex:0 0 auto;color:var(--primary-bright);margin-top:1px;}
.srcpill--live{background:#fdeceb;color:#d0463b;}
.srcpill--idle{background:var(--rule-2);color:var(--ink-3);}
@keyframes livePulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.72);}}
@keyframes vwave{0%,100%{transform:scaleY(.3);}50%{transform:scaleY(1);}}
@media (prefers-reduced-motion:reduce){.vlive__dot,.vwave span{animation:none;}.vwave span{transform:scaleY(.7);}}
