/* ===== Design System — V5 全息深蓝（唯一主题，:root 变量即全局默认值） ===== */
:root {
  /* ===== V5 全息深蓝 · 唯一主题（原 变量块升为全局默认） ===== */
  /* 背景 & 全息玻璃 */
  --bg-body:      #07111F;
  --bg-card:      rgba(15, 33, 58, 0.72);
  --bg-card-solid: #0C1B30;
  --bg-card-hover: rgba(22, 46, 78, 0.80);
  --bg-input:     rgba(10, 25, 44, 0.8);
  --bg-hover:     rgba(34,211,238,0.06);
  /* 分隔 & 边框（青霓虹辉光） */
  --border-subtle: rgba(34,211,238,0.08);
  --border-card:   rgba(34,211,238,0.14);
  --border-input:  rgba(34,211,238,0.20);
  --border-active: rgba(34,211,238,0.65);
  --border-glow:   rgba(34,211,238,0.25);
  /* 文本 */
  --txt-primary:   #E6F2FF;
  --txt-secondary: #8BA9C9;
  --txt-tertiary:  #567392;
  /* 弹窗/明细通用文本（供 .detail-line / .mini-table 等使用，适配深色底） */
  --txt-body:      #D8E7F7;
  --txt-head:      #E6F2FF;
  --line:          rgba(34,211,238,0.14);
  --bg-subtle:     rgba(10,25,44,0.6);
  /* 品牌色（青色霓虹主 + 翠绿辅） */
  --brand:        #22D3EE;           /* 青霓虹 */
  --brand2:       #10B981;           /* 翠绿辅 */
  --brand-soft:   rgba(34,211,238,0.12);
  --brand-dim:    rgba(34,211,238,0.08);
  --brand-glow:   0 0 24px rgba(34,211,238,0.45), 0 6px 24px rgba(34,211,238,0.18);
  --accent:       #F8C34B;           /* 暖金提醒 */
  --accent-dim:   rgba(248,195,75,0.14);
  --success:      #10B981;
  --success-dim:  rgba(16,185,129,0.14);
  --warning:      #F59E0B;
  --warning-dim:  rgba(245,158,11,0.14);
  --danger:       #EF4444;
  --danger-dim:   rgba(239,68,68,0.15);
  /* 仪表盘卡片进度条专用色（精品调配） */
  --gc-done: #5AB8A0; --gc-done-dim: rgba(90,184,160,0.18);
  --gc-undone: #E0A95A; --gc-undone-dim: rgba(224,169,90,0.18);
  --gc-overdue: #C07A78; --gc-overdue-dim: rgba(192,122,120,0.18);
  --gc-pending: #8A7BD8; --gc-pending-dim: rgba(138,123,216,0.18);
  --moss:         #22D3EE;
  /* 侧边栏 */
  --sider-bg:     linear-gradient(180deg, #06101E 0%, #050C17 100%);
  --sider-border: rgba(34,211,238,0.12);
  --sider-text:   rgba(176,205,235,0.55);
  --sider-active-bg: linear-gradient(90deg, rgba(34,211,238,0.16), rgba(34,211,238,0.02));
  /* 圆角 */
  --radius-sm: 6px;
  --radius:    12px;
  --radius-lg: 18px;
  /* 阴影 / 过渡 */
  --shadow-card:   0 1px 2px rgba(0,0,0,0.25), 0 10px 36px rgba(0,0,0,0.45), 0 0 0 1px rgba(34,211,238,0.14) inset;
  --shadow-modal:  0 30px 80px rgba(0,0,0,0.75), 0 0 0 1px rgba(34,211,238,0.25);
  --shadow-hover:  0 14px 48px rgba(0,0,0,0.55), 0 0 24px rgba(34,211,238,0.12);
  --donut-inner-shadow: rgba(0,0,0,0.4);
  --transition: 0.2s cubic-bezier(0.4,0,0.2,1);   /* 唯一未被 V5 覆盖的旧 :root 键，保留 */
  --font-sans: -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  --font-serif: "Source Han Serif SC","Noto Serif CJK SC","Songti SC",Georgia,serif;
  --font-mono: "SF Mono","JetBrains Mono",Consolas,"PingFang SC",monospace;
  --sider-w: 248px;
  --header-h: 64px;
}* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:var(--font-sans); background:var(--bg-body); color:var(--txt-primary); font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased; }
.app-layout { display:flex; min-height:100vh; }
.sider { width:var(--sider-w); background:var(--sider-bg); position:fixed; top:0; left:0; bottom:0; display:flex; flex-direction:column; z-index:100; }
.sider-logo { height:96px; display:flex; align-items:center; padding:0 24px; gap:18px; border-bottom:1px solid rgba(255,255,255,0.08); }
.sider-logo .logo-icon { width:60px; height:60px; border-radius:16px; background:var(--moss); display:flex; align-items:center; justify-content:center; font-size:30px; color:#14372b; }
.sider-logo .logo-text { font-size:30px; font-weight:700; color:#fff; letter-spacing:3px; font-family:var(--font-serif); line-height:1.15; }
.sider-logo .logo-sub { font-size:13px; color:var(--moss); font-weight:600; letter-spacing:5px; font-family:var(--font-sans); margin-top:4px; }
.sider-nav { flex:1; overflow-y:auto; padding:20px 0; }
.sider-nav .nav-section { padding:0 24px; margin:24px 0 12px; font-size:12px; font-weight:700; color:rgba(255,255,255,0.5); letter-spacing:3px; text-transform:none; font-family:var(--font-sans); }
.sider-nav .nav-item { display:flex; align-items:center; gap:14px; padding:0 20px; height:44px; color:var(--sider-text); cursor:pointer; margin:4px 12px; border-radius:10px; transition:all var(--transition); font-size:15.5px; font-weight:500; letter-spacing:0.5px; }
.sider-nav .nav-item:hover { color:#fff; background:rgba(255,255,255,0.04); }
.sider-nav .nav-item.active { color:#fff; background:var(--sider-active-bg, rgba(255,255,255,0.08)); font-weight:600; }
.sider-nav .nav-item i { width:18px; text-align:center; font-size:15px; }
/* Sider Footer (User Panel) */
.sider-footer { padding:16px 14px 18px; border-top:1px solid rgba(255,255,255,0.08); color:rgba(255,255,255,0.7); display:flex; flex-direction:column; gap:12px; background:rgba(0,0,0,0.15); }
.sf-user { display:flex; align-items:center; gap:12px; padding:4px 2px; }
.sf-info { flex:1; min-width:0; overflow:hidden; }
.sf-name { font-size:14px; font-weight:600; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sf-email { font-size:11px; color:rgba(255,255,255,0.45); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sf-logout { margin-top:4px; padding:11px 0; border-radius:10px; background:rgba(192,57,43,0.18); color:#ff8b7e; border:1px solid rgba(192,57,43,0.35); font-size:13px; font-weight:600; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:8px; transition:all .15s; letter-spacing:1px; }
.sf-logout:hover { background:rgba(192,57,43,0.9); color:#fff; border-color:transparent; box-shadow:0 2px 8px rgba(192,57,43,0.3); }
.sf-logout.hidden { display:none; }
.sf-pwd-btn { padding:9px 0; border-radius:9px; border:1px solid rgba(255,255,255,0.12); background:rgba(255,255,255,0.04); color:rgba(255,255,255,0.8); font-size:12.5px; cursor:pointer; transition:all .15s; font-weight:500; display:flex; align-items:center; justify-content:center; gap:8px; letter-spacing:1px; }
.sf-pwd-btn:hover { border-color:rgba(255,255,255,0.3); color:#fff; background:rgba(255,255,255,0.08); }
.sf-pwd-btn.hidden { display:none; }
.main { flex:1; margin-left:var(--sider-w); display:flex; flex-direction:column; min-height:100vh; }

.content { padding:36px; flex:1; }

/* Stats */
.stat-group-label { font-size:12px; color:var(--txt-tertiary); font-weight:600; margin:4px 0 8px; text-transform:uppercase; letter-spacing:.4px; }
.stat-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:18px; margin-bottom:32px; }
.stat-card { background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius-lg); padding:18px 20px; display:flex; align-items:center; gap:14px; transition:all 0.22s ease; box-shadow:var(--shadow-card); cursor:default; }
.stat-card:hover { border-color:var(--border-active); transform:translateY(-2px); }
.stat-card .sc-icon { width:48px; height:48px; border-radius:14px; display:flex; align-items:center; justify-content:center; font-size:22px; flex-shrink:0; }
.stat-card .sc-icon.blue { background:var(--brand-soft); color:var(--brand); }
.stat-card .sc-icon.green { background:var(--success-dim); color:var(--success); }
.stat-card .sc-icon.orange { background:var(--warning-dim); color:var(--warning); }
.stat-card .sc-icon.red { background:var(--danger-dim); color:var(--danger); }
.stat-card .sc-icon.gray { background:var(--bg-input); color:var(--txt-secondary); }
.stat-card .sc-icon.cyan { background:rgba(0,188,212,.14); color:#00bcd4; }
.stat-card .sc-val { font-size:30px; font-weight:800; line-height:1.05; letter-spacing:-1px; color:var(--brand); font-family:var(--font-serif); }
.stat-card .sc-label { font-size:11px; color:var(--txt-tertiary); margin-top:2px; font-weight:500; white-space:nowrap; }

/* Page Header */
.page-hd { margin-bottom:32px; }
.page-hd h2 { font-size:34px; font-weight:800; letter-spacing:-0.8px; line-height:1.15; font-family:var(--font-serif); }
.page-hd p { color:var(--txt-secondary); font-size:14.5px; margin-top:6px; }
.page-hd .actions { margin-top:20px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }

/* 引导式审核 Hero（P05） */
.guide-hero { position:relative; overflow:hidden; display:flex; flex-direction:column; align-items:stretch; gap:20px; background:linear-gradient(135deg,#152c4d 0%,#1e4f86 100%); border-radius:var(--radius-lg); padding:28px 30px; margin-bottom:24px; color:#fff; box-shadow:0 16px 40px rgba(10,20,40,.35), inset 0 1px 0 rgba(255,255,255,.08); }
.guide-hero::before { content:''; position:absolute; width:380px; height:380px; border-radius:50%; background:radial-gradient(circle, rgba(96,185,255,.38), transparent 62%); top:-150px; right:-90px; filter:blur(14px); pointer-events:none; }
.guide-hero::after { content:''; position:absolute; width:340px; height:340px; border-radius:50%; background:radial-gradient(circle, rgba(127,224,189,.30), transparent 60%); bottom:-160px; left:-70px; filter:blur(14px); pointer-events:none; }
.guide-main { position:relative; z-index:1; flex:none; min-width:0; }
.guide-eyebrow { font-size:12.5px; text-transform:uppercase; letter-spacing:1px; opacity:.75; margin-bottom:8px; }
.guide-title { font-size:26px; font-weight:800; margin-bottom:6px; font-family:var(--font-serif); }
.guide-num { color:#7fe0bd; font-size:38px; font-weight:900; }
.guide-sub { font-size:15.5px; opacity:.92; line-height:1.7; }
.guide-start { margin-top:16px; background:#fff; color:#152c4d; border:none; font-weight:700; box-shadow:0 4px 14px rgba(0,0,0,.18); }
.guide-start:hover { background:#f0f6ff; color:#152c4d; }
.guide-cats { position:relative; z-index:1; display:flex; gap:14px; width:100%; flex:none; }
.guide-cat { position:relative; flex:1; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.16); border-radius:16px; padding:18px 22px; text-align:center; min-width:120px; cursor:pointer; backdrop-filter:blur(14px) saturate(150%); -webkit-backdrop-filter:blur(14px) saturate(150%); box-shadow:0 6px 20px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.14); transition:background .18s, transform .18s, box-shadow .18s, border-color .18s; }
.guide-cat::before { content:''; position:absolute; inset:0; border-radius:16px; background:radial-gradient(180px circle at var(--mx, 60%) var(--my, 0%), rgba(255,255,255,.18), transparent 60%); pointer-events:none; opacity:0; transition:opacity .28s ease; }
.guide-cat:hover::before { opacity:1; }
.guide-cat:hover { background:rgba(255,255,255,.16); transform:translateY(-3px); box-shadow:0 12px 28px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.20); border-color:rgba(255,255,255,.30); }
.guide-cat .gc-num { position:relative; z-index:1; font-size:34px; font-weight:900; text-shadow:0 0 20px rgba(255,255,255,.28); }
.guide-cat .gc-num.first { color:#ffd166; }
.guide-cat .gc-num.resub { color:#7fe0bd; }
.guide-cat .gc-num.rej { color:#ff7a6b; }
.guide-cat .gc-num.shop { color:#7fd0ff; }
.guide-cat .gc-num.ok { color:#7fe0bd; }
.guide-cat .gc-num.due7 { color:#e0a030; }
.guide-cat .gc-num.due7p { color:#9aa0a8; }
.guide-cat .gc-ic { position:relative; z-index:1; font-size:22px; margin-bottom:6px; opacity:.92; transition:transform .25s; }
.guide-cat:hover .gc-ic { transform:translateY(-4px); }
.guide-cat .gc-label { position:relative; z-index:1; font-size:14px; font-weight:700; margin-top:4px; }
.guide-cat .gc-desc { position:relative; z-index:1; font-size:11px; opacity:.75; margin-top:3px; }
.guide-ov { position:relative; flex:2; min-width:0; display:flex; align-items:center; gap:14px; background:rgba(255,209,102,.10); border:1px solid rgba(255,209,102,.30); border-radius:16px; padding:16px 20px; cursor:pointer; backdrop-filter:blur(14px) saturate(150%); -webkit-backdrop-filter:blur(14px) saturate(150%); box-shadow:0 6px 20px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.10); transition:background .18s, transform .18s, box-shadow .18s, border-color .18s; }
.guide-ov::before { content:''; position:absolute; inset:0; border-radius:16px; background:radial-gradient(180px circle at var(--mx, 60%) var(--my, 0%), rgba(255,230,150,.22), transparent 60%); pointer-events:none; opacity:0; transition:opacity .28s ease; }
.guide-ov:hover::before { opacity:1; }
.guide-ov:hover { background:rgba(255,209,102,.18); transform:translateY(-3px); box-shadow:0 12px 28px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.14); border-color:rgba(255,209,102,.45); }
.guide-ov .gv-num { position:relative; z-index:1; font-size:34px; font-weight:900; color:#ffd166; line-height:1; text-shadow:0 0 22px rgba(255,209,102,.4); }
.guide-ov .gv-ic { position:relative; z-index:1; font-size:26px; color:#ffd166; transition:transform .25s; }
.guide-ov:hover .gv-ic { transform:translateY(-4px); }
.guide-ov .gv-body { position:relative; z-index:1; flex:1; }
.guide-ov .gv-label { font-size:16px; font-weight:700; }
.guide-ov .gv-sub { font-size:12px; opacity:.8; margin-top:3px; }
.guide-ov .gv-tip { font-size:12px; opacity:.75; margin-top:4px; }
.guide-hero { background:linear-gradient(135deg,#101a2e 0%,#173c63 100%); }

/* Panel */
.panel { background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius-lg); margin-bottom:24px; overflow:visible; box-shadow:var(--shadow-card); }
.panel-hd { padding:20px 26px; border-bottom:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:space-between; gap:16px; }
.panel-hd h3 { font-size:18.5px; font-weight:700; display:flex; align-items:center; gap:10px; font-family:var(--font-serif); }
.panel-hd h3 i { color:var(--brand); }
.panel-bd { padding:24px 26px; overflow:visible; }
.panel-bd.edge { padding:0; }

/* Chart (dashboard 图形化) */
.panel-sub { font-size:13px; color:var(--txt-tertiary); font-weight:500; }
.chart-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.chart-grid.two { grid-template-columns:1fr 1fr; margin-top:20px; }
.chart-card { background:var(--bg-input); border:1px solid var(--border-subtle); border-radius:var(--radius); padding:18px 20px; min-height:380px; overflow:visible; }
.chart-title { font-size:14px; font-weight:700; color:var(--txt-primary); margin-bottom:6px; font-family:var(--font-serif); }
.chart-total { color:var(--brand); font-weight:700; }
.chart-total { text-shadow:0 0 16px currentColor; }
.donut-wrap { padding:80px 0 60px; text-align:center; }
.donut-wrap.no-label-pad { padding:32px 0 16px; }

/* Grid Cards (device type distribution) */
.gc-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:14px; }
.gc-card {
  display:flex; align-items:stretch;
  background:var(--bg-card);
  border:1px solid var(--border-subtle);
  border-radius:10px;
  overflow:hidden;
  transition:all .2s ease;
  position:relative;
  cursor:pointer;
}
.gc-card:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.gc-card:hover { transform:translateY(-2px); box-shadow:0 6px 20px -8px rgba(0,0,0,0.3); }
.gc-bar { width:4px; background:var(--gc-color); flex-shrink:0; }
.gc-body { padding:10px 12px; flex:1; min-width:0; }
.gc-name { font-size:12.5px; font-weight:600; color:var(--txt-primary); margin-bottom:6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gc-row { display:flex; align-items:baseline; gap:8px; }
.gc-val { font-size:22px; font-weight:800; color:var(--gc-color); line-height:1; font-family:var(--font-mono); }
.gc-pct { font-size:12px; color:var(--txt-tertiary); font-weight:500; }

/* Integrated card — blood-bar progress style */
.gc-card-integrated {
  flex-direction:column;
  box-shadow:
    0 1px 2px rgba(0,0,0,0.05),
    0 4px 12px -4px rgba(0,0,0,0.08),
    0 8px 24px -12px rgba(0,0,0,0.06),
    inset 0 1px 0 rgba(255,255,255,0.6);
}
.gc-card-integrated::after {
  content:'';
  position:absolute;
  top:0; left:0; right:0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent);
  pointer-events:none;
}
.gc-card-integrated:hover {
  transform:translateY(-3px);
  box-shadow:
    0 2px 4px rgba(0,0,0,0.08),
    0 8px 20px -6px rgba(0,0,0,0.12),
    0 16px 36px -16px rgba(0,0,0,0.10),
    inset 0 1px 0 rgba(255,255,255,0.7);
}

.gc-top {
  display:flex; align-items:center;
  padding:14px 16px 8px 21px;
  gap:10px;
}
.gc-top .gc-bar { position:absolute; top:0; left:0; bottom:0; width:5px; border-radius:0; }
.gc-top .gc-name { flex:1; margin-bottom:0; font-size:14px; }
.gc-count { font-size:15px; font-weight:700; color:var(--gc-color, var(--brand)); font-family:var(--font-mono); }

.gc-progress-wrap { padding: 2px 16px 2px 21px; }
.gc-progress {
  position:relative;
  height:20px;
  background:linear-gradient(180deg, rgba(0,0,0,0.08) 0%, rgba(0,0,0,0.04) 100%);
  border-radius:10px;
  overflow:hidden;
  display:flex;
  border:1px solid rgba(255,255,255,0.35);
  box-shadow:inset 0 1px 3px rgba(0,0,0,0.1), inset 0 -1px 2px rgba(255,255,255,0.3);
  backdrop-filter:blur(8px) saturate(1.2);
  -webkit-backdrop-filter:blur(8px) saturate(1.2);
}
.gc-seg {
  height:100%; transition:width .3s cubic-bezier(.4,0,.2,1);
  position:relative;
  border-right:1px solid rgba(255,255,255,0.15);
}
.gc-seg:first-child { border-top-left-radius:10px; border-bottom-left-radius:10px; }
.gc-seg:last-child { border-right:none; border-top-right-radius:10px; border-bottom-right-radius:10px; }
.gc-seg::after {
  content:''; position:absolute; left:0; right:0; top:0; height:55%;
  background:linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.08) 60%, transparent 100%);
  pointer-events:none;
}
.gc-seg::before {
  content:''; position:absolute; top:0; bottom:0; left:0; width:55%;
  background:linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.32) 50%, transparent 100%);
  transform:translateX(-110%);
  animation: gcShimmer 1.8s ease-in-out infinite;
  pointer-events:none;
}
@keyframes gcShimmer {
  0% { transform:translateX(-110%); }
  60%, 100% { transform:translateX(320%); }
}
.gc-seg-done { background:linear-gradient(180deg, #7fe3b0 0%, #2eaf7c 48%, #17714f 100%); }
.gc-seg-glow { box-shadow:inset 0 -2px 4px rgba(0,0,0,0.08); }
.gc-seg-undone { background:linear-gradient(180deg, #ffd479 0%, #e99a2e 48%, #b06a12 100%); }
.gc-seg-overdue { background:linear-gradient(180deg, #c98f83 0%, #a86b5f 48%, #7a4538 100%); }
.gc-seg-pending { background:linear-gradient(180deg, #b7a7ec 0%, #8a7bd8 48%, #5f4fb8 100%); }
.gc-pct-center {
  position:absolute; left:50%; top:50%;
  transform:translate(-50%, -50%);
  font-size:11px; font-weight:800; color:#fff;
  font-family:var(--font-mono);
  text-shadow:0 0 3px rgba(0,0,0,0.5);
  pointer-events:none;
  white-space:nowrap;
}

.gc-stats {
  display:flex; justify-content:center; align-items:center;
  padding:10px 16px 14px 21px;
  font-size:13px;
}
.gc-stat-group { display:flex; gap:0; width:100%; justify-content:space-around; }
.gc-stat-item { display:flex; align-items:center; gap:5px; color:var(--txt-tertiary); flex:1; justify-content:center; }
.gc-stat-item i { font-size:13px; }
.gc-stat-num { font-weight:700; font-family:var(--font-mono); }
.gc-stat-done { color:var(--gc-done); }
.gc-stat-done .gc-stat-num { color:var(--gc-done); }
.gc-stat-undone { color:var(--gc-undone); }
.gc-stat-undone .gc-stat-num { color:var(--gc-undone); }
.gc-stat-overdue { color:var(--gc-overdue); font-weight:700; }
.gc-stat-overdue .gc-stat-num { color:var(--gc-overdue); }
.gc-stat-pending { color:var(--gc-pending); }
.gc-stat-pending .gc-stat-num { color:var(--gc-pending); }

/* V5 theme overrides for integrated cards */
.gc-card {
  background:rgba(15,33,58,0.72);
  border-color:rgba(34,211,238,0.18);
  backdrop-filter:blur(6px);
}
.gc-card:hover {
  border-color:rgba(34,211,238,0.45);
}
.gc-top .gc-bar {
  box-shadow:0 0 6px var(--gc-color), inset 0 0 3px rgba(255,255,255,0.2);
}
.gc-bar {
  box-shadow:0 0 8px var(--gc-color);
}
.gc-val {
  text-shadow:0 0 12px var(--gc-color);
}
.gc-count {
  text-shadow:0 0 12px var(--gc-color);
}
.gc-progress {
  border-color:rgba(255,255,255,0.4);
}

.gc-card-integrated {
  background: rgba(15, 33, 58, 0.6);
  border-color: rgba(34,211,238,0.18);
  box-shadow:
    0 1px 2px rgba(0,0,0,0.35),
    0 4px 16px -4px rgba(0,0,0,0.45),
    0 12px 32px -16px rgba(0,0,0,0.35),
    0 0 0 1px rgba(34,211,238,0.08) inset,
    inset 0 1px 0 rgba(255,255,255,0.04);
}
.gc-card-integrated::after {
  background:linear-gradient(90deg, transparent, rgba(34,211,238,0.25), transparent);
}
.gc-card-integrated:hover {
  border-color: rgba(34,211,238,0.5);
  box-shadow:
    0 2px 6px rgba(0,0,0,0.4),
    0 8px 24px -6px rgba(0,0,0,0.5),
    0 24px 56px -20px rgba(0,0,0,0.45),
    0 0 0 1px rgba(34,211,238,0.3),
    inset 0 1px 0 rgba(255,255,255,0.06);
}
.gc-seg-done { box-shadow:0 0 6px rgba(34,211,238,0.4); }
.gc-seg-glow { box-shadow:0 0 10px rgba(34,211,238,0.6); }
.gc-seg-overdue { box-shadow:0 0 6px rgba(168,107,95,0.4); }

/* Legend */
.gc-legend {
  display:flex; align-items:center; gap:28px;
  margin: 8px 0 12px;
  padding: 8px 16px;
  background: var(--bg-subtle, rgba(0,0,0,0.03));
  border-radius: 8px;
  font-size: 12px;
  color: var(--txt-secondary);
  flex-wrap: wrap;
}
.gc-legend-item { display:flex; align-items:center; gap:5px; font-weight:500; font-size:16px; }
.gc-legend-num { font-weight:700; font-size:26px; font-family:var(--font-mono); }
.gc-legend-pct { font-size:18px; color:var(--txt-tertiary); font-weight:500; }
.gc-num-done + .gc-legend-pct { color:var(--gc-done); text-shadow:0 0 8px rgba(76,143,115,0.35); }
.gc-num-undone + .gc-legend-pct { color:var(--gc-undone); text-shadow:0 0 8px rgba(200,146,74,0.35); }
.gc-num-overdue + .gc-legend-pct { color:var(--gc-overdue); text-shadow:0 0 8px rgba(166,107,101,0.35); }
.gc-num-pending + .gc-legend-pct { color:var(--gc-pending); text-shadow:0 0 8px rgba(138,123,216,0.35); }
.gc-num-done { color:var(--gc-done); }
.gc-num-undone { color:var(--gc-undone); }
.gc-num-overdue { color:var(--gc-overdue); }
.gc-num-pending { color:var(--gc-pending); }
.gc-legend-dot {
  width:10px; height:10px; border-radius:3px;
  display:inline-block;
}
.gc-legend-done { background: var(--gc-done); }
.gc-legend-undone { background: var(--gc-undone); }
.gc-legend-overdue { background: var(--gc-overdue); }
.gc-legend-pending { background: var(--gc-pending); }
.gc-legend-due3 { background:#e08a2e; }
.gc-legend-due7 { background:#e8b94a; }
.gc-legend-due7p { background:#b8b8b8; }
.gc-legend-rejected { background:#a86b5f; }
.gc-legend-reviewed { background:#2ba471; }
.gc-seg-due3 { background:linear-gradient(180deg,#f0a24a 0%,#e08a2e 48%,#c26f1c 100%); }
.gc-seg-due7 { background:linear-gradient(180deg,#f2c14e 0%,#e8b94a 48%,#d19a28 100%); }
.gc-seg-due7p { background:linear-gradient(180deg,#cfcfcf 0%,#b8b8b8 48%,#9a9a9a 100%); }
.gc-stat-due3 { color:#e08a2e; } .gc-stat-due3 b { color:#e08a2e; }
.gc-stat-due7 { color:#d19a28; } .gc-stat-due7 b { color:#d19a28; }
.gc-stat-due7p { color:#9a9a9a; } .gc-stat-due7p b { color:#9a9a9a; }
.gc-flow { display:flex; gap:8px; margin-top:8px; padding-top:8px; border-top:1px solid var(--border,#ececec); flex-wrap:wrap; }
.gc-flow-item { font-size:11px; padding:2px 8px; border-radius:10px; font-weight:600; }
.gc-flow-pending { color:#2e6bd8; background:rgba(46,107,216,0.12); }
.gc-flow-rejected { color:#a86b5f; background:rgba(168,107,95,0.12); }
@property --gc-rot { syntax:'<angle>'; initial-value:0deg; inherits:false; }
.gc-card-overview { position:relative; display:flex; flex-direction:column; background:rgba(13,29,51,0.88); background:linear-gradient(165deg, color-mix(in srgb, var(--gc-color, var(--brand)) 14%, var(--bg-card)) 0%, rgba(13,29,51,0.88) 100%); border:1px solid var(--border-subtle); border-radius:12px; padding:13px 14px; box-shadow:0 1px 3px rgba(0,0,0,.35); cursor:default; transition:box-shadow .22s, transform .22s; }
.gc-card-overview::before { content:''; position:absolute; inset:-1px; border-radius:13px; padding:2.5px; background:conic-gradient(from var(--gc-rot), transparent 0deg, rgba(255,255,255,.95) 50deg, var(--gc-color) 110deg, transparent 175deg); -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude; animation:gcRotate 5s linear infinite; pointer-events:none; z-index:1; }
@keyframes gcRotate { to { --gc-rot:360deg; } }
.gc-card-overview:hover { transform:scale(1.06); box-shadow:0 2px 4px rgba(0,0,0,.08), 0 18px 36px rgba(0,0,0,.24); }
.gc-card-overview::after { content:''; position:absolute; inset:0; border-radius:13px; background:radial-gradient(150px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--gc-color, #1a6fff) 24%, transparent), transparent 60%); pointer-events:none; z-index:1; opacity:0; transition:opacity .28s ease; }
.gc-card-overview:hover::after { opacity:1; }
.gc-card-overview .gc-ov-head, .gc-card-overview .gc-ov-grid { position:relative; z-index:2; }
.gc-card-overview .gc-icon-fallback { transition:transform .25s; }
.gc-card-overview:hover .gc-icon-fallback { transform:translateY(-3px); }
.gc-card-overview .gc-ov-item b { text-shadow:0 0 16px rgba(255,255,255,.28); }
.gc-ov-head { display:flex; align-items:center; gap:8px; }
.gc-ov-head .gc-icon-fallback { font-size:18px; line-height:1; }
.gc-ov-icon { display:inline-block; width:36px; height:36px; line-height:1; flex-shrink:0; }
.gc-ov-icon svg, .gc-ov-icon img { width:36px; height:36px; object-fit:contain; }
.gc-ov-name { font-weight:700; font-size:14px; min-width:0; flex-shrink:1; }
.gc-ov-total { margin-left:auto; font-size:12px; color:var(--txt-tertiary,#999); white-space:nowrap; }
.gc-ov-total b { font-size:14px; color:var(--txt,#222); }
.gc-ov-grid { display:grid; gap:6px; margin-top:8px; }
.gc-ov-due { grid-template-columns:repeat(3,1fr); }
.gc-ov-flow { grid-template-columns:repeat(3,1fr); }
.gc-ov-flow .gc-ov-item { flex-direction:column; justify-content:center; padding:5px 12px; border-radius:999px; }
.gc-ov-flow .gc-ov-item b { margin-top:2px; }
.gc-ov-flow .gc-ov-item::before { border-radius:999px; }
.gc-ov-flow .gc-ov-pending { border:1px solid rgba(59,111,214,.35); }
.gc-ov-flow .gc-ov-rejected { border:1px solid rgba(189,111,103,.35); }
.gc-ov-flow .gc-ov-reviewed { border:1px solid rgba(43,164,113,.35); }
.gc-ov-item { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:6px 8px; border-radius:10px; box-shadow:0 1px 2px rgba(20,30,50,.08), inset 0 1px 0 rgba(255,255,255,.75), inset 0 -2px 0 rgba(20,30,50,.06); min-width:0; cursor:pointer; text-align:center; transition:transform .18s, box-shadow .18s, background-color .18s, filter .18s; }
.gc-ov-item::before { content:''; position:absolute; inset:0; border-radius:10px; background:linear-gradient(225deg, rgba(255,255,255,.15) 0%, rgba(255,255,255,.03) 55%, rgba(0,0,0,.015) 72%, rgba(0,0,0,.03) 100%); pointer-events:none; z-index:0; }
.gc-ov-item > * { position:relative; z-index:1; }
@keyframes gcAlertRing { 0% { transform:scale(1); opacity:.9; box-shadow:0 0 0 5px rgba(255,82,70,.65); } 100% { transform:scale(1.32); opacity:0; box-shadow:0 0 0 0 rgba(255,82,70,0); } }
@keyframes gcAlertPulse { 0%,100% { transform:scale(1); } 50% { transform:scale(1.28); } }
.gc-ov-alert { border:1px solid rgba(255,82,70,.55); box-shadow:0 0 14px rgba(255,82,70,.35), 0 1px 2px rgba(20,30,50,.08), inset 0 1px 0 rgba(255,255,255,.75), inset 0 -2px 0 rgba(20,30,50,.06); }
.gc-ov-alert::after { content:''; position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:2; animation:gcAlertRing 1.3s ease-out infinite; }
.gc-ov-alert .gc-ov-ic { animation:gcAlertPulse 1.1s ease-in-out infinite; }
.gc-ov-item:hover { transform:translateY(-3px) scale(1.05); box-shadow:0 1px 2px rgba(20,30,50,.08), 0 10px 20px rgba(20,30,50,.18), inset 0 1px 0 rgba(255,255,255,.85), inset 0 -2px 0 rgba(20,30,50,.08); filter:brightness(1.08); }
.gc-ov-ic { font-size:11px; color:#8a8f98; }
.gc-ov-item b { font-size:16px; font-weight:700; color:var(--txt,#1a1a1a); margin-top:2px; line-height:1.1; }
.gc-ov-overdue { background:rgba(213,72,58,.10); }
.gc-ov-due3 { background:rgba(224,138,46,.12); }
.gc-ov-due7 { background:rgba(201,151,31,.12); }
.gc-ov-due7p { background:rgba(154,160,168,.12); }
.gc-ov-pending { background:rgba(46,107,216,.10); }
.gc-ov-rejected { background:rgba(168,107,95,.10); }
.gc-ov-overdue .gc-ov-ic, .gc-ov-overdue b { color:#d5483a; }
.gc-ov-due3 .gc-ov-ic, .gc-ov-due3 b { color:#e08a2e; }
.gc-ov-due7 .gc-ov-ic, .gc-ov-due7 b { color:#c9971f; }
.gc-ov-due7p .gc-ov-ic, .gc-ov-due7p b { color:#9aa0a8; }
.gc-ov-pending .gc-ov-ic, .gc-ov-pending b { color:#2e6bd8; }
.gc-ov-rejected .gc-ov-ic, .gc-ov-rejected b { color:#a86b5f; }
.gc-ov-reviewed { background:rgba(43,164,113,.12); }
.gc-ov-reviewed .gc-ov-ic, .gc-ov-reviewed b { color:#2ba471; }
.gc-card-overview .gc-ov-name { color:#e8f4ff; }
.gc-card-overview .gc-ov-total { color:#93a7bd; }
.gc-card-overview .gc-ov-total b { color:#f0f8ff; }
.gc-card-overview .gc-ov-item b { color:#f0f8ff; }
.gc-card-overview .gc-ov-ic { color:#b8c6d4; }
.gc-card-overview .gc-ov-overdue .gc-ov-ic { color:#ff8a7a; }
.gc-card-overview .gc-ov-due3 .gc-ov-ic { color:#ffb877; }
.gc-card-overview .gc-ov-due7 .gc-ov-ic { color:#f0d06a; }
.gc-card-overview .gc-ov-due7p .gc-ov-ic { color:#b0b8c2; }
.gc-card-overview .gc-ov-pending .gc-ov-ic { color:#8ab4ff; }
.gc-card-overview .gc-ov-rejected .gc-ov-ic { color:#ff9b8a; }
.gc-card-overview .gc-ov-reviewed .gc-ov-ic { color:#7fe0bd; }
.gc-card-overview .gc-ov-overdue b { color:#ff8a7a; }
.gc-card-overview .gc-ov-due7 b { color:#f0d06a; }
.gc-card-overview .gc-ov-due7p b { color:#b0b8c2; }
.gc-card-overview .gc-ov-pending b { color:#8ab4ff; }
.gc-card-overview .gc-ov-rejected b { color:#ff9b8a; }
.gc-card-overview .gc-ov-reviewed b { color:#7fe0bd; }
.gc-dot { width:8px; height:8px; border-radius:50%; display:inline-block; flex-shrink:0; }
.gc-dot-overdue { background:#c0392b; }
.gc-dot-due3 { background:#e08a2e; }
.gc-dot-due7 { background:#d19a28; }
.gc-dot-due7p { background:#b8b8b8; }
.gc-dot-pending { background:#2e6bd8; }
.gc-dot-rejected { background:#a86b5f; }
.gc-legend-total { margin-left:auto; color: var(--txt-tertiary); font-weight:600; font-size:16px; }

/* Card icon */
.gc-icon {
  width:32px; height:32px;
  object-fit:contain;
  flex-shrink:0;
  border-radius:4px;
}
.gc-card .line-icon { color:var(--gc-color); }
.gc-icon-fallback {
  font-size:28px;
  line-height:1;
  flex-shrink:0;
}

/* Modal tabs */
.modal-tabs {
  display:flex; gap:4px;
  border-bottom:1px solid var(--border-subtle);
  margin-bottom: 12px;
  padding-bottom: 0;
}
.modal-tab {
  display:flex; align-items:center; gap:6px;
  padding: 10px 16px;
  background:none; border:none;
  font-size: 14px; font-weight: 600;
  color: var(--txt-tertiary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all .15s ease;
  white-space: nowrap;
}
.modal-tab:hover { color: var(--txt-secondary); }
.modal-tab.active {
  color: var(--txt-primary);
  border-bottom-color: var(--brand);
}
.modal-tab-dot {
  width:8px; height:8px; border-radius:50%;
  display:inline-block;
}
.modal-tab-count {
  display:inline-flex; align-items:center; justify-content:center;
  min-width: 22px; height: 20px;
  padding: 0 6px;
  background: var(--border-subtle);
  border-radius: 10px;
  font-size: 12px; font-weight: 700;
  color: var(--txt-secondary);
}
.modal-tab.active .modal-tab-count {
  background: var(--brand);
  color: #fff;
}
.modal-tab-content.hidden { display: none; }
.modal-tab-content { height: 50vh; }
.modal-tab-content > div { height: 100%; overflow-y: auto; }
.modal-tab-content table { width:100%; }
.modal-tab-content td { padding: 14px 12px; }
.modal-tab-content th { padding: 10px 12px; }

/* Dashboard progress tabs：设备检查进度 / 运营人员检查进度 */
.prog-tabs .prog-tabbar {
  display:flex; gap:4px;
  padding: 0 26px;
  border-bottom:1px solid var(--border-subtle);
  overflow-x:auto;
}
.prog-tabs .prog-tab {
  display:flex; align-items:center; gap:8px;
  padding: 15px 20px;
  background:none; border:none;
  font-size: 16px; font-weight: 700;
  font-family: var(--font-serif);
  color: var(--txt-tertiary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all .15s ease;
  white-space: nowrap;
}
.prog-tabs .prog-tab i { color: var(--brand); }
.prog-tabs .prog-tab:hover { color: var(--txt-secondary); }
.prog-tabs .prog-tab.active {
  color: var(--txt-primary);
  border-bottom-color: var(--brand);
}
.prog-tabs .prog-tab-pane { display: none; }
.prog-tabs .prog-tab-pane.active { display: block; }
.prog-tabs .prog-tab.active {
  text-shadow: 0 0 8px rgba(34,211,238,0.5);
}

.gc-legend {
  background: rgba(34,211,238,0.06);
  border: 1px solid rgba(34,211,238,0.12);
}
.modal-tab.active {
  text-shadow: 0 0 8px rgba(34,211,238,0.5);
}
.modal-tab.active .modal-tab-count {
  box-shadow: 0 0 8px rgba(34,211,238,0.4);
}

.donut-svg { display:block; margin:0 auto; width:240px; height:240px; max-width:100%; overflow:visible; }
.donut-inner-sh { stroke: var(--donut-inner-shadow); }
.arc-seg-grp { cursor:pointer; }
.arc-seg-grp circle { transition:stroke-width .18s ease; }
.arc-seg-grp:hover circle { stroke-width:74px; }
.arc-overlay { pointer-events:none; }
.legend { margin-top:14px; display:flex; flex-direction:column; gap:7px; }
.legend.grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 12px; margin-top:2px; }
.legend.grid.cols-2 { grid-template-columns:1fr 1fr; }
.legend.grid.cols-3 { grid-template-columns:1fr 1fr 1fr; }
.legend.inline { flex-direction:row; flex-wrap:wrap; gap:18px; margin-top:12px; justify-content:center; }
.legend-item { display:flex; align-items:center; gap:8px; font-size:13px; }
.legend-item .dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
.legend-item .lg-label { color:var(--txt-secondary); }
.legend-item .lg-val { margin-left:auto; font-weight:700; color:var(--txt-primary); font-family:var(--font-mono); }
.legend.inline .lg-val { margin-left:0; }
.hbar-list { display:flex; flex-direction:column; gap:14px; padding:6px 2px; }
.hbar-row { display:grid; grid-template-columns:88px 1fr auto; align-items:center; gap:12px; }
.hbar-name { font-size:13px; color:var(--txt-primary); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hbar-track { position:relative; height:22px; background:var(--border-subtle); border-radius:6px; overflow:hidden; }
.hbar-fill { position:absolute; left:0; top:0; bottom:0; background:linear-gradient(90deg,var(--warning),#e8a33d); border-radius:6px; transition:width .4s ease; min-width:2px; }
.hbar-tag { position:absolute; right:8px; top:50%; transform:translateY(-50%); font-size:11px; font-weight:700; color:var(--txt-primary); font-family:var(--font-mono); }
.hbar-meta { display:flex; gap:10px; font-size:11.5px; white-space:nowrap; }
.hbar-meta .m.danger { color:var(--danger); font-weight:700; }
.hbar-meta .m.mute { color:var(--txt-tertiary); }
/* 店铺完成率排名表 */
.shop-comp-tbl { width:100%; border-collapse:collapse; }
.shop-comp-tbl th.sortable { cursor:pointer; user-select:none; }
.shop-comp-tbl th.sortable:hover { color:var(--brand); background:var(--bg-hover); }
.pct-cell { display:flex; align-items:center; gap:10px; justify-content:center; }
.pct-bar { flex:1; max-width:140px; height:8px; background:var(--border-subtle); border-radius:5px; overflow:hidden; }
.pct-fill { height:100%; border-radius:5px; transition:width .4s ease; min-width:2px; }
.pct-num { font-size:12.5px; font-weight:700; color:var(--txt-primary); font-family:var(--font-mono); min-width:38px; text-align:right; }
@media (max-width:1100px){ .chart-grid,.chart-grid.two { grid-template-columns:1fr; } }

/* Table */
.tbl { width:100%; border-collapse:collapse; }
.tbl th { padding:14px 18px; text-align:center; font-size:11.5px; font-weight:700; color:var(--txt-tertiary); text-transform:uppercase; letter-spacing:1px; border-bottom:1px solid var(--border-subtle); white-space:nowrap; background:#fbfdfa; font-family:var(--font-mono); }
.tbl td { padding:16px 18px; border-bottom:1px solid var(--border-subtle); font-size:14px; text-align:center; white-space:nowrap; }
.tbl.tbl-wrap td { white-space:normal; word-break:break-word; overflow-wrap:break-word; }
.tbl tbody tr:hover { background:var(--bg-hover); }
.tbl tbody tr:last-child td { border-bottom:none; }
.tbl.tbl-compact th { padding:7px 7px; font-size:10.5px; letter-spacing:0.5px; }
.tbl.tbl-compact td { padding:6px 7px; font-size:12px; }
.tbl.tbl-compact tbody tr:hover { background:var(--bg-hover); }
.tbl.tbl-compact thead th { position:sticky; top:0; z-index:3; background:#fbfdfa; box-shadow:0 1px 0 var(--border-subtle); }
.tbl.tbl-compact tfoot td { position:sticky; bottom:0; z-index:3; background:#e8f1ed; box-shadow:0 -1px 0 var(--border-subtle); }
.tbl.tbl-compact thead th { background:#0a1a2e; box-shadow:0 1px 0 rgba(34,211,238,0.25); }
.tbl.tbl-compact tfoot td { background:#0d2138; box-shadow:0 -1px 0 rgba(34,211,238,0.25); }
.filter-row td { padding:6px 6px; background:var(--bg-body); vertical-align:middle; }
.filter-row input,.filter-row select { width:100%; padding:5px 8px; border:1.5px solid var(--border-input); border-radius:6px; font-size:13px; background:var(--bg-input); outline:none; box-sizing:border-box; transition:all .15s; color:var(--txt-primary); text-align:center; font-family:inherit; }
.filter-row input:focus,.filter-row select:focus { border-color:var(--brand); background:var(--bg-input); box-shadow:0 0 0 3px rgba(23,74,58,0.08); }
.filter-row select { cursor:pointer; }
.filter-acts { display:flex; gap:4px; justify-content:center; }
.filter-acts .btn { font-size:13px; padding:4px 10px; }
.batch-bar { display:grid; grid-template-columns:auto 1fr auto; align-items:center; column-gap:18px; padding:10px 0; background:var(--bg-input); border-radius:var(--radius); margin-top:12px; }
.batch-bar .bb-select { position:relative; display:flex; align-items:center; gap:14px; cursor:pointer; font-size:14px; font-weight:600; color:var(--txt-primary); white-space:nowrap; height:18px; padding-left:0; }
.batch-bar .bb-select input[type=checkbox] { width:18px; height:18px; accent-color:var(--brand); cursor:pointer; flex-shrink:0; margin:0; }
.batch-bar .bb-select .bb-text { display:inline-block; }
.bb-actions { display:flex; gap:8px; padding-right:16px; }
#batchCount { font-size:14px; font-weight:600; color:var(--txt-secondary); }
.bb-select input[type=checkbox] { width:18px; height:18px; accent-color:var(--brand); cursor:pointer; }
.bb-actions { display:flex; gap:8px; }
#batchCount { font-size:14px; font-weight:600; color:var(--txt-secondary); }
.tbl th input[type=checkbox], .tbl td input[type=checkbox] { width:18px; height:18px; accent-color:var(--brand); cursor:pointer; }
.env-banner{position:sticky;top:0;z-index:9999;background:#f59e0b;color:#1a1a1a;font-weight:700;text-align:center;padding:6px 12px;font-size:13px;letter-spacing:1px;box-shadow:0 1px 4px rgba(0,0,0,.15);}
.pagi-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--border-subtle);font-size:13px;}
.stat-card-clickable{cursor:pointer;transition:all .15s;border:2px solid transparent;}
.stat-card-clickable:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.08);}
.ml-month-arrow{width:28px;height:28px;border:0;background:transparent;border-radius:6px;color:var(--txt-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:12px;transition:all .15s;}
.ml-month-arrow:hover{background:var(--brand-soft);color:var(--brand);}
.ml-month-today{width:100%;border:1px solid var(--brand);background:var(--brand);color:#fff;height:32px;padding:0 12px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 8px rgba(23,74,58,.32),inset 0 1px 0 rgba(255,255,255,.18);}
.ml-month-today:hover{background:var(--brand2);border-color:var(--brand2);transform:translateY(-2px);box-shadow:0 6px 14px rgba(23,74,58,.4),inset 0 1px 0 rgba(255,255,255,.2);}
/* P10 月份筛选卡（2026-09-23）：加高至与两行状态卡片同高 + 视觉重做。
   设计要点：① flex column + space-between，三块（标签/月份胶囊/按钮）自然铺满两行高度；
   ② 装饰沿用 .stat-card 的「顶部霓虹条 + 右下光晕」，与右侧卡片成套；
   ③ .ml-month-today 原规则不动，仅用 .ml-month-box 后代选择器覆盖 → 培训台账页不受影响。 */
.ml-month-box{width:184px;flex-shrink:0;display:flex;flex-direction:column;justify-content:space-between;gap:10px;background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:14px;position:relative;overflow:hidden;backdrop-filter:blur(10px) saturate(120%);}
.ml-month-box::before{content:'';position:absolute;left:0;top:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--brand),var(--brand2),transparent);opacity:.85;}
.ml-month-box::after{content:'';position:absolute;top:-56px;right:-56px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(34,211,238,.16) 0%,transparent 70%);pointer-events:none;}
.ml-month-cap{position:relative;font-size:11px;font-weight:600;color:var(--txt-tertiary);letter-spacing:.6px;display:flex;align-items:center;gap:6px;}
.ml-month-cap i{color:var(--brand);font-size:11px;}
.ml-month-pick{position:relative;display:flex;align-items:center;justify-content:space-between;gap:2px;background:var(--bg-input);border:1px solid var(--border-card);border-radius:10px;height:44px;padding:0 4px;transition:border-color .2s ease;}
.ml-month-pick:hover{border-color:var(--border-active);}
.ml-month-pick select{flex:1;min-width:0;height:42px;padding:0;border:0;background:transparent;font-size:15px;font-weight:700;color:var(--txt-primary);cursor:pointer;outline:none;text-align:center;text-align-last:center;letter-spacing:-.2px;}
.ml-month-box .ml-month-arrow{width:30px;height:30px;font-size:13px;flex-shrink:0;}
.ml-month-box .ml-month-today{height:46px;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:10px;font-size:14px;}
.ml-month-box .ml-month-today i{font-size:13px;opacity:.92;}
@media(max-width:1500px){.ml-month-box{width:168px;padding:12px;gap:8px;}.ml-month-pick{height:40px;}.ml-month-pick select{height:38px;font-size:14px;}.ml-month-box .ml-month-today{height:42px;}}
@media(max-width:1100px){.ml-month-box{width:152px;}.ml-month-cap{display:none;}}
.stat-card-clickable.active{border-color:var(--brand) !important;border-width:2px;background:linear-gradient(180deg,var(--brand),rgba(23,74,58,.82)) !important;box-shadow:0 0 0 3px rgba(23,74,58,.22),0 10px 28px rgba(23,74,58,.28) !important;transform:translateY(-2px);}
.stat-card-clickable.active .sc-icon{box-shadow:0 0 0 2px #fff !important;background:rgba(255,255,255,.18) !important;}
.stat-card-clickable.active .sc-icon.blue,.stat-card-clickable.active .sc-icon.green,.stat-card-clickable.active .sc-icon.orange,.stat-card-clickable.active .sc-icon.red,.stat-card-clickable.active .sc-icon.gray,.stat-card-clickable.active .sc-icon.cyan{background:rgba(255,255,255,.18) !important;color:#fff !important;}
.stat-card-clickable.active .sc-val{color:#fff !important;-webkit-text-fill-color:#fff !important;}
.stat-card-clickable.active .sc-label{color:rgba(255,255,255,.85) !important;font-weight:700;}
.pagi-info{color:var(--txt-tertiary);}
#inspPendingWrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.insp-search-table,.insp-data-tbl{table-layout:fixed;width:100%;}
.insp-data-tbl td{padding:8px 12px;}
.insp-data-tbl th{padding:10px 12px;}
.insp-search-table{margin-bottom:10px;background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:8px;}
.insp-search-table td{padding:6px 4px;border:none;background:transparent;vertical-align:middle;}
.insp-search-table input{width:100%;padding:5px 8px;border:1.5px solid var(--border-input);border-radius:6px;font-size:13px;background:var(--bg-input);outline:none;box-sizing:border-box;color:var(--txt-primary);font-family:inherit;text-align:center;transition:all .15s;}
.insp-search-table select{width:100%;padding:5px 8px;border:1.5px solid var(--border-input);border-radius:6px;font-size:13px;background:var(--bg-input) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath fill='%237a8a83' d='M0 0l4 5 4-5z'/%3E%3C/svg%3E") no-repeat right 6px center;background-size:7px 4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;box-sizing:border-box;color:var(--txt-primary);font-family:inherit;text-align:center;transition:all .15s;cursor:pointer;}
.insp-search-table input:focus,.insp-search-table select:focus{border-color:var(--brand);}
.insp-search-table .filter-acts{display:flex;gap:4px;justify-content:center;align-items:center;}
.insp-search-table .filter-acts .btn{font-size:12px;padding:4px 10px;height:auto;min-height:28px;}
.tbl th.sortable{cursor:pointer;user-select:none;transition:color .15s;}
.tbl th.sortable:hover{color:var(--brand);background:var(--bg-hover);}
.pagi-size{display:flex;align-items:center;gap:6px;color:var(--txt-tertiary);}
.pagi-size select{padding:3px 6px;border:1.5px solid var(--border-input);border-radius:5px;font-size:12px;background:var(--bg-input);outline:none;}
.pagi-nav{display:flex;gap:6px;}
.pagi-nav button[disabled]{opacity:0.4;cursor:default;}
/* loading row */
.tbl td.load-cell { padding:40px; text-align:center; color:var(--txt-tertiary); }
.tbl td.load-cell i { font-size:28px; animation:spin 1s linear infinite; }
@keyframes spin { to{transform:rotate(360deg);} }

/* Tags */
.tag { display:inline-flex; align-items:center; gap:5px; padding:3px 12px; border-radius:999px; font-size:11.5px; font-weight:600; border:1px solid; }
.tag.blue { background:var(--brand-soft); color:var(--brand); border-color:rgba(23,74,58,0.15); }
.tag.green { background:#e8f5ed; color:var(--success); border-color:rgba(46,139,87,0.18); }
.tag.orange { background:#fef3d6; color:var(--warning); border-color:rgba(217,119,6,0.18); }
.tag.red { background:#fdebe8; color:var(--danger); border-color:rgba(192,57,43,0.15); }
.tag.gray { background:var(--bg-input); color:var(--txt-tertiary); border-color:var(--border-subtle); }
.tag.cyan { background:#e0f7fa; color:#00838f; border-color:rgba(0,131,143,0.18); }
.tag.indigo { background:#e8eaf6; color:#283593; border-color:rgba(40,53,147,0.22); }
.tag.dot::before { content:''; width:7px; height:7px; border-radius:50%; background:currentColor; flex-shrink:0; }
.tag.yellow { background:#fef9e0; color:#92400e; border-color:rgba(146,64,14,0.15); }
.tag.purple { background:#f0e8ff; color:#6b21a8; border-color:rgba(107,33,168,0.15); }
.tag.teal { background:#e0f7f5; color:#0d9488; border-color:rgba(13,148,136,0.15); }

/* Shop multi-select grid (operator edit) */
.shop-grid { display:flex; flex-direction:column; gap:4px; max-height:300px; overflow-y:auto; border:1px solid var(--border-input); border-radius:var(--radius); padding:8px; background:var(--bg-input); }
.shop-item { display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:10px; cursor:pointer; transition:var(--transition); user-select:none; }
.shop-item:hover { background:var(--bg-hover); }
.shop-item.checked { background:var(--brand-soft); }
.shop-item.disabled { opacity:0.45; cursor:not-allowed; }
.shop-item input[type=checkbox] { width:18px; height:18px; accent-color:var(--brand); cursor:pointer; flex-shrink:0; }
.shop-item.disabled input { cursor:not-allowed; }
.shop-item .shop-code { font-family:var(--font-mono); font-size:12px; color:var(--brand); min-width:60px; }
.shop-item .shop-name { font-size:13px; color:var(--txt-primary); }
.shop-item .shop-taken { font-size:11px; color:var(--txt-tertiary); margin-left:auto; }

/* Buttons */
.btn { display:inline-flex; align-items:center; gap:8px; padding:8px 22px; height:42px; border-radius:999px; font-size:14px; font-weight:600; cursor:pointer; border:1px solid transparent; transition:all 0.16s ease; white-space:nowrap; font-family:var(--font-sans); }
.btn-solid { background:var(--brand); color:#fff; border-color:var(--brand); }
.btn-solid:hover { background:var(--brand2); box-shadow:0 6px 18px rgba(23,74,58,0.25); transform:translateY(-1px); }
.btn-outline { background:transparent; color:var(--txt-secondary); border-color:var(--border-input); }
.btn-outline:hover { color:var(--brand); border-color:var(--brand); background:var(--brand-soft); }
.btn-ghost { background:transparent; border:none; color:var(--brand); padding:5px 14px; height:auto; font-size:13px; border-radius:999px; font-weight:500; }
.btn-ghost:hover { background:var(--brand-soft); }
.btn-ghost.danger { color:var(--danger); }
.btn-ghost.danger:hover { background:#fdebe8; }
.btn-sm { height:32px; padding:4px 14px; font-size:12.5px; }
.btn-sm.ic { height:26px; width:28px; padding:0; font-size:13px; line-height:24px; }
.btn-lg { height:50px; padding:10px 32px; font-size:15.5px; }

/* ===== P10 物业月度巡检台账 ===== */
.view-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:18px; }
.vh-left h2 { margin:0; font-size:21px; font-weight:800; display:flex; align-items:center; gap:10px; }
.vh-sub { color:var(--txt-tertiary); font-size:13px; margin-top:4px; }
.vh-actions { display:flex; gap:10px; flex-shrink:0; }
.ml-filters { display:flex; flex-wrap:wrap; align-items:flex-end; gap:14px; background:var(--bg-card); border:1px solid var(--border-subtle); border-radius:var(--radius); padding:14px 16px; margin-bottom:16px; }
.ml-filters label { display:flex; flex-direction:column; gap:5px; font-size:12px; color:var(--txt-tertiary); font-weight:600; }
.ml-filters .inp { width:auto; min-width:130px; }
.ml-wrap { background:var(--bg-card); border:1px solid var(--border-subtle); border-radius:var(--radius); overflow:hidden; }
.ml-count { padding:10px 14px; font-size:12px; color:var(--txt-tertiary); border-bottom:1px solid var(--border-subtle); }
.ml-toolbar { display:flex; align-items:center; gap:12px; padding:10px 14px; border-bottom:1px solid var(--border-subtle); flex-wrap:wrap; }
.ml-toolbar #mlSearch { flex:1; min-width:200px; max-width:340px; }
.ml-sort { display:flex; align-items:center; gap:6px; color:var(--txt-tertiary); font-size:13px; }
.ml-sort .inp { width:auto; }
.ml-toolbar .ml-count { padding:0; border-bottom:none; margin-left:auto; }
.ml-wrap .tbl { margin:0; }
.sub { color:var(--txt-tertiary); font-size:12px; }
.lk { color:var(--brand); cursor:pointer; font-weight:600; }
.lk:hover { text-decoration:underline; }
.gantt-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin-bottom:16px; }
.gantt-stat { display:flex; align-items:center; gap:12px; background:var(--bg-card); border:1px solid var(--border-subtle); border-radius:var(--radius); padding:14px 16px; }
.gs-ic { width:42px; height:42px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.gs-v { font-size:22px; font-weight:800; line-height:1.1; }
.gs-l { font-size:12px; color:var(--txt-tertiary); margin-top:2px; }
.rc-head { display:grid; grid-template-columns:1fr 1fr; gap:8px 18px; margin-bottom:6px; }
.rc-row { display:flex; gap:8px; font-size:13px; }
.rc-k { flex-shrink:0; width:84px; color:var(--txt-tertiary); }
/* 驳回意见/审核意见等意见类字段：醒目橙红突出，便于一眼定位 */
.rc-row.rc-opinion{ background:rgba(234,88,12,.08); border:1px solid rgba(234,88,12,.25); border-left:4px solid #ea580c; border-radius:8px; padding:7px 10px; align-items:flex-start; }
.rc-row.rc-opinion .rc-k{ color:#c2410c; font-weight:700; }
.rc-row.rc-opinion > span:last-child{ color:#b91c1c; font-weight:600; line-height:1.5; }
.rc-row.rc-opinion:first-child{ margin-top:6px; }
.rc-sec { font-weight:700; margin:14px 0 8px; padding-top:10px; border-top:1px dashed var(--border-subtle); }
.rc-haz { display:flex; gap:10px; padding:10px; border:1px solid var(--border-subtle); border-radius:10px; margin-bottom:8px; background:var(--bg-input); }
.rh-i { width:22px; height:22px; border-radius:50%; background:var(--brand); color:#fff; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.rc-photos { display:flex; flex-wrap:wrap; gap:8px; }
.rc-photo { width:120px; height:90px; object-fit:cover; border-radius:8px; cursor:pointer; border:1px solid var(--border-subtle); }
.rc-sign { display:block; width:auto; max-width:260px; height:auto; max-height:180px; object-fit:contain; object-position:center; background:#fff; border:1px solid var(--border-subtle); border-radius:6px; padding:8px; box-sizing:border-box; }

/* 整改单审核页移动端适配 */
@media (max-width: 1100px){
  .rect-audit .rc-head{ grid-template-columns:1fr 1fr; gap:8px 14px; }
  .rect-audit .rc-row{ flex-direction:row; align-items:baseline; gap:8px; }
  .rect-audit .rc-k{ width:74px; flex-shrink:0; font-size:12px; }
  .rect-audit .rc-row > span:last-child{ word-break:break-all; }
  .rect-audit .rc-haz{ flex-direction:column; gap:8px; }
  .rect-audit .rh-desc{ font-size:13px; }
  .rect-audit .rc-photos{ gap:6px; }
  .rect-audit .rc-photo{ width:92px; height:66px; aspect-ratio:auto; object-fit:cover; }
  .rect-audit .rc-sign{ display:block; width:auto; max-width:100%; max-height:160px; object-fit:contain; object-position:center; }
  .rect-audit .rc-sec{ font-size:14px; }
  .rect-audit > div button{ flex:1; min-height:44px; font-size:15px; }
}

/* Form */
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.form-item { margin-bottom:20px; }
.form-item label { display:block; margin-bottom:7px; font-size:12.5px; font-weight:700; color:var(--txt-secondary); text-transform:uppercase; font-family:var(--font-mono); }
.form-item label .req { color:var(--danger); }
.form-item input,.form-item select,.form-item textarea { width:100%; height:44px; padding:0 14px; background:var(--bg-input); border:1px solid var(--border-input); border-radius:10px; color:var(--txt-primary); font-size:14px; outline:none; transition:all 0.16s ease; font-family:var(--font-sans); }
.form-item input:focus,.form-item select:focus,.form-item textarea:focus { border-color:var(--brand); box-shadow:0 0 0 3px rgba(23,74,58,0.08); background:var(--bg-input); }
.form-item textarea { height:auto; padding:12px 14px; min-height:92px; resize:vertical; }
.form-item .hint { font-size:12px; color:var(--txt-tertiary); margin-top:6px; }
.form-inline { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
select option { background:var(--bg-card); color:var(--txt-primary); }

/* ===== Custom Select (replaces native dropdown popup) ===== */
.cf-select { position:relative; display:inline-block; width:100%; vertical-align:middle; }
.cf-select-trigger { width:100%; display:flex; align-items:center; justify-content:space-between; gap:8px; height:44px; padding:0 14px; background:var(--bg-input); border:1px solid var(--border-input); border-radius:10px; color:var(--txt-primary); font-size:14px; font-family:var(--font-sans); line-height:1.2; cursor:pointer; transition:all .16s ease; text-align:left; }
.cf-select-trigger:hover { border-color:var(--border-active); }
.cf-select-trigger.open, .cf-select-trigger:focus { border-color:var(--brand); box-shadow:0 0 0 3px rgba(23,74,58,0.08); background:var(--bg-input); outline:none; }
.cf-select-arrow { font-size:11px; color:var(--txt-tertiary); transition:transform .2s ease; flex-shrink:0; }
.cf-select-trigger.open .cf-select-arrow { transform:rotate(180deg); color:var(--brand); }
.cf-select-value { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cf-select-menu { position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:100000; margin:0; padding:6px; list-style:none; background:var(--bg-card); border:1px solid var(--border-card); border-radius:12px; box-shadow:var(--shadow-modal); max-height:264px; overflow-y:auto; opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .16s ease, transform .16s ease, visibility .16s; }
.cf-select-menu.open { opacity:1; visibility:visible; transform:translateY(0); }
.cf-select-option { display:flex; align-items:center; padding:10px 12px; border-radius:8px; font-size:14px; font-family:var(--font-sans); color:var(--txt-primary); cursor:pointer; transition:all .12s ease; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cf-select-option:hover, .cf-select-option.hover { background:var(--bg-hover); color:var(--brand); }
.cf-select-option.selected { background:var(--brand-soft); color:var(--brand); font-weight:600; }
.cf-select-option.selected::after { content:'\f00c'; font-family:'Font Awesome 6 Free'; font-weight:900; margin-left:auto; font-size:12px; }
.cf-select-option.disabled { opacity:.45; cursor:not-allowed; }
.cf-select-option.disabled:hover { background:transparent; color:var(--txt-primary); }
/* filter-row selects: compact */
.filter-row .cf-select-trigger { height:34px; padding:0 8px; font-size:13px; border-radius:6px; }
.filter-row .cf-select-menu { font-size:13px; }
.filter-row .cf-select-option { padding:7px 10px; font-size:13px; }
/* pagination size select */
.pagi-size .cf-select { width:auto; }
.pagi-size .cf-select-trigger { height:32px; padding:0 8px; font-size:12px; border-radius:5px; }

/* ===== Page transition (sidebar nav) ===== */
#mainContent { will-change:opacity, transform; }
#mainContent.page-enter { animation:pageIn .42s cubic-bezier(.22,.61,.36,1) both; }
#mainContent.page-exit { animation:pageOut .17s ease both; }
@keyframes pageIn {
  from { opacity:0; transform:translateY(14px) scale(.992); }
  to   { opacity:1; transform:translateY(0) scale(1); }
}
@keyframes pageOut {
  from { opacity:1; transform:translateY(0); }
  to   { opacity:0; transform:translateY(-8px); }
}

/* Modal */
.modal-overlay { display:none; position:fixed; inset:0; background:rgba(20,55,43,0.45); z-index:9999; align-items:center; justify-content:center; }
.modal-overlay.show { display:flex; }
.modal { background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius-lg); width:580px; max-width:calc(100vw - 40px); max-height:85vh; display:flex; flex-direction:column; box-shadow:var(--shadow-modal); animation:modalIn 0.22s ease; }
@keyframes modalIn { from{opacity:0;transform:scale(0.98) translateY(6px);} to{opacity:1;transform:scale(1) translateY(0);} }
.modal-hd { padding:22px 26px; border-bottom:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:space-between; }
.modal-hd h3 { font-size:19px; font-weight:700; font-family:var(--font-serif); }
.modal-hd .close { width:36px; height:36px; border:none; background:none; cursor:pointer; color:var(--txt-tertiary); border-radius:999px; display:flex; align-items:center; justify-content:center; font-size:22px; transition:all var(--transition); }
.modal-hd .close:hover { background:var(--bg-input); color:var(--txt-primary); }
.modal-bd { padding:24px 26px; overflow-y:auto; flex:1; }
.modal-ft { padding:16px 26px; border-top:1px solid var(--border-subtle); display:flex; justify-content:flex-end; gap:8px; }

/* Toast */
.toast { position:fixed; top:24px; left:50%; transform:translateX(-50%); z-index:99999; padding:14px 30px; border-radius:999px; font-size:14px; font-weight:600; box-shadow:0 8px 28px rgba(23,74,58,0.18); animation:toastIn 0.3s ease; border:1px solid; display:none; }
@keyframes toastIn { from{opacity:0;transform:translateX(-50%) translateY(-12px);} to{opacity:1;transform:translateX(-50%) translateY(0);} }
.toast.success { background:#e8f5ed; border-color:var(--success); color:var(--success); }
.toast.error { background:#fdebe8; border-color:var(--danger); color:var(--danger); }
.toast.warning { background:#fef3d6; border-color:var(--warning); color:var(--warning); }
.toast.info { background:var(--brand-soft); border-color:var(--brand); color:var(--brand); }

/* Empty */
.empty { padding:72px 20px; text-align:center; color:var(--txt-tertiary); }
.empty i { font-size:58px; margin-bottom:16px; opacity:0.15; display:block; }

/* Grid & Zone */
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.zone-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(420px,1fr)); gap:18px; }
.zone-card { background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-card); }
.zone-card .zc-hd { padding:18px 24px; background:#fbfdfa; border-bottom:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:space-between; }
.zone-card .zc-hd .zc-name { font-weight:700; font-size:16px; display:flex; align-items:center; gap:10px; }
.zone-card .zc-hd .zc-name i { color:var(--brand); }
.zone-card .zc-bd { padding:6px 0; }
.zone-card .dev-row { display:flex; align-items:center; justify-content:space-between; padding:15px 24px; border-bottom:1px solid var(--border-subtle); gap:16px; }
.zone-card .dev-row:last-child { border-bottom:none; }
.zone-card .dev-row:hover { background:var(--bg-hover); }
.zone-card .dev-row .dr-name { font-size:14px; font-weight:600; display:flex; align-items:center; gap:8px; }
.zone-card .zc-ft { padding:12px 24px; border-top:1px dashed var(--border-subtle); }

.cp-banner { padding:10px 14px; border-radius:10px; font-size:13px; margin-bottom:14px; }
.cp-banner.ok { background:rgba(34,197,94,.12); color:#16a34a; }
.cp-banner.warn { background:rgba(234,179,8,.14); color:#ca8a04; }
.cp-banner.info { background:rgba(59,130,246,.12); color:#2563eb; }
.cp-standard { background:var(--bg-input); border:1px solid var(--border-card); border-radius:10px; padding:10px 14px; font-size:13px; color:var(--txt-secondary); margin-bottom:14px; }
.ro-display { padding:10px 12px; border:1px solid var(--border-card); border-radius:10px; background:var(--bg-input); color:var(--txt-primary); font-weight:600; }
.check-radios.disabled { opacity:.6; pointer-events:none; }
.inspect-card { background:var(--bg-card); border:1px solid var(--border-card); border-radius:var(--radius); padding:20px 24px; display:flex; align-items:center; gap:20px; cursor:pointer; margin-bottom:12px; box-shadow:var(--shadow-card); transition:all 0.18s ease; }
.inspect-card:hover { border-color:var(--brand); transform:translateY(-1px); }
.inspect-card .ic-icon { width:58px; height:58px; border-radius:18px; background:var(--brand-soft); display:flex; align-items:center; justify-content:center; font-size:24px; color:var(--brand); flex-shrink:0; }
.inspect-card .ic-info { flex:1; }
.inspect-card .ic-info h4 { font-size:16px; font-weight:700; }
.inspect-card .ic-info p { font-size:12.5px; color:var(--txt-tertiary); margin-top:4px; }

/* Tabs */
.tabs { display:inline-flex; gap:6px; margin-bottom:28px; padding:5px; background:var(--brand-soft); border-radius:999px; }
.tabs a { padding:10px 28px; border-radius:999px; color:var(--txt-secondary); cursor:pointer; font-size:14px; font-weight:500; text-decoration:none; }
.tabs a.active { background:var(--brand); color:#fff; font-weight:600; }



/* V5 Theme Override */
/* ===== V5 Quantum Holo · 量子全息 Theme — 深夜蓝 + 青霓虹 + HUD ===== */

/* Body & 全息深蓝背景 + 点阵网格 + 扫描光带 */
body {
  background:
    radial-gradient(1200px 600px at 15% -10%, rgba(34,211,238,0.14), transparent 60%),
    radial-gradient(900px 500px at 100% 30%, rgba(16,185,129,0.10), transparent 55%),
    radial-gradient(700px 400px at 50% 110%, rgba(59,130,246,0.12), transparent 60%),
    var(--bg-body);
  color: var(--txt-primary);
  font-size: 14.5px;
  font-family: var(--font-sans);
  letter-spacing: 0.01em;
}
body::before {
  /* 点阵网格（V5 才显示） */
  content: '';
  position: fixed; inset: 0; z-index: -1;
  background-image: radial-gradient(circle at 1px 1px, rgba(34,211,238,0.12) 0.6px, transparent 1px);
  background-size: 22px 22px;
  opacity: 0.55;
  pointer-events: none;
  mask-image: radial-gradient(ellipse at 50% 20%, #000 0%, transparent 85%);
}
body::after {
  /* 扫描光带：停用常驻动画（整页 mix-blend-mode 合成很贵），保留静态淡光带 */
  content: '';
  position: fixed;
  left: 0; right: 0;
  height: 160px;
  top: 0;
  background: linear-gradient(180deg, rgba(34,211,238,0.06), transparent);
  pointer-events: none;
  z-index: -1;
  animation: none;
  opacity: 0.2;
}
@media (prefers-reduced-motion: reduce) {
  body::after { animation: none; opacity: 0.2; }
}
@keyframes scanSweepV5 {
  0%   { transform: translateY(-10vh);  opacity: 0; }
  10%  { opacity: 0.9; }
  60%  { transform: translateY(110vh); opacity: 0.5; }
  100% { transform: translateY(110vh); opacity: 0; }
}

/* Layout */
.sider {
  width: var(--sider-w);
  flex-shrink: 0;
  background: var(--sider-bg);
  border-right: 1px solid var(--sider-border);
  box-shadow: 6px 0 40px -10px rgba(0,0,0,0.6);
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
}
.sider::after {
  content: '';
  position: absolute; top: 0; right: -1px; bottom: 0; width: 1px;
  background: linear-gradient(180deg, var(--brand) 0%, transparent 70%);
  opacity: 0.5;
  filter: drop-shadow(0 0 4px rgba(34,211,238,0.5));
}
.main { margin-left: var(--sider-w); }
.sider-logo {
  border-bottom: 1px solid var(--sider-border);
  padding: 0 22px;
  gap: 20px;
  height: 116px;
  position: relative;
}
.sider-logo::after {
  content: '';
  position: absolute; left: 22px; right: 22px; bottom: -1px; height: 1px;
  background: linear-gradient(90deg, var(--brand) 0%, transparent 70%);
  filter: drop-shadow(0 0 4px rgba(34,211,238,0.5));
}
.sider-logo .logo-icon {
  width: 60px; height: 60px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--brand), var(--brand2));
  color: #05131E;
  font-size: 30px;
  box-shadow: var(--brand-glow);
}
.sider-logo .logo-text {
  font-size: 26px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 2.5px;
  font-family: var(--font-serif);
  line-height: 1.15;
}
.sider-logo .logo-sub {
  color: rgba(176,205,235,0.45);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 3.5px;
  margin-top: 3px;
  font-family: var(--font-mono);
  text-transform: uppercase;
}
.sider-nav { flex: none; padding: 14px 0; }
.sider-nav .nav-section {
  padding: 0 26px;
  margin: 22px 0 10px;
  font-size: 10px;
  color: rgba(255,255,255,0.38);
  font-family: var(--font-mono);
  letter-spacing: 2.2px;
  font-weight: 700;
  text-transform: uppercase;
}
.sider-nav .nav-item {
  height: 42px;
  font-size: 14px;
  gap: 13px;
  padding: 0 20px;
  margin: 3px 14px;
  border-radius: 10px;
  color: var(--sider-text);
  letter-spacing: 0.5px;
  border: 1px solid transparent;
  transition: all 0.22s cubic-bezier(0.4,0,0.2,1);
  position: relative;
}
.sider-nav .nav-item i {
  opacity: 0.75;
  font-size: 15px;
  transition: opacity 0.2s;
}
.sider-nav .nav-item:hover {
  color: #fff;
  background: rgba(255,255,255,0.04);
  border-color: rgba(34,211,238,0.2);
}
.sider-nav .nav-item.active {
  color: #fff;
  background: var(--sider-active-bg);
  border-color: rgba(34,211,238,0.35);
  font-weight: 600;
}
.sider-nav .nav-item.active::before {
  content:'';
  position: absolute;
  left: -14px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 22px;
  background: linear-gradient(180deg, var(--brand) 0%, var(--brand2) 100%);
  border-radius: 0 4px 4px 0;
  box-shadow: 0 0 12px rgba(34,211,238,0.65);
}
.sider-nav .nav-item.active i {
  opacity: 1;
  color: var(--brand);
}
/* ===== 系统设置 折叠子菜单（v5）===== */
.sider-nav .nav-group {
  margin: 4px 12px;
  border-radius: 10px;
}
.sider-nav .nav-group-head {
  display: flex; align-items: center; gap: 13px;
  padding: 0 20px; height: 42px;
  color: var(--sider-text); cursor: pointer;
  font-size: 14px; font-weight: 500; letter-spacing: 0.5px;
  border-radius: 10px; border: 1px solid transparent;
  transition: all 0.22s cubic-bezier(0.4,0,0.2,1);
}
.sider-nav .nav-group-head:hover {
  color: #fff; background: rgba(255,255,255,0.04); border-color: rgba(34,211,238,0.2);
}
.sider-nav .nav-group-head.active {
  color: #fff; background: var(--sider-active-bg);
  border-color: rgba(34,211,238,0.35); font-weight: 600;
}
.sider-nav .nav-group-head i {
  width: 18px; text-align: center; font-size: 15px; opacity: 0.75;
}
.sider-nav .nav-group-head .nav-group-arrow {
  margin-left: auto; width: auto; font-size: 11px; transition: transform 0.22s;
}
.sider-nav .nav-group.open .nav-group-head .nav-group-arrow { transform: rotate(180deg); }
.sider-nav .nav-group-body {
  max-height: 0; overflow: hidden; transition: max-height 0.25s ease;
}
.sider-nav .nav-group.open .nav-group-body { max-height: 320px; }
.sider-nav .nav-item.nav-sub {
  height: 38px; font-size: 13.5px; gap: 12px; padding: 0 20px 0 34px; margin: 2px 6px 2px 10px;
  position: relative;
}
.sider-nav .nav-item.nav-sub i { font-size: 13px; }
.sider-footer {
  padding: 16px 18px;
  border-top: 1px solid var(--sider-border);
  color: var(--txt-tertiary);
  font-size: 12px;
  background: linear-gradient(180deg, transparent, rgba(34,211,238,0.04));
}
.sider-footer .avatar {
  background: linear-gradient(135deg, var(--brand), var(--brand2));
  color: #05131E;
  width: 32px; height: 32px;
  box-shadow: 0 0 10px rgba(34,211,238,0.4);
  font-weight: 700;
}

/* Content */
.content { padding: 28px 34px; }

/* Stats */
.stat-grid { gap: 16px; margin-bottom: 28px; }
.stat-card {
  background: var(--bg-card);
  border: 1px solid var(--border-card);
  backdrop-filter: blur(10px) saturate(120%);
  padding: 18px 20px;
  gap: 14px;
  position: relative;
  overflow: hidden;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: var(--shadow-card);
}
.stat-card::before {
  /* 顶部霓虹条 */
  content: '';
  position: absolute; left: 0; top: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--brand), var(--brand2), transparent);
  opacity: 0.85;
}
.stat-card::after {
  /* 右下光晕 */
  content: '';
  position: absolute;
  top: -50px; right: -50px;
  width: 150px; height: 150px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(34,211,238,0.18) 0%, transparent 70%);
  pointer-events: none;
}
.stat-card:hover {
  border-color: var(--border-active);
  box-shadow: var(--shadow-hover);
  transform: translateY(-3px);
}
.stat-card .sc-icon {
  width: 48px; height: 48px;
  border-radius: 14px;
  font-size: 22px;
  position: relative;
  z-index: 1;
  border: 1px solid var(--border-card);
}
.stat-card .sc-icon.blue {
  background: rgba(34,211,238,0.15);
  color: var(--brand);
  box-shadow: 0 0 14px rgba(34,211,238,0.18);
}
.stat-card .sc-icon.green {
  background: var(--success-dim);
  color: var(--success);
  border-color: rgba(16,185,129,0.3);
}
.stat-card .sc-icon.orange {
  background: var(--warning-dim);
  color: var(--warning);
  border-color: rgba(245,158,11,0.3);
}
.stat-card .sc-icon.red {
  background: var(--danger-dim);
  color: var(--danger);
  border-color: rgba(239,68,68,0.3);
}
.stat-card .sc-icon.gray {
  background: var(--bg-input);
  color: var(--txt-secondary);
}
.stat-card .sc-val {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -1.2px;
  font-family: var(--font-mono);
  position: relative; z-index: 1;
  background: linear-gradient(180deg, var(--txt-primary) 0%, var(--brand) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.stat-card .sc-label {
  font-size: 11px;
  color: var(--txt-tertiary);
  font-weight: 600;
  letter-spacing: 0.8px;
  white-space: nowrap;
  text-transform: uppercase;
  font-family: var(--font-mono);
}

/* Page header */
.page-hd {
  margin-bottom: 28px;
  padding-bottom: 18px;
  position: relative;
}
.page-hd::after {
  content: '';
  position: absolute; left: 0; bottom: 0;
  width: 120px; height: 2px;
  background: linear-gradient(90deg, var(--brand), transparent);
  filter: drop-shadow(0 0 4px rgba(34,211,238,0.5));
}
.page-hd h2 {
  font-size: 30px;
  font-weight: 800;
  font-family: var(--font-serif);
  letter-spacing: -0.6px;
  color: var(--txt-primary);
}
.page-hd p {
  color: var(--txt-secondary);
  font-size: 13.5px;
  margin-top: 6px;
}
.page-hd .actions { margin-top: 20px; }

/* Panel */
.panel {
  background: var(--bg-card);
  border: 1px solid var(--border-card);
  backdrop-filter: blur(10px) saturate(120%);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.panel-hd {
  padding: 18px 24px;
  border-bottom: 1px solid;
  border-image: linear-gradient(90deg, var(--brand), transparent) 1;
  background: linear-gradient(180deg, var(--bg-card), transparent);
}
.panel-hd h3 {
  font-size: 17px;
  font-weight: 700;
  font-family: var(--font-sans);
  gap: 10px;
  color: var(--txt-primary);
  letter-spacing: -0.2px;
}
.panel-hd h3 i {
  font-size: 15px;
  color: var(--brand);
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 8px;
  background: var(--brand-dim);
  border: 1px solid var(--border-subtle);
}
.panel-bd { padding: 24px 26px; }

/* Table */
.tbl th {
  padding: 14px 20px;
  font-size: 11px;
  font-weight: 700;
  color: var(--txt-secondary);
  letter-spacing: 1.2px;
  font-family: var(--font-mono);
  text-transform: uppercase;
  border-bottom: 1px solid var(--border-subtle);
  background: linear-gradient(180deg, rgba(34,211,238,0.10), rgba(34,211,238,0.02));
}
.tbl td {
  padding: 14px 20px;
  font-size: 13.5px;
  color: var(--txt-primary);
  text-align: center;
  border-bottom: 1px solid var(--border-subtle);
  white-space: nowrap;
}
.tbl tbody tr { transition: background 0.14s ease; }
.tbl tbody tr:hover {
  background: rgba(34,211,238,0.05);
}
.tbl tbody tr:last-child td { border-bottom: none; }
/* 紧凑表格（P09 店铺设备汇总）：压缩行高，一屏显示更多行 */
.tbl.tbl-compact th { padding: 6px 8px; font-size: 10.5px; letter-spacing: 0.5px; }
.tbl.tbl-compact td { padding: 5px 8px; font-size: 12px; }

/* Tags */
.tag {
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 600;
  border: 1px solid;
  letter-spacing: 0.2px;
  line-height: 1.5;
}
.tag.blue {
  background: var(--brand-dim);
  color: var(--brand);
  border-color: rgba(34,211,238,0.3);
}
.tag.green {
  background: var(--success-dim);
  color: var(--success);
  border-color: rgba(16,185,129,0.3);
}
.tag.orange {
  background: var(--warning-dim);
  color: var(--warning);
  border-color: rgba(245,158,11,0.35);
}
.tag.red {
  background: var(--danger-dim);
  color: var(--danger);
  border-color: rgba(239,68,68,0.35);
}
.tag.gray {
  background: var(--bg-input);
  color: var(--txt-tertiary);
  border-color: var(--border-subtle);
}
.tag.purple {
  background: rgba(124, 58, 237, 0.15);
  color: #a78bfa;
  border-color: rgba(124, 58, 237, 0.3);
}
.tag.teal {
  background: rgba(46, 196, 182, 0.15);
  color: #2dd4bf;
  border-color: rgba(46, 196, 182, 0.3);
}
/* 青色 tag：P10「已开罚单」状态（对应顶部卡片 .sc-icon.cyan 的同一语义色） */
.tag.cyan {
  background: rgba(0, 188, 212, 0.15);
  color: #00bcd4;
  border-color: rgba(0, 188, 212, 0.3);
}
/* 靛蓝 tag：P10 整改维度「反馈审核」细分角标（2026-09-23）
   语义色对齐商管小程序 .tag-fb（靛蓝 #283593），深色主题下按 rgba 半透明适配 */
.tag.indigo {
  background: rgba(99, 102, 241, 0.15);
  color: #a5b4fc;
  border-color: rgba(99, 102, 241, 0.3);
}
.tag.dot::before {
  width: 6px; height: 6px;
  box-shadow: 0 0 6px currentColor;
}
.shop-grid {
  background: rgba(255,255,255,0.02);
  border-color: var(--border-card);
}
.shop-item.checked {
  background: rgba(34,211,238,0.1);
  border-color: rgba(34,211,238,0.3);
}
.shop-item input[type=checkbox] {
  accent-color: var(--brand);
}
.batch-bar {
  background: rgba(0,0,0,0.2);
  border: 1px solid var(--border-card);
}

/* Buttons */
.btn {
  height: 40px;
  border-radius: 12px;
  font-size: 13.5px;
  font-weight: 600;
  gap: 8px;
  padding: 0 22px;
  font-family: var(--font-sans);
  letter-spacing: 0.2px;
}
.btn-solid {
  background: linear-gradient(135deg, var(--brand), var(--brand2));
  color: #04131D;
  border: none;
  font-weight: 700;
}
.btn-solid:hover {
  transform: translateY(-1px);
  box-shadow: var(--brand-glow);
}
.btn-outline {
  background: transparent;
  color: var(--txt-secondary);
  border-color: var(--border-input);
}
.btn-outline:hover {
  color: var(--brand);
  border-color: var(--border-active);
  background: var(--brand-dim);
  box-shadow: 0 0 0 1px rgba(34,211,238,0.25) inset;
}
/* 弹窗内超链接（下载PDF/附件）在深色底上用亮青霓虹，清晰可读 */
.btn.btn-xs {
  color: var(--brand);
  border: 1px solid rgba(34,211,238,0.35);
  background: rgba(34,211,238,0.08);
  border-radius: 8px;
  padding: 4px 10px;
  height: auto;
  font-size: 12.5px;
}
.btn.btn-xs:hover {
  color: #E6F2FF;
  border-color: var(--border-active);
  background: var(--brand-dim);
  box-shadow: var(--brand-glow);
}
.btn-ghost {
  background: transparent;
  border: none;
  color: var(--brand);
  padding: 5px 12px;
  font-size: 12.5px;
  border-radius: 8px;
  font-weight: 600;
  height: auto;
}
.btn-ghost:hover {
  background: var(--brand-dim);
}
.btn-ghost.danger { color: var(--danger); }
.btn-ghost.danger:hover { background: var(--danger-dim); color: var(--danger); }
.btn-sm {
  height: 32px;
  padding: 0 14px;
  font-size: 12.5px;
  border-radius: 9px;
}
.btn-lg {
  height: 46px;
  padding: 0 32px;
  font-size: 15px;
  border-radius: 14px;
}

/* Form */
.form-row { gap: 16px; }
.form-item { margin-bottom: 18px; }
.form-item label {
  font-size: 12px;
  font-weight: 700;
  color: var(--txt-secondary);
  letter-spacing: 0.6px;
  font-family: var(--font-mono);
  text-transform: uppercase;
}
.form-item input,
.form-item select,
.form-item textarea {
  height: 40px;
  padding: 0 14px;
  background: var(--bg-input);
  color: var(--txt-primary);
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  font-size: 13.5px;
  font-family: var(--font-sans);
  transition: all 0.18s ease;
}
.form-item input:focus,
.form-item select:focus,
.form-item textarea:focus {
  border-color: var(--border-active);
  box-shadow: 0 0 0 1px rgba(34,211,238,0.3), 0 0 18px rgba(34,211,238,0.12);
  background: var(--bg-card-solid);
  outline: none;
}
.form-item textarea { padding: 12px 14px; min-height: 96px; }
.form-item .hint {
  font-size: 11.5px;
  color: var(--txt-tertiary);
}
select option {
  background: var(--bg-card-solid) !important;
  color: var(--txt-primary);
}

/* Filter row inputs (table filters) */
.filter-row input,
.filter-row select {
  background: var(--bg-input);
  color: var(--txt-primary);
  border-color: var(--border-subtle);
}
.filter-row input:focus,
.filter-row select:focus {
  background: var(--bg-card-solid);
  border-color: var(--border-active);
  box-shadow: 0 0 0 1px rgba(34,211,238,0.3), 0 0 18px rgba(34,211,238,0.12);
}

/* Inspection search table inputs */
.insp-search-table input,
.insp-search-table select {
  background: var(--bg-input);
  color: var(--txt-primary);
  border-color: var(--border-subtle);
}
.insp-search-table input:focus,
.insp-search-table select:focus {
  background: var(--bg-card-solid);
  border-color: var(--border-active);
  box-shadow: 0 0 0 1px rgba(34,211,238,0.3), 0 0 18px rgba(34,211,238,0.12);
}
.insp-search-table select {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath fill='%23567392' d='M0 0l4 5 4-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 6px center;
  background-size: 7px 4px;
}

/* Pagination size select */
.pagi-size select {
  background: var(--bg-input);
  color: var(--txt-primary);
  border-color: var(--border-subtle);
}

.cf-select-trigger {
  background: var(--bg-input);
  border-color: var(--border-subtle);
  color: var(--txt-primary);
}
.cf-select-trigger.open,
.cf-select-trigger:focus {
  background: var(--bg-card-solid);
  box-shadow: 0 0 0 1px rgba(34,211,238,0.3), 0 0 16px rgba(34,211,238,0.1);
  border-color: var(--border-active);
}
.cf-select-menu {
  background: var(--bg-card-solid);
  border-color: rgba(34,211,238,0.25);
  box-shadow: 0 16px 40px rgba(0,0,0,0.6), 0 0 0 1px rgba(34,211,238,0.15) inset;
}
.cf-select-option { color: var(--txt-primary); }
.cf-select-option:hover,
.cf-select-option.hover {
  background: rgba(34,211,238,0.08);
  color: var(--brand);
}
.cf-select-option.selected {
  background: var(--brand-dim);
  color: var(--brand);
}
.cf-select-option.selected::after { color: var(--brand); }

/* Modal */
.modal-overlay {
  background: rgba(0, 0, 0, 0.65);
  backdrop-filter: blur(6px);
}
.modal {
  background: linear-gradient(180deg, #0F213A 0%, #0A1728 100%);
  backdrop-filter: blur(12px);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-modal), 0 0 0 1px rgba(34,211,238,0.25) inset;
}
.modal-hd {
  padding: 20px 24px;
  border-bottom: 1px solid var(--border-subtle);
  position: relative;
}
.modal-hd::after {
  content:'';
  position: absolute; left: 24px; right: 24px; bottom: -1px; height: 1px;
  background: linear-gradient(90deg, var(--brand), transparent);
}
.modal-hd h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--txt-primary);
  font-family: var(--font-sans);
  letter-spacing: -0.2px;
  display: flex; align-items: center; gap: 10px;
}
.modal-hd h3 i { color: var(--brand); }
.modal-hd .close {
  width: 34px; height: 34px;
  border-radius: 9px;
  color: var(--txt-secondary);
  font-size: 20px;
  border: 1px solid var(--border-subtle);
}
.modal-hd .close:hover {
  background: var(--danger-dim);
  color: var(--danger);
  border-color: var(--danger);
}
.modal-bd { padding: 24px; }
.modal-ft {
  padding: 16px 24px 20px;
  border-top: 1px solid var(--border-subtle);
  background: rgba(0,0,0,0.2);
}

/* Toast */
.toast {
  border-radius: 12px;
  font-size: 13.5px;
  padding: 13px 30px;
  font-weight: 600;
  box-shadow: var(--shadow-modal);
  backdrop-filter: blur(8px);
  border: 1px solid;
}
.toast.success { background: var(--success-dim); border-color: var(--success); color: var(--success); }
.toast.error { background: var(--danger-dim); border-color: var(--danger); color: var(--danger); }
.toast.warning { background: var(--warning-dim); border-color: var(--warning); color: var(--warning); }
.toast.info { background: var(--brand-dim); border-color: var(--brand); color: var(--brand); }

/* Empty */
.empty { padding: 72px 20px; color: var(--txt-tertiary); }
.empty i {
  font-size: 56px;
  opacity: 0.18;
  color: var(--brand);
}
.empty p { font-size: 14px; }

/* Grid */
.grid-2 { gap: 20px; }

/* Zone cards */
.zone-card {
  background: var(--bg-card);
  backdrop-filter: blur(10px);
  border: 1px solid var(--border-card);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
}
.zone-card:hover {
  border-color: rgba(34,211,238,0.4);
  box-shadow: var(--shadow-hover);
}
.zone-card .zc-hd {
  padding: 14px 22px;
  background: var(--brand-dim);
  border-bottom: 1px solid var(--border-subtle);
}
.zone-card .zc-hd .zc-name {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--txt-primary);
  font-family: var(--font-sans);
}
.zone-card .zc-hd .zc-summary {
  font-size: 11.5px;
  color: var(--txt-tertiary);
}
.zone-card .dev-row {
  padding: 14px 22px;
  gap: 14px;
  transition: background 0.14s ease;
}
.zone-card .dev-row:hover {
  background: rgba(34,211,238,0.04);
}
.zone-card .dev-row .dr-name {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--txt-primary);
}
.zone-card .zc-ft { padding: 12px 22px; }

.inspect-card {
  background: var(--bg-card);
  border: 1px solid var(--border-card);
  padding: 18px 22px;
  gap: 18px;
  backdrop-filter: blur(8px);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
  transition: all 0.22s ease;
}
.inspect-card:hover {
  border-color: var(--border-active);
  box-shadow: var(--shadow-hover);
  transform: translateY(-2px);
}
.inspect-card .ic-icon {
  width: 50px; height: 50px;
  border-radius: 14px;
  background: var(--brand-dim);
  color: var(--brand);
  font-size: 22px;
  border: 1px solid rgba(34,211,238,0.2);
}
.inspect-card .ic-info h4 {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--txt-primary);
}
.inspect-card .ic-info p {
  font-size: 12px;
  color: var(--txt-secondary);
}

/* Check view */
.check-panel { max-width: 540px; }
.check-panel .cp-card {
  background: var(--bg-card);
  border: 1px solid var(--border-card);
  backdrop-filter: blur(10px);
  padding: 28px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
}
.check-panel .cp-card h2 {
  font-size: 19px;
  font-weight: 800;
  color: var(--txt-primary);
}
.check-panel .cp-card .cp-meta {
  font-size: 12.5px;
  color: var(--txt-secondary);
}
.check-panel .photo-zone {
  border: 2px dashed var(--border-input);
  padding: 44px;
  border-radius: 14px;
  transition: all 0.18s ease;
}
.check-panel .photo-zone:hover {
  border-color: var(--border-active);
  background: var(--brand-dim);
}
.check-panel .photo-zone.done {
  border-color: var(--success);
  background: var(--success-dim);
}
.check-panel .photo-zone i {
  font-size: 42px;
  color: var(--txt-tertiary);
}
.check-panel .photo-zone.done i { color: var(--success); }
.check-panel .check-radios label {
  border-color: var(--border-input);
  border-radius: 11px;
}
.check-panel .check-radios label.ok:has(input:checked) {
  border-color: var(--success);
  background: var(--success-dim);
  color: var(--success);
}
.check-panel .check-radios label.ng:has(input:checked) {
  border-color: var(--danger);
  background: var(--danger-dim);
  color: var(--danger);
}

/* Tabs */
.tabs {
  background: var(--bg-card);
  border: 1px solid var(--border-card);
  border-radius: 12px;
  gap: 4px;
  padding: 4px;
  backdrop-filter: blur(8px);
}
.tabs a {
  padding: 9px 22px;
  border-radius: 9px;
  color: var(--txt-secondary);
  font-size: 13.5px;
  font-weight: 500;
  font-family: var(--font-sans);
  transition: all 0.18s ease;
}
.tabs a:hover { color: var(--txt-primary); }
.tabs a.active {
  background: var(--brand-dim);
  color: var(--brand);
  font-weight: 700;
  box-shadow: 0 0 0 1px rgba(34,211,238,0.25) inset;
}

/* Env banner (V5 Quantum 青霓虹风) */
.env-banner {
  background: linear-gradient(90deg, rgba(34,211,238,0.85), rgba(16,185,129,0.85));
  color: #04131D;
  border-bottom: 2px solid rgba(0, 0, 0, 0.25);
  font-family: var(--font-mono);
  letter-spacing: 3px;
  font-weight: 700;
  box-shadow: 0 2px 24px rgba(34,211,238,0.3);
}
.env-banner::before {
  content: '◆';
  margin-right: 10px;
  filter: drop-shadow(0 0 4px rgba(255,255,255,0.6));
}
.env-banner::after {
  content: '◆';
  margin-left: 10px;
  filter: drop-shadow(0 0 4px rgba(255,255,255,0.6));
}

/* Scrollbar (V5 霓虹风) */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(34,211,238,0.18);
  border-radius: 999px;
  border: 1px solid rgba(34,211,238,0.3);
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(34,211,238,0.35);
  box-shadow: 0 0 10px rgba(34,211,238,0.5);
}

/* Fix loading text color */
.tbl td.load-cell { color: var(--txt-tertiary); }
.tbl td.load-cell i { color: var(--brand); }

@media(max-width:1100px) {
  .sider { display:none; } .main { margin-left:0; } .content { padding:14px; }
  .stat-grid { grid-template-columns:repeat(2,1fr); }
  .grid-2 { grid-template-columns:1fr; } .form-row { grid-template-columns:1fr; }
}
/* 月度台账 7 卡 3+4 分行（2026-09-22）：12 列网格（3 与 4 的最小公倍数）
   上行 3 张各占 4 列（4×3=12），下行 4 张各占 3 列（3×4=12）→ 两行均满格
   ⚠️ 卡片内联 repeat(12,1fr) 优先级高于媒体查询，窄屏回落必须 !important */
.stat-grid.ml-stat-grid > .stat-card:nth-child(-n+3) { grid-column: span 4; }
.stat-grid.ml-stat-grid > .stat-card:nth-child(n+4) { grid-column: span 3; }
@media(max-width:1500px) {
  .stat-grid.ml-stat-grid { grid-template-columns:repeat(4,1fr) !important; }
  .stat-grid.ml-stat-grid > .stat-card { grid-column: span 1 !important; }
}
@media(max-width:1100px) {
  .stat-grid.ml-stat-grid { grid-template-columns:repeat(2,1fr) !important; }
}



/* ===== User Form (新增/编辑用户) ===== */
.uf-field { position:relative; }
.uf-field > i.uf-ic { position:absolute; left:15px; top:50%; transform:translateY(-50%); color:var(--txt-tertiary); font-size:14px; pointer-events:none; }
.uf-field > input { padding-left:42px !important; }
.uf-sep { height:1px; background:var(--border-subtle); margin:4px 0 22px; }
.uf-sec-title { font-size:12px; font-weight:700; color:var(--txt-secondary); text-transform:uppercase; letter-spacing:0.6px; font-family:var(--font-mono); margin-bottom:14px; display:flex; align-items:center; gap:9px; }
.uf-sec-title i { color:var(--brand); font-size:14px; }

/* 角色选择卡片 */
.uf-role-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.uf-role { position:relative; padding:16px 18px 16px 58px; border:1.5px solid var(--border-input); border-radius:14px; background:var(--bg-input); cursor:pointer; transition:all var(--transition); }
.uf-role:hover { border-color:var(--border-active); }
.uf-role .uf-role-ic { position:absolute; left:16px; top:50%; transform:translateY(-50%); width:32px; height:32px; border-radius:10px; background:var(--brand-soft); color:var(--brand); display:flex; align-items:center; justify-content:center; font-size:15px; transition:all var(--transition); }
.uf-role .uf-role-name { font-size:14.5px; font-weight:700; color:var(--txt-primary); }
.uf-role .uf-role-desc { font-size:11.5px; color:var(--txt-tertiary); margin-top:3px; line-height:1.45; }
.uf-role .uf-role-check { position:absolute; right:14px; top:14px; width:20px; height:20px; border-radius:50%; border:2px solid var(--border-input); display:flex; align-items:center; justify-content:center; color:#fff; font-size:10px; transition:all var(--transition); }
.uf-role.selected { border-color:var(--brand); background:var(--brand-soft); }
.uf-role.selected .uf-role-ic { background:var(--brand); color:#fff; }
.uf-role.selected .uf-role-check { background:var(--brand); border-color:var(--brand); }
.uf-role.selected .uf-role-check::after { content:'\f00c'; font-family:'Font Awesome 6 Free'; font-weight:900; }

/* 权限分配卡片 */
.uf-perm-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.uf-perm { display:flex; align-items:center; gap:12px; padding:13px 15px; border:1.5px solid var(--border-input); border-radius:12px; background:var(--bg-input); cursor:pointer; transition:all var(--transition); user-select:none; }
.uf-perm:hover { border-color:var(--border-active); }
.uf-perm .uf-perm-ic { width:36px; height:36px; border-radius:10px; background:var(--brand-soft); color:var(--brand); display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; transition:all var(--transition); }
.uf-perm .uf-perm-tx { flex:1; min-width:0; }
.uf-perm .uf-perm-name { font-size:13.5px; font-weight:600; color:var(--txt-primary); }
.uf-perm .uf-perm-desc { font-size:11px; color:var(--txt-tertiary); margin-top:1px; line-height:1.4; }
.uf-perm .uf-perm-sw { width:42px; height:24px; border-radius:999px; background:var(--border-input); position:relative; flex-shrink:0; transition:all var(--transition); }
.uf-perm .uf-perm-sw::after { content:''; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,0.2); transition:all var(--transition); }
.uf-perm.selected { border-color:var(--brand); background:var(--brand-soft); }
.uf-perm.selected .uf-perm-ic { background:var(--brand); color:#fff; }
.uf-perm.selected .uf-perm-sw { background:var(--brand); }
.uf-perm.selected .uf-perm-sw::after { left:21px; }
.uf-perm.disabled { opacity:0.5; cursor:not-allowed; }
.uf-perm.disabled .uf-perm-sw { background:var(--brand); }
.uf-perm.disabled .uf-perm-sw::after { left:21px; }
.uf-perm.disabled .uf-perm-ic { background:var(--brand); color:#fff; }
.uf-allhint { font-size:12px; color:var(--brand); background:var(--brand-soft); border-radius:10px; padding:11px 14px; margin-bottom:14px; display:flex; align-items:center; gap:9px; line-height:1.4; }
@media(max-width:560px){ .uf-role-grid,.uf-perm-grid{ grid-template-columns:1fr; } }
.uf-allhint { color: var(--brand); }

/* 设备类型图标 */
.dt-thumb { width:52px; height:52px; vertical-align:middle; color:var(--brand); }
.dt-thumb-empty { color:var(--txt-tertiary); font-size:36px; }
.dt-summary { display:inline-flex; align-items:center; gap:10px; padding:8px 14px; background:var(--brand-soft); border:1px solid rgba(23,74,58,0.12); border-radius:10px; font-size:14.5px; color:var(--txt-secondary); margin-bottom:8px; flex-wrap:wrap; }
.dt-summary b { color:var(--brand); font-weight:700; }
.dt-summary .ds-total { color:var(--txt-primary); }
.dt-summary .ds-sep { color:var(--txt-tertiary); opacity:0.6; }
.dt-summary .ds-key { color:var(--txt-secondary); }
.icon-picker { display:grid; grid-template-columns:repeat(auto-fill,minmax(58px,1fr)); gap:8px; max-height:236px; overflow-y:auto; padding:8px; border:1px solid var(--border-input); border-radius:10px; background:var(--bg-input); }
.icon-picker .ip-item { display:flex; flex-direction:column; align-items:center; gap:4px; padding:8px 4px; border:1.5px solid transparent; border-radius:10px; cursor:pointer; background:#fff; transition:all .15s ease; }
.icon-picker .ip-item:hover { border-color:var(--border-active); }
.icon-picker .ip-item.sel { border-color:var(--brand); background:var(--brand-soft); }
.icon-picker .ip-item img { width:26px; height:26px; object-fit:contain; color:var(--brand); pointer-events:none; }
.icon-picker .ip-item .ip-svg { display:flex; align-items:center; justify-content:center; width:26px; height:26px; color:var(--txt-primary); pointer-events:none; }
.icon-picker .ip-item .ip-svg .line-icon { width:26px; height:26px; }
.icon-picker .ip-item.sel .ip-svg { color:var(--brand); }
.icon-picker .ip-item .ip-label { font-size:10px; color:var(--txt-secondary); text-align:center; line-height:1.2; pointer-events:none; }
.icon-picker .ip-item.sel .ip-label { color:var(--brand); font-weight:600; }
.ip-clear { margin-top:8px; }

/* 页面代码徽章（挂在页面标题行，便于交流时定位当前页面；淡色中性、可复制、不与绿色功能按钮冲突。只显示代码，不含名称） */
/* 侧边栏「智能搜索」入口（默认所有人可见，受权限控制，继承 nav-item 样式，无额外差异） */
.page-code{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;background:rgba(248,249,250,.94);color:#374151;font-size:13px;border:1px solid rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);user-select:text;cursor:text;letter-spacing:.3px;}
/* 页面代码标签（主徽章，淡色中性） */
.pc-code{font-family:var(--font-mono);font-weight:700;color:#1f2937;background:rgba(0,0,0,.06);padding:2px 8px;border-radius:6px;font-size:12px;user-select:text;cursor:pointer;}
/* 弹窗代码标签（带 -D 后缀，用淡蓝色调与主页面徽章区分） */
.pc-code-modal{color:#1d4ed8;background:rgba(37,99,235,.10);}
.sr-group{margin-bottom:14px;}
.sr-title{font-size:13px;font-weight:700;color:var(--txt-tertiary);padding:6px 0;border-bottom:1px solid var(--border-subtle);margin-bottom:6px;}
.sr-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .12s;}
.sr-item:hover{background:var(--bg-hover);}
.sr-label{font-weight:600;font-size:14px;color:var(--txt-primary);}
.sr-meta{font-size:12px;color:var(--txt-tertiary);display:flex;align-items:center;gap:6px;}
.detail-line{font-size:14px;color:var(--txt-body,#444);line-height:1.9;margin-bottom:4px;}
.detail-line b{color:var(--txt-head,#1f2d3d);}
.muted{color:var(--txt-tertiary,#999);font-size:13px;}
.mini-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px;}
.mini-table th,.mini-table td{border:1px solid var(--line,#e6ebf0);padding:6px 8px;text-align:left;}
.mini-table th{background:var(--bg-subtle,#f5f8fa);color:var(--txt-head,#1f2d3d);font-weight:600;}

