* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:"Microsoft YaHei","微软雅黑",sans-serif; font-size:14px; color:#333; background:#f0f2f5; }
a { text-decoration:none; color:var(--c-primary); }
/* ---------- 布局 ---------- */
.layout { display:flex; height:100vh; overflow:hidden; }
.sidebar { width:200px; background:var(--c-navy); color:#C7D2E8; flex-shrink:0; transition:width .2s; display:flex; flex-direction:column; height:100vh; overflow-y:auto; }
.sidebar::-webkit-scrollbar { width:0; }
.sidebar.collapsed { width:52px; }
.sidebar .brand { padding:16px 12px; font-size:16px; font-weight:bold; color:#fff; border-bottom:2px solid var(--c-gold); white-space:nowrap; overflow:hidden; }
.sidebar.collapsed .brand { font-size:0; }
.sidebar.collapsed .brand::first-letter { font-size:16px; }
.menu { flex:1; padding:8px 0; overflow-y:auto; min-height:0; }
.menu::-webkit-scrollbar { width:0; }
.menu a { display:flex; align-items:center; gap:8px; padding:10px 14px; color:#C7D2E8; white-space:nowrap; }
.menu a i { width:18px; height:18px; flex:none; }
.menu a:hover { background:#29395A; color:#fff; }
.menu a.active { background:var(--c-navy-2); color:#fff; border-left:3px solid var(--c-gold); }
.menu .badge { background:#ef4444; color:#fff; border-radius:9px; font-size:11px; padding:0 6px; margin-left:auto; }
.sidebar .foot { padding:12px; border-top:1px solid #29395A; font-size:12px; white-space:nowrap; overflow:hidden; }
/* 侧边栏截图反馈按钮：品牌金实底 + 深藏蓝字（v2.2.2b 修复白底白字对比不足） */
.fb-btn { font-size:12px; }
.fb-btn:hover { box-shadow:0 3px 10px rgba(0,0,0,.35); background:#FFD48F; }
.sidebar.collapsed .fb-btn .txt { display:none; }
.sidebar.collapsed .fb-btn { padding:8px 0; }
/* ---- 折叠侧边栏：收起只留图标 ---- */
.sidebar.collapsed .menu a { justify-content:center; gap:0; padding:12px 0; }
.sidebar.collapsed .menu a .txt,
.sidebar.collapsed .foot .txt { display:none; }
.sidebar.collapsed .menu .badge { display:none; }
.sidebar.collapsed .foot { padding:10px 0; text-align:center; }
.sidebar.collapsed .foot .who { display:inline-block; width:26px; height:26px; line-height:26px; border-radius:50%; background:#29395A; color:#fff; font-size:13px; }
.sidebar .foot .who { display:none; }
.sidebar.collapsed .foot div { line-height:26px; }
.main { flex:1; display:flex; flex-direction:column; min-width:0; height:100vh; overflow:hidden; }
.topbar { height:48px; background:#fff; border-bottom:1px solid var(--c-line); display:flex; align-items:center; padding:0 16px; gap:12px; }
.topbar .title { font-size:15px; font-weight:bold; color:var(--c-navy); border-left:3px solid var(--c-gold); padding-left:8px; }
.topbar .spacer { flex:1; }
.topbar .user { font-size:13px; color:var(--c-sub); }
.content { flex:1; padding:20px; overflow-y:auto; }
/* ---------- 卡片 ---------- */
.card { background:#fff; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.08); padding:16px; margin-bottom:16px; }
.card h3 { font-size:14px; color:var(--c-navy); margin-bottom:12px; border-left:4px solid var(--c-gold); padding-left:8px; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:12px; }
.stat { display:flex; gap:12px; }
.stat .item { flex:1; background:#fff; border-radius:8px; padding:14px; text-align:center; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.stat a.item { display:block; text-decoration:none; transition:box-shadow .15s, transform .15s; }
.stat a.item:hover { box-shadow:0 4px 12px rgba(30,58,95,.18); transform:translateY(-1px); }
.stat .num { font-size:24px; font-weight:bold; color:var(--c-navy); }
.stat .lab { font-size:12px; color:var(--c-sub); margin-top:4px; }
.stat .bar { height:4px; background:#e2e8f0; border-radius:2px; margin-top:8px; overflow:hidden; }
.stat .bar-fill { height:100%; width:0%; background:linear-gradient(90deg,var(--c-navy),var(--c-gold)); border-radius:2px; transition:width .9s cubic-bezier(.25,.8,.35,1); }
@media (prefers-reduced-motion: reduce){ .stat a.item, .stat .bar-fill { transition:none; } }
/* ---------- 表格 ---------- */
table.tbl { width:100%; border-collapse:collapse; background:#fff; font-size:13px; }
.tbl th { background:var(--c-navy); color:#fff; padding:8px 10px; text-align:left; font-weight:normal; white-space:nowrap; }
.tbl td { padding:8px 10px; border-bottom:1px solid #e5e7eb; vertical-align:top; }
.tbl tr:hover td { background:#f8fafc; }
/* ---------- 按钮/表单 ---------- */
.btn { display:inline-block; padding:6px 14px; border-radius:4px; border:1px solid var(--c-primary); background:var(--c-primary); color:#fff; cursor:pointer; font-size:13px; }
/* v1.5 全盘微交互统一：可点元素 hover 轻上浮 + 阴影加深（与统计卡一致） */
.btn, .dc-chip, .dc-tag, .dc-c1, .dc-c3, .cas-chip, .cas-tag, .tab, .sidebar .menu a, .msel-opt, .item, a.item, .tbl a { transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease, background-color .15s ease, opacity .15s ease; }
.btn:hover { opacity:.92; transform:translateY(-1px); box-shadow:0 3px 8px rgba(62,49,250,.25); }
.dc-chip:hover, .dc-tag:hover, .dc-c1:hover, .dc-c3:hover, .cas-chip:hover, .cas-tag:hover, .msel-opt:hover { transform:translateY(-1px); box-shadow:0 2px 6px rgba(30,58,95,.12); }
.tab:hover { color:var(--c-primary); }
.sidebar .menu a:hover { transform:translateY(-1px); background:rgba(255,255,255,.06); }
@media (prefers-reduced-motion: reduce){ .btn, .dc-chip, .dc-tag, .dc-c1, .dc-c3, .cas-chip, .cas-tag, .tab, .sidebar .menu a, .msel-opt, .item, .tbl a { transition:none; transform:none; } }
.btn.ghost { background:#fff; color:var(--c-primary); }
.btn.green { background:#059669; border-color:#059669; }
.btn.red { background:#dc2626; border-color:#dc2626; }
.btn.gray { background:#64748b; border-color:#64748b; }
.btn.orange { background:#f97316; border-color:#f97316; }
.btn.blue { background:var(--c-primary); border-color:var(--c-primary); }
.btn.sm { padding:3px 10px; font-size:12px; }
input[type=text], input[type=number], input[type=date], input[type=time], input[type=password], select, textarea {
  border:1px solid #cbd5e1; border-radius:4px; padding:6px 8px; font-size:13px; font-family:inherit; background:#fff;
}
input:focus, select:focus, textarea:focus { outline:2px solid rgba(62,49,250,.18); border-color:var(--c-primary); }
textarea { width:100%; resize:vertical; }
label.f { display:block; margin-bottom:8px; font-size:13px; color:#475569; }
label.f b { color:#1e293b; }
.filters { display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; padding:12px; background:#f8fafc; border-radius:6px; margin-bottom:14px; }
.filters .f { margin:0; }
/* ---------- 状态标签 ---------- */
.tag { display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; }
.tag-draft { background:#fef3c7; color:#92400e; }
.tag-submitted { background:rgba(62,49,250,.10); color:var(--c-primary); }
.tag-leader_approved { background:#e0e7ff; color:#3730a3; }
.tag-manager_approved { background:#c7d2fe; color:#312e81; }
.tag-archived { background:#d1fae5; color:#065f46; }
/* ---------- 登录页 ---------- */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#0F2145,#1B2A5E 48%,#3E31FA); }
.login-box { width:380px; background:#fff; border-radius:10px; padding:36px; box-shadow:0 10px 30px rgba(0,0,0,.3); }
.login-box h1 { font-size:22px; color:var(--c-navy); text-align:center; margin-bottom:10px; border-bottom:2px solid var(--c-gold); padding-bottom:10px; }
.login-box .sub { text-align:center; color:var(--c-sub); font-size:13px; margin-bottom:24px; }
.login-box label { display:block; margin-bottom:6px; font-size:13px; color:#475569; }
.login-box input { width:100%; margin-bottom:14px; padding:9px 10px; }
.login-box .btn { width:100%; padding:10px; font-size:14px; }
.msg { padding:10px 14px; border-radius:6px; margin-bottom:12px; font-size:13px; }
.msg.ok { background:#d1fae5; color:#065f46; border:1px solid #a7f3d0; }
.msg.error { background:#fee2e2; color:#991b1b; border:1px solid #fecaca; }
/* ---------- 日历 ---------- */
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:1px; background:#e5e7eb; border:1px solid #e5e7eb; }
.cal-head { background:var(--c-navy); color:#fff; text-align:center; padding:8px 0; font-size:13px; }
.cal-cell { background:#fff; min-height:84px; padding:6px; font-size:12px; }
.cal-cell.empty { background:#f8fafc; }
.cal-cell .d { font-weight:bold; color:#334155; }
.cal-cell .evt { background:rgba(62,49,250,.10); color:var(--c-primary); border-radius:4px; padding:2px 4px; margin-top:3px; font-size:11px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; cursor:pointer; }
.cal-cell .evt.archived { background:#d1fae5; color:#065f46; }
.cal-nav { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
/* ---------- 批示 ---------- */
.comment-box { background:#f8fafc; border:1px solid #e5e7eb; border-radius:6px; padding:10px 14px; margin-top:10px; font-size:13px; }
.comment-box .who { font-weight:bold; color:var(--c-primary); }
/* ---------- 图表 ---------- */
.chart-box { width:100%; height:340px; }
.p8-row { background:#fffbeb; border:1px dashed #f59e0b; border-radius:6px; padding:10px 12px; margin-top:6px; }
.p8-row input { margin-right:6px; }
.hidden { display:none; }
.dl-link { font-size:12px; color:var(--c-primary); margin-left:8px; }
.safe-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; margin-bottom:16px; }
.safe-grid .card h4 { font-size:13px; color:#1e293b; margin-bottom:8px; }
.safe-grid .bar { background:#e2e8f0; border-radius:4px; height:6px; margin-top:4px; }
.safe-grid .bar i { display:block; height:6px; background:var(--c-primary); border-radius:4px; }
.sec-row { border:1px solid #e5e7eb; border-radius:6px; padding:10px; margin-bottom:10px; background:#fafbfc; }
.sec-row .sec-head { display:flex; justify-content:space-between; margin-bottom:6px; }
/* v2.2（P1-3）：结案 7 区块手风琴 + 分区块预览导航 */
.cl-nav { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:8px 12px; background:#fff;
  border:1px solid #e2e8f0; border-radius:8px; box-shadow:0 2px 8px rgba(15,23,42,.08); margin-bottom:12px; }
.cl-nav-item { padding:4px 10px; border-radius:999px; font-size:12px; cursor:pointer; border:1px solid #e2e8f0;
  background:#f8fafc; color:#475569; user-select:none; }
.cl-nav-item:hover { border-color:var(--c-primary); }
.cl-nav-item.ok { background:#dcfce7; border-color:#86efac; color:#166534; }
.cl-nav-item.miss { background:#fee2e2; border-color:#fca5a5; color:#b91c1c; }
.cl-sec { position:relative; }
.cl-sec .cl-head { display:flex; align-items:center; gap:8px; cursor:pointer; user-select:none;
  padding:12px 16px; margin:-1px; border-radius:7px; }
.cl-sec .cl-head:hover { background:#f8fafc; }
.cl-sec.open .cl-head { background:#f1f5f9; box-shadow:inset 3px 0 0 var(--c-gold); border-radius:7px 0 0 7px; }
.cl-sec .cl-head .dot { width:8px; height:8px; border-radius:50%; background:#e2e8f0; flex:none; }
.cl-sec .cl-head.ok .dot { background:#16a34a; }
.cl-sec .cl-head.miss .dot { background:#dc2626; }
.cl-sec .cl-head .arr { margin-left:auto; color:#94a3b8; transition:transform .15s; }
.cl-sec.open .cl-head .arr { transform:rotate(90deg); }
.cl-sec .cl-body { display:none; padding:0 16px 16px; }
.cl-sec.open .cl-body { display:block; }
.cl-sec .cl-body > *:first-child { margin-top:12px; }
/* v2.2（G3）：表格横向滚动兜底——窄屏/长表格不挤破布局 */
.tbl-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.tbl-scroll > .tbl { min-width:900px; }
/* v2.2（R1）：日报行组件类化——sum-row 等 7 类（原内联样式/JS 内联收拢，min-width 此前在 <b> 上不生效） */
.cfg-bar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:10px 0; padding:10px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
.sum-picker { background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:10px; }
.sum-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sum-row .sum-label { display:inline-block; min-width:150px; }
.ev-row .sum-label { flex:none; }
.sum-row .sum-v { display:inline-flex; gap:6px; align-items:center; }
.sum-row .sum-v input[type=text] { padding:5px 8px; border:1px solid #d1d5db; border-radius:6px; }
.sum-unit-in { width:56px; }
.p8-box { display:inline-flex; align-items:center; gap:4px; flex-wrap:wrap; }
.p8-fields { display:inline-flex; gap:6px; align-items:center; }
.p8-fields input { padding:5px 8px; border:1px solid #d1d5db; border-radius:6px; }
.kv { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px; }
.kv .f { margin:0; }
.help-sec h4 { color:var(--c-primary); margin:16px 0 8px; }
.help-sec p, .help-sec li { font-size:13px; line-height:1.8; color:#475569; }
.help-sec ul { padding-left:20px; }
.pwd-form { max-width:360px; }

/* ===== 可检索下拉组件 ===== */
.cbx { position: relative; display: inline-block; }
.cbx input { width: 100%; box-sizing: border-box; }
.cbx-panel { position: absolute; z-index: 60; top: 100%; left: 0; min-width: 100%;
  background: #fff; border: 1px solid #cbd5e1; border-radius: 6px; box-shadow: 0 6px 18px rgba(15,23,42,.12);
  max-height: 230px; overflow: auto; margin-top: 2px; }
.cbx-item { padding: 7px 12px; cursor: pointer; font-size: 13px; color: #1e293b; white-space: nowrap; }
.cbx-item:hover { background: #eef4ff; }
.cbx-item.sel { background: var(--c-primary); color: #fff; }
.cbx-empty { padding: 10px 12px; font-size: 12px; color: #94a3b8; }

/* ===== 展会多选检索 ===== */
.exm-tags { display: inline-flex; flex-wrap: wrap; gap: 6px; vertical-align: middle; }
.exm-tag { background: var(--c-primary); color: #fff; font-size: 12px; padding: 3px 10px; border-radius: 12px; }
.exm-tag b { cursor: pointer; margin-left: 4px; color: #fca5a5; }
.exm-box { position: relative; display: inline-block; vertical-align: middle; }
.exm-input { min-width: 320px; padding: 7px 10px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 13px; }
.exm-panel { position: absolute; z-index: 60; top: 100%; left: 0; width: 100%; background: #fff;
  border: 1px solid #cbd5e1; border-radius: 6px; box-shadow: 0 6px 18px rgba(15,23,42,.12);
  max-height: 240px; overflow: auto; margin-top: 2px; }
.exm-clear { display:inline-block; margin-left:6px; cursor:pointer; color:#94a3b8; font-size:16px;
  line-height:1; user-select:none; vertical-align:middle; }
.exm-clear:hover { color:#dc2626; }
.exm-prev { color:#94a3b8; font-size:11px; margin-left:8px; }

/* ===== 数据看板数据分类 option groups 下拉（v1.7）：分组标题 + 缩进选项 ===== */
.dc-c1 { display:block; padding:7px 12px; border-radius:6px; cursor:pointer; font-size:13px; color:#334155;
  border-bottom:1px solid #f1f5f9; }
.dc-c1:hover { background:#f1f5f9; }
.dc-c1.on { background:var(--c-primary); color:#fff; font-weight:600; }
.dc-c1.on .dc-hint { color:rgba(62,49,250,.18); }
.dc-hint { float:right; font-size:11px; color:#94a3b8; font-weight:normal; }
.dc-c3 { display:block; padding:6px 12px 6px 30px; border-radius:6px; cursor:pointer; font-size:13px; color:#475569; }
.dc-c3:hover { background:#eef4ff; }
.dc-c3.on { background:#eef4ff; color:var(--c-primary); font-weight:600; }

/* ===== 历史日报按展会手风琴 ===== */
.acc-row { border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
.acc-head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: #f8fafc; cursor: pointer; }
.acc-head:hover { background: #f1f5f9; }
.acc-arrow { transition: transform .2s; font-size: 12px; color: #64748b; }
.acc-row.open .acc-arrow { transform: rotate(90deg); }
.acc-body { display: none; padding: 0 14px 12px; }
.acc-row.open .acc-body { display: block; }
.acc-title { font-weight: 600; font-size: 14px; color: #1e293b; }
.acc-period { font-size: 12px; color: #64748b; }
.acc-count { font-size: 12px; color: var(--c-primary); background: #eef4ff; padding: 2px 10px; border-radius: 10px; }

/* ---- 日期范围选择面板（daterange.js） ---- */
.dr-mask { display:none; position:fixed; inset:0; background:rgba(15,23,42,.45); z-index:1000; align-items:center; justify-content:center; }
.dr-panel { background:#fff; border-radius:10px; box-shadow:0 12px 40px rgba(0,0,0,.25); width:340px; padding:14px 16px 12px; }
.dr-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.dr-title { font-weight:bold; color:#1e293b; }
.dr-nav { border:1px solid #e2e8f0; background:#fff; border-radius:6px; width:28px; height:28px; cursor:pointer; color:#475569; }
.dr-nav:hover { background:#f1f5f9; }
.dr-tip { font-size:12px; color:var(--c-primary); background:rgba(62,49,250,.06); border-radius:6px; padding:4px 8px; margin-bottom:8px; }
.dr-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.dr-wd { text-align:center; font-size:12px; color:#94a3b8; padding:4px 0; }
.dr-empty { padding:4px 0; }
.dr-day { text-align:center; padding:6px 0; border-radius:6px; cursor:pointer; color:#334155; font-size:13px; }
.dr-day:hover { background:#e2e8f0; }
.dr-today { font-weight:bold; color:var(--c-primary); }
.dr-start { background:var(--c-primary); color:#fff !important; border-radius:6px 0 0 6px; }
.dr-end { background:var(--c-primary); color:#fff !important; border-radius:0 6px 6px 0; }
.dr-start.dr-end { border-radius:6px; }
.dr-in { background:rgba(62,49,250,.10); }
.dr-quick { display:flex; gap:6px; margin:10px 0 8px; }
.dr-q { flex:1; border:1px solid #e2e8f0; background:#fff; border-radius:6px; padding:5px 0; font-size:12px; cursor:pointer; color:#475569; }
.dr-q:hover { background:#f1f5f9; color:var(--c-primary); }
.dr-actions { display:flex; align-items:center; gap:8px; }

/* ---- 档期表月份折叠 ---- */
.sched-month .sched-head { cursor:pointer; user-select:none; display:flex; align-items:center; gap:6px; }
.sched-month .sched-head:hover { color:var(--c-primary); }
.sched-month .sched-body { display:none; }
.sched-month.open .sched-body { display:block; }

/* ---- 日报表单：数据分类横向展开（chips + tags，不悬空） ---- */
.cas-chip { display:inline-block; padding:4px 14px; border:1px solid #cbd5e1; border-radius:14px;
  font-size:13px; color:#334155; cursor:pointer; background:#fff; user-select:none; }
.cas-chip:hover { border-color:var(--c-primary); color:var(--c-primary); }
.cas-chip.on { background:var(--c-primary); color:#fff; border-color:var(--c-primary); }
.cas-tag { display:inline-flex; align-items:center; gap:5px; font-size:13px; color:#334155;
  cursor:pointer; background:#f8fafc; border:1px solid #e2e8f0; border-radius:6px; padding:4px 10px; user-select:none; }
.cas-tag:hover { border-color:var(--c-primary); }
.cas-tag input { accent-color:var(--c-primary); }
.cas-tag i { font-style:normal; }

/* ---- 看板数据分类 Tag Picker ---- */
.dc-chip { display:inline-block; padding:4px 14px; border:1px solid #cbd5e1; border-radius:14px;
  font-size:13px; color:#334155; cursor:pointer; background:#fff; user-select:none; }
.dc-chip:hover { border-color:var(--c-primary); }
.dc-chip.on { background:var(--c-primary); color:#fff; border-color:var(--c-primary); }
.dc-tag { display:inline-block; padding:3px 12px; border:1px solid #e2e8f0; border-radius:6px;
  font-size:12px; color:#475569; cursor:pointer; background:#f8fafc; user-select:none; }
.dc-tag:hover { border-color:var(--c-primary); }
.dc-tag.on { background:rgba(62,49,250,.10); color:var(--c-primary); border-color:var(--c-primary); font-weight:600; }

/* ===== v2.0 UI 质感组件（2026-08-30） ===== */
:root { --c-primary:#3E31FA; --c-primary-deep:#2115AB; --c-gold:#F2BE4E; --c-gold-deep:#947138; --c-blue:#3E31FA; --c-navy:#0F2145; --c-navy-2:#29395A; --c-ink:#0F2145; --c-sub:#5E6A83;
  --c-line:#e1e5ea; --c-bg:#f3f5f8; --c-ok:#3D923D; --c-warn:#EAAC30; --c-bad:#CA024F;
  --radius:8px; --shadow:0 1px 3px rgba(0,0,0,.08); }
/* 分段控件 Segmented Control */
.seg { display:inline-flex; background:#e9edf2; border-radius:8px; padding:3px; gap:2px; flex-wrap:wrap; }
.seg a, .seg button { border:none; background:transparent; padding:6px 18px; border-radius:6px;
  font-size:13px; color:#475569; cursor:pointer; white-space:nowrap; text-decoration:none; }
.seg a:hover, .seg button:hover { color:#1e293b; }
.seg a.on, .seg button.on { background:#fff; color:var(--c-primary); font-weight:600; box-shadow:0 1px 3px rgba(15,23,42,.15); }
/* Chevron Stepper */
.stepper { display:flex; align-items:center; gap:2px; flex-wrap:wrap; }
.stepper .step { display:flex; align-items:center; gap:6px; padding:6px 12px 6px 8px; font-size:13px;
  color:#94a3b8; cursor:pointer; border-radius:6px; user-select:none; }
.stepper .step:hover { background:#f1f5f9; }
.stepper .step .dot { width:22px; height:22px; border-radius:50%; background:#e2e8f0; color:#64748b;
  display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:600; flex:none; }
.stepper .step.done .dot { background:#059669; color:#fff; }
.stepper .step.on { color:#1e293b; font-weight:600; }
.stepper .step.on .dot { background:var(--c-primary); color:#fff; }
.stepper .arrow { color:#cbd5e1; font-size:12px; }
/* 空状态 Empty State */
.empty { text-align:center; padding:44px 16px; color:#94a3b8; }
.empty i { width:40px; height:40px; opacity:.35; margin-bottom:8px; }
.empty p { font-size:13px; margin-top:4px; }
.empty .btn { margin-top:12px; }
/* 骨架屏 */
.skel { border-radius:6px; background:linear-gradient(90deg,#eef1f5 25%,#f8fafc 50%,#eef1f5 75%);
  background-size:200% 100%; animation:skel 1.4s infinite; }
@keyframes skel { 0%{background-position:200% 0} 100%{background-position:-200% 0} }
/* 卡片等高 */
.grid-eq { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; }
.grid-eq .card { display:flex; flex-direction:column; margin:0; }
.grid-eq .card .grow { flex:1; }
/* 弹窗限高 */
.modal-body { max-height:70vh; overflow-y:auto; }
/* tt 编辑页 */
.tt-kv { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px 18px; }
.mem-hint { margin-top:4px; font-size:12px; color:var(--c-primary); line-height:1.6; }
.mem-hint b { color:var(--c-primary); }
/* v2.1.1 时间表按场馆模板格式（场地/面积、布展/展期/撤馆行 + 日程明细表格 + 底部参观人数/制表人） */
.tt-head { border:1px solid #e2e8f0; border-radius:8px; padding:10px 12px; margin-bottom:12px; background:#f8fafc; }
.tt-line { display:flex; align-items:center; gap:8px; margin:5px 0; flex-wrap:wrap; }
/* v2.2（T3）：tt-line 输入对齐——默认不拉伸（标签起止对齐），仅 .grow 输入框占满剩余 */
.tt-line input { flex:none; min-width:160px; }
.tt-line input.grow { flex:1; min-width:140px; }
.tt-lb { font-size:13px; color:#1e293b; white-space:nowrap; font-weight:bold; min-width:56px; }
.tt-tbl td { padding:6px 8px; vertical-align:middle; }
.tt-tbl tr.it-row { display:table-row; }
.tt-tbl input { width:100%; box-sizing:border-box; }
.tt-stage-td { width:86px; }
.tt-stage-td select { width:100%; box-sizing:border-box; }
.tt-foot { display:flex; align-items:center; gap:10px; margin-top:10px; padding-top:10px; border-top:1px dashed #e2e8f0; flex-wrap:wrap; }
.tt-author { color:var(--c-primary); }
/* 兼容旧 div 版日程行 */
.it-row { display:grid; grid-template-columns:110px minmax(160px,1.6fr) 120px 110px 1fr 30px; gap:6px; align-items:center; }
.dc-row { display:grid; grid-template-columns:86px 1.3fr 1fr 118px 118px 104px 30px; gap:6px; align-items:center; }
@media (max-width:1080px){ .it-row, .dc-row { grid-template-columns:1fr 1fr; } }
.card-title { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; flex-wrap:wrap; }
.card-title h3 { margin:0; }
.kbd-tip { font-size:12px; color:#94a3b8; }
.tt-stage-chip { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; border-radius:12px;
  font-size:12px; background:#eef4ff; color:var(--c-primary); }
.tt-status-draft { color:#92400e; background:#fef3c7; }
.tt-status-ok { color:#065f46; background:#d1fae5; }
/* v2.2（T2）：状态标签类化——全站「进行中/待处理」黄色统一（替换 17 处内联） */
.tt-status-sub { color:#92400e; background:#fef3c7; }

/* v2.1 档期表悬空下拉（新建▾ / 文件列表▾） */
.dd-wrap { position:relative; display:inline-block; }
.dd-menu { display:none; position:absolute; right:0; top:calc(100% + 6px); background:#fff; border:1px solid #e2e8f0; border-radius:8px; box-shadow:0 8px 24px rgba(15,23,42,.18); min-width:150px; z-index:60; padding:6px; }
.dd-wrap.open .dd-menu { display:block; }
.dd-item { display:block; padding:7px 12px; border-radius:6px; font-size:13px; color:#334155; cursor:pointer; white-space:nowrap; text-decoration:none; }
.dd-item:hover { background:#f1f5f9; }
.dd-item a { color:inherit; text-decoration:none; display:block; }
.dd-item.ok { color:#059669; font-weight:600; }
.dd-item.ok:hover { background:#ecfdf5; }
.dd-item.off { color:#94a3b8; cursor:default; }
.dd-item.off:hover { background:transparent; }
.dd-sep { border-top:1px solid #e2e8f0; margin:4px 0; }
.dd-item .hint { color:#94a3b8; font-weight:400; font-size:12px; }

/* v2.1.1 通讯录分组表格（沿用场馆通讯录表格样式） */
.dir-tbl td { padding:4px 6px; vertical-align:middle; }
.dir-tbl input { width:100%; padding:5px 8px; border:1px solid #d1d5db; border-radius:5px; font-size:13px; box-sizing:border-box; }
.dir-grp td { background:#eef2f7; font-weight:600; color:#1e293b; padding:6px 10px; border-top:2px solid #cbd5e1; font-size:13px; }
.dir-grp.sniec td { background:#e0e7ff; border-top:2px solid #a5b4fc; }
.dir-sub td { background:#f8fafc; padding:5px 10px; border-top:1px dashed #cbd5e1; font-size:13px; }
.grp-add { float:right; }
.dir-ext-row td { padding:2px 10px 0; font-size:12px; }
.dir-mem-row td { padding:0 10px 6px; }
.dir-tbl input:disabled { background:#f1f5f9; color:#64748b; }
/* v2.1.1 时间表：馆号多选 + 日期/时间选择器列 */
.hall-cb { display:inline-flex; align-items:center; gap:3px; margin:2px 6px 2px 0; font-size:12px; color:#334155; }
.hall-cb input { margin:0; }
.tt-sep { color:#94a3b8; margin:0 3px; }
.tt-dt { white-space:nowrap; }
.tt-dt input[type=date], .tt-dt input[type=time] { width:110px; padding:4px 6px; border:1px solid #d1d5db; border-radius:5px; font-size:12px; box-sizing:border-box; }
.tt-line input[type=date] { width:140px; padding:5px 8px; border:1px solid #d1d5db; border-radius:5px; font-size:13px; }
.tt-tbl input:disabled { background:#f1f5f9; color:#64748b; }

/* ===== v2.2（N5/N6/N8）：馆号多选 chips（halls_ms.js）+ 通讯录 autocomplete + 馆号工作范围 ===== */
/* N5：馆号多选 chips（映射 --c-primary/--c-line token；empty/filled/open 三态） */
.hms { position:relative; display:inline-block; vertical-align:middle; }
.tt-line .hms { flex:1; min-width:260px; }
.hms-box { display:flex; flex-wrap:wrap; align-items:center; gap:4px; min-height:30px; padding:3px 28px 3px 6px;
  border:1px solid #d1d5db; border-radius:6px; background:#fff; cursor:pointer; font-size:12px; color:#334155;
  position:relative; transition:border-color .15s; }
.hms-box:hover { border-color: var(--c-blue); }
.hms-dis .hms-box { background:#f1f5f9; color:#64748b; cursor:default; }
.hms-ph { color:#94a3b8; }
.hms-chip { display:inline-flex; align-items:center; gap:4px; background:var(--c-primary); color:#fff;
  border-radius:5px; padding:2px 7px; font-size:12px; line-height:1.5; }
.hms-chip.hms-cst { background:#f59e0b; }
.hms-x { font-style:normal; cursor:pointer; opacity:.75; font-size:10px; }
.hms-x:hover { opacity:1; }
.hms-caret { position:absolute; right:8px; top:50%; transform:translateY(-50%); color:#94a3b8; font-size:11px; pointer-events:none; }
.hms-panel { position:absolute; z-index:60; top:calc(100% + 4px); left:0; min-width:300px; max-width:70vw;
  background:#fff; border:1px solid var(--c-line); border-radius:8px; box-shadow:0 8px 24px rgba(15,23,42,.18); padding:8px; }
.hms-opts { display:grid; grid-template-columns:repeat(5, 1fr); gap:4px; max-height:180px; overflow-y:auto; }
.hms-opt { text-align:center; padding:4px 0; border:1px solid var(--c-line); border-radius:5px; cursor:pointer;
  font-size:12px; color:#334155; transition:all .12s; }
.hms-opt:hover { border-color: var(--c-blue); color: var(--c-primary); background:#eef4ff; }
.hms-cr { display:flex; align-items:center; gap:6px; margin-top:8px; padding-top:8px; border-top:1px dashed var(--c-line); }
.hms-cr-add { font-size:12px; color:var(--c-blue); cursor:pointer; white-space:nowrap; }
.hms-cr-add:hover { text-decoration:underline; }
.hms-cr-inp { flex:1; padding:4px 8px; border:1px solid #d1d5db; border-radius:5px; font-size:12px; box-sizing:border-box; }
/* N8：通讯录行内紧凑模式 */
.hms-mini { width:100%; margin-top:3px; }
.hms-mini .hms-box { min-height:22px; padding:1px 20px 1px 3px; font-size:11px; border-radius:5px; }
.hms-mini .hms-chip { padding:0 6px; font-size:11px; line-height:18px; border-radius:4px; }
.hms-mini .hms-caret { right:6px; font-size:9px; }
.hms-mini .hms-ph { font-size:11px; }
.hms-mini .hms-panel { top:calc(100% + 2px); }
/* N6：通讯录 autocomplete（与 combobox.js 同族：下拉面板+键盘导航，核心仍为文本框可自定义输入） */
.ac-wrap { position:relative; }
.ac-panel { position:absolute; z-index:70; top:calc(100% + 2px); left:0; width:380px; max-width:80vw;
  background:#fff; border:1px solid var(--c-line); border-radius:8px; box-shadow:0 8px 24px rgba(15,23,42,.18);
  padding:5px; display:none; }
.ac-item { display:flex; align-items:center; gap:8px; padding:6px 9px; border-radius:6px; cursor:pointer;
  font-size:13px; color:#1e293b; }
.ac-item:hover { background:#eef4ff; }
.ac-item.sel { background:var(--c-primary); color:#fff; }
.ac-item.sel .ac-sub { color:#cbd5e1; }
.ac-item.sel .ac-tag { border-color:#64748b; color:#e2e8f0; background:#334155; }
.ac-sub { font-size:12px; color:#64748b; }
.ac-tag { flex:none; font-size:11px; color:var(--c-blue); border:1px solid rgba(62,49,250,.18); border-radius:4px;
  padding:0 5px; background:rgba(62,49,250,.06); white-space:nowrap; }
.ac-empty { padding:8px 10px; font-size:12px; color:#94a3b8; }

/* v2.3（对齐 Excel）：阶段列/单位列同值合并显示——仅段首行显示，hover 展开可编辑 */
.tt-tbl td.tt-stage-td.merged select{ display:none; }
.tt-tbl td.tt-stage-td.merged.ed:hover select{ display:inline-block; }
.dir-tbl td.dir-org-td.merged input, .dir-tbl td.dir-org-td.merged .hms{ display:none; }
.dir-tbl td.dir-org-td.merged.ed:hover input{ display:inline-block; }
