/* _palette.css — 硬修云 全新深青浅色令牌（规范源 docs/design-tokens.md 的 WEB 镜像）
   必须在 /css/theme.css 之后引入，以覆盖旧 :root 令牌。删除本引用即可整体回退.
   结构：① 新 --color-* 令牌 ② 旧 --primary-*/--success-* 软映射到新值 */

:root {
  /* ----- 品牌主色 深青 Teal ----- */
  --color-primary: #0F766E; --color-primary-hover: #12665F;
  --color-primary-strong: #0B534E; --color-primary-deep: #0A4A46;
  --color-primary-soft: #E4F2F0; --color-primary-soft-hover: #CFE9E6;
  --color-primary-subtle: #F0FAF9; --color-primary-border: #BFE0DC;
  --color-primary-contrast: #FFFFFF;
  --gradient-primary: linear-gradient(135deg, #0F766E 0%, #0B534E 100%);
  --gradient-primary-soft: linear-gradient(135deg, #E4F2F0, #CFE9E6);

  /* ----- 语义色 ----- */
  --color-success: #15803D; --color-success-strong: #14532D; --color-success-soft: #E7F4EB; --color-success-border: #B3E0C6; --color-success-contrast: #FFFFFF;
  --color-warning: #D97706; --color-warning-strong: #92400E; --color-warning-soft: #FDF3E3; --color-warning-border: #F0D9AD; --color-warning-contrast: #FFFFFF;
  --color-danger:  #DC2626; --color-danger-strong:  #991B1B; --color-danger-soft:  #FDEEEE; --color-danger-border:  #F2B8B8; --color-danger-contrast:  #FFFFFF;
  --color-info:    #2563EB; --color-info-strong:    #1E40AF; --color-info-soft:    #E9F1FE; --color-info-border:    #BFD0F7; --color-info-contrast:    #FFFFFF;

  /* ----- KPI 渐变 ----- */
  --gradient-success: linear-gradient(135deg, #15803D, #0F6B32);
  --gradient-warning: linear-gradient(135deg, #F59E0B, #B45309);
  --gradient-danger:  linear-gradient(135deg, #EF4444, #B91C1C);
  --gradient-info:    linear-gradient(135deg, #38BDF8, #2563EB);
  --gradient-slate:   linear-gradient(135deg, #64748B, #334155);

  /* ----- 中性冷灰 ----- */
  --color-bg: #F4F6F8; --color-surface: #FFFFFF;
  --color-surface-muted: #FAFBFC; --color-surface-strong: #F1F4F7;
  --color-border: #E4E8EE; --color-border-strong: #CFD6DF; --color-divider: #EEF1F5;
  --color-text: #1B2330; --color-text-secondary: #5B6472; --color-text-muted: #8A93A4;
  --color-text-disabled: #BFC6D0; --color-text-inverse: #FFFFFF;
  --color-bg-gradient: linear-gradient(180deg, #EEF1F5 0%, #F4F6F8 60%, #F4F6F8 100%);

  /* ----- 侧边栏 / 玻璃 ----- */
  --color-sidebar-a: #0A534E; --color-sidebar-b: #0A3F3B;
  --color-sidebar-gradient: linear-gradient(180deg, #0A534E 0%, #0A3F3B 100%);
  --color-sidebar-text: rgba(255,255,255,.92); --color-sidebar-text-muted: rgba(255,255,255,.65);
  --color-sidebar-active: rgba(255,255,255,.16); --color-sidebar-active-border: rgba(255,255,255,.55);
  --color-glass: rgba(255,255,255,.72); --color-glass-strong: rgba(255,255,255,.88);
  --color-glass-border: rgba(255,255,255,.60); --color-glass-blur: blur(18px) saturate(160%);
  --color-overlay: rgba(15,23,42,.48);

  /* ----- 圆角 ----- */
  --radius-sm: 8px; --radius-md: 10px; --radius-lg: 12px; --radius-xl: 16px; --radius-2xl: 20px; --radius-full: 9999px;

  /* ----- 阴影 ----- */
  --shadow-sm: 0 1px 2px rgba(20,30,40,.06);
  --shadow-md: 0 4px 12px rgba(20,30,40,.08);
  --shadow-lg: 0 12px 32px rgba(20,30,40,.12);
  --shadow-card: 0 1px 3px rgba(20,30,40,.04), 0 4px 14px rgba(20,30,40,.06);
  --color-focus-ring: 0 0 0 3px rgba(15,118,110,.18);

  /* ----- 间距 ----- */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px;

  --duration-fast: 150ms; --duration-med: 200ms; --ease: cubic-bezier(.2,.8,.2,1);
}

/* ===== 旧名 → 新名 软映射（旧用法 var(--primary-color) 等自动继承新色） ===== */
:root {
  --primary-lightest: var(--color-primary-soft);
  --primary-lighter: #14B8A6;
  --primary-bg-color: var(--color-primary-subtle);
  --primary-light: #0D9488;
  --primary-color: var(--color-primary);
  --primary-dark: var(--color-primary-strong);
  --primary-darker: var(--color-primary-deep);
  --primary-darkest: var(--color-primary-deep);
  --primary-grad: var(--gradient-primary);
  --ring-focus: var(--color-focus-ring);

  --success-color: var(--color-success);
  --success-light: var(--color-success-soft);
  --success-dark: var(--color-success-strong);
  --danger-color: var(--color-danger);
  --danger-light: var(--color-danger-soft);
  --danger-dark: var(--color-danger-strong);
  --warning-color: var(--color-warning);
  --warning-light: var(--color-warning-soft);
  --warning-dark: var(--color-warning-strong);
  --info-color: var(--color-info);
  --info-light: var(--color-info-soft);
  --info-dark: var(--color-info-strong);

  --text-color: var(--color-text);
  --text-secondary: var(--color-text-secondary);
  --text-muted: var(--color-text-muted);
  --text-disabled: var(--color-text-disabled);

  --bg-color: var(--color-bg);
  --bg-grad: var(--color-bg-gradient);
  --card-bg: rgba(255,255,255,.9);
  --card-bg-solid: var(--color-surface);
  --border-color: var(--color-border);

  --glass-bg: var(--color-glass);
  --glass-bg-strong: var(--color-glass-strong);
  --glass-border: var(--color-glass-border);
  --glass-blur: var(--color-glass-blur);
  --glass-blur-strong: blur(26px) saturate(170%);

  --sidebar-bg-start: var(--color-sidebar-a);
  --sidebar-bg-end: var(--color-sidebar-b);
  --sidebar-glass: var(--color-sidebar-gradient);
  --sidebar-text: var(--color-sidebar-text);
  --sidebar-text-hover: #fff;
}

/* ===== 布局规格化（契约见 docs/design-tokens.md）：统一核心组件的圆角/描边/阴影 ===== */
body .modal { border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); }
body .modal-header, body .modal-body, body .modal-footer { background: var(--color-surface); }
body .card, body .chart-card, body .tech-card, body .ak-card, body .stat-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
}
body .card:hover, body .chart-card:hover, body .tech-card:hover { box-shadow: var(--shadow-md); }
body .table-wrapper, body .data-table { border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; }
body .table th { background: var(--color-surface-muted); color: var(--color-text-secondary); }
body .table tr:hover td, body .data-table tr:hover td { background: var(--color-surface-strong); }
body .status-tag, body .tag, body .badge { border-radius: var(--radius-full); }
body .status-pending { background: var(--color-warning-soft); color: var(--color-warning-strong); }
body .status-progress { background: var(--color-info-soft); color: var(--color-info-strong); }
body .status-done { background: var(--color-success-soft); color: var(--color-success-strong); }
body .empty, body .empty-state { text-align: center; color: var(--color-text-muted); }
body .pagination .page-btn { border-color: var(--color-border); color: var(--color-text-secondary); }
body .pagination .page-btn.active { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-contrast); }
body .form-field input:focus, body .form-field select:focus, body .form-field textarea:focus {
  border-color: var(--color-primary); box-shadow: var(--color-focus-ring);
}
body .btn-form-save { background: #0EA5E9; box-shadow: 0 2px 8px rgba(14,165,233,.25); }
body .btn-form-save:hover:not(:disabled) { background: #0284C7; box-shadow: 0 4px 14px rgba(2,132,199,.4); }

/* ===== WEB 统一：所有实色按钮天蓝底白字（theme.css 存在多份 .btn-* 定义，此后置块兜底覆盖） ===== */
body .btn-primary, body .btn-success, body .btn-info,
body .btn-warning, body .btn-danger, body .btn-overview-active,
body .btn-form-save, body .btn.btn-active, body .pagination .btn.active {
  background: #0EA5E9 !important;
  color: #fff !important;
  border: none !important;
}
body .btn-primary:hover, body .btn-success:hover, body .btn-info:hover,
body .btn-warning:hover, body .btn-danger:hover {
  background: #0284C7 !important;
}

/* ===== 布局统一：操作区 按钮/搜索框/下拉 等高管齐、垂直居中、间距一致 ===== */
body .filter-bar, body .search-bar,
body .page-toolbar, body .toolbar-bar, body .quick-bar{
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  flex-wrap: wrap !important;
}
body .filter-bar button, body .search-bar button,
body .page-toolbar button, body .toolbar-bar button, body .quick-bar button,
body .filter-bar .btn, body .search-bar .btn,
body .page-toolbar .btn, body .toolbar-bar .btn, body .quick-bar .btn{
  height: 34px !important;
  padding: 0 14px !important;
  line-height: 20px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}
body .filter-bar input, body .filter-bar select,
body .search-bar input, body .search-bar select,
body .page-toolbar input, body .page-toolbar select,
body .toolbar-bar input, body .toolbar-bar select,
body .quick-bar input, body .quick-bar select{
  height: 34px !important;
  box-sizing: border-box !important;
  line-height: 20px !important;
  vertical-align: middle !important;
}
body .filter-bar input, body .search-bar input,
body .page-toolbar input, body .toolbar-bar input, body .quick-bar input{
  padding: 0 11px !important;
}
body .filter-bar select, body .search-bar select,
body .page-toolbar select, body .toolbar-bar select, body .quick-bar select{
  padding: 0 26px 0 11px !important;
}
body .search-input-wrap{ display: flex !important; align-items: center !important; }
body .search-input-wrap .mi-search{ display: block; flex-shrink: 0; }

/* 操作条内 label+控件 横向等高，避免 label 竖排把控件顶离与按钮对齐线 */
body .search-bar .form-group, body .filter-bar .form-group,
body .page-toolbar .form-group, body .toolbar-bar .form-group, body .quick-bar .form-group{
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin: 0 !important;
}
body .search-bar .form-group label, body .filter-bar .form-group label,
body .page-toolbar .form-group label, body .toolbar-bar .form-group label, body .quick-bar .form-group label{
  margin: 0 !important;
  white-space: nowrap !important;
  font-size: 14px !important;
  line-height: 1 !important;
  color: var(--color-text-secondary, #5B6472) !important;
}

/* 页头只有操作按钮时保持右对齐 */
body .page-header .actions:first-child:last-child{ margin-left: auto; }