/* ============================================
   不动产评估管理系统 - Pro UI v3
   ============================================ */

:root {
  /* Brand - refined indigo for a more premium, professional feel */
  --brand: #4f46e5;
  --brand-light: #6366f1;
  --brand-dark: #3730a3;
  --brand-pale: rgba(79,70,229,0.08);
  --brand-glow: rgba(79,70,229,0.16);

  /* Accent - 莫兰迪低饱和色卡 */
  --green: #8AA68E;
  --green-light: #A0B8A4;
  --green-pale: #f0f4f1;
  --red: #B08585;
  --red-light: #C49A9A;
  --red-pale: #f5eded;
  --amber: #C2A878;
  --amber-pale: #f6f1e8;
  --purple: #9A8AA8;

  /* Neutrals */
  --gray-50: #f9fafb;
  --gray-100: #f3f4f6;
  --gray-200: #e5e7eb;
  --gray-300: #d1d5db;
  --gray-400: #9ca3af;
  --gray-500: #6b7280;
  --gray-600: #4b5563;
  --gray-700: #374151;
  --gray-800: #1f2937;
  --gray-900: #111827;
  --gray-950: #030712;

  /* Semantic */
  --text: var(--gray-900);
  --text-2: var(--gray-600);
  --text-3: var(--gray-400);
  --bg: var(--gray-100);
  --card: #ffffff;
  --border: var(--gray-200);
  --border-l: var(--gray-100);

  /* Sidebar */
  --sb-bg: #ffffff;
  --sb-hover: #f7fafc;
  --sb-active: rgba(79,70,229,0.08);
  --sb-text: #4a5568;
  --sb-text-2: #718096;
  --sb-text-3: #a0aec0;
  --sb-border: #e2e8f0;

  /* Shadow - Premium soft colored shadows (Principle 5: Layered light shadows) */
  --sh-xs: 0 1px 2px rgba(79,70,229,0.04), 0 1px 2px rgba(0,0,0,0.02);
  --sh-sm: 0 2px 4px rgba(79,70,229,0.06), 0 1px 2px rgba(0,0,0,0.03);
  --sh-md: 0 4px 8px rgba(79,70,229,0.08), 0 2px 4px rgba(0,0,0,0.04);
  --sh-lg: 0 8px 16px rgba(79,70,229,0.10), 0 4px 8px rgba(0,0,0,0.04);
  --sh-xl: 0 16px 32px rgba(79,70,229,0.12), 0 8px 16px rgba(0,0,0,0.06);
  /* Hover/Active elevated shadows */
  --sh-hover: 0 6px 12px rgba(79,70,229,0.12), 0 3px 6px rgba(0,0,0,0.05);
  --sh-active: 0 2px 4px rgba(79,70,229,0.08), 0 1px 2px rgba(0,0,0,0.04);

  /* Radius */
  --r-sm: 6px;
  --r: 8px;
  --r-md: 10px;
  --r-lg: 14px;
  --r-xl: 20px;
  --r-full: 9999px;

  /* Transition */
  --t: 0.18s cubic-bezier(0.4,0,0.2,1);
  --t-slow: 0.3s cubic-bezier(0.4,0,0.2,1);

  /* B3 墨蓝金线 · 商务沉稳（侧边栏专用） */
  --ink: #1f2a44;            /* 墨蓝主色 */
  --ink-2: #2f3c5c;          /* 墨蓝亮阶 */
  --gold: #c2a878;           /* 燕麦金 */
  --gold-dark: #a88e5e;      /* 金暗阶 */
  --gold-pale2: #f4f1ea;     /* 米金底 */
  --sb-line: #e6e1d8;        /* 米灰线 */
  --sb-card-border: #e3ddd2; /* 卡片边框 */
  --sb-card-hover: #c9bfa8;  /* 卡片 hover 边框 */
  --sb-ink-text: #454d63;    /* 墨蓝灰文字 */
}

