:root {
  --crm-bg: #F6F7F9;
  --crm-ink: #1A1A2E;
  --crm-muted: #6B6B80;
  --crm-line: #E6E8EC;
  --crm-soft: #FFFFFF;
  --crm-orange-soft: #FFF7F0;
  --crm-blue: #2563EB;
  --crm-blue-soft: #EFF6FF;
  --crm-green-soft: #ECFDF5;
  --crm-yellow-soft: #FFFBEB;
  --crm-red-soft: #FEF2F2;
  --shadow-flat: rgba(20,20,43,0.06) 0 1px 3px, rgba(20,20,43,0.08) 0 8px 24px;
}

body[data-page="crm-prototype"] {
  background: var(--crm-bg);
  color: var(--crm-ink);
  font-family: var(--font-tc);
}

body[data-page="crm-prototype"] button,
body[data-page="crm-prototype"] input,
body[data-page="crm-prototype"] select,
body[data-page="crm-prototype"] textarea {
  font: inherit;
}

.crm-topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: auto 1fr auto auto; /* 第 4 欄 = session 標籤＋登出（棒 F） */
  align-items: center;
  gap: 18px;
  padding: 14px 24px;
  background: rgba(255,255,255,0.94);
  border-bottom: 1px solid var(--crm-line);
  backdrop-filter: blur(16px);
}

.crm-topbar::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: var(--brand-gradient);
}

.back-link {
  color: var(--crm-muted);
  border: 1px solid var(--crm-line);
  border-radius: 999px;
  padding: 7px 13px;
  text-decoration: none;
  white-space: nowrap;
}

.back-link:hover,
.secondary-action:hover {
  border-color: var(--border-hover);
  background: var(--crm-orange-soft);
  color: var(--brand-orange);
}

.crm-topbar h1,
.panel-head h2,
.dialog-head h2 {
  margin: 0;
  font-family: var(--font-heading);
  letter-spacing: 0;
  line-height: 1.25;
}

.crm-topbar h1 {
  font-size: 23px;
}

.eyebrow {
  margin: 0 0 3px;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--brand-orange);
}

.safe-badge {
  border: 1px solid rgba(37,99,235,0.24);
  background: var(--crm-blue-soft);
  color: var(--crm-blue);
  border-radius: 999px;
  padding: 7px 13px;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}

/* live 模式徽章：production 讀取＝覺心營橘（跟 fixture 藍一眼可辨） */
.safe-badge.live {
  border-color: rgba(255,114,0,0.35);
  background: var(--crm-orange-soft);
  color: var(--brand-orange);
}

.topbar-session {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.session-tag {
  font-family: var(--font-mono);
  font-size: 12px;
  color: #6B6B80;
  white-space: nowrap;
}

.crm-shell {
  max-width: 1440px;
  margin: 0 auto;
  padding: 22px 24px 56px;
}

.notice {
  background: #fff;
  border: 1px solid #DBEAFE;
  border-radius: 8px;
  padding: 12px 14px;
  color: #24324F;
  line-height: 1.6;
}

.notice code {
  background: var(--crm-blue-soft);
  color: var(--crm-blue);
  border-radius: 5px;
  padding: 1px 6px;
}

.metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}

.metric {
  background: #fff;
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  padding: 15px 16px;
  box-shadow: rgba(20,20,43,0.04) 0 1px 3px;
}

.metric-value {
  font-family: var(--font-heading);
  font-size: 26px;
  font-weight: 800;
  line-height: 1;
}

.metric-label {
  margin-top: 6px;
  color: var(--crm-muted);
  font-size: 13px;
}

.workspace-grid {
  display: grid;
  grid-template-columns: 188px minmax(0, 1.45fr) minmax(320px, 1fr);
  gap: 16px;
  align-items: start;
}

.left-rail,
.people-panel,
.detail-panel,
.section-band {
  background: #fff;
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  box-shadow: rgba(20,20,43,0.04) 0 1px 3px;
}

.left-rail {
  position: sticky;
  top: 82px;
  padding: 16px;
}

.rail-block {
  margin-bottom: 16px;
}

.field-label,
.person-form label span,
.type-fieldset legend {
  display: block;
  margin-bottom: 7px;
  color: var(--crm-muted);
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.7px;
  text-transform: uppercase;
}

.search-input,
.select-input,
.person-form input,
.person-form select,
.person-form textarea {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  background: #F8F8FB;
  color: var(--crm-ink);
  padding: 8px 10px;
}

.search-input:focus,
.select-input:focus,
.person-form input:focus,
.person-form select:focus,
.person-form textarea:focus {
  outline: none;
  border-color: var(--brand-orange);
  box-shadow: 0 0 0 3px rgba(255,114,0,0.12);
  background: #fff;
}

.chip-stack,
.tag-row,
.list-tabs,
.pipeline-tabs,
.checkbox-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.filter-chip,
.type-tag,
.small-chip,
.list-tab,
.pipeline-tab {
  border: 1px solid var(--crm-line);
  border-radius: 999px;
  background: #fff;
  color: var(--crm-muted);
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.2;
}

.filter-chip,
.list-tab,
.pipeline-tab {
  cursor: pointer;
}

