/* ============================================================================
   隧道通 · 交互原型 — 视觉系统「测量读数 / 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:"Barlow SC","Barlow Semi Condensed",var(--font-sans);
  --font-mono:ui-monospace,"SF Mono","JetBrains Mono","Roboto Mono",Menlo,Consolas,monospace;

  /* 画布与纸面 */
  --canvas:#eef2f6;
  --surface:#ffffff;
  --sunken:#f1f5f8;
  --sunken-2:#e9eff4;

  /* 墨色层级 */
  --ink:#122536;
  --ink-2:#4d6376;
  --ink-3:#8496a6;
  --ink-inv:#e9f1f8;
  --ink-inv-2:#a8c6de;

  /* 主题蓝（保留） */
  --primary:#155d92;
  --primary-deep:#0c3f66;
  --primary-bright:#2f83c4;
  --primary-wash:#e9f1f8;
  --primary-line:#cbdeee;

  /* 蓝图带 */
  --blue-1:#0b3a5e;
  --blue-2:#164f79;

  /* 发丝线 */
  --rule:#dde5ec;
  --rule-2:#c7d4de;

  /* 语义色：脱节(高可视安全黄) / 超时(红) / 进行中(在线绿蓝) */
  --warn:#b3760c;
  --warn-wash:#fbeecf;
  --danger:#bf372e;
  --danger-wash:#f7e1dd;
  --live:#12855f;
  --live-wash:#dbeee6;

  --r-xs:5px; --r-sm:7px; --r:9px; --r-lg:12px;
  --tap:44px;
  --shadow-pop:0 18px 40px -20px rgba(9,32,52,.45);
  --shadow-sheet:0 -14px 40px -22px rgba(9,32,52,.4);
}

*,*::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;}

/* tabular DIN 读数 */
.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(120% 90% at 50% -10%, #d6e0e9 0%, #bfcbd6 55%, #aebcc8 100%);
}
.prototype-stage::before{
  /* 舞台底纹：极淡蓝图网格 */
  content:"";position:fixed;inset:0;pointer-events:none;opacity:.5;
  background-image:
    linear-gradient(rgba(31,74,110,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(31,74,110,.05) 1px,transparent 1px);
  background-size:26px 26px;
}
.device-frame{
  position:relative;z-index:1;
  width:430px;max-width:100%;
  height:min(908px,calc(100vh - 60px));
  background:var(--surface);
  border-radius:30px;
  box-shadow:0 40px 90px -34px rgba(9,32,52,.62),0 0 0 1px rgba(9,32,52,.06);
  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:42px;padding:0 14px;
  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;
}

/* ============================================================================
   记录统计三分栏（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;
  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;}
.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);}
.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--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);}

/* 匹配候选卡 */
.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{font-size:11px;font-weight:600;padding:2.5px 8px;border-radius:6px;line-height:1.35;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{font-family:var(--font-num);font-weight:700;font-size:11px;padding:2.5px 8px;border-radius:6px;}
.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{padding:12px 14px 14px;}
.rlm .pcard__edit{width:100%;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;}
.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;align-items:center;gap:7px;min-width:0;}
.rlm .led__sub .face{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rlm .led__sub .num{font-family:var(--font-num);color:var(--ink-2);font-weight:600;white-space:nowrap;flex:0 0 auto;}
.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__meta{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;}
.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 .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;}

/* 反向更新 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:6px;margin-left:auto;}
.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);}
