/* ============================================================================
   odoo 详情页的**共用**样式（2026-11-06）
   ----------------------------------------------------------------------------
   两份消费者（都是「服务端只出空壳 + 页面内 JS 渲染」的详情页）：
     ① 客户 360°：view/v1/odoo/crm_partner.html + static/js/odoo/partner_view.js
     ② 线索 / 商机：view/v1/odoo/crm_lead.html + static/js/odoo/lead_view.js
   ⚠ 文件名还叫 partner_view.css 是历史原因（先有客户详情）；两页现在共用这一份，
     改数值两边一起变 —— 加样式前先想清楚会不会影响另一个页面。

   ⚠⚠ 所有选择器都前缀 `.crm-pv`（= 详情视图根节点），原因：
      联系人 / 消息中心那两个列表页也定义了 `.pt-card` `.pt-btn` `.pt-chip` 这些类名，
      只是数值略有不同。详情页的 HTML 有时是被**塞进列表页里渲染**的（历史遗留），
      不带前缀就会被列表页的规则抢走，表现为「按钮突然变矮 / 圆角变了」这种看不懂的错位。
      加一层根选择器 → 特异性更高，两套风格互不干扰。
   ========================================================================== */

/* ---------------- 容器 / 面包屑 ---------------- */
.crm-pv .pt-wrap { width: 100%; padding: 14px 18px 30px; color: #1f2430; }
.crm-pv .row .pt-card { height: 100%; }

.crm-pv .pt-crumb { font-size: .78rem; color: #8b93a3; margin-bottom: 10px; }
.crm-pv .pt-crumb a { color: #8b93a3; }
.crm-pv .pt-crumb a:hover { color: #8a6a3f; }
.crm-pv .pt-crumb .sep { margin: 0 6px; color: #c7ccd6; }

/* ---------------- 页头 ---------------- */
.crm-pv .pt-hero { display: flex; align-items: flex-start; gap: 14px; flex-wrap: wrap;
                   background: #fff; border: 1px solid #e8eaee; border-radius: 12px;
                   padding: 14px 16px; margin-bottom: 12px; }
.crm-pv .pt-avatar { width: 58px; height: 58px; flex: 0 0 58px; border-radius: 12px;
                     background: linear-gradient(135deg, #b08756, #8a6a3f); color: #fff;
                     display: flex; align-items: center; justify-content: center;
                     font-size: 1.5rem; font-weight: 700; overflow: hidden; }
.crm-pv .pt-avatar img { width: 100%; height: 100%; object-fit: cover; }
.crm-pv .pt-head { flex: 1 1 320px; min-width: 0; }
.crm-pv .pt-name { font-size: 1.3rem; font-weight: 700; margin: 0 0 6px; color: #2b1f12;
                   display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.crm-pv .pt-meta { font-size: .78rem; color: #8b93a3; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.crm-pv .pt-meta b { color: #5b6273; font-weight: 600; }
.crm-pv .pt-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* ---------------- 小标签 / 按钮 ---------------- */
.crm-pv .pt-chip { display: inline-block; padding: 2px 9px; border-radius: 9px; font-size: .68rem;
                   border: 1px solid #e4e7ec; background: #f4f5f8; color: #5b6273; }
.crm-pv .pt-chip.gold { background: #fdf5e4; border-color: #f0dfb4; color: #8a6a1f; }
.crm-pv .pt-chip.blue { background: #eef2ff; border-color: #d3dcff; color: #3b5bdb; }
.crm-pv .pt-chip.green { background: #eefaf1; border-color: #cdebd6; color: #2f7d43; }
.crm-pv .pt-chip.red { background: #fdecec; border-color: #f7ccc8; color: #c0392b; }
.crm-pv .pt-chip.grey { background: #f2f3f6; border-color: #e4e7ec; color: #8b93a3; }

.crm-pv .pt-btn { display: inline-flex; align-items: center; gap: 5px; background: #fff;
                  border: 1px solid #ddd3c0; color: #8a6a3f; border-radius: 8px;
                  padding: 6px 13px; font-size: .8rem; text-decoration: none; white-space: nowrap;
                  cursor: pointer; }
.crm-pv .pt-btn:hover { color: #6f5430; border-color: #b08756; background: #fdfaf4; }
.crm-pv .pt-btn.primary { background: linear-gradient(135deg, #b08756, #8a6a3f); border: none; color: #fff; }
.crm-pv .pt-btn.primary:hover { color: #fff; opacity: .9; }
.crm-pv .pt-btn[disabled], .crm-pv .pt-btn.disabled { opacity: .5; pointer-events: none; }

/* ---------------- 智能按钮区 ---------------- */
.crm-pv .pt-smart { display: grid; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr));
                    gap: 10px; margin-bottom: 12px; }
.crm-pv .pt-sb { display: flex; align-items: center; gap: 10px; text-decoration: none;
                 background: #fff; border: 1px solid #e8eaee; border-radius: 10px;
                 padding: 10px 12px; transition: border-color .15s, box-shadow .15s, transform .1s; }
.crm-pv .pt-sb:hover { border-color: #c9a97a; box-shadow: 0 3px 10px rgba(16,24,40,.08); transform: translateY(-1px); }
.crm-pv .pt-sb i { font-size: 1.15rem; color: #b08756; flex: 0 0 auto; }
.crm-pv .pt-sb .sb-t { font-size: .72rem; color: #8b93a3; line-height: 1.3; }
.crm-pv .pt-sb .sb-v { font-size: .98rem; font-weight: 700; color: #1f2430; line-height: 1.25; }
.crm-pv .pt-sb .sb-v small { font-size: .72rem; font-weight: 500; color: #8b93a3; margin-left: 3px; }
.crm-pv .pt-sb.off { background: #fafbfc; border-style: dashed; cursor: not-allowed; }
.crm-pv .pt-sb.off i, .crm-pv .pt-sb.off .sb-v { color: #b6bcc7; }
.crm-pv .pt-sb.off:hover { transform: none; border-color: #e8eaee; box-shadow: none; }

/* ---------------- 卡片 / 字段行 ---------------- */
.crm-pv .pt-card { background: #fff; border: 1px solid #e8eaee; border-radius: 11px;
                   padding: 13px 15px; margin-bottom: 12px; }
.crm-pv .pt-card-h { font-size: .84rem; font-weight: 700; color: #2b1f12; margin: 0 0 10px;
                     display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.crm-pv .pt-card-h i { color: #b08756; margin-right: 5px; }
.crm-pv .pt-card-h .hint { font-size: .68rem; font-weight: 400; color: #a7aebc; }

.crm-pv .pt-f { display: flex; gap: 10px; padding: 5px 0; border-bottom: 1px dashed #f0f1f4;
                font-size: .8rem; align-items: baseline; }
.crm-pv .pt-f:last-child { border-bottom: none; }
.crm-pv .pt-fl { flex: 0 0 108px; color: #8b93a3; }
.crm-pv .pt-fv { flex: 1; color: #1f2430; word-break: break-word; }
.crm-pv .pt-fv.dim { color: #b6bcc7; }
.crm-pv .pt-fv a { color: #3b5bdb; }
.crm-pv .pt-fh { font-size: .68rem; color: #a7aebc; }

/* ---------------- Tab ---------------- */
.crm-pv .pt-tabs { display: flex; gap: 2px; flex-wrap: wrap; border-bottom: 2px solid #e8eaee; margin-bottom: 12px; }
.crm-pv .pt-tabs .nav-link { border: none; border-bottom: 2px solid transparent; margin-bottom: -2px;
                             color: #6b7280; font-size: .83rem; padding: 8px 13px; border-radius: 6px 6px 0 0; }
.crm-pv .pt-tabs .nav-link:hover { color: #8a6a3f; background: #faf7f1; }
.crm-pv .pt-tabs .nav-link.active { color: #8a6a3f; font-weight: 600; border-bottom-color: #b08756;
                                    background: transparent; }

/* ---------------- 表格 ---------------- */
.crm-pv .pt-tb { width: 100%; border-collapse: collapse; font-size: .78rem; }
.crm-pv .pt-tb th { text-align: left; color: #8b93a3; font-weight: 600; font-size: .72rem;
                    padding: 7px 8px; border-bottom: 1px solid #e8eaee; white-space: nowrap; }
.crm-pv .pt-tb td { padding: 8px; border-bottom: 1px solid #f2f3f6; color: #1f2430; }
.crm-pv .pt-tb tr:last-child td { border-bottom: none; }
.crm-pv .pt-tb tbody tr:hover { background: #fafbfc; }
.crm-pv .pt-tb .num { font-weight: 600; white-space: nowrap; }
.crm-pv .pt-tb .dim { color: #8b93a3; }
.crm-pv .pt-empty { color: #a7aebc; font-size: .76rem; text-align: center; padding: 20px 0; }

/* ---------------- 警告 / 备注 ---------------- */
.crm-pv .pt-warn { border-radius: 10px; padding: 11px 14px; font-size: .8rem; margin-bottom: 10px;
                   display: flex; gap: 10px; align-items: flex-start; }
.crm-pv .pt-warn.warn { background: #fffaf0; border: 1px solid #f0dfb4; color: #8a6a1f; }
.crm-pv .pt-warn.block { background: #fdecec; border: 1px solid #f7ccc8; color: #c0392b; }
.crm-pv .pt-warn i { font-size: 1rem; line-height: 1.4; }
.crm-pv .pt-warn .wt { font-weight: 700; margin-bottom: 2px; }
.crm-pv .pt-note { background: #fafbfc; border: 1px solid #eef0f3; border-radius: 10px;
                   padding: 12px 14px; font-size: .8rem; color: #3f4654; white-space: pre-wrap;
                   line-height: 1.75; }

/* ---------------- Chatter ---------------- */
.crm-pv .pt-chatter { position: sticky; top: 48px; }
.crm-pv .pt-cform { border: 1px solid #e8eaee; border-radius: 10px; padding: 2px; margin-bottom: 12px; }
.crm-pv .pt-kinds { display: flex; gap: 2px; background: #f6f7f9; border-radius: 8px; padding: 3px; }
.crm-pv .pt-kind { flex: 1 1 0; border: none; background: transparent; font-size: .74rem; color: #6b7280;
                   padding: 5px 4px; border-radius: 6px; white-space: nowrap; }
.crm-pv .pt-kind.on { background: #fff; color: #8a6a3f; font-weight: 600;
                      box-shadow: 0 1px 3px rgba(16,24,40,.08); }
.crm-pv .pt-cform textarea { width: 100%; border: none; outline: none; resize: vertical;
                             min-height: 68px; font-size: .8rem; padding: 9px 10px; color: #1f2430; }
.crm-pv .pt-cform textarea::placeholder { color: #b6bcc7; }
.crm-pv .pt-crow { display: flex; gap: 8px; align-items: center; padding: 0 8px 8px; flex-wrap: wrap; }
.crm-pv .pt-crow input, .crm-pv .pt-crow select { border: 1px solid #dcdfe6; border-radius: 7px;
                                                  font-size: .75rem; padding: 5px 8px; color: #1f2430; outline: none; }
.crm-pv .pt-crow input:focus, .crm-pv .pt-crow select:focus { border-color: #b08756; }
.crm-pv .pt-crow .grow { flex: 1 1 auto; }
.crm-pv .pt-timeline { display: flex; flex-direction: column; gap: 0; }
.crm-pv .pt-msg { display: flex; gap: 9px; padding: 10px 0; border-bottom: 1px dashed #f0f1f4; }
.crm-pv .pt-msg:last-child { border-bottom: none; }
.crm-pv .pt-mava { width: 30px; height: 30px; flex: 0 0 30px; border-radius: 8px; background: #e9ecf1;
                   color: #6b7280; display: flex; align-items: center; justify-content: center;
                   font-size: .78rem; font-weight: 700; }
.crm-pv .pt-msg.kind-email .pt-mava { background: #eef2ff; color: #3b5bdb; }
.crm-pv .pt-msg.kind-activity .pt-mava { background: #fdf5e4; color: #8a6a1f; }
.crm-pv .pt-mbody { flex: 1; min-width: 0; }
.crm-pv .pt-mhead { font-size: .73rem; color: #8b93a3; display: flex; gap: 7px; align-items: center;
                    flex-wrap: wrap; margin-bottom: 3px; }
.crm-pv .pt-mhead b { color: #3f4654; font-weight: 600; }
.crm-pv .pt-mtext { font-size: .79rem; color: #2b2f38; white-space: pre-wrap; line-height: 1.7; word-break: break-word; }
.crm-pv .pt-msubj { font-size: .76rem; font-weight: 600; color: #5b6273; margin-bottom: 2px; }
.crm-pv .pt-act { margin-top: 7px; padding: 7px 10px; border-radius: 8px; background: #fafbfc;
                  border: 1px solid #eef0f3; font-size: .73rem; color: #5b6273;
                  display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.crm-pv .pt-act.done { background: #f4faf6; border-color: #dceade; }
.crm-pv .pt-act.cancelled { opacity: .6; }
.crm-pv .pt-act .grow { flex: 1 1 auto; }
.crm-pv .pt-mini { border: 1px solid #dcdfe6; background: #fff; border-radius: 6px;
                   font-size: .68rem; padding: 3px 8px; color: #5b6273; }
.crm-pv .pt-mini:hover { border-color: #b08756; color: #8a6a3f; }

/* ---------------- 空态 ---------------- */
.crm-pv .pt-notfound { background: #fff; border: 1px solid #e8eaee; border-radius: 12px;
                       padding: 56px 20px; text-align: center; color: #8b93a3; }
.crm-pv .pt-notfound i { font-size: 2.4rem; color: #d5d9e0; display: block; margin-bottom: 12px; }
.crm-pv .pt-loading { text-align: center; color: #a7aebc; font-size: .82rem; padding: 60px 0; }

@media (max-width: 768px) {
    .crm-pv .pt-wrap { padding: 10px 10px 24px; }
    .crm-pv .pt-fl { flex: 0 0 88px; }
    .crm-pv .pt-chatter { position: static; }
}