.filter-chip.active,
.list-tab.active,
.pipeline-tab.active {
  background: var(--crm-blue-soft);
  border-color: rgba(37,99,235,0.26);
  color: var(--crm-blue);
  font-weight: 700;
}

.type-tag {
  background: var(--crm-orange-soft);
  border-color: #FFD9BE;
  color: #A94900;
  font-weight: 700;
}

.small-chip {
  background: #F8F8FB;
}

.primary-action,
.secondary-action,
.icon-button {
  min-height: 40px;
  border-radius: 8px;
  cursor: pointer;
}

.primary-action {
  width: 100%;
  border: none;
  background: var(--brand-gradient);
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 800;
}

.primary-action:hover {
  filter: saturate(1.05) brightness(0.98);
}

.secondary-action {
  border: 1px solid var(--crm-line);
  background: #fff;
  color: var(--crm-ink);
  font-weight: 700;
}

.icon-button {
  width: 40px;
  border: 1px solid var(--crm-line);
  background: #fff;
  color: var(--crm-muted);
  font-size: 24px;
  line-height: 1;
}

.people-panel,
.detail-panel,
.section-band {
  padding: 18px;
}

.panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.result-count {
  color: var(--crm-muted);
  font-family: var(--font-mono);
  font-size: 12px;
}

.people-list {
  display: grid;
  gap: 10px;
}

.person-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  padding: 12px;
  background: #fff;
}

.person-row.selected {
  border-color: rgba(37,99,235,0.35);
  background: var(--crm-blue-soft);
}

.person-main {
  min-width: 0;
}

.person-title {
  margin: 0 0 5px;
  font-weight: 800;
  line-height: 1.35;
}

.person-meta,
.muted-line {
  color: var(--crm-muted);
  font-size: 13px;
  line-height: 1.55;
}

.row-actions {
  display: flex;
  gap: 7px;
  align-items: center;
}

.row-actions button,
.mini-button {
  border: 1px solid var(--crm-line);
  background: #fff;
  border-radius: 8px;
  color: var(--crm-ink);
  cursor: pointer;
  min-height: 34px;
  padding: 5px 10px;
}

.row-actions button:hover,
.mini-button:hover {
  border-color: var(--border-hover);
  background: var(--crm-orange-soft);
}

.strength-cell {
  min-width: 88px;
}

.strength-number {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  color: var(--crm-muted);
}

.strength-bar {
  height: 7px;
  border-radius: 999px;
  overflow: hidden;
  background: #ECECF2;
  margin-top: 5px;
}

.strength-fill {
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #FFB84D, #FF7200);
}

.detail-empty {
  color: var(--crm-muted);
  line-height: 1.7;
}

.detail-title {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: start;
  margin-bottom: 12px;
}

.detail-title h2 {
  margin: 0;
  font-size: 22px;
}

.axis-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 12px 0;
}

.axis-card {
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  padding: 10px;
  min-width: 0;
}

.axis-label {
  color: var(--crm-muted);
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
}

.axis-value {
  margin-top: 4px;
  font-weight: 800;
}

.timeline,
.referral-list,
.event-list {
  display: grid;
  gap: 9px;
  margin-top: 10px;
}

.timeline-item,
.referral-item,
.event-item,
.org-card,
.list-member,
.deal-card,
.schema-row {
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  background: #fff;
  padding: 10px 12px;
}

.timeline-item.private {
  background: var(--crm-red-soft);
  border-color: #FECACA;
}

.subhead {
  margin: 18px 0 8px;
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 800;
}

.section-band {
  margin-top: 18px;
}

.org-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.org-card.child {
  border-left: 4px solid var(--crm-blue);
}

.org-parent {
  color: var(--crm-blue);
  font-family: var(--font-mono);
  font-size: 12px;
}

.list-members {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.deal-board {
  display: grid;
  gap: 10px;
  overflow-x: auto;
  padding-bottom: 6px;
}

.deal-column {
  min-width: 220px;
  background: #F8F8FB;
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  padding: 10px;
}

.deal-column h3 {
  margin: 0 0 10px;
  font-family: var(--font-heading);
  font-size: 14px;
}

.deal-card {
  margin-bottom: 8px;
  box-shadow: rgba(20,20,43,0.04) 0 1px 3px;
}

.deal-title {
  font-weight: 800;
  margin-bottom: 5px;
}

.milestones {
  display: grid;
  gap: 5px;
  margin-top: 8px;
}

.milestone {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  border-radius: 6px;
  background: var(--crm-yellow-soft);
  padding: 5px 7px;
  font-size: 12px;
}

.milestone.done {
  background: var(--crm-green-soft);
}

.milestone.blocked {
  background: var(--crm-red-soft);
}

.schema-map {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.schema-row strong {
  display: block;
  margin-bottom: 5px;
}

.schema-row code {
  color: var(--crm-blue);
  background: var(--crm-blue-soft);
  border-radius: 5px;
  padding: 1px 5px;
}

.person-dialog {
  width: min(760px, calc(100vw - 32px));
  border: none;
  border-radius: 12px;
  padding: 0;
  box-shadow: rgba(20,20,43,0.24) 0 24px 80px;
}

.person-dialog::backdrop {
  background: rgba(20,20,43,0.42);
}

.person-form {
  padding: 20px;
}

.dialog-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.type-fieldset {
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  margin: 16px 0 12px;
  padding: 12px;
}

.checkbox-grid label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--crm-line);
  border-radius: 999px;
  padding: 6px 9px;
}

