/* ========================================
   Design Tokens - Apple-inspired Minimalist
   ======================================== */
:root {
  --color-primary: #1677FF;
  --color-primary-hover: #4096FF;
  --color-primary-pressed: #0958D9;
  --color-primary-soft: rgba(22,119,255,0.06);
  --color-primary-tint: rgba(22,119,255,0.12);
  --color-success: #34c759;
  --color-warning: #ff9f0a;
  --color-danger: #ff453a;
  --color-todo: #ff9f0a;
  --color-in-progress: #1677FF;
  --color-completed: #34c759;

  --ink: #1A1A1A;
  --bg-page: #f4f5f6;
  --bg-card: #ffffff;
  --bg-hover: #f0f1f3;
  --bg-soft: #ededee;
  --bg-softer: #f9f9fa;

  --text-primary: #1A1A1A;
  --text-secondary: #86868b;
  --text-tertiary: #d2d2d7;

  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;

  --shadow-card: 0 1px 2px rgba(0,0,0,0.03);
  --shadow-hover: 0 4px 14px rgba(0,0,0,0.07);
  --transition: 0.2s ease;

  --pill-blue-bg:   #eff5ff; --pill-blue-fg:   #1e40af;
  --pill-green-bg:  #ecfdf3; --pill-green-fg:  #15803d;
  --pill-amber-bg:  #fef6e7; --pill-amber-fg:  #92400e;
  --pill-red-bg:    #fef2f2; --pill-red-fg:    #b91c1c;
  --pill-gray-bg:   #f1f3f5; --pill-gray-fg:   #475467;
  --pill-purple-bg: #f3f0ff; --pill-purple-fg: #5b21b6;
}

body.dark-mode,
.dark-layout {
  --color-primary: #4096FF;
  --color-primary-hover: #69B1FF;
  --color-primary-pressed: #1677FF;
  --color-primary-soft: rgba(64,150,255,0.12);
  --color-primary-tint: rgba(64,150,255,0.22);
  --color-in-progress: #69B1FF;

  --ink: #E6EDF3;
  --bg-page: #0d1117;
  --bg-card: #161b22;
  --bg-hover: #21262d;
  --bg-soft: #1c222b;
  --bg-softer: #181d25;
  --text-primary: #e6edf3;
  --text-secondary: #8b949e;
  --text-tertiary: #30363d;
  --shadow-card: 0 1px 2px rgba(0,0,0,0.22);
  --shadow-hover: 0 4px 14px rgba(0,0,0,0.36);

  --pill-blue-bg:   rgba(56,139,253,0.15);  --pill-blue-fg:   #79b8ff;
  --pill-green-bg:  rgba(63,185,80,0.15);   --pill-green-fg:  #7ee787;
  --pill-amber-bg:  rgba(187,128,9,0.18);   --pill-amber-fg:  #f0b429;
  --pill-red-bg:    rgba(248,81,73,0.16);   --pill-red-fg:    #ff8783;
  --pill-gray-bg:   rgba(139,148,158,0.18); --pill-gray-fg:   #c9d1d9;
  --pill-purple-bg: rgba(163,113,247,0.18); --pill-purple-fg: #d2a8ff;
}

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

body {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
  background-color: var(--bg-page);
  color: var(--text-primary);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#root {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* ========================================
   Kanban Board
   ======================================== */
.kanban-board {
  display: flex;
  gap: 16px;
  padding: 8px 16px;
  overflow-x: auto;
  flex: 1;
  min-height: 0;
}

.kanban-column {
  flex: 1;
  min-width: 280px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: transparent;
  border-radius: 0;
  padding: 8px 6px;
  box-shadow: none;
  border: none;
}

.kanban-column-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-shrink: 0;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 2px solid;
  border-radius: 0 0 8px 8px;
}

.kanban-column-header.todo { border-color: var(--color-todo); }
.kanban-column-header.in-progress { border-color: var(--color-in-progress); }
.kanban-column-header.completed { border-color: var(--color-completed); }

.kanban-column-header span:first-child {
  font-weight: 600;
  font-size: 14px;
}

.kanban-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-right: 4px;
}

/* 列内滚动条：细、低调 */
.kanban-cards::-webkit-scrollbar { width: 6px; }
.kanban-cards::-webkit-scrollbar-thumb {
  background: var(--text-tertiary);
  border-radius: 3px;
}
.kanban-cards::-webkit-scrollbar-track { background: transparent; }

/* ========================================
   Kanban Card
   ======================================== */