* { margin:0; padding:0; box-sizing:border-box; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
  line-height: 1.5;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes slideUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
@keyframes slideDown { from { opacity:0; transform:translateY(-8px); } to { opacity:1; transform:translateY(0); } }
@keyframes spin { to { transform:rotate(360deg); } }

/* Scrollbar */
::-webkit-scrollbar { width:6px; height:6px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(0,0,0,0.12); border-radius:10px; border:1px solid transparent; background-clip:padding-box; }
::-webkit-scrollbar-thumb:hover { background:rgba(0,0,0,0.22); border:1px solid transparent; background-clip:padding-box; }

/* 嵌套表单滚动条加粗（便于鼠标抓取） */
.nest-table-wrapper > div::-webkit-scrollbar,
.grid-nest-wrapper > div::-webkit-scrollbar,
.nest-fullscreen-body::-webkit-scrollbar { width:16px; height:16px; }
.nest-table-wrapper > div::-webkit-scrollbar-track,
.grid-nest-wrapper > div::-webkit-scrollbar-track,
.nest-fullscreen-body::-webkit-scrollbar-track { background:#f1f3f5; border-radius:8px; }
.nest-table-wrapper > div::-webkit-scrollbar-thumb,
.grid-nest-wrapper > div::-webkit-scrollbar-thumb,
.nest-fullscreen-body::-webkit-scrollbar-thumb { background:#b8c0cc; border-radius:8px; border:2px solid #f1f3f5; background-clip:padding-box; }
.nest-table-wrapper > div::-webkit-scrollbar-thumb:hover,
.grid-nest-wrapper > div::-webkit-scrollbar-thumb:hover,
.nest-fullscreen-body::-webkit-scrollbar-thumb:hover { background:#8a94a6; }
.nest-table-wrapper > div,
.grid-nest-wrapper > div,
.nest-fullscreen-body { scrollbar-width:auto; scrollbar-color:#b8c0cc #f1f3f5; }

/* ============================================
   Layout
   ============================================ */
#app { display:flex; height:100vh; overflow:hidden; }

/* ---- Sidebar - B3 墨蓝金线 · 商务沉稳 ---- */
.app-sider {
  width:250px; min-width:250px;
  background:linear-gradient(180deg, #fbfaf8 0%, #f6f4f0 100%);
  display:flex; flex-direction:column;
  overflow-y:auto;
  border-right:1px solid var(--sb-line);
  z-index:200;
  box-shadow:2px 0 16px rgba(60,52,35,0.05);
}
.app-logo {
  display:flex; align-items:center; gap:9px;
  padding:12px 16px;
  border-bottom:1px solid #eae5db;
}
.app-logo-icon {
  width:30px; height:30px; border-radius:9px;
  background:linear-gradient(145deg, var(--ink-2) 0%, var(--ink) 100%);
  display:flex; align-items:center; justify-content:center;
  color:#fff; flex-shrink:0;
  box-shadow:0 3px 10px rgba(31,42,68,0.35), inset 0 1px 0 rgba(255,255,255,0.12);
}
.app-logo h2 {
  color:#242c3f; font-size:15px; font-weight:700;
  letter-spacing:0.5px; white-space:nowrap;
}

.app-menu { flex:1; padding:6px 0 2px; display:flex; flex-direction:column; gap:5px; }
/* B3 卡片按钮 - 白卡 + 米金图标块 + 激活墨蓝金点 */
.menu-item {
  display:flex; align-items:center; gap:9px;
  margin:0 13px; padding:6px 12px; cursor:pointer;
  border-radius:10px; border:1px solid var(--sb-card-border);
  background:#fff; color:var(--sb-ink-text);
  font-size:13.5px; font-weight:500; letter-spacing:0.3px;
  box-shadow:0 1px 2px rgba(60,52,35,0.05);
  transition:all 0.2s ease;
  position:relative;
}
.menu-item:hover {
  border-color:var(--sb-card-hover); color:var(--ink);
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(60,52,35,0.08);
}
.menu-item svg.menu-icon {
  flex-shrink:0; padding:4px; border-radius:7px;
  width:15px; height:15px; box-sizing:content-box;
  background:linear-gradient(180deg, var(--gold-pale2), #ece7db);
  color:#8a8066;
  box-shadow:inset 0 0 0 1px rgba(194,168,120,0.35);
  transition:all 0.2s ease;
}
.menu-item:hover svg.menu-icon {
  color:var(--ink);
  background:linear-gradient(180deg, #efe9dd, #e6dfcf);
}
.menu-item.active {
  border-color:var(--ink); color:var(--ink); font-weight:600;
  background:linear-gradient(180deg, #ffffff, #f7f5f0);
  box-shadow:0 4px 14px rgba(31,42,68,0.12);
}
.menu-item.active svg.menu-icon {
  background:linear-gradient(145deg, var(--ink-2), var(--ink));
  color:#e8d5a3;
  box-shadow:0 3px 8px rgba(31,42,68,0.35);
}
.menu-item.active::after {
  content:''; position:absolute; right:13px; top:50%;
  width:6px; height:6px; border-radius:var(--r-full);
  background:var(--gold);
  box-shadow:0 0 0 3px rgba(194,168,120,0.22);
  transform:translateY(-50%);
}
.menu-text { flex:1; }

/* ---- Main ---- */
.app-main { flex:1; display:flex; flex-direction:column; overflow:hidden; }

/* ---- 顶部头部 - Premium gradient with depth ---- */
.app-topbar {
  flex-shrink:0;
  background:linear-gradient(135deg, #4A6A7E 0%, #6E8CA0 50%, #7E9AAD 100%);
  padding:18px 28px;
  text-align:center;
  position:relative;
  overflow:hidden;
  box-shadow:0 2px 12px rgba(74,106,126,0.25);
}
.app-topbar::before {
  content:''; position:absolute; top:0; left:0; right:0; bottom:0;
  background:
    radial-gradient(circle at 20% 50%, rgba(255,255,255,0.08) 0%, transparent 50%),
    radial-gradient(circle at 80% 50%, rgba(255,255,255,0.05) 0%, transparent 50%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60'%3E%3Cpath d='M30 0l30 30-30 30L0 30z' fill='%23ffffff' fill-opacity='0.03'/%3E%3C/svg%3E");
}
.app-topbar-inner { position:relative; z-index:1; }
.app-topbar-title {
  font-size:22px; font-weight:700; color:#fff;
  letter-spacing:2px; margin:0;
  text-shadow:0 1px 3px rgba(0,0,0,0.15);
}
.app-topbar-sub {
  font-size:11px; color:rgba(255,255,255,0.6);
  letter-spacing:1px; margin-top:3px;
  text-transform:uppercase;
}
.app-content-wrap { flex:1; overflow-y:auto; display:flex; flex-direction:column; }

/* ---- 拖拽分隔条 ---- */
.sidebar-resizer {
  width:4px; min-width:4px; flex-shrink:0;
  background:var(--sb-line);
  cursor:col-resize; position:relative; z-index:300;
  transition:background 0.2s;
}
.sidebar-resizer:hover,
.sidebar-resizer.dragging {
  background:var(--gold);
}
.view {
  max-width:1200px; margin:0 auto; width:100%;
  padding:24px;
}
/* formView 含大量 DOM 元素，添加 contain 减少浏览器样式重算范围 */
#formView { contain: layout style paint; }
.app-main .view { overflow-y:auto; flex:1; }
.app-content-wrap > .view { flex:1; }
#homeView { max-width:none !important; margin:0 !important; padding:0 !important; }

/* ============================================
   Buttons
   ============================================ */
/* Buttons - Premium interaction states (Principle 8: Refined 4-state feedback) */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:5px;
  padding:7px 16px; font-size:13.5px; font-weight:500;
  border:1px solid var(--border); border-radius:var(--r-sm);
  background:#fff; color:var(--gray-700); cursor:pointer;
  transition:all 0.2s cubic-bezier(0.4,0,0.2,1); white-space:nowrap;
  position:relative; overflow:hidden;
}
/* Default state - clean base */
.btn:hover {
  border-color:var(--gray-300); background:var(--gray-50);
  transform:translateY(-1px); box-shadow:var(--sh-hover);
}
/* Active/Pressed state */
.btn:active {
  transform:translateY(0) scale(0.98);
  box-shadow:var(--sh-active);
  transition:all 0.1s ease;
}
/* Focus state - accessibility + visual ring */
.btn:focus-visible {
  outline:none; box-shadow:0 0 0 3px var(--brand-glow), var(--sh-sm);
}
/* Disabled state - subtle but clear */
.btn:disabled {
  opacity:0.45; cursor:not-allowed;
  transform:none !important; box-shadow:none !important;
  background:var(--gray-100); color:var(--gray-400);
}

/* Primary button - B3 软填充：浅墨蓝底 + 墨蓝边框（有按钮感又不突兀） */
.btn-primary {
  background:#eef1f6;
  border:1.5px solid var(--ink-2); color:var(--ink);
  font-weight:600;
}
.btn-primary:hover {
  background:#e3e9f2;
  border-color:var(--ink); color:var(--ink);
  box-shadow:0 2px 8px rgba(31,42,68,0.14);
}
.btn-primary:active {
  background:#d7dfea;
  border-color:var(--ink);
  transform:translateY(0); box-shadow:var(--sh-active);
}

/* Success button */
.btn-success {
  background:linear-gradient(135deg, #8AA68E 0%, #748F78 100%);
  border-color:#8AA68E; color:#fff;
}
.btn-success:hover {
  background:linear-gradient(135deg, #748F78 0%, #647868 100%);
  border-color:#748F78; transform:translateY(-1px);
  box-shadow:var(--sh-hover), 0 0 20px rgba(138,166,142,0.2);
}

/* Danger button */
.btn-danger {
  background:linear-gradient(135deg, #B08585 0%, #967070 100%);
  border-color:#B08585; color:#fff;
}
.btn-danger:hover {
  background:linear-gradient(135deg, #967070 0%, #806060 100%);
  border-color:#967070; transform:translateY(-1px);
  box-shadow:var(--sh-hover), 0 0 20px rgba(176,133,133,0.2);
}

/* Warning button */
.btn-warning {
  background:linear-gradient(135deg, #C2A878 0%, #A88E60 100%);
  border-color:#C2A878; color:#fff;
}
.btn-warning:hover {
  background:linear-gradient(135deg, #A88E60 0%, #927E50 100%);
  border-color:#A88E60; transform:translateY(-1px);
  box-shadow:var(--sh-hover), 0 0 20px rgba(194,168,120,0.2);
}

/* Info button */
.btn-info {
  background:linear-gradient(135deg, #8FA8B8 0%, #7691A2 100%);
  border-color:#8FA8B8; color:#fff;
}
.btn-info:hover {
  background:linear-gradient(135deg, #7691A2 0%, #668192 100%);
  border-color:#7691A2; transform:translateY(-1px);
  box-shadow:var(--sh-hover), 0 0 20px rgba(143,168,184,0.2);
}

.btn-default { background:#fff; }
.btn-lg { padding:10px 24px; font-size:14.5px; border-radius:var(--r); }
.btn-sm { padding:5px 11px; font-size:12px; }
.btn-xs { padding:3px 9px; font-size:11.5px; }

/* 按钮内 SVG 图标 - 统一 feather 线性风格，随文字色着色 */
.btn svg.btn-ic {
  width:15px; height:15px; flex-shrink:0;
  margin-right:1px; margin-left:-3px;
  vertical-align:-2px;
}
.btn-sm svg.btn-ic { width:13px; height:13px; margin-left:-2px; }
.btn-xs svg.btn-ic { width:12px; height:12px; margin-left:-2px; }
.btn-lg svg.btn-ic { width:16px; height:16px; }

/* ============================================
   Form Container & Fields - Premium cards (Principle 9+10: Soft borders, clear hierarchy)
   ============================================ */
.form-container {
  background:var(--card); border-radius:var(--r-lg);
  box-shadow:var(--sh-md);
  border:1px solid #e8ebef;
  padding:20px 24px;
  position:relative;
  /* 顶部金色细线 - B3 金线意象（侧栏呼应的唯一暖色点缀） */
  background-image:linear-gradient(to right, var(--gold) 0%, transparent 100%);
  background-size:4px 1px;
  background-position:top left;
  background-repeat:no-repeat;
  padding-top:19px; /* Compensate for the 1px accent line */
}

/* Tabs - 素白底页签 + 墨蓝激活 */
.tab-bar {
  display:flex; gap:3px; border-bottom:1px solid #e8ebef;
  margin-bottom:16px; flex-wrap:nowrap; position:relative;
  width:100%; background:linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
  padding:5px 8px 0; border-radius:12px 12px 0 0;
  box-sizing:border-box; overflow-x:auto;
}
.tab-item {
  flex:1 1 0; text-align:center;
  padding:11px 8px; cursor:pointer; font-weight:650;
  color:var(--gray-500); font-size:15px; white-space:nowrap;
  border-bottom:2.5px solid transparent; margin-bottom:-1px;
  position:relative;
  transition:all 0.25s cubic-bezier(0.4,0,0.2,1);
  border-radius:8px 8px 0 0;
}
/* 方法组颜色标识（左侧彩色竖线） */
.tab-item[class*="mc-color-"]::before {
  content:''; position:absolute; top:0; bottom:0; left:0;
  width:4px; border-radius:0 3px 3px 0;
}
.mc-color-1::before { background:#ef4444; }   /* 基准地价 - 红 */
.mc-color-2::before { background:#f59e0b; }   /* 土地市场比较法 - 橙 */
.mc-color-3::before { background:#10b981; }   /* 剩余法待开发 - 绿 */
.mc-color-4::before { background:#06b6d4; }   /* 剩余法已建成 - 青 */
.mc-color-5::before { background:#6366f1; }   /* 成本逼近法 - 靛蓝 */
.mc-color-6::before { background:#8b5cf6; }   /* 收益法土地租赁 - 紫 */
.mc-color-7::before { background:#ec4899; }   /* 收益法不动产出租 - 粉 */
.tab-item:last-of-type { border-right:none; }
.tab-item:hover { color:var(--ink); background:rgba(249,250,252,0.8); }
.tab-item.active {
  color:var(--ink); font-weight:700; border-bottom-color:var(--ink);
  background:#fff;
  box-shadow:0 -3px 12px rgba(31,42,68,0.08);
}
.tab-pane { display:none; }
.tab-pane.active { display:block; animation:tabFadeIn 0.25s cubic-bezier(0.4,0,0.2,1); }
@keyframes tabFadeIn {
  from { opacity:0; transform:translateY(6px); }
  to { opacity:1; transform:translateY(0); }
}
.tab-hidden { display:none !important; }
.tab-show-all-label { user-select:none; flex-shrink:0; padding:8px 10px 8px 8px !important; margin-left:4px !important; }

/* 方法组配套标签：链条徽章（骑跨分界线） */
.tab-chain {
  flex-shrink:0;
  align-self:center;
  position:relative;
  z-index:5;
  width:22px; height:22px;
  margin:0 -15px 0 -7px;       /* 右多侵4px，纠正视觉偏左 */
  border-radius:50%;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M10 13a4 4 0 0 0 5.66 0l2-2a4 4 0 0 0-5.66-5.66l-1 1'/%3E%3Cpath d='M14 11a4 4 0 0 0-5.66 0l-2 2a4 4 0 0 0 5.66 5.66l1-1'/%3E%3C/svg%3E") center/14px 14px no-repeat;
  box-shadow:0 0 0 1px #cbd5e1, 0 1px 2px rgba(0,0,0,.1);
  pointer-events:none;        /* 不挡点击 */
}

/* Grid Layout */
.grid-layout { display:grid; grid-template-columns:repeat(12,1fr); gap:5px 6px; align-items:start; }
.grid-item { display:flex; flex-direction:column; }
.grid-item label {
  font-size:12px; color:var(--gray-600); margin-bottom:3px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  font-weight:500;
}
.grid-item label .required-mark { color:var(--red); margin-left:2px; }
.grid-item .form-control {
  padding:7px 12px; border:1.5px solid var(--gray-200); border-radius:8px;
  font-size:13px; width:100%; transition:all 0.2s cubic-bezier(0.4,0,0.2,1); background:#fff; color:var(--text);
  line-height:1.45;
}
.grid-item .form-control:hover { border-color:var(--gray-300); box-shadow:var(--sh-xs); }
.grid-item .form-control:focus {
  outline:none; border-color:var(--ink-2);
  box-shadow:0 0 0 3px rgba(31,42,68,0.10), 0 2px 8px rgba(31,42,68,0.06); background:#fff;
}
.grid-item .form-control[readonly] { background:linear-gradient(135deg, var(--gray-50) 0%, #fafbfc 100%); color:var(--gray-500); cursor:default; border-style:dashed; border-color:rgba(229,231,235,0.6); }

/* Legacy form groups */
.form-row { display:flex; flex-wrap:wrap; gap:16px; margin-bottom:12px; }
.form-group { display:flex; flex-direction:column; margin-bottom:8px; min-width:200px; flex:1; }
.form-group label { font-size:13px; color:var(--text-2); margin-bottom:4px; font-weight:500; }
.form-group label .required-mark { color:var(--red); margin-left:2px; }
.form-control {
  padding:7px 11px; border:1px solid var(--gray-200); border-radius:var(--r-sm);
  font-size:14px; transition:var(--t); width:100%; background:#fff; color:var(--text);
}
.form-control:hover { border-color:var(--gray-300); }
.form-control:focus { outline:none; border-color:var(--ink-2); box-shadow:0 0 0 3px rgba(31,42,68,0.10), 0 1px 3px rgba(31,42,68,0.06); }
.form-control[readonly] { background:var(--gray-50); color:var(--gray-500); border-style:dashed; border-color:var(--border-l); }

/* Divider - Subtle with gradient fade (Principle 9) */
.grid-divider {
  grid-column:span 12; height:1px;
  background:linear-gradient(90deg, transparent 0%, var(--border-l) 15%, var(--border-l) 85%, transparent 100%);
  margin:10px 0; min-height:1px;
}
.grid-divider-label {
  grid-column:span 12; font-size:13.5px; font-weight:650; color:var(--ink);
  padding:10px 14px 8px; margin-bottom:8px; margin-top:6px;
  border-radius:10px; background:linear-gradient(90deg, rgba(31,42,68,0.05) 0%, rgba(249,250,252,0.5) 70%, transparent 100%);
  border-left:3.5px solid var(--gold); border-bottom:none;
}
.section-title {
  font-size:14.5px; font-weight:650; color:#242c3f;
  margin:16px 0 10px; padding-bottom:8px;
  border-bottom:1.5px solid #e8ebef;
  display:flex; align-items:center; gap:10px;
}
.section-title::before {
  content:''; width:4px; height:18px; background:linear-gradient(180deg, var(--ink-2), var(--ink)); border-radius:4px;
}
.section-title:first-child { margin-top:0; }

/* Nested table - Premium container with soft borders */
.grid-nest-wrapper {
  border:1px solid rgba(229,231,235,0.5); border-radius:12px;
  overflow:hidden; box-shadow:var(--sh-xs);
}
.nest-table-wrapper {
  margin:12px 0; border:1px solid rgba(229,231,235,0.5);
  border-radius:12px; overflow:hidden; box-shadow:var(--sh-xs);
}
.nest-table-title {
  background:linear-gradient(180deg, #fafbfc 0%, #f5f7f9 100%);
  padding:10px 12px 8px; font-weight:650;
  border-bottom:1px solid #e8ebef; font-size:13.5px; color:var(--ink);
  display:flex; justify-content:space-between; align-items:center;
  white-space:normal; overflow:visible; text-overflow:clip;
  flex-wrap:wrap;
}
.nest-table-title::before {
  content:''; display:inline-block; width:3.5px; height:15px;
  background:linear-gradient(180deg, var(--gold), var(--gold-dark)); border-radius:3px; margin-right:10px; vertical-align:middle;
}
.nest-table { width:100%; border-collapse:collapse; font-size:12.5px; }
.nest-table th, .nest-table td { border:1px solid #edf0f3; padding:5px 7px; text-align:left; }
.nest-table th { background:#f7f9fa; font-weight:600; color:#4a5468; font-size:12px; white-space:nowrap; position:sticky; top:0; }
.nest-table tbody tr:nth-child(even) { background:rgba(249,250,252,0.6); }
.nest-table tbody tr:hover { background:rgba(31,42,68,0.04); transition:background 0.15s ease; }
.nest-table td input, .nest-table td select {
  border:none; padding:4px 6px; width:100%; font-size:13px; background:transparent; transition:var(--t);
}
.nest-table td input:focus, .nest-table td select:focus {
  outline:none; box-shadow:inset 0 0 0 1.5px var(--ink-2); background:#fff; border-radius:3px;
}
.nest-table-actions { padding:8px 14px; background:var(--gray-50); border-top:1px solid var(--border-l); }

/* 嵌套表格全屏按钮 */
.nest-fullscreen-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:4px;
  padding:3px 7px; font-size:12px; font-weight:500;
  border:1px solid var(--ink-2); border-radius:6px;
  background:#eef1f6; color:var(--ink);
  cursor:pointer; transition:all 0.18s ease; white-space:nowrap;
}
.nest-fullscreen-btn:hover {
  background:#e3e9f2; border-color:var(--ink); color:var(--ink); box-shadow:var(--sh-sm);
}

/* 嵌套表格全屏弹窗 */
.nest-fullscreen-modal {
  position:fixed; inset:0; z-index:3000;
  background:rgba(15,23,42,0.5); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center;
  animation:fadeIn 0.2s ease;
}
.nest-fullscreen-content {
  background:#fff; border-radius:12px; width:94vw; max-width:1600px;
  max-height:92vh; display:flex; flex-direction:column;
  box-shadow:var(--sh-xl); animation:slideUp 0.25s cubic-bezier(0.4,0,0.2,1);
}
.nest-fullscreen-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px; border-bottom:1px solid var(--border-l);
}
.nest-fullscreen-header h3 {
  font-size:16px; font-weight:700; color:var(--gray-800); margin:0;
}
.nest-fullscreen-toolbar {
  display:flex; align-items:center; gap:8px;
}
.nest-fullscreen-toolbar .btn { font-size:12.5px; }
.nest-fullscreen-body {
  flex:1; overflow:auto; padding:16px 20px;
}
.nest-fullscreen-body table.nest-fullscreen-table {
  width:100%; border-collapse:collapse; font-size:13.5px;
}
.nest-fullscreen-body table.nest-fullscreen-table th,
.nest-fullscreen-body table.nest-fullscreen-table td {
  border:1px solid var(--border); padding:8px 12px; text-align:left;
  vertical-align:top;
}
.nest-fullscreen-body table.nest-fullscreen-table th {
  background:#f5f7f9; font-weight:700; color:var(--ink);
  white-space:nowrap; position:sticky; left:0; z-index:2;
}
.nest-fullscreen-body table.nest-fullscreen-table td:first-child {
  background:var(--gray-50); font-weight:600; color:var(--text-2);
  white-space:nowrap; position:sticky; left:0; z-index:1;
}
.nest-fullscreen-body table.nest-fullscreen-table td input,
.nest-fullscreen-body table.nest-fullscreen-table td select {
  width:100%; border:1px solid transparent; padding:5px 8px; font-size:13.5px;
  border-radius:5px; background:transparent; transition:border-color 0.15s ease, box-shadow 0.15s ease;
}
.nest-fullscreen-body table.nest-fullscreen-table td input:hover,
.nest-fullscreen-body table.nest-fullscreen-table td select:hover {
  border-color:var(--gray-300);
}
.nest-fullscreen-body table.nest-fullscreen-table td input:focus,
.nest-fullscreen-body table.nest-fullscreen-table td select:focus {
  outline:none; border-color:var(--brand);
  box-shadow:0 0 0 3px var(--brand-glow); background:#fff;
}
.nest-fullscreen-body table.nest-fullscreen-table td input[readonly] {
  background:var(--gray-50); color:var(--gray-500); cursor:default; border-style:dashed;
}
.nest-fullscreen-footer {
  display:flex; align-items:center; gap:10px; justify-content:flex-end;
  padding:12px 20px; border-top:1px solid var(--border-l);
}

/* Tabs backup */
.tabs-header { display:flex; border-bottom:1px solid var(--border); margin-bottom:16px; }
.tab-header-item { padding:8px 12px; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; font-weight:500; font-size:13px; transition:var(--t); color:var(--text-3); }
.tab-header-item:hover { color:var(--gray-600); }
.tab-header-item.active { color:var(--brand); border-bottom-color:var(--brand); }
.tab-content { display:none; }
.tab-content.active { display:block; }

/* ============================================
   List & Tables - Premium styling (Principle 9+10)
   ============================================ */
.list-toolbar { margin-bottom:20px; }
.search-input {
  padding:9px 14px 9px 36px; border:1.5px solid var(--gray-200); border-radius:var(--r);
  width:320px; font-size:13.5px; background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E") 13px center no-repeat;
  transition:all 0.25s cubic-bezier(0.4,0,0.2,1);
}
.search-input:hover { border-color:#cfd6df; background:#fcfdfe; box-shadow:var(--sh-xs); }
.search-input:focus { outline:none; border-color:var(--ink-2); box-shadow:0 0 0 3px rgba(31,42,68,0.10), var(--sh-sm); background:#fff; }
.search-input::placeholder { color:var(--gray-400); }

/* Data table - 素白内容区（中性灰白，与侧栏暖色形成层次差） */
.data-table {
  width:100%; border-collapse:separate; border-spacing:0; background:#fff;
  border:1px solid #e8ebef; border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--sh-md);
}
.data-table th, .data-table td {
  padding:13px 18px; text-align:left;
  border-bottom:1px solid #eef1f4;
  transition:background 0.18s ease;
}
.data-table th {
  background:linear-gradient(180deg, #fbfcfd 0%, #f3f5f8 100%);
  font-weight:650; color:#4a5468; font-size:11.5px;
  letter-spacing:0.6px; text-transform:uppercase;
  border-bottom:2px solid #e3e7ec;
  position:sticky; top:0; z-index:1;
}
.data-table th:first-child { border-radius:var(--r-lg) 0 0 0; }
.data-table th:last-child { border-radius:0 var(--r-lg) 0 0; border-right:none; }
.data-table td:last-child { border-right:none; }
.data-table tbody tr { transition:all 0.2s ease; }
.data-table tbody tr:nth-child(even) { background:rgba(249,250,252,0.6); }
.data-table tbody tr:hover { background:rgba(31,42,68,0.045); }
.data-table tbody tr:last-child td { border-bottom:none; }
.data-table tbody tr:last-child td:first-child { border-radius:0 0 0 var(--r-lg); }
.data-table tbody tr:last-child td:last-child { border-radius:0 0 var(--r-lg) 0; }

/* Pagination */
.pagination { display:flex; justify-content:center; align-items:center; gap:6px; margin-top:20px; }
.pagination button { min-width:34px; height:34px; border-radius:var(--r-sm); }
.pagination button.active, .pagination button.btn-primary {
  background:#e3e9f2; border:1.5px solid var(--ink-2); color:var(--ink); font-weight:600;
}

/* Form Actions - 底部操作区：内嵌圆角矩形容器（与表单内容区同宽）
   底色：极浅蓝灰渐变 + 45° 细斜纹（rgba 5% 透明度，弱到不干扰、能感知到是操作区） */
.form-actions {
  position:sticky; bottom:12px; z-index:100;
  background: repeating-linear-gradient(45deg, rgba(100,116,139,0.05) 0 1px, transparent 1px 3px), linear-gradient(180deg, #fafbfd 0%, #f2f5f9 100%);
  padding:12px 16px; margin:18px 0 6px;
  border:1px solid #e4e8ee;
  border-radius:12px;
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  gap:12px;
  box-shadow:0 4px 16px rgba(31,42,68,0.08), 0 1px 3px rgba(31,42,68,0.04);
}
.form-actions-spacer { flex:1; }
.form-actions .btn-lg {
  min-width:100px; padding:10px 24px; font-size:14px; font-weight:650;
  border-radius:10px; letter-spacing:0.4px;
  transition:all 0.25s cubic-bezier(0.4,0,0.2,1);
}
.form-actions .btn-default {
  background:#fff; border:1.5px solid var(--gray-300); color:var(--gray-600);
}
.form-actions .btn-default:hover {
  background:var(--gray-50); border-color:var(--gray-400); color:var(--gray-800);
  transform:translateY(-1px); box-shadow:var(--sh-sm);
}

/* ============================================
   Modal - Premium glass morphism (Principle 5+9)
   ============================================ */
.modal {
  position:fixed; inset:0; background:rgba(15,23,42,0.45);
  z-index:1000; display:flex; justify-content:center; align-items:center;
  backdrop-filter:blur(8px) saturate(1.2); -webkit-backdrop-filter:blur(8px) saturate(1.2);
  animation:modalFadeIn 0.25s ease;
}
@keyframes modalFadeIn {
  from { opacity:0; }
  to { opacity:1; }
}
.modal-content {
  background:rgba(255,255,255,0.98); border-radius:var(--r-xl);
  max-width:800px; width:90%; max-height:90vh; overflow:auto;
  box-shadow:var(--sh-xl), 0 0 80px rgba(79,70,229,0.08);
  animation:modalSlideUp 0.35s cubic-bezier(0.34,1.56,0.64,1);
  border:1px solid rgba(255,255,255,0.6);
}
@keyframes modalSlideUp {
  from { opacity:0; transform:translateY(20px) scale(0.97); }
  to { opacity:1; transform:translateY(0) scale(1); }
}
.modal-lg { max-width:1100px; }
.modal-header {
  padding:18px 24px; border-bottom:1px solid #e8ebef;
  display:flex; justify-content:space-between; align-items:center;
  background:linear-gradient(180deg, #fafbfc 0%, transparent 100%);
  border-radius:var(--r-xl) var(--r-xl) 0 0;
}
.modal-header h3 { font-size:17px; font-weight:700; color:#242c3f; letter-spacing:0.2px; }
.modal-close {
  font-size:20px; cursor:pointer; color:var(--gray-400);
  width:30px; height:30px; display:flex; align-items:center; justify-content:center;
  border-radius:var(--r); transition:all 0.2s ease; line-height:1;
}
.modal-close:hover { color:var(--red); background:var(--red-pale); transform:rotate(90deg); }
.modal-body { padding:24px; }

/* ============================================
   Toast - Premium notifications with depth
   ============================================ */
.toast {
  position:fixed; top:28px; left:50%; transform:translateX(-50%);
  background:linear-gradient(135deg, var(--gray-900) 0%, #1f2937 100%); color:#fff;
  padding:12px 28px;
  border-radius:var(--r-lg); z-index:2000; font-size:13.5px; font-weight:500;
  box-shadow:var(--sh-xl), 0 0 40px rgba(0,0,0,0.15);
  animation:toastSlideDown 0.4s cubic-bezier(0.34,1.56,0.64,1);
  border:1px solid rgba(255,255,255,0.08);
}
@keyframes toastSlideDown {
  from { opacity:0; transform:translateX(-50%) translateY(-20px) scale(0.95); }
  to { opacity:1; transform:translateX(-50%) translateY(0) scale(1); }
}
.toast.success {
  background:linear-gradient(135deg, #748F78 0%, #8AA68E 100%);
  box-shadow:var(--sh-xl), 0 0 30px rgba(138,166,142,0.2);
}
.toast.error {
  background:linear-gradient(135deg, #967070 0%, #B08585 100%);
  box-shadow:var(--sh-xl), 0 0 30px rgba(176,133,133,0.2);
}

/* ============================================
   Image
   ============================================ */
.image-preview { max-width:200px; max-height:150px; margin-top:4px; border-radius:var(--r-sm); }
.image-upload-area {
  border:2px dashed var(--gray-200); border-radius:var(--r-sm);
  padding:14px; text-align:center; cursor:pointer; transition:var(--t); background:var(--gray-50);
}
.image-upload-area:hover { border-color:var(--brand-light); background:var(--brand-pale); }
.image-field-wrapper { display:flex; flex-direction:column; gap:2px; }
.image-preview-container { margin-top:4px; }

/* Field with button */
.field-with-button { display:flex; gap:4px; }
.field-with-button .form-control { flex:1; }
.field-with-button .btn { flex:1; white-space:nowrap; }

/* DM table */
.dm-table input.dm-cell:focus { outline:none; box-shadow:inset 0 0 0 1.5px var(--ink-2); background:#fff !important; }
.dm-table th { white-space:nowrap; }

/* ============================================
   Tree Navigation
   ============================================ */
.tree-section-title {
  display:flex; align-items:center; gap:12px;
  padding:12px 20px;
  color:#454d63; font-size:14px; font-weight:600;
}
.tree-section-title .menu-icon { color:#a89a78; }
.tree-add-btn {
  width:22px; height:22px; border:none; border-radius:var(--r-sm);
  background:var(--gold-pale2); color:#8a8066;
  cursor:pointer; font-size:15px; line-height:1; transition:var(--t);
  display:flex; align-items:center; justify-content:center;
}
.tree-add-btn:hover { background:rgba(194,168,120,0.25); color:var(--ink); }

.tree-group { margin-top:0; }
/* 分组头：与主导航卡片(menu-item)同款白卡，边框用金调+金色左粗线与普通菜单项区分 */
.tree-group-header {
  display:flex; align-items:center; gap:8px;
  margin:4px 13px 4px; padding:6px 12px; cursor:pointer;
  border-radius:10px; border:1px solid rgba(194,168,120,0.50);
  border-left:3px solid var(--gold);
  background:#fff; color:var(--sb-ink-text);
  font-size:13.5px; font-weight:600; letter-spacing:0.2px;
  user-select:none; transition:all 0.2s ease;
  position:relative;
  box-shadow:0 1px 2px rgba(60,52,35,0.05);
}
.tree-group-header:hover {
  border-color:rgba(194,168,120,0.80); border-left-color:var(--gold-dark);
  color:var(--ink);
  background:linear-gradient(180deg, #ffffff, #faf8f4);
  box-shadow:0 3px 10px rgba(60,52,35,0.07);
}
.tree-group.has-active > .tree-group-header { color: #e53e3e; border-color:#d9b8b8; border-left-color:#e53e3e; }
.tree-group.has-active > .tree-group-header .tree-folder-icon { color: #e53e3e; }
.tree-folder-icon { width:16px; height:16px; display:inline-flex; flex-shrink:0; color:#a89a78; transition:color 0.2s; }
.tree-folder-icon svg { width:16px; height:16px; }
.tree-group.collapsed .folder-open { display:none; }
.tree-group:not(.collapsed) .folder-closed { display:none; }
.tree-group-header:hover .tree-folder-icon { color:var(--gold-dark); }
.tree-group.collapsed .tree-arrow { transform:rotate(-90deg); }
.tree-group-children { overflow:hidden; }
.tree-group.collapsed .tree-group-children { display:none; }
/* 分组间隔：偶数组用细微金调圆点网格 */
.tree-group:nth-child(odd) { background:transparent; }
.tree-group:nth-child(even) { background-image:radial-gradient(circle,rgba(194,168,120,0.14) 1px,transparent 1px); background-size:16px 16px; }

/* 子菜单项 - B3 米白小卡 */
.tree-form-item {
  display:flex; align-items:center; gap:7px;
  margin:0 16px 5px 27px; padding:7px 11px; cursor:pointer;
  border-radius:8px; border:1px solid #ebe6db;
  background:rgba(255,255,255,0.72);
  color:#7a7362; font-size:12px;
  transition:all 0.18s ease; white-space:nowrap; overflow:hidden;
  position:relative;
}
.tree-form-item::before { display:none; }
.tree-form-icon { color:#b3a685; flex-shrink:0; transition:color 0.2s ease; }
.tree-form-item:hover {
  color:var(--ink); background:#fff; border-color:var(--sb-card-hover);
}
.tree-form-item:hover::before { display:none; }
.tree-form-item:hover .tree-form-icon { color:var(--ink-2); }
.tree-form-item.active {
  color:var(--ink); font-weight:600; background:#fff;
  border-color:var(--ink); box-shadow:0 1px 5px rgba(31,42,68,0.10);
}
.tree-form-item.active::before { display:none; }
.tree-form-item.active .tree-form-icon { color:var(--ink-2); }
.tree-form-item .tree-form-count {
  color:#8a8066; font-size:10.5px;
  background:#f1ede4; padding:1px 6px; border-radius:var(--r-full); flex-shrink:0;
}
.tree-form-item.active .tree-form-count { color:var(--gold-dark); background:rgba(194,168,120,0.18); }
.tree-form-name { overflow:hidden; text-overflow:ellipsis; flex:1; }

/* Tree DnD */
.tree-form-item.dragging { opacity:0.4; }
.tree-group-header.drag-over { background:var(--brand-pale) !important; }
.tree-form-item.drag-over-top { border-top:2px solid var(--brand); }
.tree-form-item.drag-over-bottom { border-bottom:2px solid var(--brand); }
.tree-group-header.drag-over-top { border-top:2px solid var(--brand); }
.tree-group-header.drag-over-bottom { border-bottom:2px solid var(--brand); }
.tree-group.dragging-whole { opacity:0.5; }

/* Rename input */
.tree-rename-input {
  background:#fff; color:var(--text); border:1px solid var(--brand);
  border-radius:3px; padding:2px 6px; font-size:13px; outline:none; width:100%; flex:1;
}

/* Context menu */
.tree-ctx-menu {
  position:fixed; z-index:5000; min-width:130px;
  background:#fff; border:1px solid var(--border-l); border-radius:var(--r);
  padding:4px; box-shadow:var(--sh-lg); animation:slideUp 0.12s ease;
}
.tree-ctx-item { padding:7px 16px; cursor:pointer; font-size:13px; color:var(--text-2); border-radius:var(--r-sm); transition:var(--t); }
.tree-ctx-item:hover { background:rgba(31,42,68,0.05); color:var(--ink); }
.tree-ctx-item:last-child { border-top:1px solid var(--border-l); margin-top:2px; padding-top:9px; }

/* 设置列表显示 弹窗行 */
.list-display-row {
  display:flex; align-items:center; gap:10px;
  padding:9px 10px; border-radius:var(--r-sm); cursor:pointer;
  font-size:13px; color:var(--text); transition:var(--t);
}
.list-display-row:hover { background:rgba(31,42,68,0.05); }
.list-display-row input[type="checkbox"] { width:16px; height:16px; cursor:pointer; accent-color:var(--ink); flex-shrink:0; }

/* ============================================
   Home / Shortcuts
   ============================================ */
.home-container { padding:20px 28px; max-width:none; margin:0; }
.shortcut-add-btn {
  position:absolute; top:50%; right:20px;
  transform:translateY(-50%);
  width:36px; height:36px; border-radius:var(--r);
  border:1.5px dashed rgba(255,255,255,0.4); background:rgba(255,255,255,0.1);
  color:rgba(255,255,255,0.7); font-size:22px; line-height:1; cursor:pointer;
  transition:var(--t); display:flex; align-items:center; justify-content:center;
  z-index:2;
}
.shortcut-add-btn:hover { border-color:#fff; color:#fff; background:rgba(255,255,255,0.2); transform:translateY(-50%) scale(1.08); }
.shortcut-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:24px; }

.shortcut-section-grid { display:flex; flex-direction:column; gap:7px; }

.shortcut-empty {
  grid-column:1/-1; text-align:center; padding:72px 20px;
}
.shortcut-empty-icon {
  width:64px; height:64px; margin:0 auto 16px;
  background:var(--brand-pale); border-radius:var(--r-lg);
  display:flex; align-items:center; justify-content:center;
}
.shortcut-empty-icon svg { color:var(--brand); }
.shortcut-empty-text { font-size:16px; color:var(--gray-600); font-weight:500; margin-bottom:6px; }
.shortcut-empty-hint { font-size:13px; color:var(--gray-400); }

/* ---- Premium cards with refined shadows and hover (Principle 5+8+10) ---- */
.shortcut-card {
  border-radius:20px; overflow:hidden;
  display:flex; flex-direction:column;
  cursor:pointer; position:relative;
  transition:all 0.35s cubic-bezier(0.4,0,0.2,1);
  background:#fff; border:1px solid rgba(229,231,235,0.6);
  box-shadow:var(--sh-sm), 0 2px 8px rgba(79,70,229,0.04);
  min-height:120px;
}
.shortcut-card:hover {
  transform:translateY(-6px) scale(1.01);
  box-shadow:var(--sh-xl), 0 8px 32px rgba(79,70,229,0.12);
  border-color:rgba(209,213,219,0.8);
}

/* 上下线条 */
.shortcut-card-line-top,
.shortcut-card-line-bottom {
  position:absolute; left:0; right:0;
  height:4px; z-index:1;
  transition:height 0.3s ease;
}
.shortcut-card-line-top { top:0; border-radius:18px 18px 0 0; }
.shortcut-card-line-bottom { bottom:0; border-radius:0 0 18px 18px; }
.shortcut-card:hover .shortcut-card-line-top,
.shortcut-card:hover .shortcut-card-line-bottom { height:6px; }

/* 卡片内容 - 横向布局：图标左 文字右 */
.shortcut-card-content {
  flex:1; display:flex; flex-direction:row; align-items:center; justify-content:center;
  padding:28px 20px; position:relative; z-index:2;
}
.shortcut-card-icon {
  font-size:24px; flex-shrink:0;
  transition:transform 0.3s ease, color 0.3s ease;
  display:flex; align-items:center; justify-content:center;
  width:40px; height:40px;
}
.shortcut-card-icon i { font-size:24px; transition:transform 0.3s ease; }
.shortcut-card-icon svg.shortcut-card-svg { display:block; transition:transform 0.3s ease; }
.shortcut-card:hover .shortcut-card-icon { transform:scale(1.12); }
.shortcut-card-name {
  font-size:18px; font-weight:700; color:#111827;
  margin-left:16px; transition:color 0.3s ease;
  letter-spacing:-0.2px; line-height:1.4;
  word-break:break-word;
}
.shortcut-card:hover .shortcut-card-name { color:#374151; }

.shortcut-card-group {
  font-size:11px; color:var(--gray-400);
  margin-top:2px;
}
.shortcut-card-count {
  background:var(--gray-100); color:var(--gray-500);
  padding:1px 7px; border-radius:var(--r-full); font-weight:600; font-size:10px;
}
.shortcut-card-remove {
  position:absolute; top:10px; right:10px; font-size:15px;
  color:var(--gray-400); cursor:pointer; line-height:1;
  opacity:0; transition:var(--t); z-index:3;
  width:22px; height:22px; display:flex; align-items:center; justify-content:center;
  border-radius:var(--r-full); background:var(--gray-100);
}
.shortcut-card:hover .shortcut-card-remove { opacity:1; }
.shortcut-card-remove:hover { color:var(--red); background:var(--red-pale); }

/* 颜色主题 - 莫兰迪色卡 */
.sc-purple .shortcut-card-line-top, .sc-purple .shortcut-card-line-bottom { background:#9A8AA8; }
.sc-purple .shortcut-card-icon { color:#9A8AA8; }
.sc-purple:hover .shortcut-card-name { color:#837293; }

.sc-blue .shortcut-card-line-top, .sc-blue .shortcut-card-line-bottom { background:#7E9AAD; }
.sc-blue .shortcut-card-icon { color:#7E9AAD; }
.sc-blue:hover .shortcut-card-name { color:#688090; }

.sc-green .shortcut-card-line-top, .sc-green .shortcut-card-line-bottom { background:#8AA68E; }
.sc-green .shortcut-card-icon { color:#8AA68E; }
.sc-green:hover .shortcut-card-name { color:#748F78; }

.sc-red .shortcut-card-line-top, .sc-red .shortcut-card-line-bottom { background:#B08585; }
.sc-red .shortcut-card-icon { color:#B08585; }
.sc-red:hover .shortcut-card-name { color:#967070; }

.sc-yellow .shortcut-card-line-top, .sc-yellow .shortcut-card-line-bottom { background:#C2A878; }
.sc-yellow .shortcut-card-icon { color:#C2A878; }
.sc-yellow:hover .shortcut-card-name { color:#A88E60; }

.sc-teal .shortcut-card-line-top, .sc-teal .shortcut-card-line-bottom { background:#82A6A3; }
.sc-teal .shortcut-card-icon { color:#82A6A3; }
.sc-teal:hover .shortcut-card-name { color:#6B8E8B; }

/* Shortcut picker */
.shortcut-pick-item {
  display:flex; align-items:center; gap:8px; padding:9px 12px;
  cursor:pointer; border-radius:var(--r-sm); transition:var(--t);
  border:1px solid transparent;
}
.shortcut-pick-item:hover { background:var(--gray-50); }
.shortcut-pick-item.selected { background:var(--brand-pale); border-color:var(--brand-pale); }
.shortcut-pick-item .pick-group { color:var(--gray-400); font-size:12px; margin-left:auto; margin-right:8px; }

/* ============================================
   DM Table - 素白表头（内容区中性色）
   ============================================ */
.dm-data-table {
  width:100%; border-collapse:separate; border-spacing:0; background:#fff;
  border-radius:var(--r-lg); overflow:hidden;
  font-size:13px;
  box-shadow:var(--sh-md);
  border:1px solid #e8ebef;
}
.dm-data-table th {
  background:linear-gradient(180deg, #fbfcfd 0%, #f3f5f8 100%);
  font-weight:700; color:#4a5468;
  padding:11px 16px; text-align:center; white-space:nowrap;
  border-bottom:2px solid #e3e7ec; border-right:1px solid rgba(238,241,244,0.7);
  position:sticky; top:0; z-index:1;
  font-size:14px; text-transform:none; letter-spacing:0.4px;
}
.dm-data-table td {
  padding:11px 14px; border-bottom:1px solid #eef1f4; border-right:1px solid rgba(238,241,244,0.4);
  max-width:200px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  text-align:center;
  color:var(--text);
  transition:background 0.18s ease;
}
.dm-data-table th:last-child,
.dm-data-table td:last-child { border-right:none; }
.dm-data-table tbody tr:last-child td { border-bottom:none; }
.dm-data-row { cursor:pointer; transition:all 0.2s ease; }
.dm-data-row:hover { background:rgba(31,42,68,0.045); }
.dm-idx-col { width:50px; text-align:center; color:var(--text-3); font-variant-numeric:tabular-nums; font-size:12px; }
.dm-data-row.selected { background:rgba(31,42,68,0.07) !important; }
.dm-data-row.selected:hover { background:rgba(31,42,68,0.11) !important; }

/* DM Edit */
.dm-edit-field { display:flex; flex-direction:column; }
.dm-edit-field label { font-size:12px; color:var(--text-2); margin-bottom:3px; font-weight:500; }

/* Field hint tooltip */
label[data-hint] { cursor:help; text-decoration: underline dotted var(--gray-300) 1px; text-underline-offset:2px; }
.field-tip-popup {
  position:fixed; z-index:99999; max-width:320px;
  background:#1f2937; color:#fff; font-size:12px; line-height:1.6;
  padding:8px 12px; border-radius:6px;
  box-shadow:0 4px 12px rgba(0,0,0,0.2);
  display:none; pointer-events:none;
}
.dm-edit-input {
  padding:6px 10px; border:1px solid #e4e8ec; border-radius:var(--r-sm);
  font-size:13px; transition:var(--t);
}
.dm-edit-input:hover { border-color:#d5dbe2; }
.dm-edit-input:focus { outline:none; border-color:var(--ink-2); box-shadow:0 0 0 3px rgba(31,42,68,0.10); }

/* ============================================
   Select
   ============================================ */
select.form-control, select {
  cursor:pointer; appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 8px center;
  padding-right:26px !important;
}

/* ============================================
   DM Dropdown Panels
   ============================================ */
.dm-dropdown { position:relative; }
.dm-dropdown-panel {
  position:absolute; right:0; top:calc(100% + 4px);
  background:#fff; border:1px solid #e4e8ec; border-radius:var(--r);
  box-shadow:var(--sh-lg); z-index:500; min-width:240px; max-height:360px; overflow-y:auto;
  padding:10px; display:none; animation:slideDown 0.15s ease;
}
.dm-dropdown-panel.show { display:block; }

.dm-field-check {
  display:flex; align-items:center; gap:8px; padding:5px 6px;
  border-radius:var(--r-sm); cursor:pointer; transition:var(--t); font-size:13px;
}
.dm-field-check:hover { background:#f5f7f9; }
.dm-field-check input { width:15px; height:15px; cursor:pointer; accent-color:var(--ink); }

.dm-filter-row {
  display:flex; gap:6px; align-items:center; margin-bottom:8px;
}
.dm-filter-row select {
  flex:1; padding:4px 8px; border:1px solid var(--gray-200); border-radius:var(--r-sm);
  font-size:12px; max-width:120px;
}
.dm-filter-row input {
  flex:1; padding:4px 8px; border:1px solid var(--gray-200); border-radius:var(--r-sm);
  font-size:12px; min-width:80px;
}
.dm-filter-row .dm-filter-remove {
  width:24px; height:24px; border:none; background:var(--red-pale); color:var(--red);
  border-radius:var(--r-sm); cursor:pointer; font-size:14px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.dm-filter-row .dm-filter-remove:hover { background:var(--red); color:#fff; }

/* DM Table checkbox */
.dm-row-check { width:16px; height:16px; cursor:pointer; accent-color:var(--ink); }
.dm-check-col { width:36px; text-align:center !important; }
.dm-data-row.selected { background:rgba(31,42,68,0.07) !important; }
.dm-data-row.selected:hover { background:rgba(31,42,68,0.11) !important; }

/* ========== 评估工作台：左侧流程面板 ========== */
.wizard-panel {
  margin:6px 0; border-top:1px solid #f3f4f6; border-bottom:1px solid #f3f4f6;
}
.wizard-panel-header {
  display:flex; align-items:center; gap:8px;
  padding:10px 14px; cursor:pointer; color:#374151;
  font-size:14px; font-weight:600; user-select:none;
  transition:background .15s;
}
.wizard-panel-header:hover { background:#f9fafb; }
.wizard-panel-arrow { margin-left:auto; transition:transform .2s; }
.wizard-panel.open .wizard-panel-arrow { transform:rotate(180deg); }

.wizard-panel-body {
  padding:4px 10px 10px; display:flex; flex-direction:column; gap:6px;
}
.wizard-panel-section {
  display:flex; flex-direction:column; gap:4px;
  padding:6px 4px; border-bottom:1px dashed #f3f4f6;
}
.wizard-panel-section:last-child { border-bottom:none; }
.wizard-panel-label {
  font-size:11px; color:#9ca3af; font-weight:500; padding:0 2px;
}
.wizard-panel-select {
  width:100%; padding:5px 6px; font-size:12px;
  border:1px solid #d1d5db; border-radius:6px; background:#fff;
}
.wizard-panel-meta { font-size:11px; color:#6b7280; padding:0 2px; min-height:14px; }

.wizard-panel-btn {
  width:100%; padding:6px 10px; font-size:12px;
  border:1px solid #d1d5db; border-radius:6px; background:#fff;
  color:#374151; cursor:pointer; text-align:left;
  transition:all .15s;
}
.wizard-panel-btn:hover:not(:disabled) {
  border-color:var(--brand); color:var(--brand); background:#faf5ff;
}
.wizard-panel-btn:disabled { color:#d1d5db; cursor:not-allowed; background:#f9fafb; }
.wizard-panel-btn.primary {
  background:#eef1f6; color:var(--ink); border-color:var(--ink-2); font-weight:600;
}
.wizard-panel-btn.primary:hover:not(:disabled) {
  background:#e3e9f2; color:var(--ink); border-color:var(--ink);
}

/* 当前进行中的步骤：突出显示 */
.wizard-panel-btn.current {
  border-color:var(--brand);
  color:var(--brand);
  background:#faf5ff;
  font-weight:600;
  box-shadow:0 0 0 1px var(--brand), 0 2px 6px rgba(139,92,246,0.15);
  position:relative;
}
.wizard-panel-btn.current::before {
  content:'▶';
  position:absolute; left:-14px; top:50%;
  transform:translateY(-50%);
  color:var(--brand); font-size:10px;
  animation:wizardPulse 1.5s ease-in-out infinite;
}
@keyframes wizardPulse {
  0%,100% { opacity:1; transform:translateY(-50%) scale(1); }
  50% { opacity:0.5; transform:translateY(-50%) scale(1.3); }
}

/* 已完成的步骤：绿色对勾 */
.wizard-panel-btn.done {
  border-color:#10b981;
  color:#065f46;
  background:#ecfdf5;
}
.wizard-panel-btn.done::after {
  content:' ✓';
  color:#10b981; font-weight:700;
}
.wizard-panel-btn.ghost { background:transparent; border-color:transparent; color:#6b7280; }
.wizard-panel-btn.ghost:hover { background:#f3f4f6; color:#374151; }

/* 进度徽章 */
.wizard-step-badge {
  display:inline-block; font-size:11px; font-weight:600;
  padding:2px 8px; border-radius:10px; margin-right:6px;
}
.wizard-step-badge.step1 { background:#fef3c7; color:#92400e; }
.wizard-step-badge.step2 { background:#dbeafe; color:#1e40af; }
.wizard-step-badge.step3 { background:#f3e8ff; color:#6b21a8; }
.wizard-step-badge.step4 { background:#d1fae5; color:#065f46; }
.wizard-step-meta {
  font-size:11px; color:#6b7280;
}

/* ========== 工作表单：分组树（标题卡已移除，分组头白卡同 menu-item） ========== */
.form-tree-wrapper {
  margin-top:1px;
}
/* 标题卡样式保留给历史备份对照，header 元素已从 index.html 移除 */
.form-tree-wrapper-header {
  display:flex; align-items:center; gap:9px;
  margin:6px 13px 2px; padding:6px 12px; cursor:pointer;
  border-radius:10px; border:1px solid var(--sb-card-border);
  background:#fff; color:var(--sb-ink-text);
  font-size:13.5px; font-weight:500; letter-spacing:0.3px;
  user-select:none; transition:all 0.2s ease;
  box-shadow:0 1px 2px rgba(60,52,35,0.05);
}
.form-tree-wrapper-header:hover {
  border-color:var(--sb-card-hover); color:var(--ink);
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(60,52,35,0.08);
}
.form-tree-wrapper-header .menu-icon {
  flex-shrink:0; padding:4px; border-radius:7px;
  width:15px; height:15px; box-sizing:content-box;
  background:linear-gradient(180deg, var(--gold-pale2), #ece7db);
  color:#8a8066;
  box-shadow:inset 0 0 0 1px rgba(194,168,120,0.35);
  transition:all 0.2s ease;
}
.form-tree-wrapper-header:hover .menu-icon {
  color:var(--ink);
  background:linear-gradient(180deg, #efe9dd, #e6dfcf);
}
.form-tree-wrapper-title { flex:1; }
.form-tree-wrapper-arrow {
  margin-left:auto; transition:transform .2s; color:#8a8066;
}
.form-tree-wrapper:not(.collapsed) .form-tree-wrapper-arrow {
  transform:rotate(180deg);
}
.form-tree-wrapper-body {
  padding:0 0 8px;
  max-height:50vh; overflow-y:auto;
}

/* ========== 房地产测算表：字段隐藏 ========== */
/* 隐藏"所在区域"字段（整个 grid-item） */
.grid-item:has(#fld__tt_826207042879557) { display:none !important; }

/* ========== 分区标题行右侧按钮：与标题同行对齐 ========== */
/* FeButton 默认渲染隐形 label 占位（对齐同行字段的输入框），放在标题行时把按钮压低约20px；
   form-config 中带 "labelless": true 的按钮摘除占位并垂直居中，与标题文字中线对齐 */
.grid-item.btn-row-title > label { display:none; }
.grid-item.btn-row-title { align-self:center; }

/* ========== 后台管理界面 - 现代化优化 ========== */
/* 登录卡片 */
#adminLoginPanel {
  background:#fff !important; border-radius:16px !important;
  box-shadow:0 4px 24px rgba(15,23,42,0.08), 0 1px 2px rgba(15,23,42,0.04) !important;
  padding:40px 36px !important; margin:64px auto !important;
  max-width:380px !important;
  border:1px solid #f0f0f0;
}
#adminLoginPanel h2 {
  font-size:22px !important; font-weight:700 !important; letter-spacing:-0.3px;
}
#adminLoginPanel .search-input {
  border-radius:10px !important; border:1.5px solid #e5e7eb !important;
  transition:border-color .2s, box-shadow .2s;
}
#adminLoginPanel .search-input:focus {
  border-color:var(--brand) !important; box-shadow:0 0 0 3px var(--brand-pale) !important;
}
#adminLoginPanel .btn-primary {
  border-radius:10px !important; font-weight:600 !important; padding:10px !important;
  transition:transform .15s, box-shadow .2s;
}
#adminLoginPanel .btn-primary:hover { transform:translateY(-1px); box-shadow:0 4px 12px var(--brand-glow); }
#adminLoginPanel .btn-primary:active { transform:translateY(0); }

/* 内容容器 */
#adminContentPanel { max-width:920px !important; margin:32px auto !important; padding:0 16px !important; }

/* 顶部标题栏 */
#adminContentPanel > div:first-child { margin-bottom:24px !important; }
#adminContentPanel > div:first-child > h2 { font-size:20px !important; font-weight:700 !important; letter-spacing:-0.3px; }
#adminContentPanel > div:first-child .btn-default {
  border-radius:8px !important; font-weight:500 !important; transition:all .2s;
}
#adminContentPanel > div:first-child .btn-default:hover { background:#f3f4f6; border-color:#d1d5db; }

/* 卡片区块 */
#adminContentPanel > div[style*="background:#fff"] {
  background:#fff !important; border-radius:14px !important; padding:24px !important;
  box-shadow:0 1px 3px rgba(15,23,42,0.04), 0 1px 2px rgba(15,23,42,0.03) !important;
  border:1px solid #f3f4f6 !important; margin-bottom:16px !important;
}
/* 卡片标题行 */
#adminContentPanel h3 { font-size:15px !important; font-weight:600 !important; color:#1f2937 !important; }
#adminContentPanel h3 + span + .btn-default,
#adminContentPanel .btn-default { transition:all .15s; }
#adminContentPanel .btn-default:hover { background:#f9fafb; }

/* 描述文字 */
#adminContentPanel p[style*="color:#9ca3af"] { color:#9ca3af !important; line-height:1.6 !important; }

/* 分组列表容器 */
#adminGroupDisplayBody {
  border-radius:10px !important; overflow:hidden; background:#fafbfc;
  border:1px solid #f0f1f3 !important;
}
/* 分组行 */
.admin-grp-row {
  background:#fff; border-bottom:1px solid #f3f4f6;
  transition:background .15s;
}
.admin-grp-row:hover { background:#fafbff; }
.admin-grp-row:last-child { border-bottom:none; }
.admin-grp-header {
  display:flex; align-items:center; padding:12px 14px; gap:10px;
}
/* 自定义复选框 */
.admin-grp-cb, .admin-form-cb {
  appearance:none; -webkit-appearance:none;
  width:18px; height:18px; border-radius:5px;
  border:1.5px solid #d1d5db; background:#fff;
  cursor:pointer; flex-shrink:0; position:relative;
  transition:all .15s;
}
.admin-grp-cb:hover, .admin-form-cb:hover { border-color:var(--ink-2); }
.admin-grp-cb:checked, .admin-form-cb:checked {
  background:var(--ink); border-color:var(--ink);
}
.admin-grp-cb:checked::after, .admin-form-cb:checked::after {
  content:''; position:absolute; left:5px; top:2px; width:5px; height:9px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg);
}
/* 分组名 */
.admin-grp-toggle {
  flex:1; font-weight:600; font-size:14px; color:#1f2937;
  cursor:pointer; display:flex; align-items:center; gap:8px; user-select:none;
}
.admin-grp-arrow {
  display:inline-flex; align-items:center; justify-content:center;
  width:16px; height:16px; color:#9ca3af;
  transition:transform .25s cubic-bezier(0.4,0,0.2,1);
  font-size:10px;
}
.admin-grp-row.expanded .admin-grp-arrow { transform:rotate(90deg); color:var(--brand); }
.admin-grp-count {
  background:var(--brand-pale); color:var(--brand);
  padding:2px 10px; border-radius:20px; font-size:11px; font-weight:600;
  white-space:nowrap;
}
/* 表单列表容器（展开动画） */
.admin-form-list {
  padding:4px 8px 8px 38px; overflow:hidden;
  animation:adminSlideDown .25s cubic-bezier(0.4,0,0.2,1);
}
@keyframes adminSlideDown {
  from { opacity:0; max-height:0; transform:translateY(-4px); }
  to { opacity:1; max-height:600px; transform:translateY(0); }
}
/* 单个表单行 */
.admin-form-row {
  display:flex; align-items:center; padding:7px 10px;
  border-radius:8px; cursor:pointer; gap:10px;
  transition:background .15s;
}
.admin-form-row:hover { background:rgba(31,42,68,0.04); }
.admin-form-name { flex:1; font-size:13px; color:#374151; font-weight:500; }
.admin-form-count { color:#bbb; font-size:11px; font-weight:400; }
/* 字段列按钮 */
.admin-field-btn {
  margin-left:8px; color:var(--ink); font-size:12px; font-weight:500;
  cursor:pointer; border:1px solid var(--ink-2);
  background:#eef1f6; border-radius:6px; padding:2px 10px;
  white-space:nowrap; transition:all .15s;
}
.admin-field-btn:hover {
  background:#e3e9f2; color:var(--ink); border-color:var(--ink);
  box-shadow:0 2px 8px rgba(31,42,68,0.12);
}

/* 主要操作按钮 */
#adminContentPanel .btn-primary {
  border-radius:8px !important; font-weight:600 !important;
  transition:all .15s; letter-spacing:0.2px;
}
#adminContentPanel .btn-primary:hover { transform:translateY(-1px); box-shadow:0 4px 12px var(--brand-glow); }
#adminContentPanel .btn-primary:active { transform:translateY(0); }

/* 字段列弹窗内容 */
#adminFieldListBody { border-radius:10px !important; border-color:#f0f1f3 !important; }
#adminFieldListBody label {
  border-radius:6px !important; transition:background .15s;
}
#adminFieldListBody label:hover { background:#f5f6ff; }
#adminFieldListBody input[type="checkbox"] {
  appearance:none; -webkit-appearance:none;
  width:18px; height:18px; border-radius:5px;
  border:1.5px solid #d1d5db; background:#fff;
  cursor:pointer; flex-shrink:0; position:relative;
  transition:all .15s;
}
#adminFieldListBody input[type="checkbox"]:hover { border-color:var(--ink-2); }
#adminFieldListBody input[type="checkbox"]:checked {
  background:var(--ink); border-color:var(--ink);
}
#adminFieldListBody input[type="checkbox"]:checked::after {
  content:''; position:absolute; left:5px; top:2px; width:5px; height:9px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg);
}
/* 字段列弹窗滚动条加宽 */
#adminFieldListBody::-webkit-scrollbar { width:97px; }
#adminFieldListBody::-webkit-scrollbar-track {
  background:#f3f4f6; border-radius:48px; margin:4px 0;
}
#adminFieldListBody::-webkit-scrollbar-thumb {
  background:#d1d5db; border-radius:48px; border:20px solid #f3f4f6;
  transition:background .15s;
}
#adminFieldListBody::-webkit-scrollbar-thumb:hover { background:#9ca3af; }
#adminFieldListBody { scrollbar-width:auto; scrollbar-color:#d1d5db #f3f4f6; }

/* 数据视图：无任何勾选时隐藏整个操作列；有勾选时仅未选中行隐藏按钮内容 */
.dm-data-table:not(:has(.dm-data-row.selected)) .dm-action-head,
.dm-data-table:not(:has(.dm-data-row.selected)) .dm-action-col { display:none; }
.dm-data-table:has(.dm-data-row.selected) .dm-data-row:not(.selected) .dm-action-col { visibility:hidden; }

/* 数字等宽对齐（tabular-nums）：单价/总价/权重等数值列逐位上下对齐，便于核对测算表
   （纯字体渲染属性，不改盒子尺寸；.dm-idx-col 已有先例） */
table td, table th, input { font-variant-numeric: tabular-nums; }

/* 基础tab左侧竖线：与方法tab同款几何（见 .tab-item[class*="mc-color-"]::before），
   用中性灰蓝区分"公共信息tab"与彩色"方法tab"；按uid定位。
   - 评估对象/现场踏勘：主表单与土地综合测算两个表单同uid自动同时生效
   - 评估受理/智能识别：受理表单（_mc_816212753379397）前2个可见tab */
.tab-item[data-tab-uid="816923090124869"]::before,
.tab-item[data-tab-uid="826500000000001"]::before,
.tab-item[data-tab-uid="816578380382277"]::before,
.tab-item[data-tab-uid="816578756034629"]::before {
  content:''; position:absolute; top:0; bottom:0; left:0;
  width:4px; border-radius:0 3px 3px 0; background:#64748b;
}

/* ===== 2026-08-24 日期字段增强 ===== */
/* 1) 日期输入框原生日历图标：只加宽不加高（宽度 34px，高度维持原生约 20px 不变），
      图标整体更醒目、点击热区更宽（Chromium 系浏览器生效） */
input[type="date"]::-webkit-calendar-picker-indicator {
  width: 34px;
  height: 20px;
  padding: 0;
  margin-left: 2px;
  cursor: pointer;
  opacity: 0.45;
}
input[type="date"]::-webkit-calendar-picker-indicator:hover { opacity: 0.75; }

/* 2) 自定义加宽加大日期选择弹窗（配套 app.js 末尾 EDP 模块，点击图标热区弹出） */
.edp-pop {
  position: fixed;
  z-index: 9000;
  width: 366px;
  max-width: calc(100vw - 16px);
  box-sizing: border-box;
  background: #fff;
  border: 1px solid #d9e0ea;
  border-radius: 12px;
  box-shadow: 0 14px 36px rgba(15, 23, 42, 0.18);
  padding: 14px;
  font-family: inherit;
  user-select: none;
}
.edp-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 10px; }
.edp-title { flex: 1; text-align: center; font-size: 17px; font-weight: 600; color: #1f2937; }
.edp-nav {
  width: 36px; height: 34px; line-height: 1; padding: 0;
  border: 1px solid #d5dce6; border-radius: 8px;
  background: #f8fafc; color: #334155;
  font-size: 18px; cursor: pointer;
}
.edp-nav:hover { background: #e9eff7; border-color: #b9c6d6; }
.edp-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.edp-wd { text-align: center; font-size: 13px; font-weight: 600; color: #64748b; padding: 5px 0; }
.edp-day {
  height: 44px;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; color: #1f2937;
  border: 1px solid transparent; border-radius: 9px;
  cursor: pointer;
}
.edp-day:hover { background: #e8f1fd; border-color: #b6d4f8; }
.edp-empty { visibility: hidden; }
.edp-today { border-color: #2563eb; color: #2563eb; font-weight: 700; }
.edp-sel { background: #2563eb; border-color: #2563eb; color: #fff; font-weight: 700; }
.edp-sel:hover { background: #1d4ed8; border-color: #1d4ed8; color: #fff; }
.edp-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.edp-btn {
  padding: 8px 16px; font-size: 14px;
  border: 1px solid #cbd5e1; border-radius: 8px;
  background: #fff; color: #334155; cursor: pointer;
}
.edp-btn:hover { background: #f1f5f9; }
.edp-btn-primary { background: #2563eb; border-color: #2563eb; color: #fff; }
.edp-btn-primary:hover { background: #1d4ed8; }

/* ==================== 侧边栏表单树高度修复（2026-08-25） ==================== */
/* 根因：.form-tree-wrapper-body 固定 max-height:50vh，视口较矮时最后一项（报废设备评估）
   被卷入滚动区，且下方留白，用户看到"空白挡住表单名"。改为 flex 填满侧栏剩余高度。 */
.app-menu .form-tree-wrapper {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.app-menu .form-tree-wrapper .form-tree-wrapper-body {
  flex: 1 1 auto;
  max-height: none;
}