.checkbox-grid input {
  width: auto;
  min-height: auto;
}

.notes-field {
  display: block;
}

.person-form textarea {
  resize: vertical;
  line-height: 1.6;
}

.dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 16px;
}

.dialog-actions .primary-action,
.dialog-actions .secondary-action {
  width: auto;
  padding: 0 18px;
}

@media (max-width: 1180px) {
  .workspace-grid {
    grid-template-columns: 230px minmax(0, 1fr);
  }

  .detail-panel {
    grid-column: 1 / -1;
  }

  .org-grid,
  .schema-map {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .crm-topbar {
    position: static;
    grid-template-columns: 1fr;
    padding: 14px 16px;
  }

  .crm-shell {
    padding: 14px 12px 40px;
  }

  .metrics,
  .workspace-grid,
  .org-grid,
  .schema-map,
  .form-grid {
    grid-template-columns: 1fr;
  }

  .left-rail {
    position: static;
  }

  .person-row {
    grid-template-columns: 1fr;
  }

  .row-actions {
    justify-content: stretch;
  }

  .row-actions button,
  .mini-button {
    flex: 1;
  }

  .axis-grid {
    grid-template-columns: 1fr;
  }

  .panel-head,
  .detail-title,
  .dialog-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .dialog-actions .primary-action,
  .dialog-actions .secondary-action {
    width: 100%;
  }
}

/* === 2026-07-10 表單擴充 + 回饋浮窗（Jessie 現場回饋：名片欄位不夠 + 輸入來源） === */
.person-dialog { width: min(760px, 94vw); }
.form-section-title {
  font-family: 'Space Mono', monospace;
  font-size: 13px; font-weight: 700; letter-spacing: 1.5px;
  color: #A94900; margin: 18px 0 8px;
  border-bottom: 1px solid #E6E8EC; padding-bottom: 6px;
}
.phase-badge {
  font-style: normal; font-family: 'Space Mono', monospace;
  font-size: 12px; font-weight: 700;
  background: #FFF3E8; color: #C24E00; border: 1px solid #FFD3B0;
  border-radius: 999px; padding: 1px 8px; margin-left: 6px;
}
.trait-chip { background: #EFF6FF; border-color: #BFDBFE; color: #1D4ED8; }
.rating-line { font-weight: 700; font-size: 14px; margin-top: 10px; }
.rating-line.green { color: #1E9E76; }
.rating-line.red { color: #C22B2B; }
/* 2026-07-28 WP #174：黃色語意（待處理/沒排）改 Notion 色塊制，不用彩色文字（DESIGN.md §675.2）。 */
.rating-line.yellow {
  display: inline-flex; align-items: center; gap: 6px;
  background: #FFF3C2; border: 1px solid #F3E39B; color: #1F2430;
  border-radius: 999px; padding: 2px 10px;
}
.rating-line.yellow::before {
  content: ''; width: 8px; height: 8px; border-radius: 50%;
  background: #FFB224; flex-shrink: 0;
}
.guideline-callout {
  border-left: 3px solid #F59E0B; background: #FFFBEB;
  border-radius: 0 8px 8px 0; padding: 10px 14px; margin-top: 10px;
  font-size: 14px; line-height: 1.6;
}
.guideline-callout .guideline-label {
  display: block; font-family: 'Space Mono', monospace;
  /* 複審 FINDING 補修（2026-07-28）：彩色文字→近黑，色塊(#FFFBEB底/#F59E0B框)已承載黃色語意 */
  font-size: 13px; font-weight: 700; color: #1F2430; margin-bottom: 4px;
}
.fb-fab {
  position: fixed; right: 24px; bottom: 24px; z-index: 50;
  background: linear-gradient(135deg, #FFD600, #FF7200, #E84000);
  color: #1A1A2E; border: none; border-radius: 999px;
  font-family: 'Noto Sans TC', sans-serif; font-weight: 700; font-size: 15px;
  padding: 12px 22px; cursor: pointer;
  box-shadow: 0 8px 24px rgba(232, 64, 0, .25);
}
.fb-fab:hover { transform: translateY(-1px); }
.fb-panel {
  position: fixed; right: 24px; bottom: 84px; z-index: 50; width: 360px;
  background: #FFFFFF; border: 1px solid #E6E8EC; border-radius: 20px;
  padding: 20px 22px; display: none;
  box-shadow: rgba(20,20,43,.06) 0 0 0 1px, rgba(20,20,43,.12) 0 12px 32px;
}
.fb-panel.open { display: block; }
.fb-panel .fb-list { margin: 10px 0 0 18px; padding: 0; }
.fb-panel .fb-list li { font-size: 14px; line-height: 1.6; margin-bottom: 8px; color: #232323; }
.fb-panel .fb-hint { font-size: 12.5px; color: #595959; margin-top: 10px; }
@media (max-width: 600px) {
  .fb-panel { width: calc(100vw - 32px); right: 16px; }
  .person-dialog { width: 96vw; }
}

/* === 2026-07-10 第二輪：附件/引薦人/inline 編輯器 === */
.form-hint {
  font-size: 13px; color: #595959; line-height: 1.6;
  background: #F8F8FB; border-radius: 8px; padding: 8px 12px; margin: 0 0 10px;
}
.detail-avatar {
  width: 56px; height: 56px; border-radius: 50%; object-fit: cover;
  border: 2px solid #FFD9BE; margin-right: 12px;
}
.file-chip { cursor: pointer; background: #FFF3E8; border-color: #FFD3B0; color: #C24E00; margin-top: 8px; }
.file-chip:hover { background: #FFE8D1; }
.subhead-row { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; }
.subhead-row .subhead { margin-top: 0; }
.inline-form {
  display: none; flex-wrap: wrap; gap: 8px; align-items: center;
  background: #F8F8FB; border: 1px dashed #E6E8EC; border-radius: 10px;
  padding: 10px 12px; margin: 8px 0;
}
.inline-form.open { display: flex; }
.inline-form select, .inline-form input[type="date"], .inline-form input:not([type]) {
  font-size: 13.5px; padding: 6px 10px; border: 1px solid #E6E8EC; border-radius: 8px; background: #fff;
}
.inline-form .inline-grow { flex: 1; min-width: 160px; }
.inline-check { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: #404040; }
.inline-roles { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.mini-button.primary {
  background: linear-gradient(135deg, #FFD600, #FF7200, #E84000);
  color: #fff; border: none;
}

/* === 2026-07-10 互動編輯留痕（Jessie 23:19 拍板） === */
.timeline-item { position: relative; }
.timeline-item .edit-int { position: absolute; top: 10px; right: 10px; font-size: 12.5px; padding: 2px 8px; }
.hist-chip { cursor: pointer; background: #F5EAD2; border-color: #EBDBA8; color: #8A6D1E; }
.hist-chip:hover { background: #EFE0B8; }
.revision-history { display: none; margin-top: 8px; border-left: 3px solid #EBDBA8; background: #FBF4E2; border-radius: 0 8px 8px 0; padding: 8px 12px; }
.timeline-item.show-history .revision-history { display: block; }
/* 複審 FINDING 補修（2026-07-28）：彩色文字→近黑，色塊(#FBF4E2底/#EBDBA8框)已承載黃色語意 */
.revision-label { font-family: 'Space Mono', monospace; font-size: 13px; font-weight: 700; color: #1F2430; margin-bottom: 4px; }
.revision-item { font-size: 13px; color: #404040; line-height: 1.6; }

/* === 2026-07-11 清單四欄改版 v2（精細度修正：對齊/密度/單行截斷） === */
.people-list{--cols:minmax(0,1.6fr) 78px minmax(0,2fr) 92px}
.list-header{
  display:grid;grid-template-columns:var(--cols);gap:10px;
  padding:4px 14px 8px;border-left:1px solid transparent;border-right:1px solid transparent;font-family:'Space Mono',monospace;
  font-size:12px;font-weight:700;color:#6B6B80;letter-spacing:1px;text-transform:uppercase;
  border-bottom:1px solid #E6E8EC;
}
.person-row.grid4{
  display:grid;grid-template-columns:var(--cols);gap:10px;
  align-items:center;cursor:pointer;padding:9px 14px;min-height:58px;
  overflow:hidden;
}
.person-row.grid4 > *{min-width:0}
.person-row.grid4 .person-title{display:flex;align-items:center;gap:6px;margin:0;font-size:15px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.person-row.grid4 .person-meta{font-size:12.5px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.col-who{min-width:0}
.col-last .last-days{font-weight:700;font-size:13.5px;color:#232323;font-variant-numeric:tabular-nums}
.col-last .person-meta{font-family:'Space Mono',monospace;font-size:12px}
.col-next{border-radius:8px;padding:5px 10px;min-width:0}
.col-next .na-line{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;min-width:0}
.col-next .na-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.col-next .na-due{font-family:'Space Mono',monospace;font-size:12px;margin-top:1px;font-weight:700;opacity:.85}
/* 2026-07-11 02:1x 改版：pill 中性底＋色點制——避開淺色底必然壓深成髒橘土紅的死路 */
.col-next{background:#F6F7F9;border:1px solid #ECECF2;color:#232323}
.col-next .na-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}
.col-next.na-red .na-dot{background:#E5484D}
.col-next.na-green .na-dot{background:#30A46C}
.col-next.na-yellow .na-dot{background:#FFB224}
.col-next.na-gray .na-dot{background:#B9BBC6}
.col-next.na-red .na-due{color:#D93036}
.col-next.na-green .na-due{color:#1E9E76}
.col-next.na-yellow .na-text,.col-next.na-gray .na-text{color:#404040}
.col-next.na-yellow .na-due,.col-next.na-gray .na-due{color:#6B6B80}
.col-deals{display:flex;justify-content:flex-end;min-width:0}
.person-row.grid4.selected{box-shadow:inset 3px 0 0 #FF7200}
@media (max-width:900px){
  .list-header{display:none}
  .person-row.grid4{grid-template-columns:1fr auto;row-gap:6px}
  .col-who{grid-column:1/-1}
}
/* FAB 縮小避免壓內容 */
.fb-fab{padding:9px 16px;font-size:13.5px;box-shadow:0 4px 14px rgba(232,64,0,.22)}

/* === deal 編輯（2026-07-11） === */
.deal-form.open{display:block;padding:16px;margin:12px 0 18px;border-style:solid;background:#FCFCFD}
.deal-form-title{display:block;font-family:'Space Mono',monospace;font-size:13px;font-weight:700;color:#A94900;margin-bottom:12px}
.deal-live-hint{font-size:12.5px;line-height:1.55;color:#4E5666;background:#F1F3F6;border-radius:8px;padding:8px 10px;margin:0 0 12px}
.deal-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}
.deal-field{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:12.5px;font-weight:700;color:#4E5666}
.deal-field-wide{grid-column:span 2}
.deal-field input,.deal-field select,.deal-field textarea{box-sizing:border-box;width:100%;min-width:0;border:1px solid #D8DCE4;border-radius:8px;background:#fff;color:#1F2430;font:inherit;font-weight:400;padding:8px 10px}
.deal-field textarea{resize:vertical}
.deal-field input:focus,.deal-field select:focus,.deal-field textarea:focus{outline:2px solid rgba(255,114,0,.25);border-color:#FF7200}
.deal-field input:disabled,.deal-field select:disabled,.deal-field textarea:disabled{opacity:.65;cursor:not-allowed;background:#F1F3F6}
.deal-form-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.deal-form-err{color:#C22B2B;font-size:13px;line-height:1.45;margin:0;flex:1 1 280px;min-height:1em}
.deal-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.deal-tools{display:flex;gap:4px;flex-shrink:0}
.deal-tool{border:1px solid #E6E8EC;background:#fff;border-radius:6px;font-size:12.5px;padding:2px 7px;cursor:pointer;color:#404040}
.deal-tool:hover{border-color:#FFD3B0;background:#FFF7F0;color:#C24E00}
.deal-tool:disabled{opacity:.45;cursor:not-allowed;background:#F1F3F6;color:#6B6B80}
.person-deals{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.person-deal-row{display:flex;align-items:center;gap:10px;background:#F8F8FB;border:1px solid #E6E8EC;border-radius:10px;padding:9px 12px}
.person-deal-main{flex:1;min-width:0}
.person-deal-main strong{font-size:14px}
@media (max-width:900px){.deal-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.deal-form-grid{grid-template-columns:1fr}.deal-field-wide{grid-column:span 1}}

/* === 2026-07-11 粗糙感修正（Jessie 截圖回饋） === */
.detail-panel .muted-line{overflow-wrap:anywhere}
.timeline-item .muted-line{overflow-wrap:anywhere;font-size:12px}
.detail-panel .tag-row{margin-top:8px}
.axis-card .strength-number{font-size:14px;color:#232323}

/* === 2026-07-11 人物卡統一視覺系統 + 左欄瘦身（Jessie 01:40） === */
/* 左欄：更窄、字更小，讓位給清單 */
.left-rail{padding:14px 12px}
.left-rail .field-label{font-size:12px;letter-spacing:1px}
.left-rail .search-input,.left-rail .select-input{font-size:12.5px;padding:7px 9px}
.left-rail .filter-chip{font-size:12px;padding:4px 10px}
.left-rail .rail-block{margin-bottom:14px}
.left-rail .primary-action{font-size:14px;padding:10px 14px}

/* 人物卡字階統一：標題20 / 區塊標13 mono / 內容13.5 / meta 12.5 mono */
.detail-panel h2{font-size:20px}
.detail-org{font-size:13.5px;font-weight:700;color:#404040;margin:2px 0 10px}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;background:#F8F8FB;border:1px solid #E6E8EC;border-radius:10px;padding:10px 12px;margin-bottom:10px}
.contact-item{display:flex;align-items:baseline;gap:7px;min-width:0}
.contact-item .ci-icon{flex-shrink:0;font-size:13px}
.contact-item .ci-value{font-family:'Space Mono',monospace;font-size:12.5px;color:#404040;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detail-panel .subhead{
  font-family:'Space Mono',monospace;font-size:13px;font-weight:700;
  letter-spacing:1.5px;text-transform:uppercase;color:#A94900;
  border-bottom:1px solid #E6E8EC;padding-bottom:6px;margin-top:20px;
}
.subhead-row{border-bottom:1px solid #E6E8EC;padding-bottom:6px}
.subhead-row .subhead{border-bottom:none;padding-bottom:0}
.axis-card .axis-label{font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#6B6B80}
.axis-card .axis-value{font-size:15px;font-weight:700;color:#232323}

/* 互動類型語意色（同一頁內固定對應） */
.kind-chip{font-weight:700}
.kind-meeting{background:#EFF6FF;border-color:#BFDBFE;color:#1D4ED8}
.kind-call{background:#E6FAF7;border-color:#A7E8DD;color:#0E7A6A}
.kind-line{background:#E9FBF3;border-color:#B7EBD4;color:#1E9E76}
.kind-email{background:#FFF6E0;border-color:#F3DFA0;color:#8A6D1E}
.kind-event{background:#FDEFF6;border-color:#F5C6DF;color:#B03A78}
.kind-referral{background:#FFF3E8;border-color:#FFD3B0;color:#C24E00}
.kind-note{background:#F0F0F5;border-color:#DCDCE6;color:#6B6B80}

/* 推薦鏈方向色 */
.referral-item{border-left:3px solid #E6E8EC}
.referral-item.ref-out{border-left-color:#FF7200;background:#FFF9F4}
.referral-item.ref-in{border-left-color:#1E9E76;background:#F4FCF8}
.referral-item strong{font-size:14px}
.referral-item .muted-line{font-size:12.5px}

/* timeline / 活動 / deals 區塊內文統一 */
.timeline-item{font-size:13.5px}
.event-item strong{font-size:14px}
.person-deal-main strong{font-size:14px}
.detail-panel .muted-line{font-size:12.5px}

/* === 按鈕三級制（2026-07-11）：主=漸層(新增聯絡人/儲存)、次=橘描邊(所有「＋」新增類)、中性=灰(編輯/取消/工具) === */
.mini-button.create{color:#C24E00;border-color:#FFD3B0;background:#FFF7F0;font-weight:700}
.mini-button.create:hover{background:#FFE8D1;border-color:#FF9A4D}
.event-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.new-event-fields{display:inline-flex;gap:8px;flex-wrap:wrap}
.role-chip{background:#FFF6E0;border-color:#F3DFA0;color:#8A6D1E;font-weight:700}

/* === 2026-07-11 配色冷靜化（Jessie：杏橘+紅不好看） === */
/* 區塊標題從焦橘改深藍灰——顏色讓 icon 和內容 chip 去說，標題保持安靜 */
.detail-panel .subhead{color:#24324F}
.form-section-title{color:#24324F}
.deal-form-title{color:#24324F}
/* 「＋」新增鈕改 DESIGN.md 正典 secondary：白底橘描邊，hover 實心 */
.mini-button.create{color:#FF7200;border:1.5px solid #FF7200;background:#fff;font-weight:700}
.mini-button.create:hover{background:#FF7200;border-color:#FF7200;color:#fff}
/* 私密互動列：整片粉紅改成中性底+紅左框，紅色只留在鎖頭 chip */
/* 強制優先權旗標已移除（2026-07-28 WP #174）：同選擇器 .timeline-item.private，同特異度，
   本規則在檔案後段，cascade 順序自然勝出 L503 舊定義，不需要強制優先權 */
.timeline-item.private{background:#FAFAFC;border-left:3px solid #C22B2B}
/* 修改紀錄 chip 從土黃改中性灰 */
.hist-chip{background:#F0F0F5;border-color:#DCDCE6;color:#6B6B80}
.hist-chip:hover{background:#E8E8F0}
.revision-history{border-left-color:#DCDCE6;background:#F8F8FB}
.revision-label{color:#6B6B80}
.ev-match-hint{font-family:'Space Mono',monospace;font-size:12px;font-weight:700}
.ev-match-hint.is-existing{color:#1E9E76}
.ev-match-hint.is-new{color:#C24E00}

.ev-match-hint.is-new{color:#2563EB}
.person-deal-row .deal-chip,.col-deals .deal-chip{font-weight:700}

/* === 2026-07-11 02:2x 色塊回歸（Notion 制：亮粉彩底＋近黑文字，彩色文字僅紅綠） === */
.col-next{border:1px solid transparent}
/* 強制優先權旗標保留（2026-07-28 WP #174 覆核）：.col-next .na-text（單類+子代選擇器）
   特異度低於下方 .col-next.na-yellow .na-text（雙類+子代選擇器，L1001），
   若拿掉該旗標會被較高特異度規則覆蓋回 #404040，非防禦性寫法，是真實特異度衝突 */
.col-next .na-text{color:#1F2430 !important;font-weight:700}
.col-next.na-red{background:#FFE8E8;border-color:#FFCFCF}
.col-next.na-green{background:#DDF6E7;border-color:#BBEBD1}
.col-next.na-yellow{background:#FFF3C2;border-color:#F3E39B}
.col-next.na-gray{background:#F1F2F5;border-color:#E4E5EB}
.col-next.na-yellow .na-text,.col-next.na-gray .na-text{color:#1F2430}
.col-next.na-yellow .na-due,.col-next.na-gray .na-due{color:#5C6170}
/* deal chip 色塊版：品牌橘粉彩底＋近黑字（亮而清，非杏橘）。
   2026-07-28 WP #174：刪除舊首次定義與中繼覆寫，這是唯一定義，不需要強制優先權旗標 */
.deal-chip{background:#FFE9D2;border-color:#FFD9AE;color:#1F2430;max-width:88px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}
/* 鎖頭 chip：淡紅粉彩＋近黑字。
   2026-07-28 WP #174：刪除舊首次定義與中繼覆寫，這是唯一定義，不需要強制優先權旗標 */
.lock-chip{background:#FFE8E8;border-color:#FFCFCF;color:#1F2430}

/* 2026-07-11 02:25 拍板：「下一步」欄標題置中 */
.list-header span:nth-child(3){text-align:center}

/* ============================================================
   2026-07-11 02:3x Apple 精緻感 pass（Jessie 02:25 提問）
   配方：系統字＋負字距／邊框節食改髮絲線／中性極輕陰影／
   毛玻璃頂欄／統一動效曲線／等寬數字
   ============================================================ */

/* 1) 字體：直接用蘋果系統字（SF Pro / PingFang TC），標題半粗不重壓 */
body[data-page="crm-prototype"]{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro TC","PingFang TC","Noto Sans TC",sans-serif;
  -webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;
}
.crm-topbar h1{font-weight:700;letter-spacing:-0.3px}
.person-title,.detail-panel h2,.deal-title,.org-card strong{font-weight:600;letter-spacing:-0.2px}

/* 2) 邊框節食：列不再是一顆顆帶框卡片，改髮絲分隔線＋hover 浮起 */
.person-row.grid4{
  border:none;border-radius:10px;
  box-shadow:none;
  border-bottom:0.5px solid rgba(20,20,43,.07);
}
.person-row.grid4:hover{background:#FAFAFC;border-bottom-color:transparent;box-shadow:0 1px 2px rgba(20,20,43,.04),0 6px 16px rgba(20,20,43,.05)}
.person-row.grid4.selected{background:#F7F9FE;border-bottom-color:transparent;box-shadow:inset 3px 0 0 #FF7200,0 1px 2px rgba(20,20,43,.04)}

/* 3) 面板陰影改中性極輕雙層（去掉橘色調陰影——有色陰影是精緻感殺手） */
/* 強制優先權旗標已移除（2026-07-28 WP #174）：與 L152/L184 等舊定義同特異度（皆單類選擇器），
   本規則在檔案後段，cascade 順序自然勝出，不需要強制優先權 */
.people-panel,.detail-panel,.left-rail,.section-band,.metric{
  box-shadow:0 1px 2px rgba(20,20,43,.04),0 8px 24px rgba(20,20,43,.05);
  border:0.5px solid rgba(20,20,43,.06);
}

/* 4) 頂欄毛玻璃 */
/* 強制優先權旗標已移除（2026-07-28 WP #174）：與 L29 舊定義同選擇器同特異度，cascade 順序自然勝出 */
.crm-topbar{
  background:rgba(255,255,255,.82);
  -webkit-backdrop-filter:saturate(1.8) blur(14px);
  backdrop-filter:saturate(1.8) blur(14px);
  border-bottom:0.5px solid rgba(20,20,43,.08);
}

/* 5) 動效統一：一種曲線一種時長；按下有重量 */
.person-row.grid4,.mini-button,.deal-tool,.filter-chip,.deal-card,.metric{transition:all .18s cubic-bezier(.25,.1,.25,1)}
.mini-button:active,.deal-tool:active,.primary-action:active{transform:scale(.97)}

/* 6) chip 邊框改同色系低透明度（不再是實心灰框） */
.small-chip,.type-tag{border-width:0.5px}
.col-next{border-width:0.5px}

/* 7) 數字等寬（日期/金額對齊不跳動） */
.col-last,.na-due,.strength-number,.result-count{font-variant-numeric:tabular-nums}

.note-callout{border-left:3px solid #C9C9D6;background:#F8F8FB;border-radius:0 8px 8px 0;padding:10px 14px;margin-top:10px;font-size:14px;line-height:1.6}
.note-callout .note-label{display:block;font-family:'Space Mono',monospace;font-size:12.5px;font-weight:700;color:#6B6B80;margin-bottom:4px}

/* === 轉換率漏斗條（2026-07-11 13:58 拍板） === */
.funnel-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;margin:10px 0 4px}
.funnel-cell{background:#F8F8FB;border:0.5px solid rgba(20,20,43,.07);border-radius:10px;padding:8px 14px;min-width:86px}
.funnel-cell .fc-count{font-family:'Space Mono',monospace;font-weight:700;font-size:18px;font-variant-numeric:tabular-nums}
.funnel-cell .fc-stage{font-size:12px;color:#6B6B80;white-space:nowrap}
.funnel-cell .fc-rate{font-family:'Space Mono',monospace;font-size:12px;font-weight:700;color:#1E9E76;margin-top:2px}
.funnel-cell .fc-rate.fc-na{color:#B9BBC6}
.funnel-cell .fc-rate.fc-worst{color:#D93036}
.funnel-hint{flex-basis:100%;font-size:13px;color:#404040;background:#FFF3C2;border:0.5px solid #F3E39B;border-radius:10px;padding:8px 14px}
.funnel-empty{font-size:13px;color:#6B6B80}

/* === 戰役漏斗（2026-07-11 14:13） === */
.camp-name{font-weight:600;letter-spacing:-0.2px;font-size:15px;margin:4px 0 8px}
.camp-tablewrap{overflow-x:auto}
.camp-table{border-collapse:collapse;width:100%;min-width:560px;font-size:13.5px}
.camp-table th{font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#6B6B80;text-align:right;padding:8px 12px;border-bottom:0.5px solid rgba(20,20,43,.08)}
.camp-table th:first-child{text-align:left}
.camp-table td{padding:9px 12px;border-bottom:0.5px solid rgba(20,20,43,.06);text-align:right;font-variant-numeric:tabular-nums}
.camp-table tr:last-child td{border-bottom:none}
.camp-table .camp-ch{text-align:left;font-weight:600}
.camp-table .cn{font-family:'Space Mono',monospace;font-weight:700}
.camp-table .cr{display:block;font-family:'Space Mono',monospace;font-size:12px;color:#1E9E76}
.camp-table .camp-overall .cn{color:#C24E00}
.camp-table tr.camp-best td{background:#F4FCF8}
.camp-note{margin-top:8px;font-size:12px}
/* 戰役漏斗每欄極值標色（14:27）：綠=該欄最高、紅=該欄最低——彩色文字僅紅綠原則的正用 */
.camp-table .cr{color:#8B8D98}
.camp-table .cn.val-max,.camp-table .cr.val-max{color:#1E9E76}
.camp-table .cn.val-min,.camp-table .cr.val-min{color:#D93036}
.camp-table .camp-overall .cn{color:inherit}
.camp-table .camp-overall .cn.val-max{color:#1E9E76}
.camp-table .camp-overall .cn.val-min{color:#D93036}
.camp-toolbar{display:flex;justify-content:flex-end;margin-bottom:4px}
.camp-name-row{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px}
.camp-name-row .camp-name{margin:0}
.camp-table .cn.editable{cursor:pointer;border-bottom:1px dashed rgba(20,20,43,.18)}
.camp-table .cn.editable:hover{border-bottom-color:#FF7200}
.cn-input{width:76px;font-family:'Space Mono',monospace;font-size:13.5px;font-weight:700;text-align:right;padding:3px 6px;border:1px solid #FF7200;border-radius:6px;outline:none}
.ch-name-input{width:180px;text-align:left;font-weight:400}

/* === 2026-07-20 CRM 裁決頁（⚖️ 中間地帶待裁：dedup_review 部分桶＋review_queue 全部，棒 #152） === */
.adjudication-tabs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.bucket-tab{border:1px solid var(--crm-line);border-radius:999px;background:#fff;color:var(--crm-muted);padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer}
.bucket-tab:hover{border-color:var(--border-hover);background:var(--crm-orange-soft)}
.bucket-tab.active{background:var(--crm-blue-soft);border-color:rgba(37,99,235,0.26);color:var(--crm-blue);font-weight:700}
.adj-rule-hint{margin-bottom:14px}
.adj-empty{color:var(--crm-muted);padding:14px 0}
.adj-error{background:var(--crm-red-soft);border:1px solid #FECACA;color:#B91C1C;border-radius:8px;padding:10px 12px;margin-bottom:12px}
.adj-count-badge{font-family:var(--font-mono);font-size:12px;color:var(--crm-muted);white-space:nowrap}
.adj-group-card{border:1px solid var(--crm-line);border-radius:8px;background:#F8F8FB;padding:12px;margin-bottom:12px}
.adj-group-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.adj-group-target{font-weight:700;flex:1 1 auto;min-width:0}
.adj-row,.adj-row-card{border:1px solid var(--crm-line);border-radius:8px;background:#fff;padding:10px 12px;margin-top:8px}
.adj-group-card>.adj-row:first-child{margin-top:0}
.adj-row-name{font-weight:700;margin-bottom:3px}
.adj-reason{margin:4px 0}
.adj-row-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.adj-note-input{margin-top:8px}
.adj-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0}
.adj-pair-col{border:1px solid var(--crm-line);border-radius:8px;padding:8px 10px;background:#F8F8FB}
@media (max-width:760px){
  .adj-pair{grid-template-columns:1fr}
}

/* === 棒G #128 寫入層：新表單元件（不動既有 selector，#174 修復目標避開） === */
.form-static{display:block;padding:9px 10px;border-radius:8px;background:#F1F3F0;color:#3D4A42;font-size:13px;border:1px dashed #C9D2CB;min-height:1.2em}
.form-err{color:#C22B2B;font-size:13px;line-height:1.5;margin:0;flex:1;align-self:center;min-height:1em}
.person-form input:disabled,.person-form select:disabled{opacity:.55;cursor:not-allowed;background:#EEE}

/* === #213 CRM 寫入層（樂觀鎖 RPC 接線）：ai_readable 控件／衝突提示，沿用既有色彩變數不自創新色 === */
.ai-readable-toggle{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px;font-size:13px;color:#404040}
.ai-readable-toggle input[type="checkbox"]{cursor:pointer}
.ai-readable-toggle .ai-readable-status{color:var(--crm-muted);display:inline-flex;align-items:center;gap:6px}
.ai-readable-toggle.locked .ai-readable-status{
  background:#FFE8E8;border:1px solid #FFCFCF;color:#1F2430;
  border-radius:999px;padding:2px 10px;font-weight:600;
}
.reload-btn{margin-left:2px}
.inline-form-err{
  flex-basis:100%;display:flex;align-items:center;gap:8px;
  color:#C22B2B;font-size:12.5px;line-height:1.5;
  background:var(--crm-red-soft);border:1px solid #FECACA;
  border-radius:8px;padding:6px 10px;
}
.inline-form-err:empty{display:none;border:none;background:none;padding:0}