.kanban-card {
  background: var(--bg-card);
  border-radius: var(--radius-md);
  padding: 14px;
  box-shadow: var(--shadow-card);
  cursor: pointer;
  transition: box-shadow var(--transition), transform var(--transition);
  border-left: 3px solid transparent;
  border: 1px solid var(--bg-soft);
}

.kanban-card:hover {
  box-shadow: var(--shadow-hover);
  transform: translateY(-1px);
}

.kanban-card.priority-urgent { border-left-color: var(--color-danger); }
.kanban-card.priority-high   { border-left-color: var(--color-warning); }
.kanban-card.priority-medium { border-left-color: var(--color-in-progress); }
.kanban-card.priority-low    { border-left-color: var(--text-tertiary); }

.kanban-card .ant-tag { border-radius: 6px; }

/* 四象限「适中卡片」—— 保留进展、紧凑多行 */
.kanban-card-mini {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 9px 11px;
  border-radius: 8px;
  background: var(--bg-card);
  border: 1px solid var(--bg-soft);
  border-left: 3px solid transparent;
  cursor: pointer;
  font-size: 13px;
  transition: box-shadow var(--transition), background var(--transition);
}
.kanban-card-mini:hover { box-shadow: var(--shadow-hover); }
.kanban-card-mini.priority-urgent { border-left-color: var(--color-danger); }
.kanban-card-mini.priority-high   { border-left-color: var(--color-warning); }
.kanban-card-mini.priority-medium { border-left-color: var(--color-in-progress); }
.kanban-card-mini.priority-low    { border-left-color: var(--text-tertiary); }
.kanban-card-mini.selected { outline: 2px solid var(--color-primary); }
.cm-row1 { display: flex; align-items: center; gap: 8px; }
.cc-status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.cc-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; color: var(--text-primary); }
.cc-due { font-size: 11px; flex-shrink: 0; }
.cm-row2 { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text-secondary); flex-wrap: wrap; }
.cm-substatus { color: var(--color-primary); }
.cm-stale { color: #d97706; }
.cm-row3 { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cm-row3 .milestone-stepper { flex: 1; }
.kanban-card-mini .card-actions { opacity: 0; transition: opacity var(--transition); }
.kanban-card-mini:hover .card-actions { opacity: 1; }

/* ========================================
   Cards
   ======================================== */
/* 「无界」全局：Ant Card 默认无背景、无边框、无阴影 */
.ant-card {
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
  border-radius: 0 !important;
}
.ant-card > .ant-card-body { padding: 0 !important; }
.ant-card > .ant-card-head {
  border-bottom: none !important;
  padding: 0 0 16px !important;
  min-height: auto !important;
  margin-bottom: 0;
}

/* 显式重心容器（手动添加 .surface 类） */
.surface {
  background: var(--bg-soft);
  border-radius: 18px;
  padding: 28px;
}
.surface-soft {
  background: var(--bg-softer);
  border-radius: 14px;
  padding: 20px;
}

/* 章节/页面标题工具类 */
.page-heading {
  font-size: 40px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin: 0;
  line-height: 1.1;
}
.page-subhead {
  color: var(--text-secondary);
  font-size: 13px;
  margin: 12px 0 0;
  font-weight: 400;
}
.section-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 0 0 14px;
}
.section-heading {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

/* ========================================
   Ant Design Overrides
   ======================================== */
.ant-btn-primary {
  background: var(--color-primary) !important;
  border: none !important;
  border-radius: var(--radius-sm) !important;
  font-weight: 500 !important;
}

.ant-btn-primary:hover {
  background: var(--color-primary-hover) !important;
}

.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector {
  border-radius: var(--radius-sm) !important;
  border-color: var(--text-tertiary) !important;
  background: var(--bg-card) !important;
}

.ant-input:focus,
.ant-input-focused,
.ant-input-affix-wrapper-focused,
.ant-select-focused .ant-select-selector {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 3px var(--color-primary-soft) !important;
}

/* ========================================
   Pastel Tags (low-saturation, borderless)
   ======================================== */
.ant-tag {
  border: none !important;
  background: var(--pill-gray-bg) !important;
  color: var(--pill-gray-fg) !important;
  border-radius: 6px !important;
  padding: 1px 8px !important;
  line-height: 18px !important;
  font-weight: 500;
}
.ant-tag-blue,
.ant-tag-processing  { background: var(--pill-blue-bg)   !important; color: var(--pill-blue-fg)   !important; }
.ant-tag-green,
.ant-tag-success     { background: var(--pill-green-bg)  !important; color: var(--pill-green-fg)  !important; }
.ant-tag-gold,
.ant-tag-orange,
.ant-tag-warning     { background: var(--pill-amber-bg)  !important; color: var(--pill-amber-fg)  !important; }
.ant-tag-red,
.ant-tag-volcano,
.ant-tag-error,
.ant-tag-magenta     { background: var(--pill-red-bg)    !important; color: var(--pill-red-fg)    !important; }
.ant-tag-purple,
.ant-tag-geekblue,
.ant-tag-cyan        { background: var(--pill-purple-bg) !important; color: var(--pill-purple-fg) !important; }

.ant-progress-bg { transition: all 0.3s ease !important; }

.ant-table { border-radius: var(--radius-md); background: transparent !important; }
.ant-table-thead > tr > th {
  background: var(--bg-soft) !important;
  border-color: var(--bg-soft) !important;
  font-weight: 600;
}
.ant-table-tbody > tr > td { border-color: var(--bg-soft) !important; }
.ant-table-tbody > tr:hover > td { background: var(--bg-soft) !important; }

/* ========================================
   Hover-reveal action buttons
   ======================================== */
.row-actions,
.card-actions {
  opacity: 0;
  transition: opacity 0.18s ease;
}
.ant-table-tbody > tr:hover .row-actions,
.ant-table-tbody > tr:focus-within .row-actions,
.kanban-card:hover .card-actions,
.kanban-card:focus-within .card-actions { opacity: 1; }
@media (hover: none) {
  /* Touch devices: don't hide actions */
  .row-actions, .card-actions { opacity: 1; }
}

/* ========================================
   Swimlane Board
   ======================================== */
.swimlane-board {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 4px;
}
.swimlane-header-row {
  display: grid;
  grid-template-columns: 220px 1fr 1fr 1fr;
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--bg-soft);
  padding: 12px 14px;
  border-radius: 12px;
  font-weight: 600;
  font-size: 13px;
  color: var(--text-primary);
  box-shadow: var(--shadow-card);
}
.swimlane-row {
  display: grid;
  grid-template-columns: 220px 1fr 1fr 1fr;
  background: var(--bg-softer);
  border-radius: 12px;
  border: 1px solid var(--bg-soft);
  overflow: hidden;
}
.swimlane-group-title {
  padding: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  border-right: 1px solid var(--bg-soft);
  background: var(--bg-soft);
  color: var(--text-primary);
  font-weight: 500;
  font-size: 13px;
}
.swimlane-group-title .group-caret { color: var(--text-secondary); font-size: 11px; }
.swimlane-group-title .group-label {
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.swimlane-cell {
  padding: 10px;
  max-height: 480px;
  overflow-y: auto;
  border-right: 1px solid var(--bg-soft);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.swimlane-cell:last-child { border-right: none; }
.swimlane-cell::-webkit-scrollbar { width: 6px; }
.swimlane-cell::-webkit-scrollbar-thumb { background: var(--text-tertiary); border-radius: 3px; }
.swimlane-cell-empty {
  text-align: center;
  color: var(--text-secondary);
  font-size: 12px;
  padding: 18px 0;
  opacity: 0.65;
}
.swimlane-collapsed-body {
  grid-column: 2 / -1;
  padding: 14px;
  color: var(--text-secondary);
  font-size: 12px;
}

.ant-menu-item-selected {
  background: var(--color-primary-tint) !important;
  border-radius: var(--radius-sm) !important;
  color: var(--color-primary) !important;
}
.ant-btn-link { color: var(--color-primary) !important; }
a { color: var(--color-primary); }

.dark-mode .ant-card {
  background: var(--bg-card) !important;
}

.dark-mode .ant-menu-item-selected {
  background: var(--color-primary-tint) !important;
}

.dark-mode .ant-badge-count {
  background: var(--color-primary) !important;
}

/* Empty state */
.empty-state {
  text-align: center;
  padding: 40px;
  color: var(--text-secondary);
}
.empty-state-icon { font-size: 40px; margin-bottom: 12px; }

/* ========================================
   Dark Mode Sider
   ======================================== */
.dark-mode .ant-layout-sider { background: var(--bg-card) !important; }
.dark-mode .ant-layout-sider-trigger { background: var(--bg-hover) !important; }
.dark-mode .ant-menu { background: transparent !important; color: var(--text-primary) !important; }
.dark-mode .ant-menu-item { color: var(--text-primary) !important; }
.dark-mode .ant-menu-item:hover { background: var(--bg-hover) !important; }
.dark-mode .ant-menu-item-selected { color: var(--color-primary) !important; }

/* ========================================
   Round 3 · Kanban 全屏 toolbar
   ======================================== */
.kanban-toolbar {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  background: rgba(244, 245, 246, 0.88);
  backdrop-filter: saturate(140%) blur(10px);
  -webkit-backdrop-filter: saturate(140%) blur(10px);
  border-bottom: 1px solid var(--bg-soft);
  margin: -24px -24px 8px;
  padding: 14px 24px;
}
.dark-mode .kanban-toolbar { background: rgba(13, 17, 23, 0.88); }
.kanban-toolbar .toolbar-spacer { flex: 1; }

/* ========================================
   Round 3 · 艾森豪威尔四象限 priority pill
   ======================================== */
.priority-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 500;
  line-height: 16px;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.priority-pill.q-IU { background: #fdf1f1; color: #7a2e2e; }
.priority-pill.q-I  { background: #e8eaed; color: #475467; }
.priority-pill.q-U  { background: #fef6e7; color: #92400e; }
.priority-pill.q-N  { background: #f1f3f5; color: #86868b; }
.dark-mode .priority-pill.q-IU { background: rgba(248,81,73,0.16); color: #ff9b96; }
.dark-mode .priority-pill.q-I  { background: rgba(139,148,158,0.18); color: #c9d1d9; }
.dark-mode .priority-pill.q-U  { background: rgba(187,128,9,0.18); color: #f0b429; }
.dark-mode .priority-pill.q-N  { background: rgba(139,148,158,0.12); color: #8b949e; }

/* 四象限矩阵 */
.quadrant-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 20px;
  flex: 1;
  min-height: 0;
}
.quadrant-cell {
  background: var(--bg-softer);
  border-radius: 14px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
  overflow: hidden;
}
.quadrant-cards {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-right: 4px;
}
.quadrant-cards::-webkit-scrollbar { width: 6px; }
.quadrant-cards::-webkit-scrollbar-thumb {
  background: var(--text-tertiary);
  border-radius: 3px;
}
.quadrant-cards::-webkit-scrollbar-track { background: transparent; }
.quadrant-IU { border-top: 3px solid #b91c1c; }
.quadrant-I  { border-top: 3px solid var(--color-primary); }
.quadrant-U  { border-top: 3px solid #92400e; }
.quadrant-N  { border-top: 3px solid var(--text-tertiary); }
.quadrant-title {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: 0.04em;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--bg-soft);
  margin-bottom: 4px;
}
.quadrant-title .quadrant-count { font-size: 11px; color: var(--text-secondary); font-weight: 400; }
.quadrant-empty { text-align: center; color: var(--text-secondary); font-size: 12px; padding: 20px 0; opacity: 0.6; }

/* ========================================
   Round 3 · 隐私微标
   ======================================== */
.vis-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  padding: 1px 6px;
  border-radius: 5px;
  background: var(--pill-gray-bg);
  color: var(--pill-gray-fg);
  font-weight: 500;
  cursor: pointer;
  user-select: none;
  line-height: 16px;
}
.vis-pill .vis-icon { font-size: 10px; opacity: 0.8; }
.vis-pill.vis-department { background: var(--color-primary-soft); color: var(--color-primary); }
.vis-pill.vis-shared { background: #fef6e7; color: #92400e; }
.dark-mode .vis-pill.vis-shared { background: rgba(187,128,9,0.18); color: #f0b429; }
.vis-pill.vis-compact { padding: 1px 4px; }

/* ========================================
   Round 3 · 采购里程碑 stepper
   ======================================== */
.milestone-stepper {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 3px;
  margin-top: 10px;
}
.milestone-seg {
  height: 3px;
  border-radius: 2px;
  background: var(--bg-soft);
  transition: background 0.2s;
}
.milestone-seg.past    { background: var(--color-primary); opacity: 0.42; }
.milestone-seg.current { background: var(--color-primary); }

/* ========================================
   Round 3 · SLA 呆滞预警
   ======================================== */
.kanban-card.stale {
  box-shadow: inset 3px 0 0 #92400e, var(--shadow-card);
}
.stale-flag {
  display: inline-block;
  margin-top: 6px;
  font-size: 11px;
  color: #92400e;
  font-weight: 500;
}
.dark-mode .stale-flag { color: #f0b429; }

/* ========================================
   Round 3 · Cmd+K 命令面板
   ======================================== */
.cmdk-modal .ant-modal-content {
  padding: 0 !important;
  border-radius: 14px !important;
  overflow: hidden;
  background: var(--bg-card) !important;
  box-shadow: 0 24px 60px rgba(0,0,0,0.18) !important;
}
.cmdk-input,
.cmdk-input.ant-input {
  font-size: 17px !important;
  padding: 18px 22px !important;
  border-bottom: 1px solid var(--bg-soft) !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--ink) !important;
}
.cmdk-results {
  max-height: 420px;
  overflow-y: auto;
  padding: 6px;
}
.cmdk-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  color: var(--ink);
}
.cmdk-row.active { background: var(--color-primary-soft); }
.cmdk-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 5px;
  background: var(--bg-soft);
  font-size: 11px;
  color: var(--text-secondary);
  font-weight: 600;
  flex-shrink: 0;
}
.cmdk-tag.tag-action { background: var(--color-primary-soft); color: var(--color-primary); }
.cmdk-tag.tag-item   { background: var(--pill-blue-bg); color: var(--pill-blue-fg); }
.cmdk-tag.tag-project{ background: var(--pill-purple-bg); color: var(--pill-purple-fg); }
.cmdk-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-sub {
  font-size: 11px;
  color: var(--text-secondary);
  font-family: 'SF Mono', Consolas, monospace;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.cmdk-empty {
  text-align: center;
  padding: 36px;
  color: var(--text-secondary);
  font-size: 13px;
}
.cmdk-footer {
  display: flex;
  gap: 18px;
  justify-content: flex-end;
  padding: 10px 16px;
  border-top: 1px solid var(--bg-soft);
  font-size: 11px;
  color: var(--text-secondary);
  background: var(--bg-softer);
}

.cmdk-hint-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 6px;
  background: var(--bg-soft);
  color: var(--text-secondary);
  font-size: 12px;
  cursor: pointer;
  user-select: none;
  border: none;
  font-family: 'SF Mono', Consolas, monospace;
  transition: background 0.15s;
}
.cmdk-hint-btn:hover { background: var(--color-primary-soft); color: var(--color-primary); }
.cmdk-hint-btn kbd {
  font-family: inherit;
  background: var(--bg-card);
  padding: 1px 5px;
  border-radius: 4px;
  font-size: 11px;
  border: 1px solid var(--text-tertiary);
}

/* ========================================
   Round 3 · 多选模式 + ActionBar
   ======================================== */
.kanban-card.selected {
  background: var(--color-primary-soft);
  box-shadow: inset 3px 0 0 var(--color-primary), var(--shadow-card);
}
.kanban-card.select-mode .card-actions { display: none; }
.card-checkbox {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 16px;
  height: 16px;
  border-radius: 4px;
  border: 1.5px solid var(--text-tertiary);
  background: var(--bg-card);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  color: #fff;
  pointer-events: none;
}
.kanban-card.selected .card-checkbox {
  background: var(--color-primary);
  border-color: var(--color-primary);
}
.kanban-card { position: relative; }

.action-bar {
  position: fixed;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  background: var(--ink);
  color: #fff;
  border-radius: 12px;
  box-shadow: 0 14px 40px rgba(0,0,0,0.22);
  z-index: 50;
  animation: actionbar-in 0.18s ease;
}
@keyframes actionbar-in {
  from { transform: translate(-50%, 12px); opacity: 0; }
  to { transform: translate(-50%, 0); opacity: 1; }
}
.action-bar .action-count {
  font-size: 13px;
  opacity: 0.85;
  margin-right: 6px;
  font-weight: 500;
}
.action-bar .ant-btn {
  background: rgba(255,255,255,0.1) !important;
  color: #fff !important;
  border: none !important;
  font-size: 12px !important;
}
.action-bar .ant-btn:hover {
  background: rgba(255,255,255,0.18) !important;
}
.action-bar .ant-btn-dangerous {
  background: rgba(248,81,73,0.25) !important;
}

/* ========================================
   Responsive
   ======================================== */
@media (max-width: 768px) {
  .kanban-board { gap: 12px; padding: 4px 12px; flex: initial; min-height: calc(100vh - 200px); }
  .kanban-column { min-width: 260px; }
  .quadrant-grid { grid-template-columns: 1fr; grid-template-rows: repeat(4, auto); flex: initial; height: auto; }
  .action-bar { width: calc(100% - 32px); justify-content: center; flex-wrap: wrap; }
}
